commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r7692 - trunk/gnue-forms/src/uidrivers/win32/widgets


From: johannes
Subject: [gnue] r7692 - trunk/gnue-forms/src/uidrivers/win32/widgets
Date: Thu, 7 Jul 2005 04:21:38 -0500 (CDT)

Author: johannes
Date: 2005-07-07 04:21:37 -0500 (Thu, 07 Jul 2005)
New Revision: 7692

Modified:
   trunk/gnue-forms/src/uidrivers/win32/widgets/_base.py
Log:
Fixed cursor-positioning and selection of regions


Modified: trunk/gnue-forms/src/uidrivers/win32/widgets/_base.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/win32/widgets/_base.py       2005-07-07 
07:34:35 UTC (rev 7691)
+++ trunk/gnue-forms/src/uidrivers/win32/widgets/_base.py       2005-07-07 
09:21:37 UTC (rev 7692)
@@ -94,18 +94,29 @@
       elif gfObject.style == 'checkbox':
         uiObject._eventHandler('requestTOGGLECHKBOX',_form=gfObject._form)
       else:
-        cursorPosition = self.getSelectedArea()[1]
-        uiObject._eventHandler('requestCURSORMOVE', position=cursorPosition, 
_form=gfObject._form)
+        if gfObject._type != 'GFEntry':
+          cursorPosition = self.getSelectedArea()[1]
+          uiObject._request ('CURSORMOVE', position = cursorPosition)
+
         win32gui.CallWindowProc(self._oldWndProc, hwnd, msg, wParam, lParam)
 
     elif msg == win32con.WM_LBUTTONUP:
       gfObject = self._uiDriver._IdToGFObj[self._id]
+      uiObject = self._uiDriver._IdToUIObj[self._id]
+
       if gfObject._type == 'GFEntry':
-        selection1, selection2 = self.getSelectedArea()
-        if selection1 != selection2:
-          uiObject = self._uiDriver._IdToUIObj[self._id]
-          uiObject._eventHandler('requestSELECTWITHMOUSE', \
-                                           position1=selection1, 
position2=selection2, _form=gfObject._form)
+        selection1, selection2 = self.getSelectedArea ()
+        value = self.GetValue ()
+
+        left  = selection1 - value [:selection1].count ('\r')
+        right = selection2 - value [:selection2].count ('\r')
+
+        if left == right:
+          uiObject._request ('CURSORMOVE', position = left)
+
+        else:
+          uiObject._request ('SELECTWITHMOUSE', position1 = left,
+                                                position2 = right)
           
       win32gui.CallWindowProc(self._oldWndProc, hwnd, msg, wParam, lParam)
 
@@ -361,7 +372,7 @@
           win32gui.SendMessage(self._hwnd, win32con.LB_SETCURSEL, 0, 0)
       else:
         if hasattr(gfObject,'Char__height') and gfObject.Char__height > 1:
-          corrvalue = re.sub(r'(?<!\r)\n', r'\r\n', value)
+          corrvalue = '\r\n'.join (value.splitlines ())
           win32gui.SetWindowText(self._hwnd, corrvalue)
         else:
           win32gui.SetWindowText(self._hwnd, str(value))
@@ -384,9 +395,20 @@
       return win32gui.GetWindowText(self._hwnd)
 
   def setCursorPosition(self, position):
+    gfObject = self._uiDriver._IdToGFObj[self._id]
+    if gfObject._type == 'GFEntry':
+      value = gfObject.getValue ()
+      part  = value [:position]
+      position = position + part.count ('\n')
     win32gui.SendMessage(self._hwnd, win32con.EM_SETSEL, position, position)
 
   def setSelectedArea(self, selection1, selection2):
+    gfObject = self._uiDriver._IdToGFObj[self._id]
+    if gfObject._type == 'GFEntry':
+      value = gfObject.getValue ()
+      selection1 = selection1 + value [:selection1].count ('\n')
+      selection2 = selection2 + value [:selection2].count ('\n')
+
     win32gui.SendMessage(self._hwnd, win32con.EM_SETSEL, selection1, 
selection2)
 
   def getSelectedArea(self):





reply via email to

[Prev in Thread] Current Thread [Next in Thread]