changeset 44f2584a9b8c in tryton:5.0
details: https://hg.tryton.org/tryton?cmd=changeset&node=44f2584a9b8c
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 4172a204d8d4 -r 44f2584a9b8c 
tryton/gui/window/view_form/view/list_gtk/widget.py
--- a/tryton/gui/window/view_form/view/list_gtk/widget.py       Fri Apr 15 
21:25:37 2022 +0200
+++ b/tryton/gui/window/view_form/view/list_gtk/widget.py       Sun Jul 24 
23:35:45 2022 +0200
@@ -7,6 +7,7 @@
 import webbrowser
 
 from functools import wraps, partial
+from weakref import WeakKeyDictionary
 
 import gobject
 
@@ -50,19 +51,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