diff --git a/stepmania/src/arch/ArchHooks/ArchHooks.cpp b/stepmania/src/arch/ArchHooks/ArchHooks.cpp index f6e6b6f5d8..7ff6a178bc 100644 --- a/stepmania/src/arch/ArchHooks/ArchHooks.cpp +++ b/stepmania/src/arch/ArchHooks/ArchHooks.cpp @@ -26,10 +26,19 @@ void ArchHooks::IgnoreMessage( CString ID ) PREFSMAN->m_sIgnoredMessageWindows = join( ",", list ); PREFSMAN->SaveGlobalPrefsToDisk(); } +#include "RageLog.h" +void ArchHooks::MessageBoxError( CString sMessage ) +{ + MessageBoxErrorPrivate( sMessage ); +} void ArchHooks::MessageBoxOK( CString sMessage, CString ID ) { + if( ID != "" && MessageIsIgnored( ID ) ) + return; + // don't show MessageBox if windowed + if(LOG)LOG->Trace("wind %i", DISPLAY->IsWindowed()); if( !DISPLAY->IsWindowed() ) ArchHooks::MessageBoxOKPrivate( sMessage, ID ); else @@ -38,6 +47,9 @@ void ArchHooks::MessageBoxOK( CString sMessage, CString ID ) ArchHooks::MessageBoxResult ArchHooks::MessageBoxAbortRetryIgnore( CString sMessage, CString ID ) { + if( ID != "" && MessageIsIgnored( ID ) ) + return ArchHooks::MessageBoxAbortRetryIgnorePrivate( sMessage, ID ); + // don't show MessageBox if windowed if( DISPLAY && !DISPLAY->IsWindowed() ) return ArchHooks::MessageBoxAbortRetryIgnorePrivate( sMessage, ID ); @@ -47,6 +59,9 @@ ArchHooks::MessageBoxResult ArchHooks::MessageBoxAbortRetryIgnore( CString sMess ArchHooks::MessageBoxResult ArchHooks::MessageBoxRetryCancel( CString sMessage, CString ID ) { + if( ID != "" && MessageIsIgnored( ID ) ) + return ArchHooks::MessageBoxRetryCancelPrivate( sMessage, ID ); + // don't show MessageBox if windowed if( !DISPLAY->IsWindowed() ) return ArchHooks::MessageBoxRetryCancelPrivate( sMessage, ID ); diff --git a/stepmania/src/arch/ArchHooks/ArchHooks.h b/stepmania/src/arch/ArchHooks/ArchHooks.h index b3769103c4..2a0f2956a0 100644 --- a/stepmania/src/arch/ArchHooks/ArchHooks.h +++ b/stepmania/src/arch/ArchHooks/ArchHooks.h @@ -28,12 +28,12 @@ public: /* Message box stuff. Not supported on all archs. The ID can be used * to identify a class of messages, for "don't display this dialog"-type - * prompts. */ + * prompts. (Don't overload these, overload *Private below.) */ enum MessageBoxResult { abort, retry, ignore, cancel }; - virtual void MessageBoxError( CString error ) { printf("Error: %s\n", error.c_str()); } - virtual void MessageBoxOK( CString sMessage, CString ID = "" ); - virtual MessageBoxResult MessageBoxAbortRetryIgnore( CString sMessage, CString ID = "" ); - virtual MessageBoxResult MessageBoxRetryCancel( CString sMessage, CString ID = "" ); + void MessageBoxError( CString error ); + void MessageBoxOK( CString sMessage, CString ID = "" ); + MessageBoxResult MessageBoxAbortRetryIgnore( CString sMessage, CString ID = "" ); + MessageBoxResult MessageBoxRetryCancel( CString sMessage, CString ID = "" ); virtual ~ArchHooks() { } /* This is called once each time through the game loop */ @@ -43,6 +43,7 @@ public: virtual void RestartProgram() { } protected: + virtual void MessageBoxErrorPrivate( CString sMessage ) { printf("Error: %s\n", sMessage.c_str()); } virtual void MessageBoxOKPrivate( CString sMessage, CString ID ) {} virtual MessageBoxResult MessageBoxAbortRetryIgnorePrivate( CString sMessage, CString ID ) { return ignore; } virtual MessageBoxResult MessageBoxRetryCancelPrivate( CString sMessage, CString ID ) { return cancel; } diff --git a/stepmania/src/arch/ArchHooks/ArchHooks_Win32.cpp b/stepmania/src/arch/ArchHooks/ArchHooks_Win32.cpp index 3acf21bacd..7004f9a9ee 100644 --- a/stepmania/src/arch/ArchHooks/ArchHooks_Win32.cpp +++ b/stepmania/src/arch/ArchHooks/ArchHooks_Win32.cpp @@ -72,11 +72,9 @@ static BOOL CALLBACK OKWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lPara -void ArchHooks_Win32::MessageBoxOK( CString sMessage, CString ID ) +void ArchHooks_Win32::MessageBoxOKPrivate( CString sMessage, CString ID ) { g_AllowHush = ID != ""; - if( g_AllowHush && MessageIsIgnored( ID ) ) - return; g_sMessage = sMessage; AppInstance handle; DialogBox(handle.Get(), MAKEINTRESOURCE(IDD_OK), NULL, OKWndProc); @@ -147,7 +145,7 @@ static BOOL CALLBACK ErrorWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP return FALSE; } -void ArchHooks_Win32::MessageBoxError( CString error ) +void ArchHooks_Win32::MessageBoxErrorPrivate( CString error ) { g_sErrorString = error; // throw up a pretty error dialog @@ -156,7 +154,7 @@ void ArchHooks_Win32::MessageBoxError( CString error ) NULL, ErrorWndProc); } -ArchHooks::MessageBoxResult ArchHooks_Win32::MessageBoxAbortRetryIgnore( CString sMessage, CString ID ) +ArchHooks::MessageBoxResult ArchHooks_Win32::MessageBoxAbortRetryIgnorePrivate( CString sMessage, CString ID ) { switch( MessageBox(NULL, sMessage, PRODUCT_NAME, MB_ABORTRETRYIGNORE|MB_DEFBUTTON2 ) ) { @@ -167,7 +165,7 @@ ArchHooks::MessageBoxResult ArchHooks_Win32::MessageBoxAbortRetryIgnore( CString } } -ArchHooks::MessageBoxResult ArchHooks_Win32::MessageBoxRetryCancel( CString sMessage, CString ID ) +ArchHooks::MessageBoxResult ArchHooks_Win32::MessageBoxRetryCancelPrivate( CString sMessage, CString ID ) { switch( MessageBox(NULL, sMessage, PRODUCT_NAME, MB_RETRYCANCEL ) ) { diff --git a/stepmania/src/arch/ArchHooks/ArchHooks_Win32.h b/stepmania/src/arch/ArchHooks/ArchHooks_Win32.h index ce533325f0..19619bf7eb 100644 --- a/stepmania/src/arch/ArchHooks/ArchHooks_Win32.h +++ b/stepmania/src/arch/ArchHooks/ArchHooks_Win32.h @@ -7,10 +7,10 @@ class ArchHooks_Win32: public ArchHooks public: ArchHooks_Win32(); void DumpDebugInfo(); - void MessageBoxOK( CString sMessage, CString ID ); - void MessageBoxError( CString error ); - MessageBoxResult MessageBoxAbortRetryIgnore( CString sMessage, CString ID ); - MessageBoxResult MessageBoxRetryCancel( CString sMessage, CString ID ); + void MessageBoxOKPrivate( CString sMessage, CString ID ); + void MessageBoxErrorPrivate( CString error ); + MessageBoxResult MessageBoxAbortRetryIgnorePrivate( CString sMessage, CString ID ); + MessageBoxResult MessageBoxRetryCancelPrivate( CString sMessage, CString ID ); void RestartProgram(); };