Remove DockConstants

This commit is contained in:
kobewi 2026-01-08 14:07:30 +01:00
parent a4bbad2ba8
commit 4e34dc0b4d
8 changed files with 110 additions and 157 deletions

View file

@ -1,55 +0,0 @@
/**************************************************************************/
/* dock_constants.h */
/**************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
/* https://godotengine.org */
/**************************************************************************/
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
/* */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the */
/* "Software"), to deal in the Software without restriction, including */
/* without limitation the rights to use, copy, modify, merge, publish, */
/* distribute, sublicense, and/or sell copies of the Software, and to */
/* permit persons to whom the Software is furnished to do so, subject to */
/* the following conditions: */
/* */
/* The above copyright notice and this permission notice shall be */
/* included in all copies or substantial portions of the Software. */
/* */
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/**************************************************************************/
#pragma once
namespace DockConstants {
enum DockSlot {
DOCK_SLOT_NONE = -1,
DOCK_SLOT_LEFT_UL,
DOCK_SLOT_LEFT_BL,
DOCK_SLOT_LEFT_UR,
DOCK_SLOT_LEFT_BR,
DOCK_SLOT_RIGHT_UL,
DOCK_SLOT_RIGHT_BL,
DOCK_SLOT_RIGHT_UR,
DOCK_SLOT_RIGHT_BR,
DOCK_SLOT_BOTTOM,
DOCK_SLOT_MAX
};
enum DockLayout {
DOCK_LAYOUT_VERTICAL = 1,
DOCK_LAYOUT_HORIZONTAL = 2,
DOCK_LAYOUT_FLOATING = 4,
};
}; //namespace DockConstants

View file

