Improve leaving callback by validating field and managing next/previous

issue2668
review408002
This commit is contained in:
Cédric Krier committed 2012-06-28 15:22:17 +02:00
1 parent 2c0308bb0c
commit b5efb16bad
1 file changed
+13 -1
@@ -151,12 +151,24 @@ class EditableTreeView(gtk.TreeView):
txt = entry.get_text()
else:
txt = entry.get_active_text()
keyval = event.keyval
entry.handler_block(entry.editing_done_id)
def callback():
entry.handler_unblock(entry.editing_done_id)
field = record[column.name]
# Must wait the edited entry came back in valid state
gobject.idle_add(self.set_cursor, path, column, True)
if field.validate(record):
if (keyval in (gtk.keysyms.Tab, gtk.keysyms.KP_Enter)
or (keyval == gtk.keysyms.Right and leaving)):
gobject.idle_add(self.set_cursor, path,
self.__next_column(column), True)
elif (keyval == gtk.keysyms.ISO_Left_Tab
or (keyval == gtk.keysyms.Left and leaving)):
gobject.idle_add(self.set_cursor, path,
self.__prev_column(column), True)
else:
gobject.idle_add(self.set_cursor, path, column, True)
self.on_quit_cell(record, column.name, txt, callback=callback)
if event.keyval in self.leaving_record_events:
fields = self.cells.keys()