changeset ffa01a5fda7b in tryton:5.0
details: https://hg.tryton.org/tryton?cmd=changeset;node=ffa01a5fda7b
description:
        Use editable path to update editable on display

        The current record is not necessary linked to the editable. For example 
when a
        new record is added, the current record is changed before the editing 
is done.
        Also the CellRendererCombo does not emit remove-widget when focus is 
changed
        which prevent to clear the editable variables.

        issue9618
        issue9266
        review314471002
        (grafted from 07b4d22509fcbabb19118233e1cacfb4f15d5f3a)
diffstat:

 tryton/gui/window/view_form/view/list.py            |   2 +-
 tryton/gui/window/view_form/view/list_gtk/widget.py |  16 +++++++++++-----
 2 files changed, 12 insertions(+), 6 deletions(-)

diffs (60 lines):

diff -r 38b91c650e1a -r ffa01a5fda7b tryton/gui/window/view_form/view/list.py
--- a/tryton/gui/window/view_form/view/list.py  Sun Oct 18 20:31:00 2020 +0200
+++ b/tryton/gui/window/view_form/view/list.py  Wed Oct 21 23:21:26 2020 +0200
@@ -1049,7 +1049,7 @@
             if not name:
                 continue
             widget = self.get_column_widget(column)
-            widget.set_editable(current_record)
+            widget.set_editable()
             if decoder.decode(widget.attrs.get('tree_invisible', '0')):
                 column.set_visible(False)
             elif name == self.screen.exclude_field:
diff -r 38b91c650e1a -r ffa01a5fda7b 
tryton/gui/window/view_form/view/list_gtk/widget.py
--- a/tryton/gui/window/view_form/view/list_gtk/widget.py       Sun Oct 18 
20:31:00 2020 +0200
+++ b/tryton/gui/window/view_form/view/list_gtk/widget.py       Wed Oct 21 
23:21:26 2020 +0200
@@ -116,7 +116,7 @@
 
 class Cell(object):
 
-    def set_editable(self, record):
+    def set_editable(self):
         pass
 
 
@@ -264,15 +264,19 @@
         if callback:
             callback()
 
-    def set_editable(self, record):
-        if not record or not self.editable:
+    def set_editable(self):
+        if not self.editable:
             return
+        store = self.view.treeview.get_model()
+        record = store.get_value(store.get_iter(self.editable_path), 0)
         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.editable = editable
+        self.editable_path = path
         editable.connect('remove-widget', remove)
         return False
 
@@ -840,9 +844,11 @@
         if callback:
             callback()
 
-    def set_editable(self, record):
-        if not record or not self.editable:
+    def set_editable(self):
+        if not self.editable:
             return
+        store = self.view.treeview.get_model()
+        record = store.get_value(store.get_iter(self.editable_path), 0)
         field = record[self.attrs['name']]
         value = field.get(record)
         self.update_selection(record, field)

Reply via email to