Skip to content

Commit 69fccc0

Browse files
authored
Merge pull request #236 from endlessm/parameter-input-drag-fixes
ParameterInput: Ignore mouse events when not visible
2 parents 756d62b + eece502 commit 69fccc0

File tree

11 files changed

+124
-62
lines changed

11 files changed

+124
-62
lines changed

addons/block_code/ui/blocks/control_block/control_block.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func _ready():
1717
%SnapGutter.custom_minimum_size.x = Constants.CONTROL_MARGIN
1818

1919

20-
func _on_drag_drop_area_mouse_down():
20+
func _on_drag_drop_area_drag_started() -> void:
2121
_drag_started()
2222

2323

addons/block_code/ui/blocks/control_block/control_block.tscn

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
[ext_resource type="Script" path="res://addons/block_code/ui/blocks/control_block/control_block.gd" id="1_2hbir"]
44
[ext_resource type="Script" path="res://addons/block_code/ui/blocks/utilities/background/gutter.gd" id="2_6o8pf"]
5-
[ext_resource type="PackedScene" uid="uid://c7puyxpqcq6xo" path="res://addons/block_code/ui/blocks/utilities/drag_drop_area/drag_drop_area.tscn" id="2_lpu3c"]
65
[ext_resource type="Script" path="res://addons/block_code/ui/blocks/utilities/background/background.gd" id="2_tx0qr"]
6+
[ext_resource type="PackedScene" uid="uid://c7puyxpqcq6xo" path="res://addons/block_code/ui/blocks/utilities/drag_drop_area/drag_drop_area.tscn" id="3_21e8n"]
77
[ext_resource type="PackedScene" uid="uid://b1oge52xhjqnu" path="res://addons/block_code/ui/blocks/utilities/snap_point/snap_point.tscn" id="3_nhryi"]
88
[ext_resource type="PackedScene" uid="uid://b1xvp3u11h41s" path="res://addons/block_code/ui/blocks/utilities/template_editor/template_editor.tscn" id="4_6uktl"]
99

@@ -48,8 +48,9 @@ script = ExtResource("2_tx0qr")
4848
color = Color(1, 1, 1, 1)
4949
shift_bottom = 20.0
5050

51-
[node name="DragDropArea" parent="VBoxContainer/MarginContainer/Rows/Row" instance=ExtResource("2_lpu3c")]
51+
[node name="DragDropArea" parent="VBoxContainer/MarginContainer/Rows/Row" instance=ExtResource("3_21e8n")]
5252
layout_mode = 2
53+
mouse_default_cursor_shape = 2
5354

5455
[node name="RowHBoxContainer" type="MarginContainer" parent="VBoxContainer/MarginContainer/Rows/Row"]
5556
layout_mode = 2
@@ -95,4 +96,4 @@ shift_top = 20.0
9596
[node name="SnapPoint" parent="VBoxContainer" instance=ExtResource("3_nhryi")]
9697
layout_mode = 2
9798

98-
[connection signal="mouse_down" from="VBoxContainer/MarginContainer/Rows/Row/DragDropArea" to="." method="_on_drag_drop_area_mouse_down"]
99+
[connection signal="drag_started" from="VBoxContainer/MarginContainer/Rows/Row/DragDropArea" to="." method="_on_drag_drop_area_drag_started"]

addons/block_code/ui/blocks/entry_block/entry_block.tscn

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[ext_resource type="Script" path="res://addons/block_code/ui/blocks/entry_block/entry_block.gd" id="2_3ik8h"]
44
[ext_resource type="Script" path="res://addons/block_code/ui/blocks/utilities/background/background.gd" id="2_yrw8l"]
5-
[ext_resource type="PackedScene" uid="uid://c7puyxpqcq6xo" path="res://addons/block_code/ui/blocks/utilities/drag_drop_area/drag_drop_area.tscn" id="3_v0qw8"]
5+
[ext_resource type="PackedScene" uid="uid://c7puyxpqcq6xo" path="res://addons/block_code/ui/blocks/utilities/drag_drop_area/drag_drop_area.tscn" id="3_swkpp"]
66
[ext_resource type="PackedScene" uid="uid://b1xvp3u11h41s" path="res://addons/block_code/ui/blocks/utilities/template_editor/template_editor.tscn" id="4_1gwsm"]
77
[ext_resource type="PackedScene" uid="uid://b1oge52xhjqnu" path="res://addons/block_code/ui/blocks/utilities/snap_point/snap_point.tscn" id="4_yj206"]
88

