|
@@ -1037,17 +1037,27 @@ void CanvasItemEditor::_viewport_input_event(const InputEvent &p_event) {
|
|
|
|
|
|
if (b.button_index == BUTTON_WHEEL_DOWN) {
|
|
if (b.button_index == BUTTON_WHEEL_DOWN) {
|
|
|
|
|
|
- if (zoom < MIN_ZOOM)
|
|
|
|
- return;
|
|
|
|
|
|
+ if (bool(EditorSettings::get_singleton()->get("2d_editor/scroll_to_pan"))) {
|
|
|
|
+
|
|
|
|
+ v_scroll->set_val(v_scroll->get_val() + int(EditorSettings::get_singleton()->get("2d_editor/pan_speed")) / zoom * b.factor);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+
|
|
|
|
+ if (zoom < MIN_ZOOM)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ float prev_zoom = zoom;
|
|
|
|
+ zoom = zoom * (1 - (0.05 * b.factor));
|
|
|
|
+ {
|
|
|
|
+ Point2 ofs(b.x, b.y);
|
|
|
|
+ ofs = ofs / prev_zoom - ofs / zoom;
|
|
|
|
+ h_scroll->set_val(h_scroll->get_val() + ofs.x);
|
|
|
|
+ v_scroll->set_val(v_scroll->get_val() + ofs.y);
|
|
|
|
+ }
|
|
|
|
|
|
- float prev_zoom = zoom;
|
|
|
|
- zoom = zoom * (1 - (0.05 * b.factor));
|
|
|
|
- {
|
|
|
|
- Point2 ofs(b.x, b.y);
|
|
|
|
- ofs = ofs / prev_zoom - ofs / zoom;
|
|
|
|
- h_scroll->set_val(h_scroll->get_val() + ofs.x);
|
|
|
|
- v_scroll->set_val(v_scroll->get_val() + ofs.y);
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
_update_scroll(0);
|
|
_update_scroll(0);
|
|
viewport->update();
|
|
viewport->update();
|
|
return;
|
|
return;
|
|
@@ -1055,16 +1065,25 @@ void CanvasItemEditor::_viewport_input_event(const InputEvent &p_event) {
|
|
|
|
|
|
if (b.button_index == BUTTON_WHEEL_UP) {
|
|
if (b.button_index == BUTTON_WHEEL_UP) {
|
|
|
|
|
|
- if (zoom > MAX_ZOOM)
|
|
|
|
- return;
|
|
|
|
|
|
+ if (bool(EditorSettings::get_singleton()->get("2d_editor/scroll_to_pan"))) {
|
|
|
|
+
|
|
|
|
+ v_scroll->set_val(v_scroll->get_val() - int(EditorSettings::get_singleton()->get("2d_editor/pan_speed")) / zoom * b.factor);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+
|
|
|
|
+ if (zoom > MAX_ZOOM)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ float prev_zoom = zoom;
|
|
|
|
+ zoom = zoom * ((0.95 + (0.05 * b.factor)) / 0.95);
|
|
|
|
+ {
|
|
|
|
+ Point2 ofs(b.x, b.y);
|
|
|
|
+ ofs = ofs / prev_zoom - ofs / zoom;
|
|
|
|
+ h_scroll->set_val(h_scroll->get_val() + ofs.x);
|
|
|
|
+ v_scroll->set_val(v_scroll->get_val() + ofs.y);
|
|
|
|
+ }
|
|
|
|
|
|
- float prev_zoom = zoom;
|
|
|
|
- zoom = zoom * ((0.95 + (0.05 * b.factor)) / 0.95);
|
|
|
|
- {
|
|
|
|
- Point2 ofs(b.x, b.y);
|
|
|
|
- ofs = ofs / prev_zoom - ofs / zoom;
|
|
|
|
- h_scroll->set_val(h_scroll->get_val() + ofs.x);
|
|
|
|
- v_scroll->set_val(v_scroll->get_val() + ofs.y);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
_update_scroll(0);
|
|
_update_scroll(0);
|
|
@@ -1072,6 +1091,32 @@ void CanvasItemEditor::_viewport_input_event(const InputEvent &p_event) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (b.button_index == BUTTON_WHEEL_LEFT) {
|
|
|
|
+
|
|
|
|
+ if (bool(EditorSettings::get_singleton()->get("2d_editor/scroll_to_pan"))) {
|
|
|
|
+
|
|
|
|
+ h_scroll->set_val(h_scroll->get_val() - int(EditorSettings::get_singleton()->get("2d_editor/pan_speed")) / zoom * b.factor);
|
|
|
|
+
|
|
|
|
+ _update_scroll(0);
|
|
|
|
+ viewport->update();
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (b.button_index == BUTTON_WHEEL_RIGHT) {
|
|
|
|
+
|
|
|
|
+ if (bool(EditorSettings::get_singleton()->get("2d_editor/scroll_to_pan"))) {
|
|
|
|
+
|
|
|
|
+ h_scroll->set_val(h_scroll->get_val() + int(EditorSettings::get_singleton()->get("2d_editor/pan_speed")) / zoom * b.factor);
|
|
|
|
+
|
|
|
|
+ _update_scroll(0);
|
|
|
|
+ viewport->update();
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
if (b.button_index == BUTTON_RIGHT) {
|
|
if (b.button_index == BUTTON_RIGHT) {
|
|
|
|
|
|
if (b.pressed && (tool == TOOL_SELECT && b.mod.alt)) {
|
|
if (b.pressed && (tool == TOOL_SELECT && b.mod.alt)) {
|