You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-17 14:11:06 +00:00
Merge pull request #8920 from pixelpicosean/scroll-to-pan-canvas-item-editor
Add settings to pan canvas editor instead of zoom with mouse/touchpad scrolling
This commit is contained in:
@@ -596,6 +596,8 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
|
|||||||
set("2d_editor/keep_margins_when_changing_anchors", false);
|
set("2d_editor/keep_margins_when_changing_anchors", false);
|
||||||
|
|
||||||
set("2d_editor/warped_mouse_panning", true);
|
set("2d_editor/warped_mouse_panning", true);
|
||||||
|
set("2d_editor/scroll_to_pan", false);
|
||||||
|
set("2d_editor/pan_speed", 20);
|
||||||
|
|
||||||
set("game_window_placement/rect", 0);
|
set("game_window_placement/rect", 0);
|
||||||
hints["game_window_placement/rect"] = PropertyInfo(Variant::INT, "game_window_placement/rect", PROPERTY_HINT_ENUM, "Default,Centered,Custom Position,Force Maximized,Force Full Screen");
|
hints["game_window_placement/rect"] = PropertyInfo(Variant::INT, "game_window_placement/rect", PROPERTY_HINT_ENUM, "Default,Centered,Custom Position,Force Maximized,Force Full Screen");
|
||||||
|
|||||||
@@ -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)
|
if (bool(EditorSettings::get_singleton()->get("2d_editor/scroll_to_pan"))) {
|
||||||
return;
|
|
||||||
|
v_scroll->set_val(v_scroll->get_val() + int(EditorSettings::get_singleton()->get("2d_editor/pan_speed")) / zoom * b.factor);
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
_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)
|
if (bool(EditorSettings::get_singleton()->get("2d_editor/scroll_to_pan"))) {
|
||||||
return;
|
|
||||||
|
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)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user