From: Robin Dunn Date: Fri, 8 Apr 2005 21:31:25 +0000 (+0000) Subject: Patch from Will Sadkin X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/281c105455c4e39672b5527e9f66de53ab163aec Patch from Will Sadkin git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33436 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/wxPython/wx/lib/masked/combobox.py b/wxPython/wx/lib/masked/combobox.py index 9b309710b0..7c08ed4265 100644 --- a/wxPython/wx/lib/masked/combobox.py +++ b/wxPython/wx/lib/masked/combobox.py @@ -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): diff --git a/wxPython/wx/lib/masked/maskededit.py b/wxPython/wx/lib/masked/maskededit.py index 25855d74e9..be2753eb8b 100644 --- a/wxPython/wx/lib/masked/maskededit.py +++ b/wxPython/wx/lib/masked/maskededit.py @@ -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: