godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.8k stars 21.13k forks source link

Too many plugins on the bottom panel make it impossible to resize side panels #95681

Open TranquilMarmot opened 2 months ago

TranquilMarmot commented 2 months ago

Tested versions

Godot v4.3.stable.mono

System information

Godot v4.3.stable.mono - macOS 14.5.0 - Vulkan (Forward+) - integrated Apple M1 - Apple M1 (8 Threads)

Issue description

https://github.com/user-attachments/assets/4b64ed61-6bb4-4522-bef9-61d6edad51ac

Screenshot 2024-08-16 at 8 51 49 PM

With enough plugins, the list on the bottom panel gets unwieldy and makes it impossible to resize the side bars. This makes working on a smaller screen nearly impossible. I'm on a 1440x900 Macbook with the default display scale of 200%.

It would be nice if the bottom panel tabs got arrows like all the other tabs, for example the right side bar when it's smaller: https://github.com/user-attachments/assets/87c353b0-ea61-4965-a912-f44b0af5404d

Steps to reproduce

Install a few addons that add to the bottom panel

Some examples:

Additionally, using the dotnet build of Godot adds an "MSBuild" tab. You can also move the "FileSystem" tab to the bottom which contributes to the problem.

Minimal reproduction project (MRP)

See comment below (thank you @tetrapod00 !!!)

tetrapod00 commented 2 months ago

MRP: mrp-too-many-plugins.zip

If you have enough long named plugins, the inspector disappears.

Godot_v4 3-stable_win64_VAbh50JBhp

You can even hide the workspace buttons:

Godot_v4 3-stable_win64_Tao7wsGlA3

kitbdev commented 2 months ago

related:

tetrapod00 commented 2 months ago

Using HFlowContainers would still break things in the degenerate cases in my MRP. It would also have some undesirable effects in cases where you have enough short named bottom panel buttons that they start taking up vertical space instead. Possibly limiting the names of bottom panel buttons could be done. Likely not a hard limit, but instead display them as "A Very Long Bot...".

WhalesState commented 1 month ago

We can use a TabBar which i don't think will be ideal for fixing this.

Or a ScrollContainer and hiding it's horizontal scroll bar while also allowing focusing the buttons to enable ScrollContainer follow focus.

Or an OptionButton like how blender deals with docks.

Or an HFlowContainer which also may not be ideal since it will keep increasing it's vertical size when we resize down the window width.

Or we make all the buttons to use fill expand and we allow trimming their text, and we set the tooltip to the button's text, and we give each one a minimum width of 32 pixels.

Or we use Icons for bottom tabs and we show the text when we hover the icon. This should be applied by providing a default icon for the plugins that doesn't provide an icon (for compatibility).

Like this : plugin until they update their plugin. example add_control_to_bottom_panel(control: Node, text: String, icon: Texture2D = DEFAULT_PLUGIN_ICON)

Or we turn each bottom panel into a dock! This will allow more freedom like moving them anywhere and host any other dock not just the FileSystem and we also will be able to make them floating.

Or we create a new Container from scratch for the BottomPanelButtons.

JekSun97 commented 1 month ago

It seems to me that an implementation using TabBar would solve this problem

WhalesState commented 1 month ago

They may look like this, since we will need to reuse the Button styles with a limitation that the selected tab can't be hovered.

Also we will be unable to change a specific tab's font color like the debugger.

image

JekSun97 commented 1 month ago

I'll attach my MRP as it demonstrates a real case where there are indeed a lot of buttons/editors at the bottom of the editor mrp.zip

WhalesState commented 1 month ago

What about making all the buttons horizontal size flags to fill + expand and we set text_overrun_behavior to Ellipsis.

Also we can assign a minimum width of 32 pixels to each button.

https://github.com/user-attachments/assets/4b299f4d-fa18-4a5c-b9b6-4d1262b0a5cb