From 5cd6a3293010662a00d65a08941a26de2a73c9d6 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Sat, 1 Jan 2011 14:02:53 -0600 Subject: [PATCH] [Screen] add HandleBackButton (for people who know what they're doing ;) [people making multi-state menus using the MK2ULTRA method]) --- Docs/Changelog_sm-ssc.txt | 7 ++++--- Themes/_fallback/metrics.ini | 1 + src/Screen.cpp | 6 +++++- src/Screen.h | 1 + 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index b10ffca28f..ba2fc04258 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -10,12 +10,13 @@ supported but exist anyways.) _____________________________________________________________________________ ================================================================================ -sm-ssc v1.2 | 201012xx +sm-ssc v1.2 | 201101xx -------------------------------------------------------------------------------- -20101231 +20110101 -------- -* [ScreenGameplay] Fixed "Gameplay ### combo" announcer messages. [neothe0ne] +* [Screen] Added HandleBackButton metric; useful for custom menus that need to + use the Back button for more user-friendly canceling. [freem] 20101230 -------- diff --git a/Themes/_fallback/metrics.ini b/Themes/_fallback/metrics.ini index 9f5d0dfbed..01dfe9c4c6 100644 --- a/Themes/_fallback/metrics.ini +++ b/Themes/_fallback/metrics.ini @@ -1198,6 +1198,7 @@ BlinkPlayersBest=true ScreenInitCommand= ScreenOnCommand= AllowOperatorMenuButton=true +HandleBackButton=true RepeatRate=-1 RepeatDelay=-1 PrepareScreens= diff --git a/src/Screen.cpp b/src/Screen.cpp index c51024a7b0..2993e684d0 100644 --- a/src/Screen.cpp +++ b/src/Screen.cpp @@ -42,6 +42,7 @@ bool Screen::SortMessagesByDelayRemaining( const Screen::QueuedScreenMessage &m1 void Screen::Init() { ALLOW_OPERATOR_MENU_BUTTON.Load( m_sName, "AllowOperatorMenuButton" ); + HANDLE_BACK_BUTTON.Load( m_sName, "HandleBackButton" ); REPEAT_RATE.Load( m_sName, "RepeatRate" ); REPEAT_DELAY.Load( m_sName, "RepeatDelay" ); LIGHTS_MODE.Load( m_sName, "LightsMode" ); @@ -204,7 +205,10 @@ void Screen::Input( const InputEventPlus &input ) case GAME_BUTTON_BACK: // Don't make the user hold the back button if they're pressing escape and escape is the back button. if( !PREFSMAN->m_bDelayedBack || input.type==IET_REPEAT || (input.DeviceI.device == DEVICE_KEYBOARD && input.DeviceI.button == KEY_ESC) ) - this->MenuBack( input ); + { + if( HANDLE_BACK_BUTTON ) + this->MenuBack( input ); + } return; case GAME_BUTTON_START: this->MenuStart ( input ); return; case GAME_BUTTON_SELECT:this->MenuSelect( input ); return; diff --git a/src/Screen.h b/src/Screen.h index dda83339a5..837d4114c5 100644 --- a/src/Screen.h +++ b/src/Screen.h @@ -80,6 +80,7 @@ protected: InputQueueCodeSet m_Codes; ThemeMetric ALLOW_OPERATOR_MENU_BUTTON; + ThemeMetric HANDLE_BACK_BUTTON; ThemeMetric REPEAT_RATE; ThemeMetric REPEAT_DELAY; ThemeMetric LIGHTS_MODE;