Improve touchpad support in 2d editor viewport
Implements ideas from #30615
This commit is contained in:
parent
22c843b0c4
commit
e37594824f
1 changed files with 7 additions and 4 deletions
|
@ -1061,9 +1061,11 @@ 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 CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event) {
|
||||||
Ref<InputEventMouseButton> b = p_event;
|
Ref<InputEventMouseButton> b = p_event;
|
||||||
if (b.is_valid()) {
|
if (b.is_valid()) {
|
||||||
|
bool pan_on_scroll = bool(EditorSettings::get_singleton()->get("editors/2d/scroll_to_pan")) && !b->get_control();
|
||||||
|
|
||||||
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
|
||||||
if (bool(EditorSettings::get_singleton()->get("editors/2d/scroll_to_pan"))) {
|
if (pan_on_scroll) {
|
||||||
view_offset.y += int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor();
|
view_offset.y += int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor();
|
||||||
update_viewport();
|
update_viewport();
|
||||||
} else {
|
} else {
|
||||||
|
@ -1074,7 +1076,7 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event) {
|
||||||
|
|
||||||
if (b->is_pressed() && b->get_button_index() == BUTTON_WHEEL_UP) {
|
if (b->is_pressed() && b->get_button_index() == BUTTON_WHEEL_UP) {
|
||||||
// Scroll or pan up
|
// Scroll or pan up
|
||||||
if (bool(EditorSettings::get_singleton()->get("editors/2d/scroll_to_pan"))) {
|
if (pan_on_scroll) {
|
||||||
view_offset.y -= int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor();
|
view_offset.y -= int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor();
|
||||||
update_viewport();
|
update_viewport();
|
||||||
} else {
|
} else {
|
||||||
|
@ -1085,7 +1087,7 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event) {
|
||||||
|
|
||||||
if (b->is_pressed() && b->get_button_index() == BUTTON_WHEEL_LEFT) {
|
if (b->is_pressed() && b->get_button_index() == BUTTON_WHEEL_LEFT) {
|
||||||
// Pan left
|
// Pan left
|
||||||
if (bool(EditorSettings::get_singleton()->get("editors/2d/scroll_to_pan"))) {
|
if (pan_on_scroll) {
|
||||||
view_offset.x -= int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor();
|
view_offset.x -= int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor();
|
||||||
update_viewport();
|
update_viewport();
|
||||||
return true;
|
return true;
|
||||||
|
@ -1094,7 +1096,7 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event) {
|
||||||
|
|
||||||
if (b->is_pressed() && b->get_button_index() == BUTTON_WHEEL_RIGHT) {
|
if (b->is_pressed() && b->get_button_index() == BUTTON_WHEEL_RIGHT) {
|
||||||
// Pan right
|
// Pan right
|
||||||
if (bool(EditorSettings::get_singleton()->get("editors/2d/scroll_to_pan"))) {
|
if (pan_on_scroll) {
|
||||||
view_offset.x += int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor();
|
view_offset.x += int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor();
|
||||||
update_viewport();
|
update_viewport();
|
||||||
return true;
|
return true;
|
||||||
|
@ -1104,6 +1106,7 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event) {
|
||||||
if (!panning) {
|
if (!panning) {
|
||||||
if (b->is_pressed() &&
|
if (b->is_pressed() &&
|
||||||
(b->get_button_index() == BUTTON_MIDDLE ||
|
(b->get_button_index() == BUTTON_MIDDLE ||
|
||||||
|
b->get_button_index() == BUTTON_RIGHT ||
|
||||||
(b->get_button_index() == BUTTON_LEFT && tool == TOOL_PAN) ||
|
(b->get_button_index() == BUTTON_LEFT && tool == TOOL_PAN) ||
|
||||||
(b->get_button_index() == BUTTON_LEFT && !EditorSettings::get_singleton()->get("editors/2d/simple_panning") && pan_pressed))) {
|
(b->get_button_index() == BUTTON_LEFT && !EditorSettings::get_singleton()->get("editors/2d/simple_panning") && pan_pressed))) {
|
||||||
// Pan the viewport
|
// Pan the viewport
|
||||||
|
|
Loading…
Reference in a new issue