Fix concurrency conflict on DND for issue1991
This commit is contained in:
1 parent
abd92a07e1
commit
56f12033dc
2 files changed
+16
-1
No files matched your search
@@ -228,6 +228,12 @@ class Group(SignalEvent, list):
|
||||
self.append(record)
|
||||
else:
|
||||
self.insert(position, record)
|
||||
for record_rm in self.record_removed:
|
||||
if record_rm.id == record.id:
|
||||
self.record_removed.remove(record)
|
||||
for record_del in self.record_deleted:
|
||||
if record_del.id == record.id:
|
||||
self.record_deleted.remove(record)
|
||||
self.current_idx = position
|
||||
if modified:
|
||||
record.modified_fields.setdefault('id')
|
||||
|
||||
@@ -84,9 +84,18 @@ class AdaptModelGroup(gtk.GenericTreeModel):
|
||||
group = record_pos.group
|
||||
pos = group.index(record_pos) + offset
|
||||
if group is not record.group:
|
||||
prev_group = record.group
|
||||
record.group.remove(record, remove=True, force_remove=True)
|
||||
# Don't remove record from previous group
|
||||
# as the new parent will change the parent
|
||||
# This prevents concurrency conflict
|
||||
record.group.record_removed.remove(record)
|
||||
group.add(record)
|
||||
record.modified_fields.setdefault(record.parent_name or 'id')
|
||||
if not record.parent_name:
|
||||
record.modified_fields.setdefault(prev_group.parent_name)
|
||||
record.value[prev_group.parent_name] = False
|
||||
else:
|
||||
record.modified_fields.setdefault(record.parent_name)
|
||||
group.move(record, pos)
|
||||
|
||||
def move_before(self, record, path):
|
||||
|
||||
Reference in new issue
Block a user