@@ -37,8 +37,9 @@ script = ExtResource("2_yrw8l")
3737
color = Color(1, 1, 1, 1)
3838
show_top = false
3939

40-
[node name="DragDropArea" parent="VBoxContainer/TopMarginContainer" instance=ExtResource("3_v0qw8")]
40+
[node name="DragDropArea" parent="VBoxContainer/TopMarginContainer" instance=ExtResource("3_swkpp")]
4141
layout_mode = 2
42+
mouse_default_cursor_shape = 2
4243

4344
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/TopMarginContainer"]
4445
layout_mode = 2
@@ -55,4 +56,4 @@ layout_mode = 2
5556
[node name="SnapPoint" parent="VBoxContainer" instance=ExtResource("4_yj206")]
5657
layout_mode = 2
5758

58-
[connection signal="mouse_down" from="VBoxContainer/TopMarginContainer/DragDropArea" to="." method="_on_drag_drop_area_mouse_down"]
59+
[connection signal="drag_started" from="VBoxContainer/TopMarginContainer/DragDropArea" to="." method="_on_drag_drop_area_drag_started"]

addons/block_code/ui/blocks/parameter_block/parameter_block.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func _ready():
3030
_panel.add_theme_stylebox_override("panel", _panel_normal)
3131

3232

33-
func _on_drag_drop_area_mouse_down():
33+
func _on_drag_drop_area_drag_started() -> void:
3434
_drag_started()
3535

3636

addons/block_code/ui/blocks/parameter_block/parameter_block.tscn

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[gd_scene load_steps=5 format=3 uid="uid://clipm2dd28jde"]
22

33
[ext_resource type="Script" path="res://addons/block_code/ui/blocks/parameter_block/parameter_block.gd" id="1_0hajy"]
4-
[ext_resource type="PackedScene" uid="uid://c7puyxpqcq6xo" path="res://addons/block_code/ui/blocks/utilities/drag_drop_area/drag_drop_area.tscn" id="2_gy5co"]
4+
[ext_resource type="PackedScene" uid="uid://c7puyxpqcq6xo" path="res://addons/block_code/ui/blocks/utilities/drag_drop_area/drag_drop_area.tscn" id="2_0eadx"]
55
[ext_resource type="PackedScene" uid="uid://b1xvp3u11h41s" path="res://addons/block_code/ui/blocks/utilities/template_editor/template_editor.tscn" id="3_shl1a"]
66

77
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dbera"]
@@ -29,8 +29,9 @@ unique_name_in_owner = true
2929
layout_mode = 2
3030
theme_override_styles/panel = SubResource("StyleBoxFlat_dbera")
3131

32-
[node name="DragDropArea" parent="." instance=ExtResource("2_gy5co")]
32+
[node name="DragDropArea" parent="." instance=ExtResource("2_0eadx")]
3333
layout_mode = 2
34+
mouse_default_cursor_shape = 2
3435

3536
[node name="MarginContainer" type="MarginContainer" parent="."]
3637
layout_mode = 2
@@ -47,4 +48,4 @@ theme_override_constants/margin_bottom = 8
4748

4849
[connection signal="focus_entered" from="." to="." method="_on_focus_entered"]
4950
[connection signal="focus_exited" from="." to="." method="_on_focus_exited"]
50-
[connection signal="mouse_down" from="DragDropArea" to="." method="_on_drag_drop_area_mouse_down"]
51+
[connection signal="drag_started" from="DragDropArea" to="." method="_on_drag_drop_area_drag_started"]

addons/block_code/ui/blocks/statement_block/statement_block.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func _ready():
1818
_background.color = color
1919

