Skip to content

Fix footer buttons still being able to fire their action when temporarily hidden by overlay content#37231

Merged
peppy merged 2 commits intoppy:masterfrom
bdach:prevent-f3-when-mods-open
Apr 7, 2026
Merged

Fix footer buttons still being able to fire their action when temporarily hidden by overlay content#37231
peppy merged 2 commits intoppy:masterfrom
bdach:prevent-f3-when-mods-open

Conversation

@bdach
Copy link
Copy Markdown
Collaborator

@bdach bdach commented Apr 7, 2026

In human words: I read this forum thread today and was horrified to see the user there opening the F3 options menu in song select when the F1 mod overlay was pulled up, which is (a) not intended UX, (b) looks terrible, and (c) just wrecks the game behaviourally wholesale from start to end.

So with this change you don't get to open options via F3 while inside mod overlay at all.

The Action shadowing is pretty ugly but I don't have better ideas. Initially I tried to mess with Enabled (as I did once previously, see 36628e2), but it's much more complicated in this case because the enabled state needs to be restored when the buttons reappear, or it could change independently while the buttons are temporarily hidden, etc. So I'd rather just not deal with all that and invent a parallel scheme.

bdach added 2 commits April 7, 2026 13:50
…rily hidden by overlay content

In human words: I read [this forum
thread](https://osu.ppy.sh/community/forums/topics/2195138?n=1) today
and was horrified to see the user there opening the F3 options menu inm
song select when the F1 mod overlay was pulled up, which is (a) not
intended UX, (b) looks terrible, and (c) just wrecks the game
behaviourally wholesale from start to end.

So with this change you don't get to open options via F3 while inside
mod overlay at all.

The `Action` shadowing is pretty ugly but I don't have better ideas.
Initially I tried to mess with `Enabled` (as I did once previously, see
36628e2), but it's much more
complicated in this case because the enabled state needs to be restored
when the buttons reappear, or it could change independently while the
buttons are temporarily hidden, etc. So I'd rather just not deal with
all that and invent a parallel scheme.
@bdach bdach self-assigned this Apr 7, 2026
@bdach bdach added the type/behavioural An issue with actual UI or game behaviour. Has a real world impact causing something to not work. label Apr 7, 2026
@LiquidPL
Copy link
Copy Markdown
Contributor

LiquidPL commented Apr 7, 2026

I have a branch where I've been working on cleaning up the footer, and it happens to have this issue fixed through:

  • making a custom container for the footer buttons which doesn't try to relayout everything when a button is moved up/down, which then leads to
  • getting rid of the whole 'actually we're animating a container nested inside the button drawable' thing

All of it makes it so that once a button gets animated off the screen it just automatically stops being considered for inputs as it should1.

The branch in question is somewhat large since it refactors the footer logic away from ScreenFooter to OsuScreen like i mentioned on discord back in Feburary. I'm not sure if there's a point in backporting that small part concerning the buttons to the current ScreenFooter but I wanted to mention that I have something for this already.

Footnotes

  1. It doesn't fix it completely, since there's still a short amount of time while the button is animated away where a user could quickly mash [F3] into some number to activate something in the options menu, breaking the game anyway.

@peppy peppy self-requested a review April 7, 2026 15:35
Copy link
Copy Markdown
Member

@peppy peppy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A bit ugly bit will do

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

Labels

area:song-select size/M type/behavioural An issue with actual UI or game behaviour. Has a real world impact causing something to not work.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants