diff --git a/include/wx/preferences.h b/include/wx/preferences.h index 935c7b1875..ab1e0a2c99 100644 --- a/include/wx/preferences.h +++ b/include/wx/preferences.h @@ -24,9 +24,13 @@ class wxPreferencesEditorImpl; #define wxHAS_PREF_EDITOR_ICONS // Changes should be applied immediately #define wxHAS_PREF_EDITOR_APPLY_IMMEDIATELY + // The dialog is shown non-modally. + #define wxHAS_PREF_EDITOR_MODELESS #elif defined(__WXGTK__) // Changes should be applied immediately #define wxHAS_PREF_EDITOR_APPLY_IMMEDIATELY + // The dialog is shown non-modally. + #define wxHAS_PREF_EDITOR_MODELESS #endif // ---------------------------------------------------------------------------- @@ -117,6 +121,16 @@ public: #endif } + // Whether the dialog is shown modally, i.e. Show() blocks, or not. + static bool ShownModally() + { +#ifdef wxHAS_PREF_EDITOR_MODELESS + return false; +#else + return true; +#endif + } + private: wxPreferencesEditorImpl* m_impl; diff --git a/include/wx/private/preferences.h b/include/wx/private/preferences.h index f68893a99d..7d0cb292fc 100644 --- a/include/wx/private/preferences.h +++ b/include/wx/private/preferences.h @@ -17,10 +17,6 @@ #define wxHAS_PREF_EDITOR_NATIVE #endif -#if defined(__WXOSX__) || defined(__WXGTK__) - #define wxHAS_PREF_EDITOR_MODELESS -#endif - // ---------------------------------------------------------------------------- // wxPreferencesEditorImpl: defines wxPreferencesEditor implementation. // ---------------------------------------------------------------------------- diff --git a/interface/wx/preferences.h b/interface/wx/preferences.h index 656ce907c1..161d78755c 100644 --- a/interface/wx/preferences.h +++ b/interface/wx/preferences.h @@ -98,6 +98,23 @@ public: in this case as well. */ static bool ShouldApplyChangesImmediately() + + /** + Returns whether the preferences dialog is shown modally. + + If this method returns false, as it currently does in wxGTK and wxOSX, + Show() simply makes the dialog visible and returns immediately. If it + returns true, as it does in wxMSW and under the other platforms, then + the dialog is shown modally, i.e. Show() blocks until the user + dismisses it. + + Notice that it isn't necessary to test the return value of this method + to use this class normally, its interface is designed to work in both + cases. However it can sometimes be necessary to call it if the program + needs to handle modal dialogs specially, e.g. perhaps to block some + periodic background update operation while a modal dialog is shown. + */ + static bool ShownModally(); };