Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions editor/scene/editor_scene_tabs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#include "editor/themes/editor_scale.h"
#include "scene/gui/box_container.h"
#include "scene/gui/button.h"
#include "scene/gui/menu_button.h"
#include "scene/gui/panel.h"
#include "scene/gui/panel_container.h"
#include "scene/gui/popup_menu.h"
Expand All @@ -54,6 +55,8 @@ void EditorSceneTabs::_notification(int p_what) {
tabbar_panel->add_theme_style_override(SceneStringName(panel), get_theme_stylebox(SNAME("tabbar_background"), SNAME("TabContainer")));
scene_tabs->add_theme_constant_override("icon_max_width", get_theme_constant(SNAME("class_icon_size"), EditorStringName(Editor)));

scene_list->set_button_icon(get_editor_theme_icon(SNAME("GuiTabMenuHl")));

scene_tab_add->set_button_icon(get_editor_theme_icon(SNAME("Add")));
scene_tab_add->add_theme_color_override("icon_normal_color", Color(0.6f, 0.6f, 0.6f, 0.8f));

Expand Down Expand Up @@ -227,6 +230,16 @@ void EditorSceneTabs::_custom_menu_option(int p_option) {
}
}

void EditorSceneTabs::_update_scene_list() {
PopupMenu *popup = scene_list->get_popup();
popup->clear();

for (int i = 0; i < scene_tabs->get_tab_count(); i++) {
popup->add_item(scene_tabs->get_tab_title(i), i);
popup->set_item_icon(i, scene_tabs->get_tab_icon(i));
}
}

void EditorSceneTabs::update_scene_tabs() {
static bool menu_initialized = false;
tab_preview_panel->hide();
Expand Down Expand Up @@ -443,6 +456,15 @@ EditorSceneTabs::EditorSceneTabs() {
scene_tab_add_ph->set_custom_minimum_size(scene_tab_add->get_minimum_size());
tabbar_container->add_child(scene_tab_add_ph);

scene_list = memnew(MenuButton);
scene_list->set_flat(false);
scene_list->set_accessibility_name(TTRC("Show Opened Scenes List"));
scene_list->set_shortcut(ED_SHORTCUT("editor/show_opened_scenes_list", TTRC("Show Opened Scenes List"), KeyModifierMask::ALT | Key::T));
scene_list->get_popup()->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED);
scene_list->get_popup()->connect("about_to_popup", callable_mp(this, &EditorSceneTabs::_update_scene_list));
scene_list->get_popup()->connect(SceneStringName(id_pressed), callable_mp(this, &EditorSceneTabs::_scene_tab_changed));
tabbar_container->add_child(scene_list);

// On-hover tab preview.

Control *tab_preview_anchor = memnew(Control);
Expand Down
3 changes: 3 additions & 0 deletions editor/scene/editor_scene_tabs.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@

class Button;
class HBoxContainer;
class MenuButton;
class Panel;
class PanelContainer;
class PopupMenu;
Expand All @@ -59,6 +60,7 @@ class EditorSceneTabs : public MarginContainer {

TabBar *scene_tabs = nullptr;
PopupMenu *scene_tabs_context_menu = nullptr;
MenuButton *scene_list = nullptr;
Button *scene_tab_add = nullptr;
Control *scene_tab_add_ph = nullptr;

Expand All @@ -79,6 +81,7 @@ class EditorSceneTabs : public MarginContainer {
void _reposition_active_tab(int p_to_index);
void _update_context_menu();
void _custom_menu_option(int p_option);
void _update_scene_list();

void _tab_preview_done(const String &p_path, const Ref<Texture2D> &p_preview, const Ref<Texture2D> &p_small_preview, int p_tab);

Expand Down