@ -203,6 +203,10 @@ void EditorDock::set_dock_shortcut(const Ref<Shortcut> &p_shortcut) {
_emit_changed();
}
Ref<Shortcut> EditorDock::get_dock_shortcut() const {
return shortcut;
}
void EditorDock::set_default_slot(DockSlot p_slot) {
ERR_FAIL_INDEX(p_slot, DOCK_SLOT_MAX);
default_slot = p_slot;

View file

@ -31,7 +31,6 @@
#pragma once
#include "core/io/config_file.h"
#include "editor/docks/dock_constants.h"
#include "scene/gui/margin_container.h"
class Shortcut;
@ -42,24 +41,24 @@ class EditorDock : public MarginContainer {
public:
enum DockLayout {
DOCK_LAYOUT_VERTICAL = DockConstants::DOCK_LAYOUT_VERTICAL,
DOCK_LAYOUT_HORIZONTAL = DockConstants::DOCK_LAYOUT_HORIZONTAL,
DOCK_LAYOUT_FLOATING = DockConstants::DOCK_LAYOUT_FLOATING,
DOCK_LAYOUT_VERTICAL = 1,
DOCK_LAYOUT_HORIZONTAL = 2,
DOCK_LAYOUT_FLOATING = 4,
DOCK_LAYOUT_ALL = DOCK_LAYOUT_VERTICAL | DOCK_LAYOUT_HORIZONTAL | DOCK_LAYOUT_FLOATING,
};
enum DockSlot {
DOCK_SLOT_NONE = DockConstants::DOCK_SLOT_NONE,
DOCK_SLOT_LEFT_UL = DockConstants::DOCK_SLOT_LEFT_UL,
DOCK_SLOT_LEFT_BL = DockConstants::DOCK_SLOT_LEFT_BL,
DOCK_SLOT_LEFT_UR = DockConstants::DOCK_SLOT_LEFT_UR,
DOCK_SLOT_LEFT_BR = DockConstants::DOCK_SLOT_LEFT_BR,
DOCK_SLOT_RIGHT_UL = DockConstants::DOCK_SLOT_RIGHT_UL,
DOCK_SLOT_RIGHT_BL = DockConstants::DOCK_SLOT_RIGHT_BL,
DOCK_SLOT_RIGHT_UR = DockConstants::DOCK_SLOT_RIGHT_UR,
DOCK_SLOT_RIGHT_BR = DockConstants::DOCK_SLOT_RIGHT_BR,
DOCK_SLOT_BOTTOM = DockConstants::DOCK_SLOT_BOTTOM,
DOCK_SLOT_MAX = DockConstants::DOCK_SLOT_MAX
DOCK_SLOT_NONE = -1,
DOCK_SLOT_LEFT_UL,
DOCK_SLOT_LEFT_BL,
DOCK_SLOT_LEFT_UR,
DOCK_SLOT_LEFT_BR,
DOCK_SLOT_RIGHT_UL,
DOCK_SLOT_RIGHT_BL,
DOCK_SLOT_RIGHT_UR,
DOCK_SLOT_RIGHT_BR,
DOCK_SLOT_BOTTOM,
DOCK_SLOT_MAX
};
private:
@ -86,7 +85,7 @@ private:
bool enabled = true;
int previous_tab_index = -1;
WindowWrapper *dock_window = nullptr;
int dock_slot_index = DockConstants::DOCK_SLOT_NONE;
int dock_slot_index = DOCK_SLOT_NONE;
void _set_default_slot_bind(DockSlot p_slot);
DockSlot _get_default_slot_bind() const { return default_slot; }
@ -133,7 +132,7 @@ public:
Color get_title_color() const { return title_color; }
void set_dock_shortcut(const Ref<Shortcut> &p_shortcut);
Ref<Shortcut> get_dock_shortcut() const { return shortcut; }
Ref<Shortcut> get_dock_shortcut() const;
void set_default_slot(DockSlot p_slot);
DockSlot get_default_slot() const { return default_slot; }

View file

@ -96,7 +96,7 @@ void EditorDockDragHint::gui_input(const Ref<InputEvent> &p_event) {
}
}
void EditorDockDragHint::set_slot(DockConstants::DockSlot p_slot) {
void EditorDockDragHint::set_slot(EditorDock::DockSlot p_slot) {
occupied_slot = p_slot;
drop_tabbar = dock_manager->dock_slots[occupied_slot].container->get_tab_bar();
}
@ -128,7 +128,7 @@ void EditorDockDragHint::_notification(int p_what) {
return;
}
can_drop_dock = dragged_dock->get_available_layouts() & (EditorDock::DockLayout)EditorDockManager::get_singleton()->dock_slots[occupied_slot].layout;
can_drop_dock = dragged_dock->get_available_layouts() & EditorDockManager::get_singleton()->dock_slots[occupied_slot].layout;
dock_drop_highlight->set_border_color(valid_drop_color);
dock_drop_highlight->set_bg_color(valid_drop_color * Color(1, 1, 1, 0.1));
@ -246,7 +246,7 @@ EditorDock *EditorDockManager::_get_dock_tab_dragged() {
return dock_tab_dragged;
}
Dictionary dock_drop_data = dock_slots[DockConstants::DOCK_SLOT_LEFT_BL].container->get_viewport()->gui_get_drag_data();
Dictionary dock_drop_data = dock_slots[EditorDock::DOCK_SLOT_LEFT_BL].container->get_viewport()->gui_get_drag_data();
// Check if we are dragging a dock.
if (dock_drop_data.get("type", "").operator String() != "tab") {
@ -270,7 +270,7 @@ EditorDock *EditorDockManager::_get_dock_tab_dragged() {
return nullptr;
}
for (int i = 0; i < DockConstants::DOCK_SLOT_MAX; i++) {
for (int i = 0; i < EditorDock::DOCK_SLOT_MAX; i++) {
if (dock_slots[i].container->is_visible_in_tree()) {
dock_slots[i].drag_hint->set_rect(dock_slots[i].container->get_global_rect());
dock_slots[i].drag_hint->show();
@ -376,7 +376,7 @@ void EditorDockManager::_window_close_request(WindowWrapper *p_wrapper) {
EditorDock *dock = _close_window(p_wrapper);
ERR_FAIL_COND(!all_docks.has(dock));
if (dock->dock_slot_index != DockConstants::DOCK_SLOT_NONE) {
if (dock->dock_slot_index != EditorDock::DOCK_SLOT_NONE) {
dock->is_open = false;
open_dock(dock);
focus_dock(dock);
@ -597,7 +597,7 @@ void EditorDockManager::_update_tab_style(EditorDock *p_dock) {
void EditorDockManager::save_docks_to_config(Ref<ConfigFile> p_layout, const String &p_section) const {
// Save docks by dock slot.
for (int i = 0; i < DockConstants::DOCK_SLOT_MAX; i++) {
for (int i = 0; i < EditorDock::DOCK_SLOT_MAX; i++) {
const DockSlot &dock_slot = dock_slots[i];
PackedStringArray names;
@ -724,7 +724,7 @@ void EditorDockManager::load_docks_from_config(Ref<ConfigFile> p_layout, const S
}
// Load docks by slot. Index -1 is for docks that have no slot.
for (int i = -1; i < DockConstants::DOCK_SLOT_MAX; i++) {
for (int i = -1; i < EditorDock::DOCK_SLOT_MAX; i++) {
if (!p_layout->has_section_key(p_section, "dock_" + itos(i + 1))) {
continue;
}
@ -767,12 +767,12 @@ void EditorDockManager::load_docks_from_config(Ref<ConfigFile> p_layout, const S
}
// Set the selected tabs.
for (int i = 0; i < DockConstants::DOCK_SLOT_MAX; i++) {
for (int i = 0; i < EditorDock::DOCK_SLOT_MAX; i++) {
const DockSlot &dock_slot = dock_slots[i];
int selected_tab_idx = p_layout->get_value(p_section, "dock_" + itos(i + 1) + "_selected_tab_idx", -1);
if (selected_tab_idx <= 0 || selected_tab_idx >= dock_slot.container->get_tab_count()) {
if (i == DockConstants::DOCK_SLOT_BOTTOM) {
if (i == EditorDock::DOCK_SLOT_BOTTOM) {
dock_slot.container->set_current_tab(-1);
}
continue;
@ -859,7 +859,7 @@ void EditorDockManager::open_dock(EditorDock *p_dock, bool p_set_current) {
p_dock->is_open = true;
// Open dock to its previous location.
if (p_dock->dock_slot_index != DockConstants::DOCK_SLOT_NONE) {
if (p_dock->dock_slot_index != EditorDock::DOCK_SLOT_NONE) {
TabContainer *slot = dock_slots[p_dock->dock_slot_index].container;
int tab_index = p_dock->previous_tab_index;
if (tab_index < 0) {
@ -964,9 +964,9 @@ void EditorDockManager::set_docks_visible(bool p_show) {
return;
}
docks_visible = p_show;
for (int i = 0; i < DockConstants::DOCK_SLOT_BOTTOM; i++) {
for (int i = 0; i < EditorDock::DOCK_SLOT_BOTTOM; i++) {
// Show and hide in reverse order due to the SplitContainer prioritizing the last split offset.
TabContainer *container = dock_slots[docks_visible ? i : DockConstants::DOCK_SLOT_BOTTOM - i - 1].container;
TabContainer *container = dock_slots[docks_visible ? i : EditorDock::DOCK_SLOT_BOTTOM - i - 1].container;
container->set_visible(docks_visible && container->get_tab_count() > 0);
}
_update_layout();
@ -983,7 +983,7 @@ void EditorDockManager::update_tab_styles() {
}
void EditorDockManager::set_tab_icon_max_width(int p_max_width) {
for (int i = 0; i < DockConstants::DOCK_SLOT_MAX; i++) {
for (int i = 0; i < EditorDock::DOCK_SLOT_MAX; i++) {
TabContainer *tab_container = dock_slots[i].container;
tab_container->add_theme_constant_override(SNAME("icon_max_width"), p_max_width);
}
@ -999,9 +999,9 @@ void EditorDockManager::set_hsplit(DockSplitContainer *p_split) {
p_split->connect("dragged", callable_mp(this, &EditorDockManager::_dock_split_dragged));
}
void EditorDockManager::register_dock_slot(DockConstants::DockSlot p_dock_slot, TabContainer *p_tab_container, DockConstants::DockLayout p_layout) {
void EditorDockManager::register_dock_slot(EditorDock::DockSlot p_dock_slot, TabContainer *p_tab_container, EditorDock::DockLayout p_layout) {
ERR_FAIL_NULL(p_tab_container);
ERR_FAIL_INDEX(p_dock_slot, DockConstants::DOCK_SLOT_MAX);
ERR_FAIL_INDEX(p_dock_slot, EditorDock::DOCK_SLOT_MAX);
DockSlot slot;
slot.layout = p_layout;
@ -1020,7 +1020,7 @@ void EditorDockManager::register_dock_slot(DockConstants::DockSlot p_dock_slot,
p_tab_container->set_meta("dock_slot", p_dock_slot);
p_tab_container->set_meta("dock_layout", p_layout);
if (p_layout == DockConstants::DOCK_LAYOUT_VERTICAL) {
if (p_layout == EditorDock::DOCK_LAYOUT_VERTICAL) {
p_tab_container->set_custom_minimum_size(Size2(170, 0) * EDSCALE);
p_tab_container->set_v_size_flags(Control::SIZE_EXPAND_FILL);
p_tab_container->set_use_hidden_tabs_for_min_size(true);
@ -1121,7 +1121,7 @@ void DockContextPopup::_float_dock() {
}
bool DockContextPopup::_is_slot_available(int p_slot) const {
return context_dock->available_layouts & (EditorDock::DockLayout)EditorDockManager::get_singleton()->dock_slots[p_slot].layout;
return context_dock->available_layouts & EditorDockManager::get_singleton()->dock_slots[p_slot].layout;
}
void DockContextPopup::_dock_select_input(const Ref<InputEvent> &p_input) {
@ -1131,7 +1131,7 @@ void DockContextPopup::_dock_select_input(const Ref<InputEvent> &p_input) {
Vector2 point = me->get_position();
int over_dock_slot = -1;
for (int i = 0; i < DockConstants::DOCK_SLOT_MAX; i++) {
for (int i = 0; i < EditorDock::DOCK_SLOT_MAX; i++) {
if (dock_select_rects[i].has_point(point)) {
over_dock_slot = i;
break;
@ -1184,25 +1184,25 @@ void DockContextPopup::_dock_select_draw() {
Rect2 center_panel_rect(center_panel_width, 0, center_panel_width, dock_size.y);
if (dock_select->is_layout_rtl()) {
dock_select_rects[DockConstants::DOCK_SLOT_RIGHT_UR] = Rect2(Point2(), dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_RIGHT_BR] = Rect2(Point2(0, dock_size.y), dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_RIGHT_UL] = Rect2(Point2(dock_size.x, 0), dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_RIGHT_BL] = Rect2(dock_size, dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_LEFT_UR] = Rect2(Point2(dock_size.x * 4, 0), dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_LEFT_BR] = Rect2(Point2(dock_size.x * 4, dock_size.y), dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_LEFT_UL] = Rect2(Point2(dock_size.x * 5, 0), dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_LEFT_BL] = Rect2(Point2(dock_size.x * 5, dock_size.y), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_RIGHT_UR] = Rect2(Point2(), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_RIGHT_BR] = Rect2(Point2(0, dock_size.y), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_RIGHT_UL] = Rect2(Point2(dock_size.x, 0), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_RIGHT_BL] = Rect2(dock_size, dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_LEFT_UR] = Rect2(Point2(dock_size.x * 4, 0), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_LEFT_BR] = Rect2(Point2(dock_size.x * 4, dock_size.y), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_LEFT_UL] = Rect2(Point2(dock_size.x * 5, 0), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_LEFT_BL] = Rect2(Point2(dock_size.x * 5, dock_size.y), dock_size);
} else {
dock_select_rects[DockConstants::DOCK_SLOT_LEFT_UL] = Rect2(Point2(), dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_LEFT_BL] = Rect2(Point2(0, dock_size.y), dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_LEFT_UR] = Rect2(Point2(dock_size.x, 0), dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_LEFT_BR] = Rect2(dock_size, dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_RIGHT_UL] = Rect2(Point2(dock_size.x * 4, 0), dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_RIGHT_BL] = Rect2(Point2(dock_size.x * 4, dock_size.y), dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_RIGHT_UR] = Rect2(Point2(dock_size.x * 5, 0), dock_size);
dock_select_rects[DockConstants::DOCK_SLOT_RIGHT_BR] = Rect2(Point2(dock_size.x * 5, dock_size.y), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_LEFT_UL] = Rect2(Point2(), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_LEFT_BL] = Rect2(Point2(0, dock_size.y), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_LEFT_UR] = Rect2(Point2(dock_size.x, 0), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_LEFT_BR] = Rect2(dock_size, dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_RIGHT_UL] = Rect2(Point2(dock_size.x * 4, 0), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_RIGHT_BL] = Rect2(Point2(dock_size.x * 4, dock_size.y), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_RIGHT_UR] = Rect2(Point2(dock_size.x * 5, 0), dock_size);
dock_select_rects[EditorDock::DOCK_SLOT_RIGHT_BR] = Rect2(Point2(dock_size.x * 5, dock_size.y), dock_size);
}
dock_select_rects[DockConstants::DOCK_SLOT_BOTTOM] = Rect2(center_panel_width, dock_size.y, center_panel_width, dock_size.y);
dock_select_rects[EditorDock::DOCK_SLOT_BOTTOM] = Rect2(center_panel_width, dock_size.y, center_panel_width, dock_size.y);
int rtl_dir = dock_select->is_layout_rtl() ? -1 : 1;
real_t tab_height = 3.0 * EDSCALE;
@ -1221,8 +1221,8 @@ void DockContextPopup::_dock_select_draw() {
dock_select->draw_rect(center_panel_draw_rect, unusable_dock_color);
// Draw all dock slots.
for (int i = 0; i < DockConstants::DOCK_SLOT_MAX; i++) {
int max_tabs = (i == DockConstants::DOCK_SLOT_BOTTOM) ? 6 : 3;
for (int i = 0; i < EditorDock::DOCK_SLOT_MAX; i++) {
int max_tabs = (i == EditorDock::DOCK_SLOT_BOTTOM) ? 6 : 3;
const EditorDockManager::DockSlot &dock_slot = dock_manager->dock_slots[i];
Rect2 dock_slot_draw_rect = dock_select_rects[i].grow_individual(-dock_spacing, -dock_top_spacing, -dock_spacing, -dock_spacing);

View file

@ -30,7 +30,7 @@
#pragma once
#include "editor/docks/dock_constants.h"
#include "editor/docks/editor_dock.h"
#include "scene/gui/popup.h"
#include "scene/gui/split_container.h"
@ -91,10 +91,10 @@ private:
struct DockSlot {
TabContainer *container = nullptr;
EditorDockDragHint *drag_hint = nullptr;
DockConstants::DockLayout layout = DockConstants::DOCK_LAYOUT_VERTICAL;
EditorDock::DockLayout layout = EditorDock::DOCK_LAYOUT_VERTICAL;
};
DockSlot dock_slots[DockConstants::DOCK_SLOT_MAX];
DockSlot dock_slots[EditorDock::DOCK_SLOT_MAX];
Vector<WindowWrapper *> dock_windows;
LocalVector<EditorDock *> all_docks;
HashSet<EditorDock *> dirty_docks;
@ -138,7 +138,7 @@ public:
void add_vsplit(DockSplitContainer *p_split);
void set_hsplit(DockSplitContainer *p_split);
void register_dock_slot(DockConstants::DockSlot p_dock_slot, TabContainer *p_tab_container, DockConstants::DockLayout p_layout);
void register_dock_slot(EditorDock::DockSlot p_dock_slot, TabContainer *p_tab_container, EditorDock::DockLayout p_layout);
int get_vsplit_count() const;
PopupMenu *get_docks_menu();
@ -167,7 +167,7 @@ class EditorDockDragHint : public Control {
private:
EditorDockManager *dock_manager = nullptr;
DockConstants::DockSlot occupied_slot = DockConstants::DOCK_SLOT_MAX;
EditorDock::DockSlot occupied_slot = EditorDock::DOCK_SLOT_MAX;
TabBar *drop_tabbar = nullptr;
Color valid_drop_color;
@ -187,7 +187,7 @@ protected:
void drop_data(const Point2 &p_point, const Variant &p_data) override;
public:
void set_slot(DockConstants::DockSlot p_slot);
void set_slot(EditorDock::DockSlot p_slot);
EditorDockDragHint();
};
@ -204,7 +204,7 @@ private:
Button *close_button = nullptr;
Control *dock_select = nullptr;
Rect2 dock_select_rects[DockConstants::DOCK_SLOT_MAX];
Rect2 dock_select_rects[EditorDock::DOCK_SLOT_MAX];
int dock_select_rect_over_idx = -1;
EditorDock *context_dock = nullptr;

View file

@ -8518,24 +8518,24 @@ EditorNode::EditorNode() {
left_l_vsplit->set_vertical(true);
main_hsplit->add_child(left_l_vsplit);
TabContainer *dock_slot[DockConstants::DOCK_SLOT_MAX];
dock_slot[DockConstants::DOCK_SLOT_LEFT_UL] = memnew(TabContainer);
dock_slot[DockConstants::DOCK_SLOT_LEFT_UL]->set_name("DockSlotLeftUL");
left_l_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_LEFT_UL]);
dock_slot[DockConstants::DOCK_SLOT_LEFT_BL] = memnew(TabContainer);
dock_slot[DockConstants::DOCK_SLOT_LEFT_BL]->set_name("DockSlotLeftBL");
left_l_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_LEFT_BL]);
TabContainer *dock_slot[EditorDock::DOCK_SLOT_MAX];
dock_slot[EditorDock::DOCK_SLOT_LEFT_UL] = memnew(TabContainer);
dock_slot[EditorDock::DOCK_SLOT_LEFT_UL]->set_name("DockSlotLeftUL");
left_l_vsplit->add_child(dock_slot[EditorDock::DOCK_SLOT_LEFT_UL]);
dock_slot[EditorDock::DOCK_SLOT_LEFT_BL] = memnew(TabContainer);
dock_slot[EditorDock::DOCK_SLOT_LEFT_BL]->set_name("DockSlotLeftBL");
left_l_vsplit->add_child(dock_slot[EditorDock::DOCK_SLOT_LEFT_BL]);
left_r_vsplit = memnew(DockSplitContainer);
left_r_vsplit->set_name("DockVSplitLeftR");
left_r_vsplit->set_vertical(true);
main_hsplit->add_child(left_r_vsplit);
dock_slot[DockConstants::DOCK_SLOT_LEFT_UR] = memnew(TabContainer);
dock_slot[DockConstants::DOCK_SLOT_LEFT_UR]->set_name("DockSlotLeftUR");
left_r_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_LEFT_UR]);
dock_slot[DockConstants::DOCK_SLOT_LEFT_BR] = memnew(TabContainer);
dock_slot[DockConstants::DOCK_SLOT_LEFT_BR]->set_name("DockSlotLeftBR");
left_r_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_LEFT_BR]);
dock_slot[EditorDock::DOCK_SLOT_LEFT_UR] = memnew(TabContainer);
dock_slot[EditorDock::DOCK_SLOT_LEFT_UR]->set_name("DockSlotLeftUR");
left_r_vsplit->add_child(dock_slot[EditorDock::DOCK_SLOT_LEFT_UR]);
dock_slot[EditorDock::DOCK_SLOT_LEFT_BR] = memnew(TabContainer);
dock_slot[EditorDock::DOCK_SLOT_LEFT_BR]->set_name("DockSlotLeftBR");
left_r_vsplit->add_child(dock_slot[EditorDock::DOCK_SLOT_LEFT_BR]);
VBoxContainer *center_vb = memnew(VBoxContainer);
center_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL);
@ -8553,23 +8553,23 @@ EditorNode::EditorNode() {
right_l_vsplit->set_name("DockVSplitRightL");
right_l_vsplit->set_vertical(true);
main_hsplit->add_child(right_l_vsplit);
dock_slot[DockConstants::DOCK_SLOT_RIGHT_UL] = memnew(TabContainer);
dock_slot[DockConstants::DOCK_SLOT_RIGHT_UL]->set_name("DockSlotRightUL");
right_l_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_RIGHT_UL]);
dock_slot[DockConstants::DOCK_SLOT_RIGHT_BL] = memnew(TabContainer);
dock_slot[DockConstants::DOCK_SLOT_RIGHT_BL]->set_name("DockSlotRightBL");
right_l_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_RIGHT_BL]);
dock_slot[EditorDock::DOCK_SLOT_RIGHT_UL] = memnew(TabContainer);
dock_slot[EditorDock::DOCK_SLOT_RIGHT_UL]->set_name("DockSlotRightUL");
right_l_vsplit->add_child(dock_slot[EditorDock::DOCK_SLOT_RIGHT_UL]);
dock_slot[EditorDock::DOCK_SLOT_RIGHT_BL] = memnew(TabContainer);
dock_slot[EditorDock::DOCK_SLOT_RIGHT_BL]->set_name("DockSlotRightBL");
right_l_vsplit->add_child(dock_slot[EditorDock::DOCK_SLOT_RIGHT_BL]);
right_r_vsplit = memnew(DockSplitContainer);
right_r_vsplit->set_name("DockVSplitRightR");
right_r_vsplit->set_vertical(true);
main_hsplit->add_child(right_r_vsplit);
dock_slot[DockConstants::DOCK_SLOT_RIGHT_UR] = memnew(TabContainer);
dock_slot[DockConstants::DOCK_SLOT_RIGHT_UR]->set_name("DockSlotRightUR");
right_r_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_RIGHT_UR]);
dock_slot[DockConstants::DOCK_SLOT_RIGHT_BR] = memnew(TabContainer);
dock_slot[DockConstants::DOCK_SLOT_RIGHT_BR]->set_name("DockSlotRightBR");
right_r_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_RIGHT_BR]);
dock_slot[EditorDock::DOCK_SLOT_RIGHT_UR] = memnew(TabContainer);
dock_slot[EditorDock::DOCK_SLOT_RIGHT_UR]->set_name("DockSlotRightUR");
right_r_vsplit->add_child(dock_slot[EditorDock::DOCK_SLOT_RIGHT_UR]);
dock_slot[EditorDock::DOCK_SLOT_RIGHT_BR] = memnew(TabContainer);
dock_slot[EditorDock::DOCK_SLOT_RIGHT_BR]->set_name("DockSlotRightBR");
right_r_vsplit->add_child(dock_slot[EditorDock::DOCK_SLOT_RIGHT_BR]);
editor_dock_manager = memnew(EditorDockManager);
@ -8581,8 +8581,8 @@ EditorNode::EditorNode() {
editor_dock_manager->set_hsplit(main_hsplit);
for (int i = 0; i < DockConstants::DOCK_SLOT_BOTTOM; i++) {
editor_dock_manager->register_dock_slot((DockConstants::DockSlot)i, dock_slot[i], DockConstants::DOCK_LAYOUT_VERTICAL);
for (int i = 0; i < EditorDock::DOCK_SLOT_BOTTOM; i++) {
editor_dock_manager->register_dock_slot((EditorDock::DockSlot)i, dock_slot[i], EditorDock::DOCK_LAYOUT_VERTICAL);
}
editor_layout_save_delay_timer = memnew(Timer);
@ -8988,7 +8988,7 @@ EditorNode::EditorNode() {
// Bottom panels.
bottom_panel = memnew(EditorBottomPanel);
editor_dock_manager->register_dock_slot(DockConstants::DOCK_SLOT_BOTTOM, bottom_panel, DockConstants::DOCK_LAYOUT_HORIZONTAL);
editor_dock_manager->register_dock_slot(EditorDock::DOCK_SLOT_BOTTOM, bottom_panel, EditorDock::DOCK_LAYOUT_HORIZONTAL);
bottom_panel->set_theme_type_variation("BottomPanel");
center_split->add_child(bottom_panel);
center_split->set_dragger_visibility(SplitContainer::DRAGGER_HIDDEN);

View file

@ -725,6 +725,7 @@ void EditorPlugin::_bind_methods() {
BIND_ENUM_CONSTANT(CONTAINER_PROJECT_SETTING_TAB_LEFT);
BIND_ENUM_CONSTANT(CONTAINER_PROJECT_SETTING_TAB_RIGHT);
#ifndef DISABLE_DEPRECATED
BIND_ENUM_CONSTANT(DOCK_SLOT_NONE);
BIND_ENUM_CONSTANT(DOCK_SLOT_LEFT_UL);
BIND_ENUM_CONSTANT(DOCK_SLOT_LEFT_BL);
@ -736,6 +737,7 @@ void EditorPlugin::_bind_methods() {
BIND_ENUM_CONSTANT(DOCK_SLOT_RIGHT_BR);
BIND_ENUM_CONSTANT(DOCK_SLOT_BOTTOM);
BIND_ENUM_CONSTANT(DOCK_SLOT_MAX);
#endif
BIND_ENUM_CONSTANT(AFTER_GUI_INPUT_PASS);
BIND_ENUM_CONSTANT(AFTER_GUI_INPUT_STOP);

View file

@ -31,7 +31,6 @@
#pragma once
#include "core/io/config_file.h"
#include "editor/docks/dock_constants.h"
#include "editor/inspector/editor_context_menu_plugin.h"
#include "scene/3d/camera_3d.h"
#include "scene/gui/control.h"
@ -88,19 +87,21 @@ public:
CONTAINER_PROJECT_SETTING_TAB_RIGHT,
};
#ifndef DISABLE_DEPRECATED
enum DockSlot {
DOCK_SLOT_NONE = DockConstants::DOCK_SLOT_NONE,
DOCK_SLOT_LEFT_UL = DockConstants::DOCK_SLOT_LEFT_UL,
DOCK_SLOT_LEFT_BL = DockConstants::DOCK_SLOT_LEFT_BL,
DOCK_SLOT_LEFT_UR = DockConstants::DOCK_SLOT_LEFT_UR,
DOCK_SLOT_LEFT_BR = DockConstants::DOCK_SLOT_LEFT_BR,
DOCK_SLOT_RIGHT_UL = DockConstants::DOCK_SLOT_RIGHT_UL,
DOCK_SLOT_RIGHT_BL = DockConstants::DOCK_SLOT_RIGHT_BL,
DOCK_SLOT_RIGHT_UR = DockConstants::DOCK_SLOT_RIGHT_UR,
DOCK_SLOT_RIGHT_BR = DockConstants::DOCK_SLOT_RIGHT_BR,
DOCK_SLOT_BOTTOM = DockConstants::DOCK_SLOT_BOTTOM,
DOCK_SLOT_MAX = DockConstants::DOCK_SLOT_MAX
DOCK_SLOT_NONE = -1,
DOCK_SLOT_LEFT_UL,
DOCK_SLOT_LEFT_BL,
DOCK_SLOT_LEFT_UR,
DOCK_SLOT_LEFT_BR,
DOCK_SLOT_RIGHT_UL,
DOCK_SLOT_RIGHT_BL,
DOCK_SLOT_RIGHT_UR,
DOCK_SLOT_RIGHT_BR,
DOCK_SLOT_BOTTOM,
DOCK_SLOT_MAX
};
#endif
enum AfterGUIInput {
AFTER_GUI_INPUT_PASS,
@ -268,8 +269,10 @@ public:
void disable_plugin();
};
VARIANT_ENUM_CAST(EditorPlugin::CustomControlContainer);
#ifndef DISABLE_DEPRECATED
VARIANT_ENUM_CAST(EditorPlugin::DockSlot);
#endif
VARIANT_ENUM_CAST(EditorPlugin::CustomControlContainer);
VARIANT_ENUM_CAST(EditorPlugin::AfterGUIInput);
typedef EditorPlugin *(*EditorPluginCreateFunc)();