Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't show inactive buttons in editor top bar #8570

Closed
passivestar opened this issue Dec 2, 2023 · 16 comments
Closed

Don't show inactive buttons in editor top bar #8570

passivestar opened this issue Dec 2, 2023 · 16 comments

Comments

@passivestar
Copy link

Describe the project you are working on

Anything in Godot editor

Describe the problem or limitation you are having in your project

The top panel with buttons to run the project looks busy:

now

Describe the feature / enhancement and how it helps to overcome the problem or limitation

It can easily be decluttered if we don't show inactive buttons

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

This is when the project is not running:

notrunning

This is when the project is running:

running

Pause and stop buttons can't do anything if the project is not running. Running current/specific scene while the project is already running is technically possible, but I'm not sure if anybody ever pressed those buttons without stopping first. The remote debug button is only active if remote debug is configured, it's kind of an advanced feature and you probably don't need to see an icon for that unless it's enabled in your project

This is a low-hanging fruit to declutter the UI because that's how people usually expect controls like these to work anyway, so there's no need to show them in their inactive state:

Screenshot 2023-12-02 at 18 16 27 Screenshot 2023-12-02 at 18 18 41

Less buttons will make the editor less overwhelming to newcomers and easier on the eyes for existing users

If this enhancement will not be used often, can it be worked around with a few lines of script?

N/A

Is there a reason why this should be core and not an add-on in the asset library?

N/A

@TheDuriel
Copy link

Please do show inactive buttons, because I don't want buttons to move around when I do not expect them to and thus leave me pressing the wrong one. Especially in this example where some of them can kill a running game, or start a build process, or other violative operations.

@passivestar
Copy link
Author

because I don't want buttons to move around

can you elaborate, what button do you want to press twice but won't be able to in this specific case?

@TheDuriel
Copy link

I don't want to be pressing buttons twice. However, accidents happen. And this increases accidents.

A common "operation" that I do IS to: Hit F5 to run the game, realize I missed something, and immediately click stop. Now with this proposal the stop button may jump around. Maybe I'll hit it, maybe not. My memory of where it is has become useless, and I will need to carefully check each buttons position every time.


There are other places in the editor where hiding inactive operations can be of benefit. This in my opinion, is not one of them.

@MBCX
Copy link

MBCX commented Dec 2, 2023

I think this could work if this is implemented in the way YouTube does it (for example), where the stop and play video buttons are in the same location, but they just animate/morph them accordingly.

In this case, if the play and stop game buttons just switch places (instantly) and they're in the same location, then it could work. However, this shouldn't be a default. A tick like "Hide inactive buttons" would have to be implemented because many are used to the current workflow.

@ryevdokimov
Copy link

ryevdokimov commented Dec 2, 2023

I personally would like to see all these UI elements have their visibility toggleable in the settings and tool scripting. I know this is the case for some things like the 'Script' and '3D' buttons, but why stop there. This will allow people to do whatever they want, which is especially useful, when extending the editor itself. I am currently working on a project, where I never run the application outside the editor. This might be better as a different proposal though.

@dragon1freak
Copy link

I can agree to hiding the pause/stop buttons when the project is playing, but hiding UI from the user by default is a slippery slope. Imo by default you want to disable and tooltip content thats currently inactive so the user knows its there and knows why its disabled, and then we can opt into hiding inactive content in the editor settings somewhere if we really want to. You want to look at this as someone whos completely new to your application, sure you know what you need to do to get those inactive buttons to show and use them, but does a new person even know that content is there?

Tl;dr: Not a bad idea, but make it opt in, not the default

@AThousandShips
Copy link
Member

AThousandShips commented Dec 2, 2023

In my opinion hiding UI elements on dynamic changes like "running/not running" instead of disabling them is not good UI design, it breaks muscle memory and workflow by moving elements around constantly

Also, the problem if the running game crashes as you are about to stop the running game, in that case you will start it again instead, this would absolutely be possible in a case where the game locks up, and you go to stop it, but it crashes as it is locked up when what ever was locking it up finally runs out of memory etc.

@ztc0611
Copy link

ztc0611 commented Dec 2, 2023

I like this, but clearly from the responses it should be optional if done. I think it should be on by default, though. To me this makes more sense than how it's currently done and leaving it as-is is only good for not breaking existing dev muscle memory.

Also, the problem if the running game crashes as you are about to stop the running game, in that case you will start it again instead, this would absolutely be possible in a case where the game locks up, and you go to stop it, but it crashes as it is locked up when what ever was locking it up finally runs out of memory etc.

This problem seems easily fixed by a brief pause after the project exits where the buttons are locked.

@AThousandShips
Copy link
Member

AThousandShips commented Dec 2, 2023

only good for not breaking existing dev muscle memory.

That's not the point, moving the buttons around is what harms muscle memory, not just the people used to it, the fact that the button moves based on what's going on does that

This problem seems easily fixed by a brief pause after the project exits where the buttons are locked.

This is even worse, now you run the risk of the "Netflix Skip" frustration (i.e. where Netflix pops up the "skip intro" button below where you pause, just a short moment after starting the video), now you end up clicking wrong because you miss the time window instead

@LauraWebdev
Copy link

While I generally agree that button changes are bad for muscle memory, running the game is something I'd consider a "major state change" that would take a second or two to execute anyways.

@AThousandShips
Copy link
Member

Major state change here would be a change to the editor or the settings, running the game isn't a major change, nothing in the editor changes

@passivestar
Copy link
Author

Ok so will disabling buttons in editor settings be a better proposal to declutter then?

e.g I never press any of these:
Untitled

@ztc0611
Copy link

ztc0611 commented Dec 2, 2023

Is it controversial to say at the very least the remote debug button should be hidden if you don't even have Deploy with Remote Debug enabled? I can't imagine it's very commonly used besides people who deploy to Android. Sure that would alter someone's muscle memory in the short term if they change from having it off to on, but I just think countering any visual streamlining with "it could affect muscle memory" is its own kind of slippery slope.

@TheDuriel
Copy link

The remote debug button serves as a method of enabling the functionality. It has a purpose.

If you never want to use it, Editor Feature Profiles would be the way to remove it.

@ztc0611
Copy link

ztc0611 commented Dec 2, 2023

The remote debug button serves as a method of enabling the functionality. It has a purpose.

I'm not sure if this is something with macOS or something else, but clicking the button if it is not configured has no effect for me. Deploy with Remote Debug is a checkbox item in the Editor menu bar.

image image

@passivestar
Copy link
Author

Closing this in favor of implementing this as an editor addon, see the discussion here. The relevant proposals to make the addon feasible are #1018 and #831

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants