Merge pull request #118139 from vaner-org/main-scene-accents

Use accent color for main scene in EditorSceneTab and "Favorites" in FileSystemDock
This commit is contained in:
Thaddeus Crews
2026-04-08 09:25:29 -05:00
3 changed files with 27 additions and 0 deletions
+4
View File
@@ -464,6 +464,10 @@ void FileSystemDock::_update_tree(const Vector<String> &p_uncollapsed_paths, boo
ti->set_metadata(0, favorite);
ti->set_accept_children(false);
if (favorite == main_scene_path) {
ti->set_custom_color(0, get_theme_color(SNAME("accent_color"), EditorStringName(Editor)));
}
if (!favorite.ends_with("/")) {
EditorResourcePreview::get_singleton()->queue_resource_preview(favorite, callable_mp(this, &FileSystemDock::_tree_thumbnail_done).bind(tree_update_id, ti->get_instance_id()));
}
+21
View File
@@ -294,6 +294,7 @@ void EditorSceneTabs::update_scene_tabs() {
void EditorSceneTabs::_update_tab_titles() {
bool show_rb = EDITOR_GET("interface/scene_tabs/show_script_button");
const String main_scene_path = ResourceUID::ensure_path(GLOBAL_GET("application/run/main_scene"));
// Get all scene names, which may be ambiguous.
Vector<String> disambiguated_scene_names;
@@ -316,6 +317,18 @@ void EditorSceneTabs::_update_tab_titles() {
bool unsaved = EditorUndoRedoManager::get_singleton()->is_history_unsaved(EditorNode::get_editor_data().get_scene_history_id(i));
scene_tabs->set_tab_title(i, disambiguated_scene_names[i] + (unsaved ? "(*)" : ""));
if (!main_scene_path.is_empty() && main_scene_path == EditorNode::get_editor_data().get_scene_path(i)) {
scene_tabs->set_font_color_override(i, TabBar::DRAW_DISABLED, get_theme_color(SNAME("accent_color"), EditorStringName(Editor)) * Color(1, 1, 1, 0.7));
scene_tabs->set_font_color_override(i, TabBar::DRAW_NORMAL, get_theme_color(SNAME("accent_color"), EditorStringName(Editor)) * Color(1, 1, 1, 0.7));
scene_tabs->set_font_color_override(i, TabBar::DRAW_HOVER, get_theme_color(SNAME("accent_color"), EditorStringName(Editor)));
scene_tabs->set_font_color_override(i, TabBar::DRAW_PRESSED, get_theme_color(SNAME("accent_color"), EditorStringName(Editor)));
} else {
scene_tabs->set_font_color_override(i, TabBar::DRAW_DISABLED, get_theme_color(SNAME("font_disabled_color"), SNAME("TabBar")));
scene_tabs->set_font_color_override(i, TabBar::DRAW_NORMAL, get_theme_color(SNAME("font_unselected_color"), SNAME("TabBar")));
scene_tabs->set_font_color_override(i, TabBar::DRAW_HOVER, get_theme_color(SNAME("font_hovered_color"), SNAME("TabBar")));
scene_tabs->set_font_color_override(i, TabBar::DRAW_PRESSED, get_theme_color(SNAME("font_selected_color"), SNAME("TabBar")));
}
if (NativeMenu::get_singleton()->has_feature(NativeMenu::FEATURE_GLOBAL_MENU)) {
RID dock_rid = NativeMenu::get_singleton()->get_system_menu(NativeMenu::DOCK_MENU_ID);
int global_menu_index = scene_tabs->get_tab_metadata(i);
@@ -425,6 +438,12 @@ int EditorSceneTabs::get_current_tab() const {
return scene_tabs->get_current_tab();
}
void EditorSceneTabs::_project_settings_changed() {
if (ProjectSettings::get_singleton()->check_changed_settings_in_group("application/run/main_scene")) {
update_scene_tabs();
}
}
void EditorSceneTabs::_bind_methods() {
ADD_SIGNAL(MethodInfo("tab_changed", PropertyInfo(Variant::INT, "tab_index")));
ADD_SIGNAL(MethodInfo("tab_closed", PropertyInfo(Variant::INT, "tab_index")));
@@ -502,4 +521,6 @@ EditorSceneTabs::EditorSceneTabs() {
tab_preview->set_size(Size2(96, 96) * EDSCALE);
tab_preview->set_position(Point2(2, 2) * EDSCALE);
tab_preview_panel->add_child(tab_preview);
ProjectSettings::get_singleton()->connect("settings_changed", callable_mp(this, &EditorSceneTabs::_project_settings_changed));
}
+2
View File
@@ -92,6 +92,8 @@ private:
void _global_menu_scene(const Variant &p_tag);
void _global_menu_new_window(const Variant &p_tag);
void _project_settings_changed();
virtual void shortcut_input(const Ref<InputEvent> &p_event) override;
protected: