ScreenType is being overloaded in incompatible ways:
- the editor sets "system_menu" to trick StepMania.cpp into not allowing the operator menu button, to prevent losing data; - the editor also sets "gameplay" in "playback" mode to influence ScreenSyncOverlay and ScreenDebugOverlay; this breaks the above, allowing scroll lock in play mode. A similar problem happens when we push screens: scroll lock works in the MiniMenus in the editor. It's semantically unintuitive to call the editor a "system_menu", anyway. Split out AllowOperatorMenuButton, and use it directly. Check all screens, and don't allow it if any screen on the stack disallows it.
This commit is contained in:
@@ -283,6 +283,17 @@ Screen *ScreenManager::GetTopScreen()
|
||||
return g_ScreenStack[g_ScreenStack.size()-1].m_pScreen;
|
||||
}
|
||||
|
||||
bool ScreenManager::AllowOperatorMenuButton() const
|
||||
{
|
||||
FOREACH( LoadedScreen, g_ScreenStack, s )
|
||||
{
|
||||
if( !s->m_pScreen->AllowOperatorMenuButton() )
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ScreenManager::IsStackedScreen( const Screen *pScreen ) const
|
||||
{
|
||||
/* True if the screen is in the screen stack, but not the first. */
|
||||
|
||||
Reference in New Issue
Block a user