2020

21-
func _on_drag_drop_area_mouse_down():
21+
func _on_drag_drop_area_drag_started() -> void:
2222
_drag_started()
2323

2424

addons/block_code/ui/blocks/statement_block/statement_block.tscn

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
[ext_resource type="Script" path="res://addons/block_code/ui/blocks/statement_block/statement_block.gd" id="1_6wvlf"]
44
[ext_resource type="Script" path="res://addons/block_code/ui/blocks/utilities/background/background.gd" id="2_lctqt"]
5-
[ext_resource type="PackedScene" uid="uid://c7puyxpqcq6xo" path="res://addons/block_code/ui/blocks/utilities/drag_drop_area/drag_drop_area.tscn" id="2_owgdx"]
65
[ext_resource type="PackedScene" uid="uid://b1oge52xhjqnu" path="res://addons/block_code/ui/blocks/utilities/snap_point/snap_point.tscn" id="3_5vaov"]
6+
[ext_resource type="PackedScene" uid="uid://c7puyxpqcq6xo" path="res://addons/block_code/ui/blocks/utilities/drag_drop_area/drag_drop_area.tscn" id="3_mbxhq"]
77
[ext_resource type="PackedScene" uid="uid://b1xvp3u11h41s" path="res://addons/block_code/ui/blocks/utilities/template_editor/template_editor.tscn" id="4_vky23"]
88

99
[node name="StatementBlock" type="MarginContainer" node_paths=PackedStringArray("bottom_snap", "template_editor")]
@@ -36,8 +36,9 @@ mouse_filter = 1
3636
script = ExtResource("2_lctqt")
3737
color = Color(1, 1, 1, 1)
3838

39-
[node name="DragDropArea" parent="VBoxContainer/TopMarginContainer" instance=ExtResource("2_owgdx")]
39+
[node name="DragDropArea" parent="VBoxContainer/TopMarginContainer" instance=ExtResource("3_mbxhq")]
4040
layout_mode = 2
41+
mouse_default_cursor_shape = 2
4142

4243
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/TopMarginContainer"]
4344
layout_mode = 2
@@ -54,4 +55,4 @@ layout_mode = 2
5455
[node name="SnapPoint" parent="VBoxContainer" instance=ExtResource("3_5vaov")]
5556
layout_mode = 2
5657

57-
[connection signal="mouse_down" from="VBoxContainer/TopMarginContainer/DragDropArea" to="." method="_on_drag_drop_area_mouse_down"]
58+
[connection signal="drag_started" from="VBoxContainer/TopMarginContainer/DragDropArea" to="." method="_on_drag_drop_area_drag_started"]
Lines changed: 61 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,65 @@
11
@tool
2-
extends MarginContainer
2+
## Drag drop area.
3+
##
4+
## A Control which watches for click and drag gestures beginning from itself.
5+
## It propagates events up to its parent, so it is possible to place this
6+
## control inside a control which processes input events such as [LineEdit].
7+
## If a drag occurs, it emits [signal drag_started].
8+
extends Control
39

4-
signal mouse_down
5-
signal mouse_up
10+
const Constants = preload("res://addons/block_code/ui/constants.gd")
611

12+
signal drag_started
713

