From a5d381587e6c38ffb27f603a5f7d93a471e6d903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 18 Oct 2009 16:54:52 +0200 Subject: [PATCH] Fix arrow keys in editable list for issue1246 --- .../view_form/view/list_gtk/editabletree.py | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/tryton/gui/window/view_form/view/list_gtk/editabletree.py b/tryton/gui/window/view_form/view/list_gtk/editabletree.py index c17d488c41..a93b26d53c 100644 --- a/tryton/gui/window/view_form/view/list_gtk/editabletree.py +++ b/tryton/gui/window/view_form/view/list_gtk/editabletree.py @@ -134,7 +134,24 @@ class EditableTreeView(gtk.TreeView): store = self.get_model() model = store.get_value(store.get_iter(path), 0) - if event.keyval in self.leaving_events: + leaving = False + if event.keyval == gtk.keysyms.Right: + if isinstance(entry, gtk.Entry): + if entry.get_position() >= \ + len(entry.get_text().decode('utf-8')) \ + and not entry.get_selection_bounds(): + leaving = True + else: + leaving = True + elif event.keyval == gtk.keysyms.Left: + if isinstance(entry, gtk.Entry): + if entry.get_position() <= 0 \ + and not entry.get_selection_bounds(): + leaving = True + else: + leaving = True + + if event.keyval in self.leaving_events or leaving: if isinstance(entry, gtk.Entry): txt = entry.get_text() else: @@ -160,10 +177,12 @@ class EditableTreeView(gtk.TreeView): obj_id = model.save() if not obj_id: return True - if event.keyval in (gtk.keysyms.Tab, gtk.keysyms.KP_Enter): + if event.keyval in (gtk.keysyms.Tab, gtk.keysyms.KP_Enter) \ + or (event.keyval == gtk.keysyms.Right and leaving): new_col = self.__next_column(column) self.set_cursor(path, new_col, True) - elif event.keyval == gtk.keysyms.ISO_Left_Tab: + elif event.keyval == gtk.keysyms.ISO_Left_Tab \ + or (event.keyval == gtk.keysyms.Left and leaving): new_col = self.__prev_column(column) self.set_cursor(path, new_col, True) elif event.keyval == gtk.keysyms.Up: