diff --git a/src/Screen.cpp b/src/Screen.cpp index c1c491ff9d..f8fa95d1da 100644 --- a/src/Screen.cpp +++ b/src/Screen.cpp @@ -304,7 +304,8 @@ void Screen::ClearMessageQueue( const ScreenMessage SM ) bool Screen::PassInputToLua(const InputEventPlus& input) { - if(m_InputCallbacks.empty()) + if(m_InputCallbacks.empty() || m_fLockInputSecs > 0.0f + || !AllowCallbackInput()) { return false; } diff --git a/src/Screen.h b/src/Screen.h index 7c5d56b02b..0bea3cd95b 100644 --- a/src/Screen.h +++ b/src/Screen.h @@ -128,6 +128,7 @@ public: bool PassInputToLua(const InputEventPlus& input); void AddInputCallbackFromStack(lua_State* L); void RemoveInputCallback(lua_State* L); + virtual bool AllowCallbackInput() { return true; } // let subclass override if they want virtual bool MenuUp(const InputEventPlus &) { return false; } diff --git a/src/ScreenWithMenuElements.h b/src/ScreenWithMenuElements.h index 2879e96d64..3b5497e49e 100644 --- a/src/ScreenWithMenuElements.h +++ b/src/ScreenWithMenuElements.h @@ -22,6 +22,7 @@ public: void StartTransitioningScreen( ScreenMessage smSendWhenDone ); virtual void Cancel( ScreenMessage smSendWhenDone ); bool IsTransitioning(); + virtual bool AllowCallbackInput() { return !IsTransitioning(); } void StopTimer(); void ResetTimer();