8-
func _on_gui_input(event):
9-
if event is InputEventMouseButton and get_global_rect().has_point(event.global_position):
10-
var mouse_event: InputEventMouseButton = event as InputEventMouseButton
11-
if mouse_event.button_index == MOUSE_BUTTON_LEFT and mouse_event.pressed:
12-
mouse_down.emit()
13-
get_viewport().set_input_as_handled()
14-
if mouse_event.button_index == MOUSE_BUTTON_LEFT and not mouse_event.pressed:
15-
mouse_up.emit()
16-
get_viewport().set_input_as_handled()
14+
## True to require that the mouse move outside of the component before
15+
## [signal drag_started] is emitted.
16+
@export var drag_outside: bool = false
17+
18+
var _drag_start_position: Vector2 = Vector2.INF
19+
20+
21+
func _gui_input(event: InputEvent) -> void:
22+
# Watch for mouse clicks using _gui_input, so events are filtered based on
23+
# rules of the GUI system.
24+
25+
if not event is InputEventMouseButton:
26+
return
27+
28+
var button_event: InputEventMouseButton = event as InputEventMouseButton
29+
30+
if button_event.button_index != MOUSE_BUTTON_LEFT:
31+
return
32+
33+
if button_event.double_click:
34+
# Double click event (with the mouse released) has both pressed=true
35+
# and double_click=true, so ignore it as a special case.
36+
pass
37+
elif button_event.pressed:
38+
# Keep track of where the mouse click originated, but allow this
39+
# event to propagate to other nodes.
40+
_drag_start_position = event.global_position
41+
else:
42+
_drag_start_position = Vector2.INF
43+
44+
45+
func _input(event: InputEvent) -> void:
46+
# Watch for mouse movements using _input. This way, we receive mouse
47+
# movement events that occur outside of the component.
48+
49+
if not event is InputEventMouseMotion:
50+
return
51+
52+
if _drag_start_position == Vector2.INF:
53+
return
54+
55+
var motion_event: InputEventMouseMotion = event as InputEventMouseMotion
56+
57+
if drag_outside and get_global_rect().has_point(motion_event.global_position):
58+
return
59+
60+
if _drag_start_position.distance_to(motion_event.global_position) < Constants.MINIMUM_DRAG_THRESHOLD:
61+
return
62+
63+
get_viewport().set_input_as_handled()
64+
drag_started.emit()
65+
_drag_start_position = Vector2.INF

addons/block_code/ui/blocks/utilities/drag_drop_area/drag_drop_area.tscn

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22

33
[ext_resource type="Script" path="res://addons/block_code/ui/blocks/utilities/drag_drop_area/drag_drop_area.gd" id="1_5vdxp"]
44

5-
[node name="DragDropArea" type="MarginContainer"]
5+
[node name="DragDropArea" type="Control"]
6+
layout_mode = 3
67
anchors_preset = 15
78
anchor_right = 1.0
89
anchor_bottom = 1.0
910
grow_horizontal = 2
1011
grow_vertical = 2
11-
mouse_default_cursor_shape = 2
12+
mouse_filter = 1
1213
script = ExtResource("1_5vdxp")
13-
14-
[connection signal="gui_input" from="." to="." method="_on_gui_input"]

addons/block_code/ui/blocks/utilities/parameter_input/parameter_input.gd

Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ signal modified
2020
var default_value: Variant
2121

2222
var _drag_start: Vector2 = Vector2.INF
23-
var _is_dragging: bool = false
2423

2524
@onready var _panel := %Panel
2625
@onready var snap_point := %SnapPoint
@@ -156,6 +155,10 @@ func _ready():
156155
set_raw_input(default_value)
157156

158157

158+
func _on_drag_drop_area_drag_started():
159+
drag_started.emit()
160+
161+
159162
func get_snapped_block() -> Block:
160163
return snap_point.get_snapped_block()
161164

@@ -289,32 +292,3 @@ func _on_option_input_item_selected(index):
289292

290293
func _on_snap_point_snapped_block_changed(block):
291294
_update_visible_input()
292-
293-
294-
func _input(event: InputEvent) -> void:
295-
if snap_point.has_snapped_block():
296-
return
297-
298-
if event is InputEventMouseButton:
299-
var button_event: InputEventMouseButton = event as InputEventMouseButton
300-
301-
if button_event.button_index != MOUSE_BUTTON_LEFT:
302-
return
303-
304-
if button_event.double_click:
305-
# Double click event (with the mouse released) has both pressed=true
306-
# and double_click=true, so ignore it as a special case.
307-
pass
308-
elif button_event.pressed and get_global_rect().has_point(button_event.global_position):
309-
# Keep track of where the mouse click originated, but allow this
310-
# event to propagate to other nodes.
311-
_drag_start = event.global_position
312-
else:
313-
_drag_start = Vector2.INF
314-
elif _drag_start != Vector2.INF and event is InputEventMouseMotion:
315-
var motion_event: InputEventMouseMotion = event as InputEventMouseMotion
316-
317-
if not get_global_rect().has_point(event.global_position) and _drag_start.distance_to(event.global_position) > Constants.MINIMUM_DRAG_THRESHOLD:
318-
get_viewport().set_input_as_handled()
319-
drag_started.emit()
320-
_drag_start = Vector2.INF

