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