changeset 75d9c0cb9b95 in tryton:6.2
details: https://hg.tryton.org/tryton?cmd=changeset&node=75d9c0cb9b95
description:
Keep realized state per TreeView instance
and do not call decorated function for not realized instance.
issue11596
review431361003
(grafted from 4bb055fdffb4d32a08b0d071ae1faac3d4d5e734)
diffstat:
tryton/gui/window/view_form/view/list_gtk/widget.py | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diffs (38 lines):
diff -r 7db904d1ae05 -r 75d9c0cb9b95
tryton/gui/window/view_form/view/list_gtk/widget.py
--- a/tryton/gui/window/view_form/view/list_gtk/widget.py Sun Jul 24
23:32:56 2022 +0200
+++ b/tryton/gui/window/view_form/view/list_gtk/widget.py Sun Jul 24
23:35:45 2022 +0200
@@ -5,6 +5,7 @@
import gettext
import webbrowser
from functools import wraps, partial
+from weakref import WeakKeyDictionary
from gi.repository import Gdk, GLib, Gtk
@@ -51,19 +52,24 @@
def realized(func):
- has_been_realized = False
@wraps(func)
def wrapper(self, *args, **kwargs):
- nonlocal has_been_realized
+ has_been_realized = _REALIZED.get(self.view.treeview, False)
if not has_been_realized:
has_been_realized = self.view.treeview.get_realized()
if has_been_realized:
self.view.treeview.queue_resize()
+ _REALIZED[self.view.treeview] = True
+ else:
+ return
return func(self, *args, **kwargs)
return wrapper
+_REALIZED = WeakKeyDictionary()
+
+
class CellCache(list):
methods = ('set_active', 'set_sensitive', 'set_property')