changeset 5c15e55109c0 in tryton:5.2
details: https://hg.tryton.org/tryton?cmd=changeset;node=5c15e55109c0
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 4caee1b3446b -r 5c15e55109c0 
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