addons/block_code/ui/blocks/utilities/parameter_input/parameter_input.tscn

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
[gd_scene load_steps=10 format=3 uid="uid://cjvxs6euc6xbm"]
1+
[gd_scene load_steps=11 format=3 uid="uid://cjvxs6euc6xbm"]
22

33
[ext_resource type="Script" path="res://addons/block_code/ui/blocks/utilities/parameter_input/parameter_input.gd" id="1_rgmxn"]
4+
[ext_resource type="PackedScene" uid="uid://c7puyxpqcq6xo" path="res://addons/block_code/ui/blocks/utilities/drag_drop_area/drag_drop_area.tscn" id="2_05gck"]
45
[ext_resource type="PackedScene" uid="uid://b1oge52xhjqnu" path="res://addons/block_code/ui/blocks/utilities/snap_point/snap_point.tscn" id="2_6esp3"]
56

67
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tn6h4"]
@@ -71,6 +72,10 @@ theme_override_styles/normal = SubResource("StyleBoxEmpty_6oowp")
7172
placeholder_text = "Parameter"
7273
expand_to_text_length = true
7374

75+
[node name="DragDropArea" parent="InputSwitcher/TextInput/LineEdit" instance=ExtResource("2_05gck")]
76+
layout_mode = 1
77+
drag_outside = true
78+
7479
[node name="ColorInput" type="ColorPickerButton" parent="InputSwitcher"]
7580
unique_name_in_owner = true
7681
visible = false
@@ -80,6 +85,10 @@ layout_mode = 2
8085
mouse_default_cursor_shape = 2
8186
theme_override_styles/normal = SubResource("StyleBoxEmpty_5hq7f")
8287

88+
[node name="DragDropArea" parent="InputSwitcher/ColorInput" instance=ExtResource("2_05gck")]
89+
layout_mode = 1
90+
drag_outside = true
91+
8392
[node name="OptionInput" type="OptionButton" parent="InputSwitcher"]
8493
unique_name_in_owner = true
8594
visible = false
@@ -90,6 +99,10 @@ theme_override_styles/normal = SubResource("StyleBoxEmpty_fjquj")
9099
action_mode = 1
91100
fit_to_longest_item = false
92101

102+
[node name="DragDropArea" parent="InputSwitcher/OptionInput" instance=ExtResource("2_05gck")]
103+
layout_mode = 1
104+
drag_outside = true
105+
93106
[node name="Vector2Input" type="MarginContainer" parent="InputSwitcher"]
94107
unique_name_in_owner = true
95108
visible = false
@@ -121,6 +134,10 @@ placeholder_text = "x"
121134
alignment = 1
122135
expand_to_text_length = true
123136

137+
[node name="DragDropArea" parent="InputSwitcher/Vector2Input/HBoxContainer/XLineEdit" instance=ExtResource("2_05gck")]
138+
layout_mode = 1
139+
drag_outside = true
140+
124141
[node name="Control3" type="Control" parent="InputSwitcher/Vector2Input/HBoxContainer"]
125142
layout_mode = 2
126143
size_flags_horizontal = 3
@@ -135,6 +152,10 @@ layout_mode = 2
135152
size_flags_horizontal = 4
136153
color = Color(0.804743, 0.804743, 0.804743, 1)
137154

155+
[node name="DragDropArea" parent="InputSwitcher/Vector2Input/HBoxContainer/CenterContainer/ColorRect" instance=ExtResource("2_05gck")]
156+
layout_mode = 1
157+
drag_outside = true
158+
138159
[node name="Control4" type="Control" parent="InputSwitcher/Vector2Input/HBoxContainer"]
139160
layout_mode = 2
140161
size_flags_horizontal = 3
@@ -154,6 +175,10 @@ placeholder_text = "y"
154175
alignment = 1
155176
expand_to_text_length = true
156177

