Delay execution of CellRendererBinary callbacks

If those callbacks open a popups, GTK shows some warning and eventually it
leads to a segmentation fault. So we delay them using by executing them when
the loop is idle.

issue8111
review48731002
This commit is contained in:
Cédric Krier committed 2019-02-20 12:04:00 +01:00
1 parent 9e1fa47b2c
commit 74eb7d4e94
1 file changed
+11 -3
@@ -8,6 +8,8 @@ import webbrowser
from functools import wraps, partial
import gobject
from tryton.gui.window.win_search import WinSearch
from tryton.gui.window.win_form import WinForm
from tryton.gui.window.view_form.screen import Screen
@@ -426,9 +428,15 @@ class Binary(GenericText):
if renderer is None:
renderer = partial(CellRendererBinary, bool(self.filename))
super(Binary, self).__init__(view, attrs, renderer=renderer)
self.renderer.connect('select', self.select_binary)
self.renderer.connect('open', self.open_binary)
self.renderer.connect('save', self.save_binary)
self.renderer.connect(
'select',
lambda *args: gobject.idle_add(self.select_binary, *args))
self.renderer.connect(
'open',
lambda *args: gobject.idle_add(self.open_binary, *args))
self.renderer.connect(
'save',
lambda *args: gobject.idle_add(self.save_binary, *args))
self.renderer.connect('clear', self.clear_binary)
def get_textual_value(self, record):