diff --git a/include/wx/prntbase.h b/include/wx/prntbase.h index c6bdc8c00f..ac78189a42 100644 --- a/include/wx/prntbase.h +++ b/include/wx/prntbase.h @@ -398,9 +398,26 @@ public: const wxString& name = wxFrameNameStr); virtual ~wxPreviewFrame(); + // Either Initialize() or InitializeWithModality() must be called before + // showing the preview frame, the former being just a particular case of + // the latter initializing the frame for being showing app-modally. + + // Notice that we must keep Initialize() with its existing signature to + // avoid breaking the old code that overrides it and we can't reuse the + // same name for the other functions to avoid virtual function hiding + // problem and the associated warnings given by some compilers (e.g. from + // g++ with -Woverloaded-virtual). + virtual void Initialize() + { + InitializeWithModality(wxPreviewFrame_AppModal); + } + + // Also note that this method is not virtual as it doesn't need to be + // overridden: it's never called by wxWidgets (of course, the same is true + // for Initialize() but, again, it must remain virtual for compatibility). + void InitializeWithModality(wxPreviewFrameModalityKind kind); + void OnCloseWindow(wxCloseEvent& event); - virtual void Initialize(wxPreviewFrameModalityKind kind - = wxPreviewFrame_AppModal); virtual void CreateCanvas(); virtual void CreateControlBar(); diff --git a/interface/wx/print.h b/interface/wx/print.h index 8eb1e3764b..4713bf32eb 100644 --- a/interface/wx/print.h +++ b/interface/wx/print.h @@ -195,21 +195,44 @@ public: virtual void CreateControlBar(); /** - Creates the preview canvas and control bar. + Initializes the frame elements and prepares for showing it. - By default also disables the other existing top level windows to - prepare for showing the preview frame modally. Since wxWidgets 2.9.2 - this can be changed by specifying either wxPreviewFrame_WindowModal -- - to disable just the parent window -- or wxPreviewFrame_NonModal -- to - not disable any windows at all -- as @a kind parameter. + Calling this method is equivalent to calling InitializeWithModality() + with wxPreviewFrame_AppModal argument, please see its documentation for + more details. - This function must be called by the application prior to showing the frame. + Please notice that this function is virtual mostly for backwards + compatibility only, there is no real need to override it as it's never + called by wxWidgets itself. + */ + virtual void Initialize(); + + /** + Initializes the frame elements and prepares for showing it with the + given modality kind. + + This method creates the frame elements by calling CreateCanvas() and + CreateControlBar() methods (which may be overridden to customize them) + and prepares to show the frame according to the value of @a kind + parameter: + - If it is wxPreviewFrame_AppModal, all the other application + windows will be disabled when this frame is shown. This is the same + behaviour as that of simple Initialize(). + - If it is wxPreviewFrame_WindowModal, only the parent window of + the preview frame will be disabled when it is shown. + - And if it is wxPreviewFrame_NonModal, no windows at all will be + disabled while the preview is shown. + + Notice that this function (or Initialize()) must be called by the + application prior to showing the frame but you still must call @c + Show(true) to actually show it afterwards. @param kind - The modality kind of preview frame. @since 2.9.2 + The modality kind of preview frame. + + @since 2.9.2 */ - virtual void Initialize(wxPreviewFrameModalityKind kind - = wxPreviewFrame_AppModal); + virtual void InitializeWithModality(wxPreviewFrameModalityKind kind); /** Enables any disabled frames in the application, and deletes the print preview diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp index afc15eec5c..4aebfb1b51 100644 --- a/src/common/prntbase.cpp +++ b/src/common/prntbase.cpp @@ -1667,7 +1667,7 @@ void wxPreviewFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) Destroy(); } -void wxPreviewFrame::Initialize(wxPreviewFrameModalityKind kind) +void wxPreviewFrame::InitializeWithModality(wxPreviewFrameModalityKind kind) { #if wxUSE_STATUSBAR CreateStatusBar();