Skip to content

Fully integrate the bottom panel with docks #12430

Open
@lodetrick

Description

@lodetrick

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.
Image

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:

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.

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)

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions