From ea31af68ba4aa5f15ef0dab9555f80d8efdfe6c7 Mon Sep 17 00:00:00 2001 From: Yuri Sizov Date: Sun, 4 Apr 2021 17:08:25 +0300 Subject: [PATCH] Expose editor scale to the plugin API --- doc/classes/EditorInterface.xml | 8 ++++++++ editor/editor_plugin.cpp | 5 +++++ editor/editor_plugin.h | 1 + 3 files changed, 14 insertions(+) diff --git a/doc/classes/EditorInterface.xml b/doc/classes/EditorInterface.xml index b01af71852e2..4d0e11fb19e4 100644 --- a/doc/classes/EditorInterface.xml +++ b/doc/classes/EditorInterface.xml @@ -48,6 +48,14 @@ [b]Note:[/b] This returns the main editor control containing the whole editor, not the 2D or 3D viewports specifically. + + + + + Returns the actual scale of the editor UI ([code]1.0[/code] being 100% scale). This can be used to adjust position and dimensions of the UI added by plugins. + [b]Note:[/b] This value is set via the [code]interface/editor/display_scale[/code] and [code]interface/editor/custom_display_scale[/code] editor settings. Editor must be restarted for changes to be properly applied. + + diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp index c0cecbc6513d..064271fce84f 100644 --- a/editor/editor_plugin.cpp +++ b/editor/editor_plugin.cpp @@ -262,6 +262,10 @@ Control *EditorInterface::get_base_control() { return EditorNode::get_singleton()->get_gui_base(); } +float EditorInterface::get_editor_scale() const { + return EDSCALE; +} + void EditorInterface::set_plugin_enabled(const String &p_plugin, bool p_enabled) { EditorNode::get_singleton()->set_addon_plugin_enabled(p_plugin, p_enabled, true); } @@ -306,6 +310,7 @@ void EditorInterface::_bind_methods() { ClassDB::bind_method(D_METHOD("get_editor_settings"), &EditorInterface::get_editor_settings); ClassDB::bind_method(D_METHOD("get_script_editor"), &EditorInterface::get_script_editor); ClassDB::bind_method(D_METHOD("get_base_control"), &EditorInterface::get_base_control); + ClassDB::bind_method(D_METHOD("get_editor_scale"), &EditorInterface::get_editor_scale); ClassDB::bind_method(D_METHOD("edit_resource", "resource"), &EditorInterface::edit_resource); ClassDB::bind_method(D_METHOD("open_scene_from_path", "scene_filepath"), &EditorInterface::open_scene_from_path); ClassDB::bind_method(D_METHOD("reload_scene_from_path", "scene_filepath"), &EditorInterface::reload_scene_from_path); diff --git a/editor/editor_plugin.h b/editor/editor_plugin.h index ae9fcfb28abc..b0713c641b96 100644 --- a/editor/editor_plugin.h +++ b/editor/editor_plugin.h @@ -100,6 +100,7 @@ class EditorInterface : public Node { FileSystemDock *get_file_system_dock(); Control *get_base_control(); + float get_editor_scale() const; void set_plugin_enabled(const String &p_plugin, bool p_enabled); bool is_plugin_enabled(const String &p_plugin) const;