From 9c253cfca472ef87aafee52b236c75f661ead911 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Fri, 17 Nov 2017 16:18:29 -0800 Subject: [PATCH] TextEditMixin fixes for lost new text value in the end edit event --- CHANGES.rst | 3 +++ demo/ListCtrl.py | 5 +++++ wx/lib/mixins/listctrl.py | 11 +++++------ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 5c7213dc..21e14cb9 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -54,6 +54,9 @@ Changes in this release include the following: * Various fixes in UltimateListCtrl, HyperTreeList and CheckListCtrlMixin. (#592, #349, #612) +* Fixes in TextEditMixin to ensure that the new value is passed in the + event. (#605) + diff --git a/demo/ListCtrl.py b/demo/ListCtrl.py index fd36a8eb..c39d8506 100644 --- a/demo/ListCtrl.py +++ b/demo/ListCtrl.py @@ -144,6 +144,7 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin): self.Bind(wx.EVT_LIST_COL_DRAGGING, self.OnColDragging, self.list) self.Bind(wx.EVT_LIST_COL_END_DRAG, self.OnColEndDrag, self.list) self.Bind(wx.EVT_LIST_BEGIN_LABEL_EDIT, self.OnBeginEdit, self.list) + self.Bind(wx.EVT_LIST_END_LABEL_EDIT, self.OnEndEdit, self.list) self.list.Bind(wx.EVT_LEFT_DCLICK, self.OnDoubleClick) self.list.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown) @@ -262,6 +263,10 @@ class TestListCtrlPanel(wx.Panel, listmix.ColumnSorterMixin): self.log.WriteText("OnBeginEdit") event.Allow() + def OnEndEdit(self, event): + self.log.WriteText("OnEndEdit: " + event.GetText()) + event.Allow() + def OnItemDelete(self, event): self.log.WriteText("OnItemDelete\n") diff --git a/wx/lib/mixins/listctrl.py b/wx/lib/mixins/listctrl.py index 34ce673a..04f436e7 100644 --- a/wx/lib/mixins/listctrl.py +++ b/wx/lib/mixins/listctrl.py @@ -640,11 +640,10 @@ class TextEditMixin: evt = wx.ListEvent(wx.wxEVT_COMMAND_LIST_END_LABEL_EDIT, self.GetId()) evt.Index = self.curRow evt.Column = self.curCol - item = self.GetItem(self.curRow, self.curCol) - evt.Item.SetId(item.GetId()) - evt.Item.SetColumn(item.GetColumn()) - evt.Item.SetData(item.GetData()) - evt.Item.SetText(text) #should be empty string if editor was canceled + item = wx.ListItem(self.GetItem(self.curRow, self.curCol)) + item.SetText(text) + evt.SetItem(item) + ret = self.GetEventHandler().ProcessEvent(evt) if not ret or evt.IsAllowed(): if self.IsVirtual(): @@ -652,7 +651,7 @@ class TextEditMixin: # data source self.SetVirtualData(self.curRow, self.curCol, text) else: - self.SetStringItem(self.curRow, self.curCol, text) + self.SetItem(self.curRow, self.curCol, text) self.RefreshItem(self.curRow) def _SelectIndex(self, row):