Merge pull request #114971 from KoBeWi/resettings

Reorganize interface/editor setttings
This commit is contained in:
Thaddeus Crews 2026-02-27 15:44:44 -06:00
commit 634220e9fc
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
29 changed files with 365 additions and 286 deletions

View file

@ -99,7 +99,7 @@
The shortcut used to open the dock.
</member>
<member name="force_show_icon" type="bool" setter="set_force_show_icon" getter="get_force_show_icon" default="false">
If [code]true[/code], the dock will always display an icon, regardless of [member EditorSettings.interface/editor/dock_tab_style] or [member EditorSettings.interface/editor/bottom_dock_tab_style].
If [code]true[/code], the dock will always display an icon, regardless of [member EditorSettings.interface/editor/docks/dock_tab_style] or [member EditorSettings.interface/editor/docks/bottom_dock_tab_style].
</member>
<member name="global" type="bool" setter="set_global" getter="is_global" default="true">
If [code]true[/code], the dock appears in the [b]Editor &gt; Editor Docks[/b] menu and can be closed. Non-global docks can still be closed using [method close] or when [member closable] is [code]true[/code].

View file

@ -5,7 +5,7 @@
</brief_description>
<description>
[EditorFileDialog] is a [FileDialog] tweaked to work in the editor. It automatically handles favorite and recent directory lists, and synchronizes some properties with their corresponding editor settings.
[EditorFileDialog] will automatically show a native dialog based on the [member EditorSettings.interface/editor/use_native_file_dialogs] editor setting and ignores [member FileDialog.use_native_dialog].
[EditorFileDialog] will automatically show a native dialog based on the [member EditorSettings.interface/editor/appearance/use_native_file_dialogs] editor setting and ignores [member FileDialog.use_native_dialog].
[b]Note:[/b] [EditorFileDialog] is invisible by default. To make it visible, call one of the [code]popup_*[/code] methods from [Window] on the node, such as [method Window.popup_centered_clamped].
</description>
<tutorials>

View file

@ -120,7 +120,7 @@
<return type="float" />
<description>
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 [member EditorSettings.interface/editor/display_scale] and [member EditorSettings.interface/editor/custom_display_scale] settings. The editor must be restarted for changes to be properly applied.
[b]Note:[/b] This value is set via the [member EditorSettings.interface/editor/appearance/display_scale] and [member EditorSettings.interface/editor/appearance/custom_display_scale] settings. The editor must be restarted for changes to be properly applied.
</description>
</method>
<method name="get_editor_settings" qualifiers="const">
@ -262,7 +262,7 @@
<description>
Returns [code]true[/code] if multiple window support is enabled in the editor. Multiple window support is enabled if [i]all[/i] of these statements are true:
- [member EditorSettings.interface/multi_window/enable] is [code]true[/code].
- [member EditorSettings.interface/editor/single_window_mode] is [code]false[/code].
- [member EditorSettings.interface/editor/display/single_window_mode] is [code]false[/code].
- [member Viewport.gui_embed_subwindows] is [code]false[/code]. This is forced to [code]true[/code] on platforms that don't support multiple windows such as Web, or when the [code]--single-window[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url] is used.
</description>
</method>

View file