178+
[node name="DragDropArea" parent="InputSwitcher/Vector2Input/HBoxContainer/YLineEdit" instance=ExtResource("2_05gck")]
179+
layout_mode = 1
180+
drag_outside = true
181+
157182
[node name="Control2" type="Control" parent="InputSwitcher/Vector2Input/HBoxContainer"]
158183
layout_mode = 2
159184
size_flags_horizontal = 3
@@ -179,6 +204,10 @@ popup/item_0/text = "false"
179204
popup/item_1/text = "true"
180205
popup/item_1/id = 1
181206

207+
[node name="DragDropArea" parent="InputSwitcher/BoolInput/BoolInputOption" instance=ExtResource("2_05gck")]
208+
layout_mode = 1
209+
drag_outside = true
210+
182211
[node name="SnapPoint" parent="." instance=ExtResource("2_6esp3")]
183212
unique_name_in_owner = true
184213
layout_mode = 2
@@ -187,11 +216,18 @@ variant_type = 4
187216

188217
[connection signal="focus_exited" from="InputSwitcher/TextInput/LineEdit" to="." method="_on_line_edit_focus_exited"]
189218
[connection signal="text_submitted" from="InputSwitcher/TextInput/LineEdit" to="." method="_on_line_edit_text_submitted"]
219+
[connection signal="drag_started" from="InputSwitcher/TextInput/LineEdit/DragDropArea" to="." method="_on_drag_drop_area_drag_started"]
190220
[connection signal="color_changed" from="InputSwitcher/ColorInput" to="." method="_on_color_input_color_changed"]
221+
[connection signal="drag_started" from="InputSwitcher/ColorInput/DragDropArea" to="." method="_on_drag_drop_area_drag_started"]
191222
[connection signal="item_selected" from="InputSwitcher/OptionInput" to="." method="_on_option_input_item_selected"]
223+
[connection signal="drag_started" from="InputSwitcher/OptionInput/DragDropArea" to="." method="_on_drag_drop_area_drag_started"]
192224
[connection signal="focus_exited" from="InputSwitcher/Vector2Input/HBoxContainer/XLineEdit" to="." method="_on_x_line_edit_focus_exited"]
193225
[connection signal="text_submitted" from="InputSwitcher/Vector2Input/HBoxContainer/XLineEdit" to="." method="_on_x_line_edit_text_submitted"]
226+
[connection signal="drag_started" from="InputSwitcher/Vector2Input/HBoxContainer/XLineEdit/DragDropArea" to="." method="_on_drag_drop_area_drag_started"]
227+
[connection signal="drag_started" from="InputSwitcher/Vector2Input/HBoxContainer/CenterContainer/ColorRect/DragDropArea" to="." method="_on_drag_drop_area_drag_started"]
194228
[connection signal="focus_exited" from="InputSwitcher/Vector2Input/HBoxContainer/YLineEdit" to="." method="_on_y_line_edit_focus_exited"]
195229
[connection signal="text_submitted" from="InputSwitcher/Vector2Input/HBoxContainer/YLineEdit" to="." method="_on_y_line_edit_text_submitted"]
230+
[connection signal="drag_started" from="InputSwitcher/Vector2Input/HBoxContainer/YLineEdit/DragDropArea" to="." method="_on_drag_drop_area_drag_started"]
196231
[connection signal="item_selected" from="InputSwitcher/BoolInput/BoolInputOption" to="." method="_on_option_input_item_selected"]
232+
[connection signal="drag_started" from="InputSwitcher/BoolInput/BoolInputOption/DragDropArea" to="." method="_on_drag_drop_area_drag_started"]
197233
[connection signal="snapped_block_changed" from="SnapPoint" to="." method="_on_snap_point_snapped_block_changed"]

0 commit comments

Comments
 (0)