Fix GtkWarning: gtk_tree_view_unref_tree_helper: assertion `node != NULL'
Handle next on record in a dict for each ModelList
This commit is contained in:
1 parent
d6dc45362a
commit
7687283388
4 files changed
+15
-14
No files matched your search
@@ -13,18 +13,19 @@ class ModelList(list):
|
||||
|
||||
def insert(self, pos, obj):
|
||||
if pos >= 1:
|
||||
self.__getitem__(pos - 1).next = obj
|
||||
self.__getitem__(pos - 1).next[id(self)] = obj
|
||||
if pos < self.__len__():
|
||||
obj.next = self.__getitem__(pos)
|
||||
obj.next[id(self)] = self.__getitem__(pos)
|
||||
else:
|
||||
obj.next = None
|
||||
obj.next[id(self)] = None
|
||||
super(ModelList, self).insert(pos, obj)
|
||||
if not self.lock_signal:
|
||||
self.__screen.signal('record-changed', ('record-added', pos))
|
||||
|
||||
def append(self, obj):
|
||||
if self.__len__() >= 1:
|
||||
self.__getitem__(self.__len__() - 1).next = obj
|
||||
self.__getitem__(self.__len__() - 1).next[id(self)] = obj
|
||||
obj.next[id(self)] = None
|
||||
super(ModelList, self).append(obj)
|
||||
if not self.lock_signal:
|
||||
self.__screen.signal('record-changed', ('record-added', -1))
|
||||
@@ -33,9 +34,9 @@ class ModelList(list):
|
||||
idx = self.index(obj)
|
||||
if idx >= 1:
|
||||
if idx + 1 < self.__len__():
|
||||
self.__getitem__(idx - 1).next = self.__getitem__(idx + 1)
|
||||
self.__getitem__(idx - 1).next[id(self)] = self.__getitem__(idx + 1)
|
||||
else:
|
||||
self.__getitem__(idx - 1).next = None
|
||||
self.__getitem__(idx - 1).next[id(self)] = None
|
||||
super(ModelList, self).remove(obj)
|
||||
if not self.lock_signal:
|
||||
self.__screen.signal('record-changed', ('record-removed', idx))
|
||||
|
||||
@@ -39,7 +39,7 @@ class ModelRecord(SignalEvent):
|
||||
self.modified_fields = {}
|
||||
self.read_time = time.time()
|
||||
self.attachment_count = -1
|
||||
self.next = None
|
||||
self.next = {}
|
||||
for key, val in self.mgroup.mfields.items():
|
||||
self.value[key] = val.create(self)
|
||||
if (new and val.attrs['type']=='one2many') \
|
||||
|
||||
@@ -145,10 +145,10 @@ class ViewForm(ParserView):
|
||||
return self.widgets[name]
|
||||
|
||||
def destroy(self):
|
||||
self.widget.destroy()
|
||||
for widget in self.widgets.keys():
|
||||
self.widgets[widget].widget.destroy()
|
||||
del self.widgets[widget]
|
||||
self.widget.destroy()
|
||||
del self.widget
|
||||
del self.widgets
|
||||
del self.screen
|
||||
|
||||
@@ -24,14 +24,14 @@ class AdaptModelGroup(gtk.GenericTreeModel):
|
||||
def added(self, modellist, position):
|
||||
if modellist is self.models:
|
||||
model = self.models[position]
|
||||
self.emit('row_inserted', self.on_get_path(model),
|
||||
self.get_iter(self.on_get_path(model)))
|
||||
self.row_inserted(self.on_get_path(model),
|
||||
self.get_iter(self.on_get_path(model)))
|
||||
|
||||
def cancel(self):
|
||||
pass
|
||||
|
||||
def removed(self, lst, position):
|
||||
self.emit('row_deleted', position)
|
||||
self.row_deleted(position)
|
||||
self.invalidate_iters()
|
||||
|
||||
def append(self, model):
|
||||
@@ -71,10 +71,10 @@ class AdaptModelGroup(gtk.GenericTreeModel):
|
||||
prev = None
|
||||
for model in self.models:
|
||||
if prev:
|
||||
prev.next = model
|
||||
prev.next[id(self.models)] = model
|
||||
prev = model
|
||||
if prev:
|
||||
prev.next = None
|
||||
prev.next[id(self.models)] = None
|
||||
self.rows_reordered(None, None, new_order)
|
||||
|
||||
def __len__(self):
|
||||
@@ -109,7 +109,7 @@ class AdaptModelGroup(gtk.GenericTreeModel):
|
||||
|
||||
def on_iter_next(self, node):
|
||||
try:
|
||||
return node.next
|
||||
return node.next[id(self.models)]
|
||||
except IndexError:
|
||||
return None
|
||||
|
||||
|
||||
Reference in new issue
Block a user