Skip to content

Commit d49b949

Browse files
committed
Middle mouse pan
1 parent 4478548 commit d49b949

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

addons/block_code/ui/block_canvas/block_canvas.gd

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -163,20 +163,18 @@ func release_scope():
163163
func _input(event):
164164
if event is InputEventKey:
165165
if event.keycode == KEY_SHIFT:
166-
if event.pressed:
167-
_mouse_override.mouse_filter = Control.MOUSE_FILTER_PASS
168-
_mouse_override.mouse_default_cursor_shape = Control.CURSOR_MOVE
169-
else:
170-
_mouse_override.mouse_filter = Control.MOUSE_FILTER_IGNORE
171-
_mouse_override.mouse_default_cursor_shape = Control.CURSOR_ARROW
166+
set_mouse_override(event.pressed)
172167

173168
if event is InputEventMouseButton:
174-
if event.button_index == MOUSE_BUTTON_LEFT:
169+
if event.button_index == MOUSE_BUTTON_LEFT or event.button_index == MOUSE_BUTTON_MIDDLE:
175170
if event.pressed and is_mouse_over():
176171
_panning = true
177172
else:
178173
_panning = false
179174

175+
if event.button_index == MOUSE_BUTTON_MIDDLE:
176+
set_mouse_override(event.pressed)
177+
180178
var relative_mouse_pos := get_global_mouse_position() - get_global_rect().position
181179

182180
if is_mouse_over():
@@ -192,7 +190,7 @@ func _input(event):
192190
_window.position -= (old_mouse_window_pos - canvas_to_window(relative_mouse_pos)) * _window.scale.x
193191

194192
if event is InputEventMouseMotion:
195-
if Input.is_key_pressed(KEY_SHIFT) and _panning:
193+
if (Input.is_key_pressed(KEY_SHIFT) and _panning) or (Input.is_mouse_button_pressed(MOUSE_BUTTON_MIDDLE) and _panning):
196194
_window.position += event.relative
197195

198196

@@ -206,3 +204,12 @@ func window_to_canvas(v: Vector2) -> Vector2:
206204

207205
func is_mouse_over() -> bool:
208206
return get_global_rect().has_point(get_global_mouse_position())
207+
208+
209+
func set_mouse_override(override: bool):
210+
if override:
211+
_mouse_override.mouse_filter = Control.MOUSE_FILTER_PASS
212+
_mouse_override.mouse_default_cursor_shape = Control.CURSOR_MOVE
213+
else:
214+
_mouse_override.mouse_filter = Control.MOUSE_FILTER_IGNORE
215+
_mouse_override.mouse_default_cursor_shape = Control.CURSOR_ARROW

0 commit comments

Comments
 (0)