Patch from Will Sadkin
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33436 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -26,7 +26,7 @@ from wx.lib.masked import *
|
|||||||
# be a good place to implement the 2.3 logger class
|
# be a good place to implement the 2.3 logger class
|
||||||
from wx.tools.dbg import Logger
|
from wx.tools.dbg import Logger
|
||||||
##dbg = Logger()
|
##dbg = Logger()
|
||||||
##dbg(enable=0)
|
##dbg(enable=1)
|
||||||
|
|
||||||
## ---------- ---------- ---------- ---------- ---------- ---------- ----------
|
## ---------- ---------- ---------- ---------- ---------- ---------- ----------
|
||||||
## Because calling SetSelection programmatically does not fire EVT_COMBOBOX
|
## 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.
|
Allow mixin to get the text selection of this control.
|
||||||
REQUIRED by any class derived from MaskedEditMixin.
|
REQUIRED by any class derived from MaskedEditMixin.
|
||||||
"""
|
"""
|
||||||
|
## dbg('MaskedComboBox::_GetSelection()')
|
||||||
return self.GetMark()
|
return self.GetMark()
|
||||||
|
|
||||||
def _SetSelection(self, sel_start, sel_to):
|
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.
|
Allow mixin to set the text selection of this control.
|
||||||
REQUIRED by any class derived from MaskedEditMixin.
|
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 )
|
return self.SetMark( sel_start, sel_to )
|
||||||
|
|
||||||
|
|
||||||
def _GetInsertionPoint(self):
|
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):
|
def _SetInsertionPoint(self, pos):
|
||||||
|
## dbg('MaskedComboBox::_SetInsertionPoint(%d)' % pos)
|
||||||
self.SetInsertionPoint(pos)
|
self.SetInsertionPoint(pos)
|
||||||
|
|
||||||
|
|
||||||
@@ -482,6 +492,12 @@ class BaseMaskedComboBox( wx.ComboBox, MaskedEditMixin ):
|
|||||||
|
|
||||||
## dbg('computed selection:', sel_start, sel_to, indent=0, suspend=0)
|
## dbg('computed selection:', sel_start, sel_to, indent=0, suspend=0)
|
||||||
return sel_start, sel_to
|
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):
|
def SetSelection(self, index):
|
||||||
|
@@ -2952,6 +2952,7 @@ class MaskedEditMixin:
|
|||||||
if pos == year2dig and unadjusted[year2dig] != newstr[year2dig]:
|
if pos == year2dig and unadjusted[year2dig] != newstr[year2dig]:
|
||||||
newpos = pos+2
|
newpos = pos+2
|
||||||
|
|
||||||
|
## dbg('queuing insertion point: (%d)' % newpos)
|
||||||
wx.CallAfter(self._SetInsertionPoint, newpos)
|
wx.CallAfter(self._SetInsertionPoint, newpos)
|
||||||
|
|
||||||
if match_field is not None:
|
if match_field is not None:
|
||||||
@@ -2964,6 +2965,8 @@ class MaskedEditMixin:
|
|||||||
else:
|
else:
|
||||||
newfield = self._FindField(newpos)
|
newfield = self._FindField(newpos)
|
||||||
if newfield != field and newfield._selectOnFieldEntry:
|
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]))
|
## dbg('queuing selection: (%d, %d)' % (newfield._extent[0], newfield._extent[1]))
|
||||||
wx.CallAfter(self._SetSelection, newfield._extent[0], newfield._extent[1])
|
wx.CallAfter(self._SetSelection, newfield._extent[0], newfield._extent[1])
|
||||||
else:
|
else:
|
||||||
@@ -4022,7 +4025,9 @@ class MaskedEditMixin:
|
|||||||
## dbg('match found:', choice)
|
## dbg('match found:', choice)
|
||||||
match = index
|
match = index
|
||||||
break
|
break
|
||||||
else: dbg('choice: "%s" - no match' % choice)
|
else:
|
||||||
|
## dbg('choice: "%s" - no match' % choice)
|
||||||
|
pass
|
||||||
if match is not None:
|
if match is not None:
|
||||||
## dbg('matched', match)
|
## dbg('matched', match)
|
||||||
pass
|
pass
|
||||||
@@ -4936,7 +4941,7 @@ class MaskedEditMixin:
|
|||||||
old_right_signpos = text.find(')')
|
old_right_signpos = text.find(')')
|
||||||
|
|
||||||
if field._allowInsert and not field._insertRight and sel_to <= end and sel_start >= start:
|
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
|
field_len = end - start
|
||||||
before = text[start:sel_start]
|
before = text[start:sel_start]
|
||||||
after = text[sel_to:end].strip()
|
after = text[sel_to:end].strip()
|
||||||
@@ -4965,6 +4970,9 @@ class MaskedEditMixin:
|
|||||||
char = char.decode(self._defaultEncoding)
|
char = char.decode(self._defaultEncoding)
|
||||||
|
|
||||||
newtext = left + char + right
|
newtext = left + char + right
|
||||||
|
#### dbg('left: "%s"' % left)
|
||||||
|
#### dbg('right: "%s"' % right)
|
||||||
|
#### dbg('newtext: "%s"' % newtext)
|
||||||
|
|
||||||
if self._signOk and self._useParens:
|
if self._signOk and self._useParens:
|
||||||
# Balance parentheses:
|
# Balance parentheses:
|
||||||
|
Reference in New Issue
Block a user