summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlula <6276139+alula@users.noreply.github.com>2023-06-20 03:22:54 +0200
committerAlula <6276139+alula@users.noreply.github.com>2023-06-21 18:56:58 +0200
commit9676905aee31a4554a40177cec3147244abd9d9e (patch)
tree09e6866c79f1da7408a6f108b908f8f86c8dd08a
parenteb86dabee07e8dfce3b06cbd557b50b74afd3d6c (diff)
downloadredot-engine-9676905aee31a4554a40177cec3147244abd9d9e.tar.gz
Add option to swap Alt+scroll zooming behavior in 2D editor
Update doc/classes/EditorSettings.xml Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
-rw-r--r--doc/classes/EditorSettings.xml3
-rw-r--r--editor/editor_settings.cpp1
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp8
3 files changed, 11 insertions, 1 deletions
diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml
index 59a74b5cd1..477933d29b 100644
--- a/doc/classes/EditorSettings.xml
+++ b/doc/classes/EditorSettings.xml
@@ -237,6 +237,9 @@
<member name="editors/2d/smart_snapping_line_color" type="Color" setter="" getter="">
The color to use when drawing smart snapping lines in the 2D editor. The smart snapping lines will automatically display when moving 2D nodes if smart snapping is enabled in the Snapping Options menu at the top of the 2D editor viewport.
</member>
+ <member name="editors/2d/use_integer_zoom_by_default" type="bool" setter="" getter="">
+ If [code]true[/code], the 2D editor will snap to integer zoom values while not holding the [kbd]Alt[/kbd] key and powers of two while holding it. If [code]false[/code], this behavior is swapped.
+ </member>
<member name="editors/2d/viewport_border_color" type="Color" setter="" getter="">
The color of the viewport border in the 2D editor. This border represents the viewport's size at the base resolution defined in the Project Settings. Objects placed outside this border will not be visible unless a [Camera2D] node is used, or unless the window is resized and the stretch mode is set to [code]disabled[/code].
</member>
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index 5deb590875..e41c9584b7 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -686,6 +686,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("editors/2d/bone_outline_color", Color(0.35, 0.35, 0.35, 0.5));
_initial_set("editors/2d/bone_outline_size", 2);
_initial_set("editors/2d/viewport_border_color", Color(0.4, 0.4, 1.0, 0.4));
+ _initial_set("editors/2d/use_integer_zoom_by_default", false);
// Panning
// Enum should be in sync with ControlScheme in ViewPanner.
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index 9fe55766d5..88ce9a1e64 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -1289,7 +1289,13 @@ void CanvasItemEditor::_zoom_callback(float p_zoom_factor, Vector2 p_origin, Ref
if (mb.is_valid()) {
// Special behvior for scroll events, as the zoom_by_increment method can smartly end up on powers of two.
int increment = p_zoom_factor > 1.0 ? 1 : -1;
- zoom_widget->set_zoom_by_increments(increment, mb->is_alt_pressed());
+ bool by_integer = mb->is_alt_pressed();
+
+ if (EDITOR_GET("editors/2d/use_integer_zoom_by_default")) {
+ by_integer = !by_integer;
+ }
+
+ zoom_widget->set_zoom_by_increments(increment, by_integer);
} else {
zoom_widget->set_zoom(zoom_widget->get_zoom() * p_zoom_factor);
}