Skip to content

Commit e4a6bba

Browse files
committed
Reset snap point variables in DragManager.drag_end
In the `drag_end` function, make sure to reset `previewing_snap_point` in addition to `preview_block`. This ensures that block snapping will work correctly if the same block is dragged a second time. In addition, defer cleaning up preview_block and previewing_snap_point to the end of the function. This avoids some confusion related to nested if statements. https://phabricator.endlessm.com/T35524
1 parent 7c520fb commit e4a6bba

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

addons/block_code/drag_manager/drag_manager.gd

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ var dragging: Block = null
1616

1717
var previewing_snap_point: SnapPoint = null
1818
var preview_block: Control = null
19-
var preview_owner: Block = null
2019

2120
var _picker: Picker
2221
var _block_canvas: BlockCanvas
@@ -132,16 +131,15 @@ func drag_ended():
132131

133132
# Check if in BlockCanvas
134133
var block_canvas_rect: Rect2 = _block_canvas.get_global_rect()
134+
135135
if block_canvas_rect.encloses(block_rect):
136136
dragging.disconnect_signals() # disconnect previous on canvas signal connections
137137
connect_block_canvas_signals(dragging)
138138
remove_child(dragging)
139139
dragging.on_canvas = true
140140

141-
if preview_block:
141+
if previewing_snap_point:
142142
# Can snap block
143-
preview_block.free()
144-
preview_block = null
145143
var orphaned_block = previewing_snap_point.set_snapped_block(dragging)
146144
if orphaned_block:
147145
# Place the orphan block somewhere outside the snap point
@@ -156,7 +154,13 @@ func drag_ended():
156154
else:
157155
dragging.queue_free()
158156

157+
if preview_block:
158+
preview_block.queue_free()
159+
preview_block = null
160+
161+
previewing_snap_point = null
159162
dragging = null
163+
160164
block_dropped.emit()
161165

162166

0 commit comments

Comments
 (0)