changeset 2f15b8290d0b in tryton:default
details: https://hg.tryton.org/tryton?cmd=changeset;node=2f15b8290d0b
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
diffstat:

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

diffs (35 lines):

diff -r 9e300cc0b350 -r 2f15b8290d0b 
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
@@ -153,7 +153,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
@@ -297,9 +298,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)):
@@ -315,3 +317,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