from NVDAObjects.behaviors import Dialog\r
import appModuleHandler\r
import eventHandler\r
+import UIAHandler\r
+if UIAHandler.isUIAAvailable:\r
+ from NVDAObjects.UIA import UIA\r
\r
"""App module for the Windows Logon screen\r
"""\r
\r
return super(LogonDialog, self).event_gainFocus()\r
\r
+if UIAHandler.isUIAAvailable:\r
+ class Win8PasswordField(UIA):\r
+\r
+ #This UIA object has no invoke pattern, at least set focus.\r
+ def doAction(self,index=None):\r
+ if not index:\r
+ self.setFocus()\r
+ else:\r
+ super(Win8PasswordField,self).doAction(index)\r
+\r
class XPPasswordField(IAccessible):\r
\r
def initOverlayClass(self):\r
def chooseNVDAObjectOverlayClasses(self, obj, clsList):\r
windowClass = obj.windowClassName\r
\r
+ if UIAHandler.isUIAAvailable:\r
+ if isinstance(obj,UIA) and obj.UIAElement.cachedClassName=="TouchEditInner" and obj.role==controlTypes.ROLE_EDITABLETEXT:\r
+ clsList.insert(0,Win8PasswordField)\r
if windowClass == "AUTHUI.DLL: LogonUI Logon Window" and obj.parent and obj.parent.parent and not obj.parent.parent.parent:\r
clsList.insert(0, LogonDialog)\r
return\r
pos=api.getReviewPosition()\r
try:\r
pos.activate()\r
+ if isinstance(gesture,touchHandler.TouchInputGesture):\r
+ touchHandler.handler.notifyInteraction(pos.NVDAObjectAtStart)\r
ui.message(actionName)\r
return\r
except NotImplementedError:\r
while obj:\r
try:\r
obj.doAction()\r
+ if isinstance(gesture,touchHandler.TouchInputGesture):\r
+ touchHandler.handler.notifyInteraction(obj)\r
try:\r
actionName=obj.getActionName()\r
except NotImplementedError:\r
import screenExplorer\r
from logHandler import log\r
import touchTracker\r
+import gui\r
\r
availableTouchModes=['text','object']\r
\r
pass\r
yield\r
\r
+ def notifyInteraction(self, obj):\r
+ """Notify the system that UI interaction is occurring via touch.\r
+ This should be called when performing an action on an object.\r
+ @param obj: The NVDAObject with which the user is interacting.\r
+ @type obj: L{NVDAObjects.NVDAObject}\r
+ """\r
+ l, t, w, h = obj.location\r
+ oledll.oleacc.AccNotifyTouchInteraction(gui.mainFrame.Handle, obj.windowHandle,\r
+ POINT(l + (w / 2), t + (h / 2)))\r
+\r
handler=None\r
\r
def initialize():\r