diff --git a/tryton/gui/main.py b/tryton/gui/main.py index bb7997a434..5ec4bd54ec 100644 --- a/tryton/gui/main.py +++ b/tryton/gui/main.py @@ -1069,8 +1069,12 @@ class Main(object): size=gtk.ICON_SIZE_MENU, detail=None) cell.set_property('pixbuf', pixbuf) column.set_cell_data_func(favorite_renderer, favorite_setter) + + def toggle_favorite(renderer, path, treeview): + if treeview.props.window: + self.toggle_favorite(renderer, path, treeview) favorite_renderer.connect('clicked', - lambda *a: gobject.idle_add(self.toggle_favorite, *a), treeview) + lambda *a: gobject.idle_add(toggle_favorite, *a), treeview) # Unset fixed height mode to add column treeview.set_fixed_height_mode(False) treeview.append_column(column) diff --git a/tryton/gui/window/dbcreate.py b/tryton/gui/window/dbcreate.py index 68312edb00..739bcf9cf2 100644 --- a/tryton/gui/window/dbcreate.py +++ b/tryton/gui/window/dbcreate.py @@ -123,6 +123,8 @@ class DBCreate(object): entry.handler_unblock(_hid) def _move_cursor(): + if not entry.props.window: + return with gtk.gdk.lock: entry.set_position(_pos) return False diff --git a/tryton/gui/window/dbrestore.py b/tryton/gui/window/dbrestore.py index d9a66a3a74..156435b30a 100644 --- a/tryton/gui/window/dbrestore.py +++ b/tryton/gui/window/dbrestore.py @@ -50,6 +50,8 @@ class DBRestore(object): entry.handler_unblock(_hid) def _move_cursor(): + if not entry.props.window: + return with gtk.gdk.lock: entry.set_position(_pos) return False diff --git a/tryton/gui/window/form.py b/tryton/gui/window/form.py index 5d43657c2f..2f1ef79f0a 100644 --- a/tryton/gui/window/form.py +++ b/tryton/gui/window/form.py @@ -138,8 +138,12 @@ class Form(SignalEvent, TabContent): self.screen.signal_connect(self, 'record-message', self._record_message) + + def record_modified(*args): + if self.widget_get().props.window: + self.record_modified(*args) self.screen.signal_connect(self, 'record-modified', - lambda *a: gobject.idle_add(self._record_modified, *a)) + lambda *a: gobject.idle_add(record_modified, *a)) self.screen.signal_connect(self, 'record-saved', self._record_saved) self.screen.signal_connect(self, 'attachment-count', self._attachment_count) diff --git a/tryton/gui/window/view_board/action.py b/tryton/gui/window/view_board/action.py index a14b74fb66..77b17c06e8 100644 --- a/tryton/gui/window/view_board/action.py +++ b/tryton/gui/window/view_board/action.py @@ -140,4 +140,7 @@ class Action(SignalEvent): if hasattr(self, 'screen'): # Catch early update # Using idle_add to prevent corruption of the event who triggered # the update. - gtk.idle_add(self.display) + def display(): + if self.screen.widget.props.window: + self.display() + gtk.idle_add(display) diff --git a/tryton/gui/window/view_form/view/form_gtk/interface.py b/tryton/gui/window/view_form/view/form_gtk/interface.py index 909f44930f..52d17cf383 100644 --- a/tryton/gui/window/view_form/view/form_gtk/interface.py +++ b/tryton/gui/window/view_form/view/form_gtk/interface.py @@ -67,10 +67,14 @@ class WidgetInterface(object): def send_modified(self, *args): def send(value): + if not self.widget.props.window: + return if self.record and self.get_value() == value: self.record.signal('record-modified') def get_value(): + if not self.widget.props.window: + return gobject.timeout_add(300, send, self.get_value()) # Wait the current event is finished to retreive the value gobject.idle_add(get_value) diff --git a/tryton/gui/window/view_form/view/form_gtk/many2one.py b/tryton/gui/window/view_form/view/form_gtk/many2one.py index 7459bc4dd1..e0c4b1c0e2 100644 --- a/tryton/gui/window/view_form/view/form_gtk/many2one.py +++ b/tryton/gui/window/view_form/view/form_gtk/many2one.py @@ -310,6 +310,8 @@ class Many2One(WidgetInterface): value = self.field.get(self.record) if self.has_target(value): def clean(): + if not self.wid_text.props.window: + return text = self.wid_text.get_text() position = self.wid_text.get_position() self.field.set_client(self.record, diff --git a/tryton/gui/window/view_form/view/screen_container.py b/tryton/gui/window/view_form/view/screen_container.py index 6bd6042c0b..8969eaf4ca 100644 --- a/tryton/gui/window/view_form/view/screen_container.py +++ b/tryton/gui/window/view_form/view/screen_container.py @@ -2,7 +2,6 @@ #this repository contains the full copyright notices and license terms. import gtk import gettext -import operator import gobject import tryton.common as common @@ -348,6 +347,8 @@ class ScreenContainer(object): def match_selected(self, completion, model, iter): def callback(): + if not self.search_entry.props.window: + return self.update() self.search_entry.emit('changed') gobject.idle_add(callback) @@ -364,8 +365,12 @@ class ScreenContainer(object): self.search_entry.grab_focus() def key_press(self, widget, event): - gobject.idle_add(self.update) - gobject.idle_add(self.bookmark_match) + def keypress(): + if not self.search_entry.props.window: + return + self.update() + self.bookmark_match() + gobject.idle_add(keypress) def icon_press(self, widget, icon_pos, event): if icon_pos == 1: