]> git.saurik.com Git - wxWidgets.git/commitdiff
Patch from Will Sadkin
authorRobin Dunn <robin@alldunn.com>
Fri, 8 Apr 2005 21:31:25 +0000 (21:31 +0000)
committerRobin Dunn <robin@alldunn.com>
Fri, 8 Apr 2005 21:31:25 +0000 (21:31 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33436 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/wx/lib/masked/combobox.py
wxPython/wx/lib/masked/maskededit.py

index 9b309710b0898981f999af21f10a7d1a019164c7..7c08ed42656d3f10299bc1551592715e9da8e917 100644 (file)
@@ -26,7 +26,7 @@ from wx.lib.masked import *
 # be a good place to implement the 2.3 logger class
 from wx.tools.dbg import Logger
 ##dbg = Logger()
-##dbg(enable=0)
+##dbg(enable=1)
 
 ## ---------- ---------- ---------- ---------- ---------- ---------- ----------
 ## Because calling SetSelection programmatically does not fire EVT_COMBOBOX
@@ -197,6 +197,7 @@ class BaseMaskedComboBox( wx.ComboBox, MaskedEditMixin ):
         Allow mixin to get the text selection of this control.
         REQUIRED by any class derived from MaskedEditMixin.
         """
+##        dbg('MaskedComboBox::_GetSelection()')
         return self.GetMark()
 
     def _SetSelection(self, sel_start, sel_to):
@@ -204,13 +205,22 @@ class BaseMaskedComboBox( wx.ComboBox, MaskedEditMixin ):
         Allow mixin to set the text selection of this control.
         REQUIRED by any class derived from MaskedEditMixin.
         """
+##        dbg('MaskedComboBox::_SetSelection: setting mark to (%d, %d)' % (sel_start, sel_to))
         return self.SetMark( sel_start, sel_to )
 
 
     def _GetInsertionPoint(self):
-        return self.GetInsertionPoint()
+##        dbg('MaskedComboBox::_GetInsertionPoint()', indent=1)
+##        ret = self.GetInsertionPoint()
+        # work around new bug in 2.5, in which the insertion point
+        # returned is always at the right side of the selection,
+        # rather than the start, as is the case with TextCtrl.
+        ret = self.GetMark()[0]
+##        dbg('returned', ret, indent=0)
+        return ret
 
     def _SetInsertionPoint(self, pos):
+##        dbg('MaskedComboBox::_SetInsertionPoint(%d)' % pos)
         self.SetInsertionPoint(pos)
 
 
@@ -482,6 +492,12 @@ class BaseMaskedComboBox( wx.ComboBox, MaskedEditMixin ):
 
 ##            dbg('computed selection:', sel_start, sel_to, indent=0, suspend=0)
             return sel_start, sel_to
+    else:
+        def GetMark(self):
+##            dbg('MaskedComboBox::GetMark()', indent = 1)
+            ret = wx.ComboBox.GetMark(self)
+##            dbg('returned', ret, indent=0)
+            return ret
 
 
     def SetSelection(self, index):
index 25855d74e95a44f70ab5dfed5043ea975a0a4145..be2753eb8b8a19b0f8bcb50d6cdab4d1b0195b52 100644 (file)
@@ -2952,6 +2952,7 @@ class MaskedEditMixin:
                         if pos == year2dig and unadjusted[year2dig] != newstr[year2dig]:
                             newpos = pos+2
 
+##                    dbg('queuing insertion point: (%d)' % newpos)
                     wx.CallAfter(self._SetInsertionPoint, newpos)
 
                     if match_field is not None:
@@ -2964,6 +2965,8 @@ class MaskedEditMixin:
                     else:
                         newfield = self._FindField(newpos)
                         if newfield != field and newfield._selectOnFieldEntry:
+##                            dbg('queuing insertion point: (%d)' % newfield._extent[0])
+                            wx.CallAfter(self._SetInsertionPoint, newfield._extent[0])
 ##                            dbg('queuing selection: (%d, %d)' % (newfield._extent[0], newfield._extent[1]))
                             wx.CallAfter(self._SetSelection, newfield._extent[0], newfield._extent[1])
                         else:
@@ -4022,7 +4025,9 @@ class MaskedEditMixin:
 ##                    dbg('match found:', choice)
                     match = index
                     break
-                else: dbg('choice: "%s" - no match' % choice)
+                else:
+##                    dbg('choice: "%s" - no match' % choice)
+                    pass
             if match is not None:
 ##                dbg('matched', match)
                 pass
@@ -4936,7 +4941,7 @@ class MaskedEditMixin:
                 old_right_signpos = text.find(')')
 
             if field._allowInsert and not field._insertRight and sel_to <= end and sel_start >= start:
-                # inserting within a left-insert-capable field
+##                dbg('inserting within a left-insert-capable field')
                 field_len = end - start
                 before = text[start:sel_start]
                 after = text[sel_to:end].strip()
@@ -4965,6 +4970,9 @@ class MaskedEditMixin:
                 char = char.decode(self._defaultEncoding)
 
             newtext = left + char + right
+####            dbg('left:    "%s"' % left)
+####            dbg('right:   "%s"' % right)
+####            dbg('newtext: "%s"' % newtext)
 
             if self._signOk and self._useParens:
                 # Balance parentheses: