|
@@ -1207,7 +1207,26 @@ bool CanvasItemEditor::_gui_input_rulers_and_guides(const Ref<InputEvent> &p_eve
|
|
bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event, bool p_already_accepted) {
|
|
bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event, bool p_already_accepted) {
|
|
Ref<InputEventMouseButton> b = p_event;
|
|
Ref<InputEventMouseButton> b = p_event;
|
|
if (b.is_valid() && !p_already_accepted) {
|
|
if (b.is_valid() && !p_already_accepted) {
|
|
- bool pan_on_scroll = bool(EditorSettings::get_singleton()->get("editors/2d/scroll_to_pan")) && !b->get_control();
|
|
|
|
|
|
+ const bool pan_on_scroll = bool(EditorSettings::get_singleton()->get("editors/2d/scroll_to_pan")) && !b->get_control();
|
|
|
|
+
|
|
|
|
+ if (pan_on_scroll) {
|
|
|
|
+ // Perform horizontal scrolling first so we can check for Shift being held.
|
|
|
|
+ if (b->is_pressed() &&
|
|
|
|
+ (b->get_button_index() == BUTTON_WHEEL_LEFT || (b->get_shift() && b->get_button_index() == BUTTON_WHEEL_UP))) {
|
|
|
|
+ // Pan left
|
|
|
|
+ view_offset.x -= int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor();
|
|
|
|
+ update_viewport();
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (b->is_pressed() &&
|
|
|
|
+ (b->get_button_index() == BUTTON_WHEEL_RIGHT || (b->get_shift() && b->get_button_index() == BUTTON_WHEEL_DOWN))) {
|
|
|
|
+ // Pan right
|
|
|
|
+ view_offset.x += int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor();
|
|
|
|
+ update_viewport();
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
if (b->is_pressed() && b->get_button_index() == BUTTON_WHEEL_DOWN) {
|
|
if (b->is_pressed() && b->get_button_index() == BUTTON_WHEEL_DOWN) {
|
|
// Scroll or pan down
|
|
// Scroll or pan down
|
|
@@ -1239,24 +1258,6 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event, bo
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
- if (b->is_pressed() && b->get_button_index() == BUTTON_WHEEL_LEFT) {
|
|
|
|
- // Pan left
|
|
|
|
- if (pan_on_scroll) {
|
|
|
|
- view_offset.x -= int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor();
|
|
|
|
- update_viewport();
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (b->is_pressed() && b->get_button_index() == BUTTON_WHEEL_RIGHT) {
|
|
|
|
- // Pan right
|
|
|
|
- if (pan_on_scroll) {
|
|
|
|
- view_offset.x += int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor();
|
|
|
|
- update_viewport();
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if (!panning) {
|
|
if (!panning) {
|
|
if (b->is_pressed() &&
|
|
if (b->is_pressed() &&
|
|
(b->get_button_index() == BUTTON_MIDDLE ||
|
|
(b->get_button_index() == BUTTON_MIDDLE ||
|