changeset 445bee75c187 in tryton:default
details: https://hg.tryton.org/tryton?cmd=changeset;node=445bee75c187
description:
        Store record and field instead of path when editing is started

        The path can not more be valid or pointing to the proper record if the
        treeview model is modified during the edition.

        issue9765
        review294841002
diffstat:

 tryton/gui/window/view_form/view/list_gtk/widget.py |  13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diffs (45 lines):

diff -r c69914d7eef7 -r 445bee75c187 
tryton/gui/window/view_form/view/list_gtk/widget.py
--- a/tryton/gui/window/view_form/view/list_gtk/widget.py       Wed Oct 28 
23:56:28 2020 +0100
+++ b/tryton/gui/window/view_form/view/list_gtk/widget.py       Wed Oct 28 
23:59:06 2020 +0100
@@ -239,6 +239,7 @@
 class GenericText(Cell):
     align = 0
     editable = None
+    editing = None
 
     def __init__(self, view, attrs, renderer=None):
         super(GenericText, self).__init__()
@@ -324,17 +325,17 @@
             callback()
 
     def set_editable(self):
-        if not self.editable:
+        if not self.editable or not self.editing:
             return
-        record, field = self._get_record_field_from_path(self.editable_path)
+        record, field = self.editing
         self.editable.set_text(self.get_textual_value(record))
 
     def editing_started(self, cell, editable, path):
         def remove(editable):
             self.editable = None
-            self.editable_path = None
+            self.editing = None
         self.editable = editable
-        self.editable_path = path
+        self.editing = self._get_record_field_from_path(path)
         editable.connect('remove-widget', remove)
         return False
 
@@ -1030,9 +1031,9 @@
             callback()
 
     def set_editable(self):
-        if not self.editable:
+        if not self.editable and not self.editing:
             return
-        record, field = self._get_record_field_from_path(self.editable_path)
+        record, field = self.editing
         value = self.get_value(record, field)
         self.update_selection(record, field)
         self.set_popdown_value(self.editable, value)

Reply via email to