changeset a474116c4b2e in tryton:5.4
details: https://hg.tryton.org/tryton?cmd=changeset;node=a474116c4b2e
description:
        Do not rely on cursor column for event with renderer

        Events with renderer may be linked to another column than the one 
having the
        cursor. So we must search for the column having the specific renderer
        otherwise we may process the wrong column.

        issue8897
        review291501002
        (grafted from 2f15b8290d0b5ee6d8422422199355fe86c9431b)
diffstat:

 tryton/gui/window/view_form/view/list_gtk/editabletree.py |  12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diffs (35 lines):

diff -r fd7afa3b6b3a -r a474116c4b2e 
tryton/gui/window/view_form/view/list_gtk/editabletree.py
--- a/tryton/gui/window/view_form/view/list_gtk/editabletree.py Fri Apr 24 
21:55:30 2020 +0200
+++ b/tryton/gui/window/view_form/view/list_gtk/editabletree.py Fri Apr 24 
21:57:10 2020 +0200
@@ -157,7 +157,8 @@
         return True
 
     def on_keypressed(self, entry, event, renderer):
-        path, column = self.get_cursor()
+        path = self.get_cursor()[0]
+        column = self.get_column_from_renderer(renderer)
         model = self.get_model()
         record = model.get_value(model.get_iter(path), 0)
         self.display_counter += 1  # Force a display
@@ -300,9 +301,10 @@
         return new_path
 
     def on_editing_done(self, entry, renderer):
-        path, column = self.get_cursor()
+        path = self.get_cursor()[0]
         if not path:
             return True
+        column = self.get_column_from_renderer(renderer)
         model = self.get_model()
         record = model.get_value(model.get_iter(path), 0)
         if isinstance(entry, (Date, Time)):
@@ -318,3 +320,9 @@
         else:
             text = entry.get_text()
         self.on_quit_cell(record, column, renderer, text)
+
+    def get_column_from_renderer(self, renderer):
+        for column in self.get_columns():
+            for cell in column.get_cells():
+                if cell == renderer:
+                    return column

Reply via email to