changeset 4204a72c9923 in tryton:6.0
details: https://hg.tryton.org/tryton?cmd=changeset&node=4204a72c9923
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 bbccd7a49294 -r 4204a72c9923 
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')

Reply via email to