@@ -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