Skip to content

Commit b762c84

Browse files
author
Milkii Brewster
committed
Merge PR falkTX#1555: handle unordered add/position change events
2 parents 9cec31e + 40ce12f commit b762c84

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

source/frontend/patchcanvas/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,9 @@ def __init__(self):
141141
self.initial_pos = QPointF(0, 0)
142142
self.size_rect = QRectF()
143143

144+
self.pending_group_joins = set()
145+
self.pending_position_changes = {}
146+
144147
def callback(self, action, value1, value2, value_str):
145148
print("Canvas::callback({}, {}, {}, {})".format(action, value1, value2, value_str))
146149

source/frontend/patchcanvas/patchcanvas.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,17 @@ def addGroup(group_id, group_name, split=SPLIT_UNDEF, icon=ICON_APPLICATION):
415415

416416
canvas.group_list.append(group_dict)
417417

418+
# Callbacks can arrive out of order, so we might have pending events.
419+
if group_id in canvas.pending_group_joins:
420+
joinGroup(group_id)
421+
canvas.pending_group_joins.remove(group_id)
422+
423+
if group_id in canvas.pending_position_changes:
424+
position_change = canvas.pending_position_changes[group_id]
425+
setGroupPosFull(*position_change)
426+
del canvas.pending_position_changes[group_id]
427+
428+
418429
if options.eyecandy == EYECANDY_FULL and not options.auto_hide_groups:
419430
CanvasItemFX(group_box, True, False)
420431
else:
@@ -619,6 +630,7 @@ def joinGroup(group_id):
619630
# FIXME
620631
if not (item and s_item):
621632
qCritical("PatchCanvas::joinGroup(%i) - unable to find groups to join" % group_id)
633+
canvas.pending_group_joins.add(group_id)
622634
return
623635

624636

@@ -775,6 +787,7 @@ def setGroupPosFull(group_id, group_pos_x_o, group_pos_y_o, group_pos_x_i, group
775787

776788
qCritical("PatchCanvas::setGroupPos(%i, %i, %i, %i, %i) - unable to find group to reposition" % (
777789
group_id, group_pos_x_o, group_pos_y_o, group_pos_x_i, group_pos_y_i))
790+
canvas.pending_position_changes[group_id] = (group_id, group_pos_x_o, group_pos_y_o, group_pos_x_i, group_pos_y_i)
778791

779792
# ------------------------------------------------------------------------------------------------------------
780793

0 commit comments

Comments
 (0)