@ -916,174 +916,174 @@
- [b]Disabled[/b] ([code]2[/code]): Accessibility support is fully disabled.
[b]Note:[/b] Accessibility debugging tools, such as Accessibility Insights for Windows, Accessibility Inspector (macOS), or AT-SPI Browser (Linux/BSD), do not count as assistive apps. To test the editor with these tools, use [b]Always Active[/b].
</member>
<member name="interface/editor/accept_dialog_cancel_ok_buttons" type="int" setter="" getter="">
<member name="interface/editor/appearance/accept_dialog_cancel_ok_buttons" type="int" setter="" getter="">
How to position the Cancel and OK buttons in the editor's [AcceptDialog] windows. Different platforms have different conventions for this, which can be overridden through this setting to avoid accidental clicks when using Godot on multiple platforms.
- [b]Auto[/b] follows the platform convention: OK first on Windows, KDE, and LXQt; Cancel first on macOS and other Linux desktop environments.
- [b]Cancel First[/b] forces the Cancel/OK ordering.
- [b]OK First[/b] forces the OK/Cancel ordering.
To check if these buttons are swapped at runtime, use [method DisplayServer.get_swap_cancel_ok].
</member>
<member name="interface/editor/automatically_open_screenshots" type="bool" setter="" getter="">
If [code]true[/code], automatically opens screenshots with the default program associated to [code].png[/code] files after a screenshot is taken using the [b]Editor &gt; Take Screenshot[/b] action.
</member>
<member name="interface/editor/bottom_dock_tab_style" type="int" setter="" getter="">
Tab style of editor docks located at the bottom.
</member>
<member name="interface/editor/code_font" type="String" setter="" getter="">
The font to use for the script editor. Must be a resource of a [Font] type such as a [code].ttf[/code] or [code].otf[/code] font file.
</member>
<member name="interface/editor/code_font_contextual_ligatures" type="int" setter="" getter="">
The font ligatures to enable for the currently configured code font. Not all fonts include support for ligatures.
[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/mono/]JetBrains Mono[/url]) has contextual ligatures in its font file.
</member>
<member name="interface/editor/code_font_custom_opentype_features" type="String" setter="" getter="">
List of custom OpenType features to use, if supported by the currently configured code font. Not all fonts include support for custom OpenType features. The string should follow the OpenType specification.
[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/mono/]JetBrains Mono[/url]) has custom OpenType features in its font file, but there is no documented list yet.
</member>
<member name="interface/editor/code_font_custom_variations" type="String" setter="" getter="">
List of alternative characters to use, if supported by the currently configured code font. Not all fonts include support for custom variations. The string should follow the OpenType specification.
[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/mono/]JetBrains Mono[/url]) has alternate characters in its font file, but there is no documented list yet.
</member>
<member name="interface/editor/code_font_size" type="int" setter="" getter="">
The size of the font in the script editor. This setting does not impact the font size of the Output panel (see [member run/output/font_size]).
</member>
<member name="interface/editor/collapse_main_menu" type="bool" setter="" getter="">
<member name="interface/editor/appearance/collapse_main_menu" type="bool" setter="" getter="">
If [code]true[/code], the main menu collapses into a [MenuButton].
[b]Note:[/b] This setting is only applicable on macOS when [member interface/editor/use_embedded_menu] is [code]true[/code].
[b]Note:[/b] This setting is only applicable on macOS when [member interface/editor/appearance/use_embedded_menu] is [code]true[/code].
[b]Note:[/b] Defaults to [code]true[/code] on the Android editor.
</member>
<member name="interface/editor/custom_display_scale" type="float" setter="" getter="">
<member name="interface/editor/appearance/custom_display_scale" type="float" setter="" getter="">
The custom editor scale factor to use. This can be used for displays with very high DPI where a scale factor of 200% is not sufficient.
[b]Note:[/b] Only effective if [member interface/editor/display_scale] is set to [b]Custom[/b].
[b]Note:[/b] Only effective if [member interface/editor/appearance/display_scale] is set to [b]Custom[/b].
</member>
<member name="interface/editor/display_scale" type="int" setter="" getter="">
<member name="interface/editor/appearance/display_scale" type="int" setter="" getter="">
The display scale factor to use for the editor interface. Higher values are more suited to hiDPI/Retina displays.
If set to [b]Auto[/b], the editor scale is automatically determined based on the screen resolution and reported display DPI. This heuristic is not always ideal, which means you can get better results by setting the editor scale manually.
If set to [b]Custom[/b], the scaling value in [member interface/editor/custom_display_scale] will be used.
If set to [b]Custom[/b], the scaling value in [member interface/editor/appearance/custom_display_scale] will be used.
</member>
<member name="interface/editor/dock_tab_style" type="int" setter="" getter="">
Tab style of editor docks, except bottom docks.
</member>
<member name="interface/editor/dragging_hover_wait_seconds" type="float" setter="" getter="">
During a drag-and-drop, this is how long to wait over a UI element before it triggers a reaction (e.g. a section unfolds to show nested items).
</member>
<member name="interface/editor/editor_language" type="String" setter="" getter="">
The language to use for the editor interface. If set to [b]Auto[/b], the language is automatically determined based on the system locale. See also [method EditorInterface.get_editor_language].
Translations are provided by the community. If you spot a mistake, [url=https://contributing.godotengine.org/en/latest/documentation/translation/index.html]contribute to editor translations on Weblate![/url]
</member>
<member name="interface/editor/editor_screen" type="int" setter="" getter="">
<member name="interface/editor/appearance/editor_screen" type="int" setter="" getter="">
The preferred monitor to display the editor. If [b]Auto[/b], the editor will remember the last screen it was displayed on across multiple sessions.
</member>
<member name="interface/editor/expand_to_title" type="bool" setter="" getter="">
<member name="interface/editor/appearance/expand_to_title" type="bool" setter="" getter="">
Expanding main editor window content to the title, if supported by [DisplayServer]. See [constant DisplayServer.WINDOW_FLAG_EXTEND_TO_TITLE].
Specific to the macOS platform.
</member>
<member name="interface/editor/font_allow_msdf" type="bool" setter="" getter="">
<member name="interface/editor/appearance/project_manager_screen" type="int" setter="" getter="">
The preferred monitor to display the project manager.
</member>
<member name="interface/editor/appearance/show_update_spinner" type="int" setter="" getter="">
If enabled, displays an icon in the top-right corner of the editor that spins when the editor redraws a frame. This can be used to diagnose situations where the engine is constantly redrawing, which should be avoided as this increases CPU and GPU utilization for no good reason. To further troubleshoot these situations, start the editor with the [code]--debug-canvas-item-redraw[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url].
Consider enabling this if you are developing editor plugins to ensure they only make the editor redraw when required.
The default [b]Auto[/b] value will only enable this if the editor was compiled with the [code]dev_build=yes[/code] SCons option (the default is [code]dev_build=no[/code]).
[b]Note:[/b] If [member interface/editor/display/update_continuously] is [code]true[/code], the spinner icon displays in red.
[b]Note:[/b] If the editor was started with the [code]--debug-canvas-item-redraw[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url], the update spinner will [i]never[/i] display regardless of this setting's value. This is to avoid confusion with what would cause redrawing in real world scenarios.
</member>
<member name="interface/editor/appearance/use_embedded_menu" type="bool" setter="" getter="">
If [code]true[/code], editor main menu is using embedded [MenuBar] instead of system global menu.
Specific to the macOS platform.
</member>
<member name="interface/editor/appearance/use_native_file_dialogs" type="bool" setter="" getter="">
If [code]true[/code], editor UI uses OS native file/directory selection dialogs.
</member>
<member name="interface/editor/behavior/automatically_open_screenshots" type="bool" setter="" getter="">
If [code]true[/code], automatically opens screenshots with the default program associated to [code].png[/code] files after a screenshot is taken using the [b]Editor &gt; Take Screenshot[/b] action.
</member>
<member name="interface/editor/behavior/import_resources_when_unfocused" type="bool" setter="" getter="">
If [code]true[/code], (re)imports resources even if the editor window is unfocused or minimized. If [code]false[/code], resources are only (re)imported when the editor window is focused. This can be set to [code]true[/code] to speed up iteration by starting the import process earlier when saving files in the project folder. This also allows getting visual feedback on changes without having to click the editor window, which is useful with multi-monitor setups. The downside of setting this to [code]true[/code] is that it increases idle CPU usage and may steal CPU time from other applications when importing resources.
</member>
<member name="interface/editor/behavior/save_each_scene_on_quit" type="bool" setter="" getter="">
If [code]false[/code], the editor will save all scenes when confirming the [b]Save[/b] action when quitting the editor or quitting to the project list. If [code]true[/code], the editor will ask to save each scene individually.
</member>
<member name="interface/editor/behavior/save_on_focus_loss" type="bool" setter="" getter="">
If [code]true[/code], scenes and scripts are saved when the editor loses focus. Depending on the work flow, this behavior can be less intrusive than [member text_editor/behavior/files/autosave_interval_secs] or remembering to save manually.
</member>
<member name="interface/editor/behavior/separate_distraction_mode" type="bool" setter="" getter="">
If [code]true[/code], the editor's Script tab will have a separate distraction mode setting from the 2D/3D/Game/AssetLib tabs. If [code]false[/code], the distraction-free mode toggle is shared between all tabs.
</member>
<member name="interface/editor/behavior/show_internal_errors_in_toast_notifications" type="int" setter="" getter="">
If enabled, displays internal engine errors in toast notifications (toggleable by clicking the "bell" icon at the bottom of the editor). No matter the value of this setting, non-internal engine errors will always be visible in toast notifications.
The default [b]Auto[/b] value will only enable this if the editor was compiled with the [code]dev_build=yes[/code] SCons option (the default is [code]dev_build=no[/code]).
</member>
<member name="interface/editor/display/keep_screen_on" type="bool" setter="" getter="">
If [code]true[/code], keeps the screen on (even in case of inactivity), so the screensaver does not take over. Works on desktop and mobile platforms.
</member>
<member name="interface/editor/display/single_window_mode" type="bool" setter="" getter="">
If [code]true[/code], embed modal windows such as docks inside the main editor window. When single-window mode is enabled, tooltips will also be embedded inside the main editor window, which means they can't be displayed outside of the editor window. Single-window mode can be faster as it does not need to create a separate window for every popup and tooltip, which can be a slow operation depending on the operating system and rendering method in use.
This is equivalent to [member ProjectSettings.display/window/subwindows/embed_subwindows] in the running project, except the setting's value is inverted.
[b]Note:[/b] To query whether the editor can use multiple windows in an editor plugin, use [method EditorInterface.is_multi_window_enabled] instead of querying the value of this editor setting.
[b]Note:[/b] If [code]true[/code], game embedding is disabled.
</member>
<member name="interface/editor/display/update_continuously" type="bool" setter="" getter="">
If [code]true[/code], redraws the editor every frame even if nothing has changed on screen. When this setting is enabled, the update spinner displays in red (see [member interface/editor/appearance/show_update_spinner]).
[b]Warning:[/b] This greatly increases CPU and GPU utilization, leading to increased power usage. This should only be enabled for troubleshooting purposes.
</member>
<member name="interface/editor/display/vsync_mode" type="int" setter="" getter="">
Sets the V-Sync mode for the editor. Does not affect the project when run from the editor (this is controlled by [member ProjectSettings.display/window/vsync/vsync_mode]).
Depending on the platform and used renderer, the engine will fall back to [b]Enabled[/b] if the desired mode is not supported.
[b]Note:[/b] V-Sync modes other than [b]Enabled[/b] are only supported in the Forward+ and Mobile rendering methods, not Compatibility.
</member>
<member name="interface/editor/docks/bottom_dock_tab_style" type="int" setter="" getter="">
Tab style of editor docks located at the bottom.
</member>
<member name="interface/editor/docks/dock_tab_style" type="int" setter="" getter="">
Tab style of editor docks, except bottom docks.
</member>
<member name="interface/editor/fonts/code_font" type="String" setter="" getter="">
The font to use for the script editor. Must be a resource of a [Font] type such as a [code].ttf[/code] or [code].otf[/code] font file.
</member>
<member name="interface/editor/fonts/code_font_contextual_ligatures" type="int" setter="" getter="">
The font ligatures to enable for the currently configured code font. Not all fonts include support for ligatures.
[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/mono/]JetBrains Mono[/url]) has contextual ligatures in its font file.
</member>
<member name="interface/editor/fonts/code_font_custom_opentype_features" type="String" setter="" getter="">
List of custom OpenType features to use, if supported by the currently configured code font. Not all fonts include support for custom OpenType features. The string should follow the OpenType specification.
[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/mono/]JetBrains Mono[/url]) has custom OpenType features in its font file, but there is no documented list yet.
</member>
<member name="interface/editor/fonts/code_font_custom_variations" type="String" setter="" getter="">
List of alternative characters to use, if supported by the currently configured code font. Not all fonts include support for custom variations. The string should follow the OpenType specification.
[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/mono/]JetBrains Mono[/url]) has alternate characters in its font file, but there is no documented list yet.
</member>
<member name="interface/editor/fonts/code_font_size" type="int" setter="" getter="">
The size of the font in the script editor. This setting does not impact the font size of the Output panel (see [member run/output/font_size]).
</member>
<member name="interface/editor/fonts/font_allow_msdf" type="bool" setter="" getter="">
If set to [code]true[/code], MSDF font rendering will be used for the visual shader graph editor. You may need to set this to [code]false[/code] when using a custom main font, as some fonts will look broken due to the use of self-intersecting outlines in their font data. Downloading the font from the font maker's official website as opposed to a service like Google Fonts can help resolve this issue.
</member>
<member name="interface/editor/font_antialiasing" type="int" setter="" getter="">
<member name="interface/editor/fonts/font_antialiasing" type="int" setter="" getter="">
FreeType's font anti-aliasing mode used to render the editor fonts. Most fonts are not designed to look good with anti-aliasing disabled, so it's recommended to leave this enabled unless you're using a pixel art font.
</member>
<member name="interface/editor/font_disable_embedded_bitmaps" type="bool" setter="" getter="">
<member name="interface/editor/fonts/font_disable_embedded_bitmaps" type="bool" setter="" getter="">
If set to [code]true[/code], embedded font bitmap loading is disabled (bitmap-only and color fonts ignore this property).
</member>
<member name="interface/editor/font_hinting" type="int" setter="" getter="">
<member name="interface/editor/fonts/font_hinting" type="int" setter="" getter="">
The font hinting mode to use for the editor fonts. FreeType supports the following font hinting modes:
- [b]None:[/b] Don't use font hinting when rasterizing the font. This results in a smooth font, but it can look blurry.
- [b]Light:[/b] Use hinting on the X axis only. This is a compromise between font sharpness and smoothness.
- [b]Normal:[/b] Use hinting on both X and Y axes. This results in a sharp font, but it doesn't look very smooth.
If set to [b]Auto[/b], the font hinting mode will be set to match the current operating system in use. This means the [b]Light[/b] hinting mode will be used on Windows and Linux, and the [b]None[/b] hinting mode will be used on macOS.
</member>
<member name="interface/editor/font_subpixel_positioning" type="int" setter="" getter="">
<member name="interface/editor/fonts/font_subpixel_positioning" type="int" setter="" getter="">
The subpixel positioning mode to use when rendering editor font glyphs. This affects both the main and code fonts. [b]Disabled[/b] is the fastest to render and uses the least memory. [b]Auto[/b] only uses subpixel positioning for small font sizes (where the benefit is the most noticeable). [b]One Half of a Pixel[/b] and [b]One Quarter of a Pixel[/b] force the same subpixel positioning mode for all editor fonts, regardless of their size (with [b]One Quarter of a Pixel[/b] being the highest-quality option).
</member>
<member name="interface/editor/import_resources_when_unfocused" type="bool" setter="" getter="">
If [code]true[/code], (re)imports resources even if the editor window is unfocused or minimized. If [code]false[/code], resources are only (re)imported when the editor window is focused. This can be set to [code]true[/code] to speed up iteration by starting the import process earlier when saving files in the project folder. This also allows getting visual feedback on changes without having to click the editor window, which is useful with multi-monitor setups. The downside of setting this to [code]true[/code] is that it increases idle CPU usage and may steal CPU time from other applications when importing resources.
</member>
<member name="interface/editor/keep_screen_on" type="bool" setter="" getter="">
If [code]true[/code], keeps the screen on (even in case of inactivity), so the screensaver does not take over. Works on desktop and mobile platforms.
</member>
<member name="interface/editor/localize_settings" type="bool" setter="" getter="">
If [code]true[/code], setting names in the editor are localized when possible.
[b]Note:[/b] This setting affects most [EditorInspector]s in the editor UI, primarily Project Settings and Editor Settings. To control names displayed in the Inspector dock, use [member interface/inspector/default_property_name_style] instead.
</member>
<member name="interface/editor/low_processor_mode_sleep_usec" type="int" setter="" getter="">
The amount of sleeping between frames in the editor (in microseconds). Higher values will result in lower CPU/GPU usage, which can improve battery life on laptops. However, higher values will result in a less responsive editor. The default value is set to allow for maximum smoothness on monitors up to 144 Hz. See also [member interface/editor/unfocused_low_processor_mode_sleep_usec].
[b]Note:[/b] This setting is ignored if [member interface/editor/update_continuously] is [code]true[/code], as enabling that setting disables low-processor mode.
</member>
<member name="interface/editor/main_font" type="String" setter="" getter="">
<member name="interface/editor/fonts/main_font" type="String" setter="" getter="">
The font to use for the editor interface. Must be a resource of a [Font] type such as a [code].ttf[/code] or [code].otf[/code] font file.
[b]Note:[/b] If the provided font is variable, a weight of 400 (normal) will be used.
</member>
<member name="interface/editor/main_font_bold" type="String" setter="" getter="">
<member name="interface/editor/fonts/main_font_bold" type="String" setter="" getter="">
The font to use for bold text in the editor interface. Must be a resource of a [Font] type such as a [code].ttf[/code] or [code].otf[/code] font file.
[b]Note:[/b] If the provided font is variable, a weight of 700 (bold) will be used.
</member>
<member name="interface/editor/main_font_custom_opentype_features" type="String" setter="" getter="">
<member name="interface/editor/fonts/main_font_custom_opentype_features" type="String" setter="" getter="">
List of custom OpenType features to use, if supported by the currently configured main font. Check what OpenType features are supported by your font first.
The string should follow the OpenType specification, e.g. [code]ss01,tnum,calt=false[/code]. Microsoft's documentation contains a list of [url=https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist]all registered features[/url].
[b]Note:[/b] The default editor main font ([url=https://rsms.me/inter]Inter[/url]) has custom OpenType features in its font file, with [code]ss04[/code] and [code]tnum[/code] enabled and [code]calt[/code] disabled by default. Supported features can be found at its website.
</member>
<member name="interface/editor/main_font_size" type="int" setter="" getter="">
<member name="interface/editor/fonts/main_font_size" type="int" setter="" getter="">
The size of the font in the editor interface.
</member>
<member name="interface/editor/mouse_extra_buttons_navigate_history" type="bool" setter="" getter="">
<member name="interface/editor/input/mouse_extra_buttons_navigate_history" type="bool" setter="" getter="">
If [code]true[/code], the mouse's additional side buttons will be usable to navigate in the script editor's file history. Set this to [code]false[/code] if you're using the side buttons for other purposes (such as a push-to-talk button in a VoIP program).
</member>
<member name="interface/editor/project_manager_screen" type="int" setter="" getter="">
The preferred monitor to display the project manager.
</member>
<member name="interface/editor/save_each_scene_on_quit" type="bool" setter="" getter="">
If [code]false[/code], the editor will save all scenes when confirming the [b]Save[/b] action when quitting the editor or quitting to the project list. If [code]true[/code], the editor will ask to save each scene individually.
</member>
<member name="interface/editor/save_on_focus_loss" type="bool" setter="" getter="">
If [code]true[/code], scenes and scripts are saved when the editor loses focus. Depending on the work flow, this behavior can be less intrusive than [member text_editor/behavior/files/autosave_interval_secs] or remembering to save manually.
</member>
<member name="interface/editor/separate_distraction_mode" type="bool" setter="" getter="">
If [code]true[/code], the editor's Script tab will have a separate distraction mode setting from the 2D/3D/Game/AssetLib tabs. If [code]false[/code], the distraction-free mode toggle is shared between all tabs.
</member>
<member name="interface/editor/show_internal_errors_in_toast_notifications" type="int" setter="" getter="">
If enabled, displays internal engine errors in toast notifications (toggleable by clicking the "bell" icon at the bottom of the editor). No matter the value of this setting, non-internal engine errors will always be visible in toast notifications.
The default [b]Auto[/b] value will only enable this if the editor was compiled with the [code]dev_build=yes[/code] SCons option (the default is [code]dev_build=no[/code]).
</member>
<member name="interface/editor/show_update_spinner" type="int" setter="" getter="">
If enabled, displays an icon in the top-right corner of the editor that spins when the editor redraws a frame. This can be used to diagnose situations where the engine is constantly redrawing, which should be avoided as this increases CPU and GPU utilization for no good reason. To further troubleshoot these situations, start the editor with the [code]--debug-canvas-item-redraw[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url].
Consider enabling this if you are developing editor plugins to ensure they only make the editor redraw when required.
The default [b]Auto[/b] value will only enable this if the editor was compiled with the [code]dev_build=yes[/code] SCons option (the default is [code]dev_build=no[/code]).
[b]Note:[/b] If [member interface/editor/update_continuously] is [code]true[/code], the spinner icon displays in red.
[b]Note:[/b] If the editor was started with the [code]--debug-canvas-item-redraw[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url], the update spinner will [i]never[/i] display regardless of this setting's value. This is to avoid confusion with what would cause redrawing in real world scenarios.
</member>
<member name="interface/editor/single_window_mode" type="bool" setter="" getter="">
If [code]true[/code], embed modal windows such as docks inside the main editor window. When single-window mode is enabled, tooltips will also be embedded inside the main editor window, which means they can't be displayed outside of the editor window. Single-window mode can be faster as it does not need to create a separate window for every popup and tooltip, which can be a slow operation depending on the operating system and rendering method in use.
This is equivalent to [member ProjectSettings.display/window/subwindows/embed_subwindows] in the running project, except the setting's value is inverted.
[b]Note:[/b] To query whether the editor can use multiple windows in an editor plugin, use [method EditorInterface.is_multi_window_enabled] instead of querying the value of this editor setting.
[b]Note:[/b] If [code]true[/code], game embedding is disabled.
</member>
<member name="interface/editor/tablet_driver" type="int" setter="" getter="">
<member name="interface/editor/input/tablet_driver" type="int" setter="" getter="">
Overrides the tablet driver used by the editor.
</member>
<member name="interface/editor/ui_layout_direction" type="int" setter="" getter="">
<member name="interface/editor/localization/editor_language" type="String" setter="" getter="">
The language to use for the editor interface. If set to [b]Auto[/b], the language is automatically determined based on the system locale. See also [method EditorInterface.get_editor_language].
Translations are provided by the community. If you spot a mistake, [url=https://contributing.godotengine.org/en/latest/documentation/translation/index.html]contribute to editor translations on Weblate![/url]
</member>
<member name="interface/editor/localization/localize_settings" type="bool" setter="" getter="">
If [code]true[/code], setting names in the editor are localized when possible.
[b]Note:[/b] This setting affects most [EditorInspector]s in the editor UI, primarily Project Settings and Editor Settings. To control names displayed in the Inspector dock, use [member interface/inspector/default_property_name_style] instead.
</member>
<member name="interface/editor/localization/ui_layout_direction" type="int" setter="" getter="">
Editor UI default layout direction.
</member>
<member name="interface/editor/unfocused_low_processor_mode_sleep_usec" type="int" setter="" getter="">
When the editor window is unfocused, the amount of sleeping between frames when the low-processor usage mode is enabled (in microseconds). Higher values will result in lower CPU/GPU usage, which can improve battery life on laptops (in addition to improving the running project's performance if the editor has to redraw continuously). However, higher values will result in a less responsive editor. The default value is set to limit the editor to 10 FPS when the editor window is unfocused. See also [member interface/editor/low_processor_mode_sleep_usec].
[b]Note:[/b] This setting is ignored if [member interface/editor/update_continuously] is [code]true[/code], as enabling that setting disables low-processor mode.
<member name="interface/editor/timers/dragging_hover_wait_seconds" type="float" setter="" getter="">
During a drag-and-drop, this is how long to wait over a UI element before it triggers a reaction (e.g. a section unfolds to show nested items).
</member>
<member name="interface/editor/update_continuously" type="bool" setter="" getter="">
If [code]true[/code], redraws the editor every frame even if nothing has changed on screen. When this setting is enabled, the update spinner displays in red (see [member interface/editor/show_update_spinner]).
[b]Warning:[/b] This greatly increases CPU and GPU utilization, leading to increased power usage. This should only be enabled for troubleshooting purposes.
<member name="interface/editor/timers/low_processor_mode_sleep_usec" type="int" setter="" getter="">
The amount of sleeping between frames in the editor (in microseconds). Higher values will result in lower CPU/GPU usage, which can improve battery life on laptops. However, higher values will result in a less responsive editor. The default value is set to allow for maximum smoothness on monitors up to 144 Hz. See also [member interface/editor/timers/unfocused_low_processor_mode_sleep_usec].
[b]Note:[/b] This setting is ignored if [member interface/editor/display/update_continuously] is [code]true[/code], as enabling that setting disables low-processor mode.
</member>
<member name="interface/editor/use_embedded_menu" type="bool" setter="" getter="">
If [code]true[/code], editor main menu is using embedded [MenuBar] instead of system global menu.
Specific to the macOS platform.
</member>
<member name="interface/editor/use_native_file_dialogs" type="bool" setter="" getter="">
If [code]true[/code], editor UI uses OS native file/directory selection dialogs.
</member>
<member name="interface/editor/vsync_mode" type="int" setter="" getter="">
Sets the V-Sync mode for the editor. Does not affect the project when run from the editor (this is controlled by [member ProjectSettings.display/window/vsync/vsync_mode]).
Depending on the platform and used renderer, the engine will fall back to [b]Enabled[/b] if the desired mode is not supported.
[b]Note:[/b] V-Sync modes other than [b]Enabled[/b] are only supported in the Forward+ and Mobile rendering methods, not Compatibility.
<member name="interface/editor/timers/unfocused_low_processor_mode_sleep_usec" type="int" setter="" getter="">
When the editor window is unfocused, the amount of sleeping between frames when the low-processor usage mode is enabled (in microseconds). Higher values will result in lower CPU/GPU usage, which can improve battery life on laptops (in addition to improving the running project's performance if the editor has to redraw continuously). However, higher values will result in a less responsive editor. The default value is set to limit the editor to 10 FPS when the editor window is unfocused. See also [member interface/editor/timers/low_processor_mode_sleep_usec].
[b]Note:[/b] This setting is ignored if [member interface/editor/display/update_continuously] is [code]true[/code], as enabling that setting disables low-processor mode.
</member>
<member name="interface/editors/derive_script_globals_by_name" type="bool" setter="" getter="">
If [code]true[/code], when extending a script, the global class name of the script is inserted in the script creation dialog, if it exists. If [code]false[/code], the script's file path is always inserted.
@ -1112,7 +1112,7 @@
- [b]Raw:[/b] Displays properties in [code]snake_case[/code].
- [b]Capitalized:[/b] Displays properties capitalized.
- [b]Localized:[/b] Displays the localized string for the current editor language if a translation is available for the given property. If no translation is available, falls back to [b]Capitalized[/b].
[b]Note:[/b] To display translated setting names in Project Settings and Editor Settings, use [member interface/editor/localize_settings] instead.
[b]Note:[/b] To display translated setting names in Project Settings and Editor Settings, use [member interface/editor/localization/localize_settings] instead.
</member>
<member name="interface/inspector/delimitate_all_container_and_resources" type="bool" setter="" getter="">
If [code]true[/code], add a margin around Array, Dictionary, and Resource Editors that are not already colored.
@ -1153,7 +1153,7 @@
</member>
<member name="interface/multi_window/enable" type="bool" setter="" getter="">
If [code]true[/code], multiple window support in editor is enabled. The following panels can become dedicated windows (i.e. made floating): Docks, Script editor, Shader editor, and Game Workspace.
[b]Note:[/b] When [member interface/editor/single_window_mode] is [code]true[/code], the multi window support is always disabled.
[b]Note:[/b] When [member interface/editor/display/single_window_mode] is [code]true[/code], the multi window support is always disabled.
[b]Note:[/b] To query whether the editor can use multiple windows in an editor plugin, use [method EditorInterface.is_multi_window_enabled] instead of querying the value of this editor setting.
</member>
<member name="interface/multi_window/maximize_window" type="bool" setter="" getter="">
@ -1353,7 +1353,7 @@
If [code]true[/code], the editor will clear the Output panel when running the project.
</member>
<member name="run/output/font_size" type="int" setter="" getter="">
The size of the font in the [b]Output[/b] panel at the bottom of the editor. This setting does not impact the font size of the script editor (see [member interface/editor/code_font_size]).
The size of the font in the [b]Output[/b] panel at the bottom of the editor. This setting does not impact the font size of the script editor (see [member interface/editor/fonts/code_font_size]).
</member>
<member name="run/output/max_lines" type="int" setter="" getter="">
Maximum number of lines to show at any one time in the Output panel.

View file

@ -1091,10 +1091,10 @@
<member name="display/window/subwindows/embed_subwindows" type="bool" setter="" getter="" default="true">
If [code]true[/code], subwindows are embedded in the main window (this is also called single-window mode). Single-window mode can be faster as it does not need to create a separate window for every popup and tooltip, which can be a slow operation depending on the operating system and rendering method in use.
If [code]false[/code], subwindows are created as separate windows (this is also called multi-window mode). This allows them to be moved outside the main window and use native operating system window decorations.
This is equivalent to [member EditorSettings.interface/editor/single_window_mode] in the editor.
This is equivalent to [member EditorSettings.interface/editor/display/single_window_mode] in the editor.
</member>
<member name="display/window/vsync/vsync_mode" type="int" setter="" getter="" default="1" keywords="adaptive, mailbox">
Sets the V-Sync mode for the main game window. The editor's own V-Sync mode can be set using [member EditorSettings.interface/editor/vsync_mode].
Sets the V-Sync mode for the main game window. The editor's own V-Sync mode can be set using [member EditorSettings.interface/editor/display/vsync_mode].
See [enum DisplayServer.VSyncMode] for possible values and how they affect the behavior of your application.
Depending on the platform and rendering method, the engine will fall back to [b]Enabled[/b] if the desired mode is not supported.
V-Sync can be disabled on the command line using the [code]--disable-vsync[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url].

View file

@ -60,7 +60,7 @@
[b]Note:[/b] Only available for SVG images.
</member>
<member name="editor/scale_with_editor_scale" type="bool" setter="" getter="" default="false">
If [code]true[/code], scales the imported image to match [member EditorSettings.interface/editor/custom_display_scale]. This should be enabled for editor plugin icons and custom class icons, but should be left disabled otherwise.
If [code]true[/code], scales the imported image to match [member EditorSettings.interface/editor/appearance/custom_display_scale]. This should be enabled for editor plugin icons and custom class icons, but should be left disabled otherwise.
[b]Note:[/b] Only available for SVG images.
</member>
<member name="mipmaps/generate" type="bool" setter="" getter="" default="false">

View file

@ -403,7 +403,7 @@ void EditorPerformanceProfiler::_notification(int p_what) {
} break;
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/localize_settings")) {
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/localization/localize_settings")) {
_build_monitor_tree();
}
} break;

View file

@ -177,7 +177,7 @@ void DockTabContainer::update_visibility() {
}
DockTabContainer::TabStyle DockTabContainer::get_tab_style() const {
return (TabStyle)EDITOR_GET("interface/editor/dock_tab_style").operator int();
return (TabStyle)EDITOR_GET("interface/editor/docks/dock_tab_style").operator int();
}
bool DockTabContainer::can_switch_dock() const {

View file

@ -185,7 +185,7 @@ void EditorDockManager::update_docks_menu() {
const Ref<Texture2D> default_icon = docks_menu->get_editor_theme_icon(SNAME("Window"));
const Color closed_icon_color_mod = Color(1, 1, 1, 0.5);
bool global_menu = !bool(EDITOR_GET("interface/editor/use_embedded_menu")) && NativeMenu::get_singleton()->has_feature(NativeMenu::FEATURE_GLOBAL_MENU);
bool global_menu = !bool(EDITOR_GET("interface/editor/appearance/use_embedded_menu")) && NativeMenu::get_singleton()->has_feature(NativeMenu::FEATURE_GLOBAL_MENU);
bool dark_mode = DisplayServer::get_singleton()->is_dark_mode_supported() && DisplayServer::get_singleton()->is_dark_mode();
int icon_max_width = EditorNode::get_singleton()->get_editor_theme()->get_constant(SNAME("class_icon_size"), EditorStringName(Editor));

View file

@ -1768,8 +1768,8 @@ void SceneTreeDock::_notification(int p_what) {
scene_tree->set_hide_filtered_out_parents(EDITOR_GET("docks/scene_tree/hide_filtered_out_parents"), false);
scene_tree->set_accessibility_warnings(EDITOR_GET("docks/scene_tree/accessibility_warnings"), false);
}
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor")) {
inspect_hovered_node_delay->set_wait_time(EDITOR_GET("interface/editor/dragging_hover_wait_seconds"));
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/timers")) {
inspect_hovered_node_delay->set_wait_time(EDITOR_GET("interface/editor/timers/dragging_hover_wait_seconds"));
}
} break;

View file

@ -457,7 +457,7 @@ void EditorNode::shortcut_input(const Ref<InputEvent> &p_event) {
}
void EditorNode::_update_vsync_mode() {
const DisplayServer::VSyncMode window_vsync_mode = DisplayServer::VSyncMode(int(EDITOR_GET("interface/editor/vsync_mode")));
const DisplayServer::VSyncMode window_vsync_mode = DisplayServer::VSyncMode(int(EDITOR_GET("interface/editor/display/vsync_mode")));
DisplayServer::get_singleton()->window_set_vsync_mode(window_vsync_mode);
}
@ -929,7 +929,7 @@ void EditorNode::_notification(int p_what) {
// Theme has already been created in the constructor, so we can skip that step.
_update_theme(true);
OS::get_singleton()->set_low_processor_usage_mode_sleep_usec(int(EDITOR_GET("interface/editor/low_processor_mode_sleep_usec")));
OS::get_singleton()->set_low_processor_usage_mode_sleep_usec(int(EDITOR_GET("interface/editor/timers/low_processor_mode_sleep_usec")));
get_tree()->get_root()->set_as_audio_listener_3d(false);
get_tree()->get_root()->set_as_audio_listener_2d(false);
get_tree()->get_root()->set_snap_2d_transforms_to_pixel(false);
@ -1000,7 +1000,7 @@ void EditorNode::_notification(int p_what) {
RenderingServer::get_singleton()->viewport_set_disable_2d(get_scene_root()->get_viewport_rid(), true);
RenderingServer::get_singleton()->viewport_set_environment_mode(get_viewport()->get_viewport_rid(), RSE::VIEWPORT_ENVIRONMENT_DISABLED);
DisplayServer::get_singleton()->screen_set_keep_on(EDITOR_GET("interface/editor/keep_screen_on"));
DisplayServer::get_singleton()->screen_set_keep_on(EDITOR_GET("interface/editor/display/keep_screen_on"));
feature_profile_manager->notify_changed();
@ -1040,7 +1040,7 @@ void EditorNode::_notification(int p_what) {
case NOTIFICATION_APPLICATION_FOCUS_IN: {
// Restore the original FPS cap after focusing back on the editor.
OS::get_singleton()->set_low_processor_usage_mode_sleep_usec(int(EDITOR_GET("interface/editor/low_processor_mode_sleep_usec")));
OS::get_singleton()->set_low_processor_usage_mode_sleep_usec(int(EDITOR_GET("interface/editor/timers/low_processor_mode_sleep_usec")));
if (_is_project_data_missing()) {
project_data_missing->popup_centered();
@ -1055,13 +1055,13 @@ void EditorNode::_notification(int p_what) {
case NOTIFICATION_APPLICATION_FOCUS_OUT: {
// Save on focus loss before applying the FPS limit to avoid slowing down the saving process.
if (EDITOR_GET("interface/editor/save_on_focus_loss")) {
if (EDITOR_GET("interface/editor/behavior/save_on_focus_loss")) {
_save_scene_silently();
}
// Set a low FPS cap to decrease CPU/GPU usage while the editor is unfocused.
if (unfocused_low_processor_usage_mode_enabled) {
OS::get_singleton()->set_low_processor_usage_mode_sleep_usec(int(EDITOR_GET("interface/editor/unfocused_low_processor_mode_sleep_usec")));
OS::get_singleton()->set_low_processor_usage_mode_sleep_usec(int(EDITOR_GET("interface/editor/timers/unfocused_low_processor_mode_sleep_usec")));
}
} break;
@ -1079,9 +1079,9 @@ void EditorNode::_notification(int p_what) {
FileDialog::set_default_display_mode(EDITOR_GET("filesystem/file_dialog/display_mode"));
}
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/tablet_driver")) {
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/input/tablet_driver")) {
String tablet_driver = GLOBAL_GET("input_devices/pen_tablet/driver");
int tablet_driver_idx = EDITOR_GET("interface/editor/tablet_driver");
int tablet_driver_idx = EDITOR_GET("interface/editor/input/tablet_driver");
if (tablet_driver_idx != -1) {
tablet_driver = DisplayServer::get_singleton()->tablet_get_driver_name(tablet_driver_idx);
}
@ -1092,7 +1092,7 @@ void EditorNode::_notification(int p_what) {
print_verbose("Using \"" + DisplayServer::get_singleton()->tablet_get_current_driver() + "\" pen tablet driver...");
}
if (EDITOR_GET("interface/editor/import_resources_when_unfocused")) {
if (EDITOR_GET("interface/editor/behavior/import_resources_when_unfocused")) {
scan_changes_timer->start();
} else {
scan_changes_timer->stop();
@ -1108,12 +1108,12 @@ void EditorNode::_notification(int p_what) {
recent_scenes->reset_size();
}
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/dragging_")) {
theme->set_constant("dragging_unfold_wait_msec", "Tree", (float)EDITOR_GET("interface/editor/dragging_hover_wait_seconds") * 1000);
theme->set_constant("hover_switch_wait_msec", "TabBar", (float)EDITOR_GET("interface/editor/dragging_hover_wait_seconds") * 1000);
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/timers/dragging_")) {
theme->set_constant("dragging_unfold_wait_msec", "Tree", (float)EDITOR_GET("interface/editor/timers/dragging_hover_wait_seconds") * 1000);
theme->set_constant("hover_switch_wait_msec", "TabBar", (float)EDITOR_GET("interface/editor/timers/dragging_hover_wait_seconds") * 1000);
}
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor")) {
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/docks")) {
editor_dock_manager->update_tab_styles();
}
@ -1147,11 +1147,13 @@ void EditorNode::_notification(int p_what) {
}
}
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor")) {
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/appearance")) {
_update_update_spinner();
_update_vsync_mode();
_update_main_menu_type();
DisplayServer::get_singleton()->screen_set_keep_on(EDITOR_GET("interface/editor/keep_screen_on"));
}
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/display")) {
_update_vsync_mode();
DisplayServer::get_singleton()->screen_set_keep_on(EDITOR_GET("interface/editor/display/keep_screen_on"));
}
#if defined(MODULE_GDSCRIPT_ENABLED) || defined(MODULE_MONO_ENABLED)
@ -1176,12 +1178,12 @@ void EditorNode::_update_update_spinner() {
#else
const bool in_dev = false;
#endif
const int show_update_spinner_setting = EDITOR_GET("interface/editor/show_update_spinner");
const int show_update_spinner_setting = EDITOR_GET("interface/editor/appearance/show_update_spinner");
should_display_spinner = (show_update_spinner_setting == 0 && in_dev) || show_update_spinner_setting == 1;
}
update_spinner->set_visible(should_display_spinner);
const bool update_continuously = EDITOR_GET("interface/editor/update_continuously");
const bool update_continuously = EDITOR_GET("interface/editor/display/update_continuously");
OS::get_singleton()->set_low_processor_usage_mode(!update_continuously);
if (!update_spinner->is_visible()) {
@ -3709,7 +3711,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
break;
}
bool save_each = EDITOR_GET("interface/editor/save_each_scene_on_quit");
bool save_each = EDITOR_GET("interface/editor/behavior/save_each_scene_on_quit");
if (_next_unsaved_scene(!save_each) == -1) {
if (EditorUndoRedoManager::get_singleton()->is_history_unsaved(EditorUndoRedoManager::GLOBAL_HISTORY)) {
if (p_option == PROJECT_RELOAD_CURRENT_PROJECT) {
@ -3781,16 +3783,16 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
_discard_changes();
} break;
case SPINNER_UPDATE_CONTINUOUSLY: {
EditorSettings::get_singleton()->set("interface/editor/update_continuously", true);
EditorSettings::get_singleton()->set("interface/editor/display/update_continuously", true);
_update_update_spinner();
show_accept(TTR("This option is deprecated. Situations where refresh must be forced are now considered a bug. Please report."), TTR("OK"));
} break;
case SPINNER_UPDATE_WHEN_CHANGED: {
EditorSettings::get_singleton()->set("interface/editor/update_continuously", false);
EditorSettings::get_singleton()->set("interface/editor/display/update_continuously", false);
_update_update_spinner();
} break;
case SPINNER_UPDATE_SPINNER_HIDE: {
EditorSettings::get_singleton()->set("interface/editor/show_update_spinner", 2); // Disabled
EditorSettings::get_singleton()->set("interface/editor/appearance/show_update_spinner", 2); // Disabled
_update_update_spinner();
} break;
case EDITOR_OPEN_SETTINGS: {
@ -3960,7 +3962,7 @@ void EditorNode::_save_screenshot_with_embedded_process(int64_t p_w, int64_t p_h
Error error = img->save_png(p_path);
ERR_FAIL_COND_MSG(error != OK, "Cannot save screenshot to file '" + p_path + "'.");
if (EDITOR_GET("interface/editor/automatically_open_screenshots")) {
if (EDITOR_GET("interface/editor/behavior/automatically_open_screenshots")) {
OS::get_singleton()->shell_show_in_file_manager(ProjectSettings::get_singleton()->globalize_path(p_path), true);
}
}
@ -3977,7 +3979,7 @@ void EditorNode::_save_screenshot(const String &p_path) {
Error error = img->save_png(p_path);
ERR_FAIL_COND_MSG(error != OK, "Cannot save screenshot to file '" + p_path + "'.");
if (EDITOR_GET("interface/editor/automatically_open_screenshots")) {
if (EDITOR_GET("interface/editor/behavior/automatically_open_screenshots")) {
OS::get_singleton()->shell_show_in_file_manager(ProjectSettings::get_singleton()->globalize_path(p_path), true);
}
}
@ -4738,7 +4740,7 @@ bool EditorNode::is_scene_open(const String &p_path) {
}
bool EditorNode::is_multi_window_enabled() const {
return !SceneTree::get_singleton()->get_root()->is_embedding_subwindows() && !EDITOR_GET("interface/editor/single_window_mode") && EDITOR_GET("interface/multi_window/enable");
return !SceneTree::get_singleton()->get_root()->is_embedding_subwindows() && !EDITOR_GET("interface/editor/display/single_window_mode") && EDITOR_GET("interface/multi_window/enable");
}
int EditorNode::new_scene() {
@ -5336,7 +5338,7 @@ String EditorNode::get_multiwindow_support_tooltip_text() const {
} else {
return TTR("Multi-window support is not available because the current platform doesn't support multiple windows.");
}
} else if (EDITOR_GET("interface/editor/single_window_mode")) {
} else if (EDITOR_GET("interface/editor/display/single_window_mode")) {
return TTR("Multi-window support is not available because Interface > Editor > Single Window Mode is enabled in the editor settings.");
}
@ -6737,7 +6739,7 @@ void EditorNode::_prepare_save_confirmation_popup() {
}
void EditorNode::_toggle_distraction_free_mode() {
if (EDITOR_GET("interface/editor/separate_distraction_mode")) {
if (EDITOR_GET("interface/editor/behavior/separate_distraction_mode")) {
int screen = editor_main_screen->get_selected_index();
if (screen == EditorMainScreen::EDITOR_SCRIPT) {
@ -6753,7 +6755,7 @@ void EditorNode::_toggle_distraction_free_mode() {
}
void EditorNode::update_distraction_free_mode() {
if (!EDITOR_GET("interface/editor/separate_distraction_mode")) {
if (!EDITOR_GET("interface/editor/behavior/separate_distraction_mode")) {
return;
}
int screen = editor_main_screen->get_selected_index();
@ -8078,9 +8080,9 @@ void EditorNode::_add_to_main_menu(const String &p_name, PopupMenu *p_menu) {
}
void EditorNode::_update_main_menu_type() {
bool can_expand = bool(EDITOR_GET("interface/editor/expand_to_title")) && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_EXTEND_TO_TITLE);
bool use_menu_button = EDITOR_GET("interface/editor/collapse_main_menu");
bool global_menu = !bool(EDITOR_GET("interface/editor/use_embedded_menu")) && NativeMenu::get_singleton()->has_feature(NativeMenu::FEATURE_GLOBAL_MENU);
bool can_expand = bool(EDITOR_GET("interface/editor/appearance/expand_to_title")) && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_EXTEND_TO_TITLE);
bool use_menu_button = EDITOR_GET("interface/editor/appearance/collapse_main_menu");
bool global_menu = !bool(EDITOR_GET("interface/editor/appearance/use_embedded_menu")) && NativeMenu::get_singleton()->has_feature(NativeMenu::FEATURE_GLOBAL_MENU);
MenuType new_menu_type;
if (global_menu) {
new_menu_type = MENU_TYPE_GLOBAL;
@ -8334,7 +8336,7 @@ EditorNode::EditorNode() {
}
{
int display_scale = EDITOR_GET("interface/editor/display_scale");
int display_scale = EDITOR_GET("interface/editor/appearance/display_scale");
switch (display_scale) {
case 0:
@ -8360,7 +8362,7 @@ EditorNode::EditorNode() {
EditorScale::set_scale(2.0);
break;
default:
EditorScale::set_scale(EDITOR_GET("interface/editor/custom_display_scale"));
EditorScale::set_scale(EDITOR_GET("interface/editor/appearance/custom_display_scale"));
break;
}
}
@ -8376,13 +8378,13 @@ EditorNode::EditorNode() {
FileDialog::set_default_show_hidden_files(EDITOR_GET("filesystem/file_dialog/show_hidden_files"));
FileDialog::set_default_display_mode(EDITOR_GET("filesystem/file_dialog/display_mode"));
int swap_cancel_ok = EDITOR_GET("interface/editor/accept_dialog_cancel_ok_buttons");
int swap_cancel_ok = EDITOR_GET("interface/editor/appearance/accept_dialog_cancel_ok_buttons");
if (swap_cancel_ok != 0) { // 0 is auto, set in register_scene based on DisplayServer.
// Swap on means OK first.
AcceptDialog::set_swap_cancel_ok(swap_cancel_ok == 2);
}
int ed_root_dir = EDITOR_GET("interface/editor/ui_layout_direction");
int ed_root_dir = EDITOR_GET("interface/editor/localization/ui_layout_direction");
Control::set_root_layout_direction(ed_root_dir);
Window::set_root_layout_direction(ed_root_dir);
@ -8713,7 +8715,7 @@ EditorNode::EditorNode() {
scan_changes_timer = memnew(Timer);
scan_changes_timer->set_wait_time(0.5);
scan_changes_timer->set_autostart(EDITOR_GET("interface/editor/import_resources_when_unfocused"));
scan_changes_timer->set_autostart(EDITOR_GET("interface/editor/behavior/import_resources_when_unfocused"));
scan_changes_timer->connect("timeout", callable_mp(EditorFileSystem::get_singleton(), &EditorFileSystem::scan_changes));
add_child(scan_changes_timer);
@ -8897,7 +8899,7 @@ EditorNode::EditorNode() {
ED_SHORTCUT_AND_COMMAND("editor/editor_prev", TTRC("Open the previous Editor"));
// Editor menu and toolbar.
bool can_expand = bool(EDITOR_GET("interface/editor/expand_to_title")) && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_EXTEND_TO_TITLE);
bool can_expand = bool(EDITOR_GET("interface/editor/appearance/expand_to_title")) && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_EXTEND_TO_TITLE);
#ifdef MACOS_ENABLED
if (NativeMenu::get_singleton()->has_system_menu(NativeMenu::APPLICATION_MENU_ID)) {

View file

@ -1611,7 +1611,7 @@ void CodeTextEditor::_update_text_editor_theme() {
}
void CodeTextEditor::_update_font_ligatures() {
int ot_mode = EDITOR_GET("interface/editor/code_font_contextual_ligatures");
int ot_mode = EDITOR_GET("interface/editor/fonts/code_font_contextual_ligatures");
Ref<FontVariation> fc = text_editor->get_theme_font(SceneStringName(font));
if (fc.is_valid()) {
@ -1622,7 +1622,7 @@ void CodeTextEditor::_update_font_ligatures() {
fc->set_opentype_features(ftrs);
} break;
case 2: { // Custom.
Vector<String> subtag = String(EDITOR_GET("interface/editor/code_font_custom_opentype_features")).split(",");
Vector<String> subtag = String(EDITOR_GET("interface/editor/fonts/code_font_custom_opentype_features")).split(",");
Dictionary ftrs;
for (int i = 0; i < subtag.size(); i++) {
Vector<String> subtag_a = subtag[i].split("=");
@ -1640,7 +1640,7 @@ void CodeTextEditor::_update_font_ligatures() {
fc->set_opentype_features(ftrs);
} break;
}
Vector<String> variation_tags = String(EDITOR_GET("interface/editor/code_font_custom_variations")).split(",");
Vector<String> variation_tags = String(EDITOR_GET("interface/editor/fonts/code_font_custom_variations")).split(",");
Dictionary variations_mono;
for (int i = 0; i < variation_tags.size(); i++) {
Vector<String> subtag_a = variation_tags[i].split("=");
@ -1861,7 +1861,7 @@ void CodeTextEditor::_zoom_to(float p_zoom_factor) {
void CodeTextEditor::set_zoom_factor(float p_zoom_factor) {
zoom_factor = CLAMP(p_zoom_factor, 0.25f, 3.0f);
int neutral_font_size = int(EDITOR_GET("interface/editor/code_font_size")) * EDSCALE;
int neutral_font_size = int(EDITOR_GET("interface/editor/fonts/code_font_size")) * EDSCALE;
int new_font_size = Math::round(zoom_factor * neutral_font_size);
zoom_button->set_text(itos(Math::round(zoom_factor * 100)) + " %");

View file

@ -130,7 +130,7 @@ void EditorBottomPanel::dock_focused(EditorDock *p_dock, bool p_was_visible) {
}
DockTabContainer::TabStyle EditorBottomPanel::get_tab_style() const {
return (TabStyle)EDITOR_GET("interface/editor/bottom_dock_tab_style").operator int();
return (TabStyle)EDITOR_GET("interface/editor/docks/bottom_dock_tab_style").operator int();
}
bool EditorBottomPanel::can_switch_dock() const {

View file

@ -69,7 +69,7 @@ bool EditorFileDialog::_should_use_native_popup() const {
// Native file dialog on Android, returns a file URI instead of a path and does not support res://, user://, or options. This requires editor-side changes to handle properly, so disabling it for now.
return false;
#else
return _can_use_native_popup() && (OS::get_singleton()->is_sandboxed() || EDITOR_GET("interface/editor/use_native_file_dialogs").operator bool());
return _can_use_native_popup() && (OS::get_singleton()->is_sandboxed() || EDITOR_GET("interface/editor/appearance/use_native_file_dialogs").operator bool());
#endif
}

View file

@ -165,7 +165,7 @@ void EditorToaster::_error_handler_impl(const String &p_file, int p_line, const
bool in_dev = false;
#endif
int show_all_setting = EDITOR_GET("interface/editor/show_internal_errors_in_toast_notifications");
int show_all_setting = EDITOR_GET("interface/editor/behavior/show_internal_errors_in_toast_notifications");
if (p_editor_notify || (show_all_setting == 0 && in_dev) || show_all_setting == 1) {
String err_str = !p_errorexp.is_empty() ? p_errorexp : p_error;

View file

@ -2381,8 +2381,8 @@ void EditorInspectorSection::_notification(int p_what) {
} break;
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor")) {
dropping_unfold_timer->set_wait_time(EDITOR_GET("interface/editor/dragging_hover_wait_seconds"));
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/timers")) {
dropping_unfold_timer->set_wait_time(EDITOR_GET("interface/editor/timers/dragging_hover_wait_seconds"));
}
} break;
}
@ -2837,7 +2837,7 @@ EditorInspectorSection::EditorInspectorSection() {
vbox->set_theme_type_variation(SNAME("EditorPropertyContainer"));
dropping_unfold_timer = memnew(Timer);
dropping_unfold_timer->set_wait_time(EDITOR_GET("interface/editor/dragging_hover_wait_seconds"));
dropping_unfold_timer->set_wait_time(EDITOR_GET("interface/editor/timers/dragging_hover_wait_seconds"));
dropping_unfold_timer->set_one_shot(true);
add_child(dropping_unfold_timer);
dropping_unfold_timer->connect("timeout", callable_mp(this, &EditorInspectorSection::unfold));
@ -6043,7 +6043,7 @@ void EditorInspector::_notification(int p_what) {
} break;
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
if (use_settings_name_style && EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/localize_settings")) {
if (use_settings_name_style && EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/localization/localize_settings")) {
EditorPropertyNameProcessor::Style style = EditorPropertyNameProcessor::get_settings_style();
if (property_name_style != style) {
property_name_style = style;

View file

@ -3973,7 +3973,7 @@ EditorProperty *EditorInspectorDefaultPlugin::get_editor_for_property(Object *p_
Vector<String> options;
Vector<String> option_names;
if (p_hint_text.begins_with(";")) {
// This is not supported officially. Only for `interface/editor/editor_language`.
// This is not supported officially. Only for `interface/editor/localization/editor_language`.
for (const String &option : p_hint_text.split(";", false)) {
options.append(option.get_slicec('/', 0));
option_names.append(option.get_slicec('/', 1));

View file

@ -50,7 +50,7 @@ EditorPropertyNameProcessor::Style EditorPropertyNameProcessor::get_settings_sty
if (!EditorSettings::get_singleton()) {
return STYLE_LOCALIZED;
}
const bool translate = EDITOR_GET("interface/editor/localize_settings");
const bool translate = EDITOR_GET("interface/editor/localization/localize_settings");
return translate ? STYLE_LOCALIZED : STYLE_CAPITALIZED;
}

View file

@ -101,7 +101,7 @@ void ProjectManager::_notification(int p_what) {
} break;
case NOTIFICATION_READY: {
DisplayServer::get_singleton()->screen_set_keep_on(EDITOR_GET("interface/editor/keep_screen_on"));
DisplayServer::get_singleton()->screen_set_keep_on(EDITOR_GET("interface/editor/display/keep_screen_on"));
const int default_sorting = (int)EDITOR_GET("project_manager/sorting_order");
filter_option->select(default_sorting);
project_list->set_order_option(default_sorting, false);
@ -1343,7 +1343,7 @@ ProjectManager::ProjectManager() {
Input::get_singleton()->set_use_accumulated_input(use_accumulated_input);
}
int display_scale = EDITOR_GET("interface/editor/display_scale");
int display_scale = EDITOR_GET("interface/editor/appearance/display_scale");
switch (display_scale) {
case 0:
@ -1369,7 +1369,7 @@ ProjectManager::ProjectManager() {
EditorScale::set_scale(2.0);
break;
default:
EditorScale::set_scale(EDITOR_GET("interface/editor/custom_display_scale"));
EditorScale::set_scale(EDITOR_GET("interface/editor/appearance/custom_display_scale"));
break;
}
FileDialog::set_get_icon_callback(callable_mp_static(ProjectManager::_file_dialog_get_icon));
@ -1378,7 +1378,7 @@ ProjectManager::ProjectManager() {
FileDialog::set_default_show_hidden_files(EDITOR_GET("filesystem/file_dialog/show_hidden_files"));
FileDialog::set_default_display_mode((FileDialog::DisplayMode)EDITOR_GET("filesystem/file_dialog/display_mode").operator int());
int swap_cancel_ok = EDITOR_GET("interface/editor/accept_dialog_cancel_ok_buttons");
int swap_cancel_ok = EDITOR_GET("interface/editor/appearance/accept_dialog_cancel_ok_buttons");
if (swap_cancel_ok != 0) { // 0 is auto, set in register_scene based on DisplayServer.
// Swap on means OK first.
AcceptDialog::set_swap_cancel_ok(swap_cancel_ok == 2);
@ -1395,7 +1395,7 @@ ProjectManager::ProjectManager() {
// Initialize UI.
{
int pm_root_dir = EDITOR_GET("interface/editor/ui_layout_direction");
int pm_root_dir = EDITOR_GET("interface/editor/localization/ui_layout_direction");
Control::set_root_layout_direction(pm_root_dir);
Window::set_root_layout_direction(pm_root_dir);
@ -1422,7 +1422,7 @@ ProjectManager::ProjectManager() {
root_container->add_child(main_vbox);
// Title bar.
bool can_expand = bool(EDITOR_GET("interface/editor/expand_to_title")) && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_EXTEND_TO_TITLE);
bool can_expand = bool(EDITOR_GET("interface/editor/appearance/expand_to_title")) && DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_EXTEND_TO_TITLE);
{
title_bar = memnew(EditorTitleBar);
@ -1447,7 +1447,7 @@ ProjectManager::ProjectManager() {
left_hbox->add_child(title_bar_logo);
title_bar_logo->connect(SceneStringName(pressed), callable_mp(this, &ProjectManager::_show_about));
bool global_menu = !bool(EDITOR_GET("interface/editor/use_embedded_menu")) && NativeMenu::get_singleton()->has_feature(NativeMenu::FEATURE_GLOBAL_MENU);
bool global_menu = !bool(EDITOR_GET("interface/editor/appearance/use_embedded_menu")) && NativeMenu::get_singleton()->has_feature(NativeMenu::FEATURE_GLOBAL_MENU);
if (global_menu) {
MenuBar *main_menu_bar = memnew(MenuBar);
main_menu_bar->set_start_index(0); // Main menu, add to the start of global menu.
@ -1831,7 +1831,7 @@ ProjectManager::ProjectManager() {
ask_update_backup->set_h_size_flags(SIZE_SHRINK_CENTER);
ask_update_vb->add_child(ask_update_backup);
ask_update_settings->get_ok_button()->connect(SceneStringName(pressed), callable_mp(this, &ProjectManager::_open_selected_projects_with_migration));
int ed_swap_cancel_ok = EDITOR_GET("interface/editor/accept_dialog_cancel_ok_buttons");
int ed_swap_cancel_ok = EDITOR_GET("interface/editor/appearance/accept_dialog_cancel_ok_buttons");
if (ed_swap_cancel_ok == 0) {
ed_swap_cancel_ok = DisplayServer::get_singleton()->get_swap_cancel_ok() ? 2 : 1;
}

View file

@ -60,7 +60,7 @@ void QuickSettingsDialog::_fetch_setting_values() {
EditorSettings::get_singleton()->get_property_list(&editor_settings_properties);
for (const PropertyInfo &pi : editor_settings_properties) {
if (pi.name == "interface/editor/editor_language") {
if (pi.name == "interface/editor/localization/editor_language") {
#ifndef ANDROID_ENABLED
editor_languages = pi.hint_string.split(";", false);
#endif
@ -68,7 +68,7 @@ void QuickSettingsDialog::_fetch_setting_values() {
editor_styles = pi.hint_string.split(",");
} else if (pi.name == "interface/theme/color_preset") {
editor_themes = pi.hint_string.split(",");
} else if (pi.name == "interface/editor/display_scale") {
} else if (pi.name == "interface/editor/appearance/display_scale") {
editor_scales = pi.hint_string.split(",");
} else if (pi.name == "network/connection/network_mode") {
editor_network_modes = pi.hint_string.split(",");
@ -85,7 +85,7 @@ void QuickSettingsDialog::_update_current_values() {
#ifndef ANDROID_ENABLED
// Language options.
{
const String current_lang = EDITOR_GET("interface/editor/editor_language");
const String current_lang = EDITOR_GET("interface/editor/localization/editor_language");
for (int i = 0; i < editor_languages.size(); i++) {
const String &lang_value = editor_languages[i].get_slicec('/', 0);
@ -127,7 +127,7 @@ void QuickSettingsDialog::_update_current_values() {
// Scale options.
{
const int current_scale = EDITOR_GET("interface/editor/display_scale");
const int current_scale = EDITOR_GET("interface/editor/appearance/display_scale");
for (int i = 0; i < editor_scales.size(); i++) {
const String &scale_value = editor_scales[i];
@ -196,7 +196,7 @@ void QuickSettingsDialog::_add_setting_control(const String &p_text, Control *p_
#ifndef ANDROID_ENABLED
void QuickSettingsDialog::_language_selected(int p_id) {
const String selected_language = language_option_button->get_item_metadata(p_id);
_set_setting_value("interface/editor/editor_language", selected_language);
_set_setting_value("interface/editor/localization/editor_language", selected_language);
}
#endif
@ -213,7 +213,7 @@ void QuickSettingsDialog::_theme_selected(int p_id) {
}
void QuickSettingsDialog::_scale_selected(int p_id) {
_set_setting_value("interface/editor/display_scale", p_id, true);
_set_setting_value("interface/editor/appearance/display_scale", p_id, true);
}
void QuickSettingsDialog::_network_mode_selected(int p_id) {
@ -240,7 +240,7 @@ void QuickSettingsDialog::_set_setting_value(const String &p_setting, const Vari
restart_required_label->show();
if (!restart_required_button) {
int ed_swap_cancel_ok = EDITOR_GET("interface/editor/accept_dialog_cancel_ok_buttons");
int ed_swap_cancel_ok = EDITOR_GET("interface/editor/appearance/accept_dialog_cancel_ok_buttons");
if (ed_swap_cancel_ok == 0) {
ed_swap_cancel_ok = DisplayServer::get_singleton()->get_swap_cancel_ok() ? 2 : 1;
}

View file

@ -1390,7 +1390,7 @@ void SceneTreeEditor::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: {
// Wait for the node to be inspected before triggering the unfolding.
tree->add_theme_constant_override("dragging_unfold_wait_msec", (float)EDITOR_GET("interface/editor/dragging_hover_wait_seconds") * 1000 * 2);
tree->add_theme_constant_override("dragging_unfold_wait_msec", (float)EDITOR_GET("interface/editor/timers/dragging_hover_wait_seconds") * 1000 * 2);
tree->add_theme_constant_override("icon_max_width", get_theme_constant(SNAME("class_icon_size"), EditorStringName(Editor)));
[[fallthrough]];
}

View file

@ -1481,7 +1481,7 @@ void ScriptEditor::_notification(int p_what) {
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
if (EditorThemeManager::is_generated_theme_outdated() ||
EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor") ||
EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/fonts") ||
EditorSettings::get_singleton()->check_changed_settings_in_group("text_editor") ||
EditorSettings::get_singleton()->check_changed_settings_in_group("docks/filesystem")) {
_apply_editor_settings();
@ -3004,7 +3004,7 @@ void ScriptEditor::input(const Ref<InputEvent> &p_event) {
// the shortcut to be used regardless of the click location.
// This feature can be disabled to avoid interfering with other uses of the additional
// mouse buttons, such as push-to-talk in a VoIP program.
if (EDITOR_GET("interface/editor/mouse_extra_buttons_navigate_history")) {
if (EDITOR_GET("interface/editor/input/mouse_extra_buttons_navigate_history")) {
const Ref<InputEventMouseButton> mb = p_event;
// Navigate the script history using additional mouse buttons present on some mice.

View file

@ -70,6 +70,13 @@ Ref<EditorSettings> EditorSettings::singleton = nullptr;
bool EditorSettings::_set(const StringName &p_name, const Variant &p_value) {
_THREAD_SAFE_METHOD_
#ifndef DISABLE_DEPRECATED
const String *renamed = compat_map.getptr(p_name);
if (renamed) {
return _set(*renamed, p_value);
}
#endif
bool changed = _set_only(p_name, p_value);
if (changed && initialized) {
changed_settings.insert(p_name);
@ -82,7 +89,7 @@ bool EditorSettings::_set(const StringName &p_name, const Variant &p_value) {
}
emit_signal(SNAME("settings_changed"));
if (p_name == SNAME("interface/editor/editor_language")) {
if (p_name == SNAME("interface/editor/localization/editor_language")) {
setup_language(false);
}
}
@ -159,6 +166,13 @@ bool EditorSettings::_set_only(const StringName &p_name, const Variant &p_value)
bool EditorSettings::_get(const StringName &p_name, Variant &r_ret) const {
_THREAD_SAFE_METHOD_
#ifndef DISABLE_DEPRECATED
const String *renamed = compat_map.getptr(p_name);
if (renamed) {
return _get(*renamed, r_ret);
}
#endif
if (p_name == "shortcuts") {
Array save_array;
const HashMap<String, List<Ref<InputEvent>>> &builtin_list = InputMap::get_singleton()->get_builtins();
@ -435,7 +449,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
}
lang_hint = vformat(";auto/Auto (%s);en/[en] English", TranslationServer::get_singleton()->get_locale_name(best)) + lang_hint;
EDITOR_SETTING_USAGE(Variant::STRING, PROPERTY_HINT_ENUM, "interface/editor/editor_language", "auto", lang_hint, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED | PROPERTY_USAGE_EDITOR_BASIC_SETTING);
EDITOR_SETTING_USAGE(Variant::STRING, PROPERTY_HINT_ENUM, "interface/editor/localization/editor_language", "auto", lang_hint, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED | PROPERTY_USAGE_EDITOR_BASIC_SETTING);
}
// Asset library
@ -444,21 +458,21 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
/* Interface */
// Editor
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/localize_settings", true, "")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/dock_tab_style", 0, "Text Only,Icon Only,Text and Icon")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/bottom_dock_tab_style", 0, "Text Only,Icon Only,Text and Icon")
EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/ui_layout_direction", 0, "Based on Application Locale,Left-to-Right,Right-to-Left,Based on System Locale", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/localization/localize_settings", true, "")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/docks/dock_tab_style", 0, "Text Only,Icon Only,Text and Icon")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/docks/bottom_dock_tab_style", 0, "Text Only,Icon Only,Text and Icon")
EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/localization/ui_layout_direction", 0, "Based on Application Locale,Left-to-Right,Right-to-Left,Based on System Locale", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)
// Display what the Auto display scale setting effectively corresponds to.
const String display_scale_hint_string = vformat("Auto (%d%%),75%%,100%%,125%%,150%%,175%%,200%%,Custom", Math::round(get_auto_display_scale() * 100));
EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/display_scale", 0, display_scale_hint_string, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED | PROPERTY_USAGE_EDITOR_BASIC_SETTING)
EDITOR_SETTING_USAGE(Variant::FLOAT, PROPERTY_HINT_RANGE, "interface/editor/custom_display_scale", 1.0, "0.5,3,0.01", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED | PROPERTY_USAGE_EDITOR_BASIC_SETTING)
EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/appearance/display_scale", 0, display_scale_hint_string, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED | PROPERTY_USAGE_EDITOR_BASIC_SETTING)
EDITOR_SETTING_USAGE(Variant::FLOAT, PROPERTY_HINT_RANGE, "interface/editor/appearance/custom_display_scale", 1.0, "0.5,3,0.01", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED | PROPERTY_USAGE_EDITOR_BASIC_SETTING)
String ed_screen_hints = "Auto (Remembers last position):-5,Screen With Mouse Pointer:-4,Screen With Keyboard Focus:-3,Primary Screen:-2";
for (int i = 0; i < DisplayServer::get_singleton()->get_screen_count(); i++) {
ed_screen_hints += ",Screen " + itos(i + 1) + ":" + itos(i);
}
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/editor_screen", EditorSettings::InitialScreen::INITIAL_SCREEN_AUTO, ed_screen_hints)
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/appearance/editor_screen", EditorSettings::InitialScreen::INITIAL_SCREEN_AUTO, ed_screen_hints)
#ifdef WINDOWS_ENABLED
String tablet_hints = "Use Project Settings:-1";
@ -469,76 +483,76 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
}
tablet_hints += vformat(",%s:%d", drv_name, i);
}
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/tablet_driver", -1, tablet_hints);
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/input/tablet_driver", -1, tablet_hints);
#else
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/tablet_driver", -1, "Default:-1");
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/input/tablet_driver", -1, "Default:-1");
#endif
String project_manager_screen_hints = "Screen With Mouse Pointer:-4,Screen With Keyboard Focus:-3,Primary Screen:-2";
for (int i = 0; i < DisplayServer::get_singleton()->get_screen_count(); i++) {
project_manager_screen_hints += ",Screen " + itos(i + 1) + ":" + itos(i);
}
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/project_manager_screen", EditorSettings::InitialScreen::INITIAL_SCREEN_PRIMARY, project_manager_screen_hints)
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/appearance/project_manager_screen", EditorSettings::InitialScreen::INITIAL_SCREEN_PRIMARY, project_manager_screen_hints)
{
const String update_hint = vformat("Disable Update Checks,Auto (%s),Check Newest Preview,Check Newest Stable,Check Newest Patch", (str_compare(GODOT_VERSION_STATUS, "stable") == 0) ? "Stable" : "Preview");
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "network/connection/check_for_updates", EngineUpdateLabel::UpdateMode::AUTO, update_hint);
}
EDITOR_SETTING_USAGE(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/use_embedded_menu", false, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_EDITOR_BASIC_SETTING)
EDITOR_SETTING_USAGE(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/use_native_file_dialogs", false, "", PROPERTY_USAGE_DEFAULT)
EDITOR_SETTING_USAGE(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/expand_to_title", true, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED | PROPERTY_USAGE_EDITOR_BASIC_SETTING)
EDITOR_SETTING_USAGE(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/appearance/use_embedded_menu", false, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_EDITOR_BASIC_SETTING)
EDITOR_SETTING_USAGE(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/appearance/use_native_file_dialogs", false, "", PROPERTY_USAGE_DEFAULT)
EDITOR_SETTING_USAGE(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/appearance/expand_to_title", true, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED | PROPERTY_USAGE_EDITOR_BASIC_SETTING)
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/main_font_size", 14, "8,48,1")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/code_font_size", 14, "8,48,1")
_initial_set("interface/editor/main_font_custom_opentype_features", "");
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/code_font_contextual_ligatures", 1, "Enabled,Disable Contextual Alternates (Coding Ligatures),Use Custom OpenType Feature Set")
_initial_set("interface/editor/code_font_custom_opentype_features", "");
_initial_set("interface/editor/code_font_custom_variations", "");
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/font_antialiasing", 1, "None,Grayscale,LCD Subpixel")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/fonts/main_font_size", 14, "8,48,1")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/fonts/code_font_size", 14, "8,48,1")
_initial_set("interface/editor/fonts/main_font_custom_opentype_features", "");
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/fonts/code_font_contextual_ligatures", 1, "Enabled,Disable Contextual Alternates (Coding Ligatures),Use Custom OpenType Feature Set")
_initial_set("interface/editor/fonts/code_font_custom_opentype_features", "");
_initial_set("interface/editor/fonts/code_font_custom_variations", "");
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/fonts/font_antialiasing", 1, "None,Grayscale,LCD Subpixel")
#ifdef MACOS_ENABLED
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/font_hinting", 0, "Auto (None),None,Light,Normal")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/fonts/font_hinting", 0, "Auto (None),None,Light,Normal")
#else
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/font_hinting", 0, "Auto (Light),None,Light,Normal")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/fonts/font_hinting", 0, "Auto (Light),None,Light,Normal")
#endif
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/font_subpixel_positioning", 1, "Disabled,Auto,One Half of a Pixel,One Quarter of a Pixel")
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/font_disable_embedded_bitmaps", true, "");
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/font_allow_msdf", true, "")
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/fonts/font_subpixel_positioning", 1, "Disabled,Auto,One Half of a Pixel,One Quarter of a Pixel")
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/fonts/font_disable_embedded_bitmaps", true, "");
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/fonts/font_allow_msdf", true, "")
EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/main_font", "", "*.ttf,*.otf,*.woff,*.woff2,*.pfb,*.pfm")
EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/main_font_bold", "", "*.ttf,*.otf,*.woff,*.woff2,*.pfb,*.pfm")
EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/code_font", "", "*.ttf,*.otf,*.woff,*.woff2,*.pfb,*.pfm")
EDITOR_SETTING(Variant::FLOAT, PROPERTY_HINT_RANGE, "interface/editor/dragging_hover_wait_seconds", 0.5, "0.01,10,0.01,or_greater,suffix:s");
_initial_set("interface/editor/separate_distraction_mode", false, true);
_initial_set("interface/editor/automatically_open_screenshots", true, true);
EDITOR_SETTING_USAGE(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/single_window_mode", false, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED | PROPERTY_USAGE_EDITOR_BASIC_SETTING)
_initial_set("interface/editor/mouse_extra_buttons_navigate_history", true);
_initial_set("interface/editor/save_each_scene_on_quit", true, true); // Regression
EDITOR_SETTING_BASIC(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/save_on_focus_loss", false, "")
EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/accept_dialog_cancel_ok_buttons", 0,
EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/fonts/main_font", "", "*.ttf,*.otf,*.woff,*.woff2,*.pfb,*.pfm")
EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/fonts/main_font_bold", "", "*.ttf,*.otf,*.woff,*.woff2,*.pfb,*.pfm")
EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/fonts/code_font", "", "*.ttf,*.otf,*.woff,*.woff2,*.pfb,*.pfm")
EDITOR_SETTING(Variant::FLOAT, PROPERTY_HINT_RANGE, "interface/editor/timers/dragging_hover_wait_seconds", 0.5, "0.01,10,0.01,or_greater,suffix:s");
_initial_set("interface/editor/behavior/separate_distraction_mode", false, true);
_initial_set("interface/editor/behavior/automatically_open_screenshots", true, true);
EDITOR_SETTING_USAGE(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/display/single_window_mode", false, "", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED | PROPERTY_USAGE_EDITOR_BASIC_SETTING)
_initial_set("interface/editor/input/mouse_extra_buttons_navigate_history", true);
_initial_set("interface/editor/behavior/save_each_scene_on_quit", true, true); // Regression
EDITOR_SETTING_BASIC(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/behavior/save_on_focus_loss", false, "")
EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/appearance/accept_dialog_cancel_ok_buttons", 0,
vformat("Auto (%s),Cancel First,OK First", DisplayServer::get_singleton()->get_swap_cancel_ok() ? "OK First" : "Cancel First"),
PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
#ifdef DEV_ENABLED
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/show_internal_errors_in_toast_notifications", 0, "Auto (Enabled),Enabled,Disabled")
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/show_update_spinner", 0, "Auto (Enabled),Enabled,Disabled")
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/behavior/show_internal_errors_in_toast_notifications", 0, "Auto (Enabled),Enabled,Disabled")
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/appearance/show_update_spinner", 0, "Auto (Enabled),Enabled,Disabled")
#else
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/show_internal_errors_in_toast_notifications", 0, "Auto (Disabled),Enabled,Disabled")
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/show_update_spinner", 0, "Auto (Disabled),Enabled,Disabled")
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/behavior/show_internal_errors_in_toast_notifications", 0, "Auto (Disabled),Enabled,Disabled")
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/appearance/show_update_spinner", 0, "Auto (Disabled),Enabled,Disabled")
#endif
_initial_set("interface/editor/keep_screen_on", false, true);
EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/low_processor_mode_sleep_usec", 6900, "1,100000,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)
_initial_set("interface/editor/display/keep_screen_on", false, true);
EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/timers/low_processor_mode_sleep_usec", 6900, "1,100000,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)
// Default unfocused usec sleep is for 10 FPS. Allow an unfocused FPS limit
// as low as 1 FPS for those who really need low power usage (but don't need
// to preview particles or shaders while the editor is unfocused). With very
// low FPS limits, the editor can take a small while to become usable after
// being focused again, so this should be used at the user's discretion.
EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/unfocused_low_processor_mode_sleep_usec", 100000, "1,1000000,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)
EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/timers/unfocused_low_processor_mode_sleep_usec", 100000, "1,1000000,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)
EDITOR_SETTING_BASIC(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/import_resources_when_unfocused", false, "")
EDITOR_SETTING_BASIC(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/behavior/import_resources_when_unfocused", false, "")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/vsync_mode", 1, "Disabled,Enabled,Adaptive,Mailbox")
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/update_continuously", false, "")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/display/vsync_mode", 1, "Disabled,Enabled,Adaptive,Mailbox")
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/display/update_continuously", false, "")
bool is_android_editor = false;
#ifdef ANDROID_ENABLED
@ -546,7 +560,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
is_android_editor = true;
}
#endif
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/collapse_main_menu", is_android_editor, "")
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE, "interface/editor/appearance/collapse_main_menu", is_android_editor, "")
_initial_set("interface/editors/show_scene_tree_root_selection", true);
_initial_set("interface/editors/derive_script_globals_by_name", true);
@ -1234,12 +1248,71 @@ const String EditorSettings::_get_project_metadata_path() const {
}
#ifndef DISABLE_DEPRECATED
void EditorSettings::_remove_deprecated_settings() {
void EditorSettings::_handle_setting_compatibility() {
// Remove deprecated settings.
erase("interface/theme/preset");
erase("network/connection/engine_version_update_mode");
erase("run/output/always_open_output_on_play");
erase("run/output/always_close_output_on_stop");
erase("text_editor/theme/line_spacing"); // See GH-106137.
// Handle renamed settings.
_rename_setting("interface/editor/editor_language", "interface/editor/localization/editor_language");
_rename_setting("interface/editor/localize_settings", "interface/editor/localization/localize_settings");
_rename_setting("interface/editor/dock_tab_style", "interface/editor/docks/dock_tab_style");
_rename_setting("interface/editor/bottom_dock_tab_style", "interface/editor/docks/bottom_dock_tab_style");
_rename_setting("interface/editor/ui_layout_direction", "interface/editor/localization/ui_layout_direction");
_rename_setting("interface/editor/display_scale", "interface/editor/appearance/display_scale");
_rename_setting("interface/editor/custom_display_scale", "interface/editor/appearance/custom_display_scale");
_rename_setting("interface/editor/editor_screen", "interface/editor/appearance/editor_screen");
_rename_setting("interface/editor/tablet_driver", "interface/editor/input/tablet_driver");
_rename_setting("interface/editor/project_manager_screen", "interface/editor/appearance/project_manager_screen");
_rename_setting("interface/editor/use_embedded_menu", "interface/editor/appearance/use_embedded_menu");
_rename_setting("interface/editor/use_native_file_dialogs", "interface/editor/appearance/use_native_file_dialogs");
_rename_setting("interface/editor/expand_to_title", "interface/editor/appearance/expand_to_title");
_rename_setting("interface/editor/main_font_size", "interface/editor/fonts/main_font_size");
_rename_setting("interface/editor/code_font_size", "interface/editor/fonts/code_font_size");
_rename_setting("interface/editor/main_font_custom_opentype_features", "interface/editor/fonts/main_font_custom_opentype_features");
_rename_setting("interface/editor/code_font_contextual_ligatures", "interface/editor/fonts/code_font_contextual_ligatures");
_rename_setting("interface/editor/code_font_custom_opentype_features", "interface/editor/fonts/code_font_custom_opentype_features");
_rename_setting("interface/editor/code_font_custom_variations", "interface/editor/fonts/code_font_custom_variations");
_rename_setting("interface/editor/font_antialiasing", "interface/editor/fonts/font_antialiasing");
_rename_setting("interface/editor/font_hinting", "interface/editor/fonts/font_hinting");
_rename_setting("interface/editor/font_subpixel_positioning", "interface/editor/fonts/font_subpixel_positioning");
_rename_setting("interface/editor/font_disable_embedded_bitmaps", "interface/editor/fonts/font_disable_embedded_bitmaps");
_rename_setting("interface/editor/font_allow_msdf", "interface/editor/fonts/font_allow_msdf");
_rename_setting("interface/editor/main_font", "interface/editor/fonts/main_font");
_rename_setting("interface/editor/main_font_bold", "interface/editor/fonts/main_font_bold");
_rename_setting("interface/editor/code_font", "interface/editor/fonts/code_font");
_rename_setting("interface/editor/dragging_hover_wait_seconds", "interface/editor/timers/dragging_hover_wait_seconds");
_rename_setting("interface/editor/separate_distraction_mode", "interface/editor/behavior/separate_distraction_mode");
_rename_setting("interface/editor/automatically_open_screenshots", "interface/editor/behavior/automatically_open_screenshots");
_rename_setting("interface/editor/single_window_mode", "interface/editor/display/single_window_mode");
_rename_setting("interface/editor/mouse_extra_buttons_navigate_history", "interface/editor/input/mouse_extra_buttons_navigate_history");
_rename_setting("interface/editor/save_each_scene_on_quit", "interface/editor/behavior/save_each_scene_on_quit");
_rename_setting("interface/editor/save_on_focus_loss", "interface/editor/behavior/save_on_focus_loss");
_rename_setting("interface/editor/accept_dialog_cancel_ok_buttons", "interface/editor/appearance/accept_dialog_cancel_ok_buttons");
_rename_setting("interface/editor/show_internal_errors_in_toast_notifications", "interface/editor/behavior/show_internal_errors_in_toast_notifications");
_rename_setting("interface/editor/show_update_spinner", "interface/editor/appearance/show_update_spinner");
_rename_setting("interface/editor/keep_screen_on", "interface/editor/display/keep_screen_on");
_rename_setting("interface/editor/low_processor_mode_sleep_usec", "interface/editor/timers/low_processor_mode_sleep_usec");
_rename_setting("interface/editor/unfocused_low_processor_mode_sleep_usec", "interface/editor/timers/unfocused_low_processor_mode_sleep_usec");
_rename_setting("interface/editor/import_resources_when_unfocused", "interface/editor/behavior/import_resources_when_unfocused");
_rename_setting("interface/editor/vsync_mode", "interface/editor/display/vsync_mode");
_rename_setting("interface/editor/update_continuously", "interface/editor/display/update_continuously");
_rename_setting("interface/editor/collapse_main_menu", "interface/editor/appearance/collapse_main_menu");
}
void EditorSettings::_rename_setting(const String &p_old_name, const String &p_new_name) {
if (has_setting(p_old_name)) {
set_setting(p_new_name, get_setting(p_old_name));
erase(p_old_name);
}
if (ProjectSettings::get_singleton()->has_editor_setting_override(p_old_name)) {
ProjectSettings::get_singleton()->set_editor_setting_override(p_new_name, ProjectSettings::get_singleton()->get_editor_setting_override(p_old_name));
ProjectSettings::get_singleton()->set_editor_setting_override(p_old_name, Variant());
}
compat_map[p_old_name] = p_new_name;
}
#endif
@ -1324,7 +1397,7 @@ void EditorSettings::create() {
singleton->load_favorites_and_recent_dirs();
singleton->update_text_editor_themes_list();
#ifndef DISABLE_DEPRECATED
singleton->_remove_deprecated_settings();
singleton->_handle_setting_compatibility();
#endif
return;
@ -1478,7 +1551,11 @@ Variant EditorSettings::get_setting(const String &p_setting) const {
bool EditorSettings::has_setting(const String &p_setting) const {
_THREAD_SAFE_METHOD_
#ifndef DISABLE_DEPRECATED
return props.has(p_setting) || compat_map.has(p_setting);
#else
return props.has(p_setting);
#endif
}
void EditorSettings::erase(const String &p_setting) {
@ -1921,7 +1998,7 @@ float EditorSettings::get_auto_display_scale() {
}
String EditorSettings::get_language() const {
const String language = has_setting("interface/editor/editor_language") ? get("interface/editor/editor_language") : "auto";
const String language = has_setting("interface/editor/localization/editor_language") ? get("interface/editor/localization/editor_language") : "auto";
if (language != "auto") {
return language;
}

View file

@ -124,7 +124,9 @@ private:
static String _guess_exec_args_for_extenal_editor(const String &p_value);
const String _get_project_metadata_path() const;
#ifndef DISABLE_DEPRECATED
void _remove_deprecated_settings();
HashMap<String, String> compat_map;
void _handle_setting_compatibility();
void _rename_setting(const String &p_old_name, const String &p_new_name);
#endif
// Bind helpers.

View file

@ -298,7 +298,7 @@ void EditorSettingsDialog::_notification(int p_what) {
inspector->get_inspector()->update_tree();
}
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/localize_settings")) {
if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/localization/localize_settings")) {
inspector->update_category_list();
}
} break;

View file

@ -810,7 +810,7 @@ void TextShaderEditor::_notification(int p_what) {
switch (p_what) {
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
if (EditorThemeManager::is_generated_theme_outdated() ||
EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor") ||
EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/fonts") ||
EditorSettings::get_singleton()->check_changed_settings_in_group("text_editor")) {
_apply_editor_settings();
}

View file

@ -115,11 +115,11 @@ Ref<FontVariation> make_bold_font(const Ref<Font> &p_font, double p_embolden, Ty
void editor_register_fonts(const Ref<Theme> &p_theme) {
Ref<DirAccess> dir = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
TextServer::FontAntialiasing font_antialiasing = (TextServer::FontAntialiasing)(int)EDITOR_GET("interface/editor/font_antialiasing");
int font_hinting_setting = (int)EDITOR_GET("interface/editor/font_hinting");
TextServer::SubpixelPositioning font_subpixel_positioning = (TextServer::SubpixelPositioning)(int)EDITOR_GET("interface/editor/font_subpixel_positioning");
bool font_disable_embedded_bitmaps = (bool)EDITOR_GET("interface/editor/font_disable_embedded_bitmaps");
bool font_allow_msdf = (bool)EDITOR_GET("interface/editor/font_allow_msdf");
TextServer::FontAntialiasing font_antialiasing = (TextServer::FontAntialiasing)(int)EDITOR_GET("interface/editor/fonts/font_antialiasing");
int font_hinting_setting = (int)EDITOR_GET("interface/editor/fonts/font_hinting");
TextServer::SubpixelPositioning font_subpixel_positioning = (TextServer::SubpixelPositioning)(int)EDITOR_GET("interface/editor/fonts/font_subpixel_positioning");
bool font_disable_embedded_bitmaps = (bool)EDITOR_GET("interface/editor/fonts/font_disable_embedded_bitmaps");
bool font_allow_msdf = (bool)EDITOR_GET("interface/editor/fonts/font_allow_msdf");
TextServer::Hinting font_hinting;
TextServer::Hinting font_mono_hinting;
@ -152,7 +152,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) {
}
// Load built-in fonts.
const int default_font_size = int(EDITOR_GET("interface/editor/main_font_size")) * EDSCALE;
const int default_font_size = int(EDITOR_GET("interface/editor/fonts/main_font_size")) * EDSCALE;
const float embolden_strength = 0.6;
Ref<Font> default_font = load_internal_font(_font_Inter_Regular, _font_Inter_Regular_size, font_hinting, font_antialiasing, true, font_subpixel_positioning, font_disable_embedded_bitmaps, false);
@ -266,9 +266,9 @@ void editor_register_fonts(const Ref<Theme> &p_theme) {
default_font_mono->set_fallbacks(fallbacks);
// Init base font configs and load custom fonts.
String custom_font_path = EDITOR_GET("interface/editor/main_font");
String custom_font_path_bold = EDITOR_GET("interface/editor/main_font_bold");
String custom_font_path_source = EDITOR_GET("interface/editor/code_font");
String custom_font_path = EDITOR_GET("interface/editor/fonts/main_font");
String custom_font_path_bold = EDITOR_GET("interface/editor/fonts/main_font_bold");
String custom_font_path_source = EDITOR_GET("interface/editor/fonts/code_font");
Ref<FontVariation> default_fc;
default_fc.instantiate();
@ -280,7 +280,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) {
}
default_fc->set_base_font(custom_font);
} else {
EditorSettings::get_singleton()->set_manually("interface/editor/main_font", "");
EditorSettings::get_singleton()->set_manually("interface/editor/fonts/main_font", "");
default_fc->set_opentype_features(default_features);
default_fc->set_base_font(default_font);
}
@ -300,7 +300,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) {
}
default_fc_msdf->set_base_font(custom_font);
} else {
EditorSettings::get_singleton()->set_manually("interface/editor/main_font", "");
EditorSettings::get_singleton()->set_manually("interface/editor/fonts/main_font", "");
default_fc_msdf->set_opentype_features(default_features);
default_fc_msdf->set_base_font(default_font_msdf);
}
@ -328,7 +328,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) {
bold_fc->set_variation_embolden(embolden_strength);
}
} else {
EditorSettings::get_singleton()->set_manually("interface/editor/main_font_bold", "");
EditorSettings::get_singleton()->set_manually("interface/editor/fonts/main_font_bold", "");
bold_fc->set_opentype_features(default_features);
bold_fc->set_base_font(default_font_bold);
}
@ -358,7 +358,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) {
bold_fc_msdf->set_variation_embolden(embolden_strength);
}
} else {
EditorSettings::get_singleton()->set_manually("interface/editor/main_font_bold", "");
EditorSettings::get_singleton()->set_manually("interface/editor/fonts/main_font_bold", "");
bold_fc_msdf->set_opentype_features(default_features);
bold_fc_msdf->set_base_font(default_font_bold_msdf);
}
@ -366,8 +366,8 @@ void editor_register_fonts(const Ref<Theme> &p_theme) {
bold_fc_msdf->set_spacing(TextServer::SPACING_BOTTOM, -EDSCALE);
bold_fc_msdf->set_variation_opentype(bold_fc_opentype);
if (!String(EDITOR_GET("interface/editor/main_font_custom_opentype_features")).is_empty()) {
Vector<String> subtag = String(EDITOR_GET("interface/editor/main_font_custom_opentype_features")).split(",");
if (!String(EDITOR_GET("interface/editor/fonts/main_font_custom_opentype_features")).is_empty()) {
Vector<String> subtag = String(EDITOR_GET("interface/editor/fonts/main_font_custom_opentype_features")).split(",");
if (!subtag.is_empty()) {
Dictionary ftrs;
for (int i = 0; i < subtag.size(); i++) {
@ -395,7 +395,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) {
}
mono_fc->set_base_font(custom_font);
} else {
EditorSettings::get_singleton()->set_manually("interface/editor/code_font", "");
EditorSettings::get_singleton()->set_manually("interface/editor/fonts/code_font", "");
mono_fc->set_base_font(default_font_mono);
}
mono_fc->set_spacing(TextServer::SPACING_TOP, -EDSCALE);
@ -404,7 +404,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) {
Ref<FontVariation> mono_other_fc = mono_fc->duplicate();
// Enable contextual alternates (coding ligatures) and custom features for the source editor font.
int ot_mode = EDITOR_GET("interface/editor/code_font_contextual_ligatures");
int ot_mode = EDITOR_GET("interface/editor/fonts/code_font_contextual_ligatures");
switch (ot_mode) {
case 1: { // Disable ligatures.
Dictionary ftrs;
@ -412,7 +412,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) {
mono_fc->set_opentype_features(ftrs);
} break;
case 2: { // Custom.
Vector<String> subtag = String(EDITOR_GET("interface/editor/code_font_custom_opentype_features")).split(",");
Vector<String> subtag = String(EDITOR_GET("interface/editor/fonts/code_font_custom_opentype_features")).split(",");
Dictionary ftrs;
for (int i = 0; i < subtag.size(); i++) {
Vector<String> subtag_a = subtag[i].split("=");
@ -431,7 +431,7 @@ void editor_register_fonts(const Ref<Theme> &p_theme) {
} break;
}
Vector<String> variation_tags = String(EDITOR_GET("interface/editor/code_font_custom_variations")).split(",");
Vector<String> variation_tags = String(EDITOR_GET("interface/editor/fonts/code_font_custom_variations")).split(",");
Dictionary variations_mono;
for (int i = 0; i < variation_tags.size(); i++) {
Vector<String> subtag_a = variation_tags[i].split("=");
@ -545,10 +545,10 @@ void editor_register_fonts(const Ref<Theme> &p_theme) {
p_theme->set_font("rotation_control", EditorStringName(EditorFonts), default_fc);
// Code font
p_theme->set_font_size("source_size", EditorStringName(EditorFonts), int(EDITOR_GET("interface/editor/code_font_size")) * EDSCALE);
p_theme->set_font_size("source_size", EditorStringName(EditorFonts), int(EDITOR_GET("interface/editor/fonts/code_font_size")) * EDSCALE);
p_theme->set_font("source", EditorStringName(EditorFonts), mono_fc);
p_theme->set_font_size("expression_size", EditorStringName(EditorFonts), (int(EDITOR_GET("interface/editor/code_font_size")) - 1) * EDSCALE);
p_theme->set_font_size("expression_size", EditorStringName(EditorFonts), (int(EDITOR_GET("interface/editor/fonts/code_font_size")) - 1) * EDSCALE);
p_theme->set_font("expression", EditorStringName(EditorFonts), mono_other_fc);
p_theme->set_font_size("output_source_size", EditorStringName(EditorFonts), int(EDITOR_GET("run/output/font_size")) * EDSCALE);

View file

@ -265,7 +265,7 @@ EditorThemeManager::ThemeConfiguration EditorThemeManager::_create_theme_config(
config.enable_touch_optimizations = EDITOR_GET("interface/touchscreen/enable_touch_optimizations");
config.gizmo_handle_scale = EDITOR_GET("interface/touchscreen/scale_gizmo_handles");
config.subresource_hue_tint = EDITOR_GET("docks/property_editor/subresource_hue_tint");
config.dragging_hover_wait_msec = (float)EDITOR_GET("interface/editor/dragging_hover_wait_seconds") * 1000;
config.dragging_hover_wait_msec = (float)EDITOR_GET("interface/editor/timers/dragging_hover_wait_seconds") * 1000;
// Handle theme style.
if (config.preset != "Custom") {
@ -715,9 +715,7 @@ bool EditorThemeManager::is_generated_theme_outdated() {
if (outdated_cache_dirty) {
// TODO: We can use this information more intelligently to do partial theme updates and speed things up.
outdated_cache = EditorSettings::get_singleton()->check_changed_settings_in_group("interface/theme") ||
EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/font") ||
EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/main_font") ||
EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/code_font") ||
EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/fonts") ||
EditorSettings::get_singleton()->check_changed_settings_in_group("editors/visual_editors") ||
EditorSettings::get_singleton()->check_changed_settings_in_group("text_editor/theme") ||
EditorSettings::get_singleton()->check_changed_settings_in_group("text_editor/help/help") ||

View file

@ -3012,9 +3012,9 @@ Error Main::setup2(bool p_show_boot_logo) {
bool ac_found = false;
if (editor) {
screen_property = "interface/editor/editor_screen";
screen_property = "interface/editor/appearance/editor_screen";
} else if (project_manager) {
screen_property = "interface/editor/project_manager_screen";
screen_property = "interface/editor/appearance/project_manager_screen";
} else {
// Skip.
screen_found = true;
@ -3047,13 +3047,13 @@ Error Main::setup2(bool p_show_boot_logo) {
if (!ac_found && assign == "interface/accessibility/accessibility_support") {
accessibility_mode_editor = value;
ac_found = true;
} else if (!init_expand_to_title_found && assign == "interface/editor/expand_to_title") {
} else if (!init_expand_to_title_found && assign == "interface/editor/appearance/expand_to_title") {
init_expand_to_title = value;
init_expand_to_title_found = true;
} else if (!init_display_scale_found && assign == "interface/editor/display_scale") {
} else if (!init_display_scale_found && assign == "interface/editor/appearance/display_scale") {
init_display_scale = value;
init_display_scale_found = true;
} else if (!init_custom_scale_found && assign == "interface/editor/custom_display_scale") {
} else if (!init_custom_scale_found && assign == "interface/editor/appearance/custom_display_scale") {
init_custom_scale = value;
init_custom_scale_found = true;
} else if (!prefer_wayland_found && assign == "run/platforms/linuxbsd/prefer_wayland") {
@ -3064,7 +3064,7 @@ Error Main::setup2(bool p_show_boot_logo) {
prefer_wayland = value;
}
prefer_wayland_found = true;
} else if (!tablet_found && assign == "interface/editor/tablet_driver") {
} else if (!tablet_found && assign == "interface/editor/input/tablet_driver") {
tablet_driver_editor = value;
tablet_found = true;
}
@ -4575,12 +4575,12 @@ int Main::start() {
#ifdef TOOLS_ENABLED
if (editor) {
bool editor_embed_subwindows = EDITOR_GET("interface/editor/single_window_mode");
bool editor_embed_subwindows = EDITOR_GET("interface/editor/display/single_window_mode");
if (editor_embed_subwindows) {
sml->get_root()->set_embedding_subwindows(true);
}
restore_editor_window_layout = EDITOR_GET("interface/editor/editor_screen").operator int() == EditorSettings::InitialScreen::INITIAL_SCREEN_AUTO;
restore_editor_window_layout = EDITOR_GET("interface/editor/appearance/editor_screen").operator int() == EditorSettings::InitialScreen::INITIAL_SCREEN_AUTO;
}
#endif