Description
Describe the project you are working on
Godot :)
Describe the problem or limitation you are having in your project
See: #4565 (This proposal differs in that it has a roadmap and I'm already working through it)
Related: #1508, #7984, #8214, #10992, #11584, #12402
Currently, Godot has two systems for managing docks. It has the EditorDockManager
, and the EditorBottomPanel
. These two pieces of code are largely independent, however they convey similar ideas. There are many suggestions (see above) to unify the docking system, and this is a step towards that, specifically focusing on the bottom panel. Unifying the bottom panel with the dock system will allow for a large amount of customizability.
For example, below is an example of how you might set up a TileMap workflow in the editor. Note how you are able to make anything on the bottom panel floating or move it to the side. Previously, this would have been an annoying rework to accomplish (see godotengine/godot#62378), but with this proposal it is already build into the functionality of DockManager.
This proposal lays out a roadmap of my personal PRs and any other related additions that should/are being done in order to achieve this goal.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
Below is a roadmap describing how I see this process going; it will be continuously updated when new information happens.
Key | Meaning |
---|---|
💯 | Necessary |
👍 | Nice to Have |
⏭ | Possible Follow-Up |
Rework EditorBottomPanel
to inherit from TabContainer
(godotengine/godot#106164)
This is the core change that makes this proposal work. It allows the bottom panel to be placed in the dock manager's TabContainer *dock_slot[DOCK_SLOT_MAX];
array. Below are sub-prs that are related to this goal:
- 💯 Fix TabBar Hidden Tabs Handling godot#106257 (Merged 🎉 )
- 💯 Add support for custom font colors in the TabBar godot#106263 (for compatibility with Output panel)
- 💯 Fix TabContainer not respecting
tabbar_background
's margins godot#106516 (for vertical margins on the BottomPanel) - 💯 Fix TabContainer Editor theming and remove Debugger style hacks godot#107395 (for removing a hack in the debugger dock)
- 👍 Add switch on hover to TabBar godot#103478 (I don't know what's going on with this)
- 👍 Allow TabContainers to position some child nodes in the tabs bar #2250 (For positioning buttons on the bottom bar)
Register DOCK_SLOT_BOTTOM
with EditorDockManager
(godotengine/godot#106426)
This will register the bottom slot with the dock manager, replace the dedicated Move to Bottom
button in the popup, and allow certain docks to move to the bottom panel. Moving the native bottom panel docks to the sides is temporarily disabled as this had most of the edge cases and crashes. This also calls the preexisting _set_dock_horizontal
method (introduced in godotengine/godot#86765) to allow panels to optionally change to a horizontal layout.
- 💯 Rework dock management - introduce a Dock class #12435 (Rework dock customization and creation)
- 💯 Add icons for existing docks #12460 (Decide on Icons to use for all the Bottom Panels)
- 👍 Improve editor dock dragging usability #12489 (clarity about whether a dock is allowed there and possibly allow dropping over the entire area)
- 👍 Combine the bottom panel and dock config systems
- 👍 Expose more methods in
EditorDock
to customize the look of the tab - 👍 Allow Docks to appear in groups in
Editor->Editor Docks
popup - 👍 Allow
tab_rmb_clicked
to always work godot#107440 (Simplify handling of the popup) - ⏭ Change the return type of
EditorBottomPanel::add_item()
to void. The button no longer does anything and actively adds complexity to maintain. - ⏭ Allow docks on the bottom panel to be dragged to the side docks (Needs to notify panels that they should (not) be horizontal)
Add Bottom Panels to the Dock System (Coming soon)
This will be a series of PRs adding similar panels to the dock system (After the above reworks, this will be simple as changing a method). Within these PRs there can be discussion for hiding existing UI elements that perform the same functionality as the Dock Popup (see FileSystem's bottom panel mode or Shader Editor's floating button)
- 💯 Use notification Ready instead of EnterTree when connecting Signals godot#106377 (Without this, moving certain docks would show errors)
- 💯 Allow wide editors like Polygons or GridMap shrink horizontally (Minimize some editor panels to prevent GUI overflow godot#102301 might help)
If this enhancement will not be used often, can it be worked around with a few lines of script?
This is a major refactor of the Bottom Panel
Is there a reason why this should be core and not an add-on in the asset library?
This is about improving the usability of Godot out of the box; the docking system is core and there is clear interest.