From d24ee551ecb09209ead942a00e88ea42b66b15be Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Thu, 2 Mar 2023 20:37:02 +0800 Subject: [PATCH] Allow EditorInspector to change its property name style when necessary Previously, an EditorInspector's property name can only be set from outside. Inspectors used for settings needs to respond to changes in editor settings. So a few boilerplate code is almost always needed, including watching for a certain editor setting in `_notification()`. This commit adds a `set_use_settings_style()` function to tell the inspector to watch for editor settings changes on its own. --- editor/editor_inspector.cpp | 26 +++++++++++++++++++ editor/editor_inspector.h | 4 +++ editor/editor_sectioned_inspector.cpp | 11 -------- editor/editor_sectioned_inspector.h | 3 --- editor/export/project_export.cpp | 5 ---- .../import/dynamic_font_import_settings.cpp | 12 --------- editor/import/scene_import_settings.cpp | 5 ---- editor/import_defaults_editor.cpp | 6 ----- editor/import_dock.cpp | 2 -- editor/inspector_dock.cpp | 3 ++- .../tiles/tile_set_atlas_source_editor.cpp | 11 -------- ...le_set_scenes_collection_source_editor.cpp | 11 -------- 12 files changed, 32 insertions(+), 67 deletions(-) diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index 0c813f2f778c3..2b02818645d2c 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -3441,6 +3441,16 @@ void EditorInspector::set_property_name_style(EditorPropertyNameProcessor::Style update_tree(); } +void EditorInspector::set_use_settings_name_style(bool p_enable) { + if (use_settings_name_style == p_enable) { + return; + } + use_settings_name_style = p_enable; + if (use_settings_name_style) { + set_property_name_style(EditorPropertyNameProcessor::get_singleton()->get_settings_style()); + } +} + void EditorInspector::set_autoclear(bool p_enable) { autoclear = p_enable; } @@ -3973,7 +3983,20 @@ void EditorInspector::_notification(int p_what) { case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { _update_inspector_bg(); + bool needs_update = false; + + if (use_settings_name_style && EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/localize_settings")) { + EditorPropertyNameProcessor::Style style = EditorPropertyNameProcessor::get_settings_style(); + if (property_name_style != style) { + property_name_style = style; + needs_update = true; + } + } if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/inspector")) { + needs_update = true; + } + + if (needs_update) { update_tree(); } } break; @@ -4158,4 +4181,7 @@ EditorInspector::EditorInspector() { ED_SHORTCUT("property_editor/copy_value", TTR("Copy Value"), KeyModifierMask::CMD_OR_CTRL | Key::C); ED_SHORTCUT("property_editor/paste_value", TTR("Paste Value"), KeyModifierMask::CMD_OR_CTRL | Key::V); ED_SHORTCUT("property_editor/copy_property_path", TTR("Copy Property Path"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::C); + + // `use_settings_name_style` is true by default, set the name style accordingly. + set_property_name_style(EditorPropertyNameProcessor::get_singleton()->get_settings_style()); } diff --git a/editor/editor_inspector.h b/editor/editor_inspector.h index b3709e93f42ad..e9a4eaec309f6 100644 --- a/editor/editor_inspector.h +++ b/editor/editor_inspector.h @@ -465,6 +465,7 @@ class EditorInspector : public ScrollContainer { bool hide_metadata = true; bool use_doc_hints = false; EditorPropertyNameProcessor::Style property_name_style = EditorPropertyNameProcessor::STYLE_CAPITALIZED; + bool use_settings_name_style = true; bool use_filter = false; bool autoclear = false; bool use_folding = false; @@ -570,6 +571,9 @@ public: EditorPropertyNameProcessor::Style get_property_name_style() const; void set_property_name_style(EditorPropertyNameProcessor::Style p_style); + // If true, the inspector will update its property name style according to the current editor settings. + void set_use_settings_name_style(bool p_enable); + void set_autoclear(bool p_enable); void set_show_categories(bool p_show); diff --git a/editor/editor_sectioned_inspector.cpp b/editor/editor_sectioned_inspector.cpp index 8716a75efdb43..92aa74dd9d3ae 100644 --- a/editor/editor_sectioned_inspector.cpp +++ b/editor/editor_sectioned_inspector.cpp @@ -310,16 +310,6 @@ void SectionedInspector::_search_changed(const String &p_what) { update_category_list(); } -void SectionedInspector::_notification(int p_what) { - switch (p_what) { - case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/localize_settings")) { - inspector->set_property_name_style(EditorPropertyNameProcessor::get_settings_style()); - } - } break; - } -} - EditorInspector *SectionedInspector::get_inspector() { return inspector; } @@ -353,7 +343,6 @@ SectionedInspector::SectionedInspector() : inspector->set_v_size_flags(SIZE_EXPAND_FILL); right_vb->add_child(inspector, true); inspector->set_use_doc_hints(true); - inspector->set_property_name_style(EditorPropertyNameProcessor::get_settings_style()); sections->connect("cell_selected", callable_mp(this, &SectionedInspector::_section_selected)); } diff --git a/editor/editor_sectioned_inspector.h b/editor/editor_sectioned_inspector.h index 0594ef486fe71..3c9eb7857118d 100644 --- a/editor/editor_sectioned_inspector.h +++ b/editor/editor_sectioned_inspector.h @@ -58,9 +58,6 @@ class SectionedInspector : public HSplitContainer { void _search_changed(const String &p_what); -protected: - void _notification(int p_what); - public: void register_search_box(LineEdit *p_box); EditorInspector *get_inspector(); diff --git a/editor/export/project_export.cpp b/editor/export/project_export.cpp index 114d927c4d59a..591ed0538c318 100644 --- a/editor/export/project_export.cpp +++ b/editor/export/project_export.cpp @@ -70,10 +70,6 @@ void ProjectExportDialog::_notification(int p_what) { connect("confirmed", callable_mp(this, &ProjectExportDialog::_export_pck_zip)); _update_export_all(); } break; - - case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - parameters->set_property_name_style(EditorPropertyNameProcessor::get_settings_style()); - } break; } } @@ -1161,7 +1157,6 @@ ProjectExportDialog::ProjectExportDialog() { sections->add_child(parameters); parameters->set_name(TTR("Options")); parameters->set_v_size_flags(Control::SIZE_EXPAND_FILL); - parameters->set_property_name_style(EditorPropertyNameProcessor::get_settings_style()); parameters->set_use_doc_hints(true); parameters->connect("property_edited", callable_mp(this, &ProjectExportDialog::_update_parameters)); EditorExport::get_singleton()->connect("export_presets_updated", callable_mp(this, &ProjectExportDialog::_force_update_current_preset_parameters)); diff --git a/editor/import/dynamic_font_import_settings.cpp b/editor/import/dynamic_font_import_settings.cpp index 65fc79a7a57b1..39e4ffbc16a39 100644 --- a/editor/import/dynamic_font_import_settings.cpp +++ b/editor/import/dynamic_font_import_settings.cpp @@ -928,15 +928,6 @@ void DynamicFontImportSettings::_notification(int p_what) { add_var->set_icon(get_theme_icon(SNAME("Add"), SNAME("EditorIcons"))); label_warn->add_theme_color_override("font_color", get_theme_color(SNAME("warning_color"), SNAME("Editor"))); } break; - - case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/localize_settings")) { - EditorPropertyNameProcessor::Style style = EditorPropertyNameProcessor::get_singleton()->get_settings_style(); - inspector_general->set_property_name_style(style); - inspector_vars->set_property_name_style(style); - inspector_text->set_property_name_style(style); - } - } break; } } @@ -1342,7 +1333,6 @@ DynamicFontImportSettings::DynamicFontImportSettings() { inspector_general->set_v_size_flags(Control::SIZE_EXPAND_FILL); inspector_general->set_custom_minimum_size(Size2(300 * EDSCALE, 250 * EDSCALE)); inspector_general->connect("property_edited", callable_mp(this, &DynamicFontImportSettings::_main_prop_changed)); - inspector_general->set_property_name_style(EditorPropertyNameProcessor::get_singleton()->get_settings_style()); page1_hb->add_child(inspector_general); // Page 2 layout: Configurations @@ -1394,7 +1384,6 @@ DynamicFontImportSettings::DynamicFontImportSettings() { inspector_vars = memnew(EditorInspector); inspector_vars->set_v_size_flags(Control::SIZE_EXPAND_FILL); inspector_vars->connect("property_edited", callable_mp(this, &DynamicFontImportSettings::_variation_changed)); - inspector_vars->set_property_name_style(EditorPropertyNameProcessor::get_singleton()->get_settings_style()); page2_side_vb->add_child(inspector_vars); VBoxContainer *preload_pages_vb = memnew(VBoxContainer); @@ -1470,7 +1459,6 @@ DynamicFontImportSettings::DynamicFontImportSettings() { inspector_text->set_v_size_flags(Control::SIZE_EXPAND_FILL); inspector_text->set_custom_minimum_size(Size2(300 * EDSCALE, 250 * EDSCALE)); inspector_text->connect("property_edited", callable_mp(this, &DynamicFontImportSettings::_change_text_opts)); - inspector_text->set_property_name_style(EditorPropertyNameProcessor::get_singleton()->get_settings_style()); page2_1_hb->add_child(inspector_text); text_edit = memnew(TextEdit); diff --git a/editor/import/scene_import_settings.cpp b/editor/import/scene_import_settings.cpp index e7ba47e2a137a..92d287c54fe8f 100644 --- a/editor/import/scene_import_settings.cpp +++ b/editor/import/scene_import_settings.cpp @@ -1006,10 +1006,6 @@ void SceneImportSettings::_notification(int p_what) { action_menu->add_theme_style_override("hover", get_theme_stylebox("hover", "Button")); action_menu->add_theme_style_override("pressed", get_theme_stylebox("pressed", "Button")); } break; - - case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - inspector->set_property_name_style(EditorPropertyNameProcessor::get_settings_style()); - } break; } } @@ -1410,7 +1406,6 @@ SceneImportSettings::SceneImportSettings() { inspector = memnew(EditorInspector); inspector->set_custom_minimum_size(Size2(300 * EDSCALE, 0)); - inspector->set_property_name_style(EditorPropertyNameProcessor::get_settings_style()); property_split->add_child(inspector); diff --git a/editor/import_defaults_editor.cpp b/editor/import_defaults_editor.cpp index 0e25468e1a96f..ebbea827c0e4a 100644 --- a/editor/import_defaults_editor.cpp +++ b/editor/import_defaults_editor.cpp @@ -36,7 +36,6 @@ #include "editor/editor_autoload_settings.h" #include "editor/editor_plugin_settings.h" #include "editor/editor_sectioned_inspector.h" -#include "editor/editor_settings.h" #include "editor/localization_editor.h" #include "editor/shader_globals_editor.h" #include "scene/gui/center_container.h" @@ -82,11 +81,6 @@ protected: void ImportDefaultsEditor::_notification(int p_what) { switch (p_what) { - case NOTIFICATION_ENTER_TREE: - case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - inspector->set_property_name_style(EditorPropertyNameProcessor::get_settings_style()); - } break; - case NOTIFICATION_PREDELETE: { inspector->edit(nullptr); } break; diff --git a/editor/import_dock.cpp b/editor/import_dock.cpp index b5680f2f2c312..7b8b9cd7a48cd 100644 --- a/editor/import_dock.cpp +++ b/editor/import_dock.cpp @@ -565,7 +565,6 @@ void ImportDock::_notification(int p_what) { switch (p_what) { case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { imported->add_theme_style_override("normal", get_theme_stylebox(SNAME("normal"), SNAME("LineEdit"))); - import_opts->set_property_name_style(EditorPropertyNameProcessor::get_settings_style()); } break; case NOTIFICATION_ENTER_TREE: { @@ -643,7 +642,6 @@ ImportDock::ImportDock() { import_opts = memnew(EditorInspector); content->add_child(import_opts); import_opts->set_v_size_flags(SIZE_EXPAND_FILL); - import_opts->set_property_name_style(EditorPropertyNameProcessor::get_settings_style()); import_opts->connect("property_edited", callable_mp(this, &ImportDock::_property_edited)); import_opts->connect("property_toggled", callable_mp(this, &ImportDock::_property_toggled)); diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp index 2acc83cead75a..39ed7d869ba74 100644 --- a/editor/inspector_dock.cpp +++ b/editor/inspector_dock.cpp @@ -767,7 +767,8 @@ InspectorDock::InspectorDock(EditorData &p_editor_data) { inspector->set_use_doc_hints(true); inspector->set_hide_script(false); inspector->set_hide_metadata(false); - inspector->set_property_name_style(EditorPropertyNameProcessor::get_default_inspector_style()); + inspector->set_use_settings_name_style(false); + inspector->set_property_name_style(property_name_style); inspector->set_use_folding(!bool(EDITOR_GET("interface/inspector/disable_folding"))); inspector->register_text_enter(search); diff --git a/editor/plugins/tiles/tile_set_atlas_source_editor.cpp b/editor/plugins/tiles/tile_set_atlas_source_editor.cpp index 42c296e825484..a8c3b8e8d5018 100644 --- a/editor/plugins/tiles/tile_set_atlas_source_editor.cpp +++ b/editor/plugins/tiles/tile_set_atlas_source_editor.cpp @@ -34,7 +34,6 @@ #include "editor/editor_inspector.h" #include "editor/editor_node.h" -#include "editor/editor_property_name_processor.h" #include "editor/editor_scale.h" #include "editor/editor_settings.h" #include "editor/editor_undo_redo_manager.h" @@ -2415,14 +2414,6 @@ void TileSetAtlasSourceEditor::_notification(int p_what) { } } } break; - - case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/localize_settings")) { - EditorPropertyNameProcessor::Style style = EditorPropertyNameProcessor::get_singleton()->get_settings_style(); - atlas_source_inspector->set_property_name_style(style); - tile_inspector->set_property_name_style(style); - } - } break; } } @@ -2492,7 +2483,6 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() { tile_inspector->edit(tile_proxy_object); tile_inspector->set_use_folding(true); tile_inspector->connect("property_selected", callable_mp(this, &TileSetAtlasSourceEditor::_inspector_property_selected)); - tile_inspector->set_property_name_style(EditorPropertyNameProcessor::get_singleton()->get_settings_style()); middle_vbox_container->add_child(tile_inspector); tile_inspector_no_tile_selected_label = memnew(Label); @@ -2544,7 +2534,6 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() { atlas_source_inspector->set_v_size_flags(SIZE_EXPAND_FILL); atlas_source_inspector->set_show_categories(true); atlas_source_inspector->edit(atlas_source_proxy_object); - atlas_source_inspector->set_property_name_style(EditorPropertyNameProcessor::get_singleton()->get_settings_style()); middle_vbox_container->add_child(atlas_source_inspector); // -- Right side -- diff --git a/editor/plugins/tiles/tile_set_scenes_collection_source_editor.cpp b/editor/plugins/tiles/tile_set_scenes_collection_source_editor.cpp index 935046717644c..6908dd7c3b232 100644 --- a/editor/plugins/tiles/tile_set_scenes_collection_source_editor.cpp +++ b/editor/plugins/tiles/tile_set_scenes_collection_source_editor.cpp @@ -32,7 +32,6 @@ #include "editor/editor_file_system.h" #include "editor/editor_node.h" -#include "editor/editor_property_name_processor.h" #include "editor/editor_resource_preview.h" #include "editor/editor_scale.h" #include "editor/editor_settings.h" @@ -365,14 +364,6 @@ void TileSetScenesCollectionSourceEditor::_notification(int p_what) { _update_scenes_list(); _update_action_buttons(); } break; - - case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - if (EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/localize_settings")) { - EditorPropertyNameProcessor::Style style = EditorPropertyNameProcessor::get_singleton()->get_settings_style(); - scenes_collection_source_inspector->set_property_name_style(style); - tile_inspector->set_property_name_style(style); - } - } break; } } @@ -514,7 +505,6 @@ TileSetScenesCollectionSourceEditor::TileSetScenesCollectionSourceEditor() { scenes_collection_source_inspector = memnew(EditorInspector); scenes_collection_source_inspector->set_vertical_scroll_mode(ScrollContainer::SCROLL_MODE_DISABLED); scenes_collection_source_inspector->edit(scenes_collection_source_proxy_object); - scenes_collection_source_inspector->set_property_name_style(EditorPropertyNameProcessor::get_singleton()->get_settings_style()); middle_vbox_container->add_child(scenes_collection_source_inspector); // Tile inspector. @@ -531,7 +521,6 @@ TileSetScenesCollectionSourceEditor::TileSetScenesCollectionSourceEditor() { tile_inspector->set_vertical_scroll_mode(ScrollContainer::SCROLL_MODE_DISABLED); tile_inspector->edit(tile_proxy_object); tile_inspector->set_use_folding(true); - tile_inspector->set_property_name_style(EditorPropertyNameProcessor::get_singleton()->get_settings_style()); middle_vbox_container->add_child(tile_inspector); // Scenes list.