Reviewers: ,


Please review this at http://codereview.tryton.org/237002/

Affected files:
  M tryton/gui/window/view_form/view/list_gtk/parser.py


Index: tryton/gui/window/view_form/view/list_gtk/parser.py
===================================================================

--- a/tryton/gui/window/view_form/view/list_gtk/parser.py
+++ b/tryton/gui/window/view_form/view/list_gtk/parser.py
@@ -4,6 +4,7 @@
 import os
 import gobject
 import tempfile
+from functools import wraps
 from editabletree import EditableTreeView
 from tryton.gui.window.view_form.view.interface import ParserInterface
 from tryton.gui.window.win_search import WinSearch
@@ -73,6 +74,16 @@
         store.group.append(record)


+def realized(func):
+    "Decorator for treeview realized"
+    @wraps(func)
+    def wrapper(self, *args, **kwargs):
+        if not self.treeview.get_realized():
+            return
+        return func(self, *args, **kwargs)
+    return wrapper
+
+
 class ParserTree(ParserInterface):

     def __init__(self, parent=None, attrs=None, screen=None,
@@ -146,6 +157,8 @@
                     icon = node_attrs['icon']

                     def setter(column, cell, store, iter):
+                        if not self.treeview.get_realized():
+                            return
                         record = store.get_value(iter, 0)
                         value = record[icon].get_client(record) or ''
                         common.ICONFACTORY.register_icon(value)
@@ -286,6 +299,7 @@
         self.renderer.connect('editing-started', self.editing_started)
         self.treeview = treeview

+    @realized
     def setter(self, column, cell, store, iter):
         record = store.get_value(iter, 0)
         text = self.get_textual_value(record)
@@ -435,6 +449,7 @@
         self.renderer = CellRendererFloat()
         self.renderer.connect('editing-started', self.editing_started)

+    @realized
     def setter(self, column, cell, store, iter):
         super(Float, self).setter(column, cell, store, iter)
         record = store.get_value(iter, 0)
@@ -484,6 +499,7 @@
         if callback:
             callback()

+    @realized
     def setter(self, column, cell, store, iter):
         record = store.get_value(iter, 0)
         size = record[self.field_name].get_size(record)
@@ -659,6 +675,7 @@

 class O2M(Char):

+    @realized
     def setter(self, column, cell, store, iter):
         super(O2M, self).setter(column, cell, store, iter)
         cell.set_property('xalign', 0.5)
@@ -690,6 +707,7 @@

 class M2M(Char):

+    @realized
     def setter(self, column, cell, store, iter):
         super(M2M, self).setter(column, cell, store, iter)
         cell.set_property('xalign', 0.5)
@@ -919,6 +937,7 @@
         self.renderer.set_property('orientation', orientation)
         self.treeview = treeview

+    @realized
     def setter(self, column, cell, store, iter):
         record = store.get_value(iter, 0)
         value = float(self.get_textual_value(record) or 0.0)
@@ -952,6 +971,7 @@

         self.renderer.connect('clicked', self.button_clicked)

+    @realized
     def setter(self, column, cell, store, iter):
         record = store.get_value(iter, 0)
         states = record.expr_eval(self.attrs.get('states', {}),



--
[email protected] mailing list

Reply via email to