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