]> git.saurik.com Git - wxWidgets.git/commitdiff
Add public wxDocManager::GetAnyUsableView().
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 4 May 2013 23:59:43 +0000 (23:59 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 4 May 2013 23:59:43 +0000 (23:59 +0000)
This method tries to find the current view harder than GetCurrentView() and
always returns a non-NULL view if there are any open documents at all.

This is used by wxDocManager internally to find the view to apply the user
commands to and will also be needed in the upcoming changes outside of
wxDocManager, so just make this method public, as it seems that it could be
useful in user code too, especially if we could use some better fallback than
the first opened document (e.g. the last document the user interacted with
would be better).

This also clarifies the confusion between GetCurrentView() and GetActiveView(),
see #13296.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/docview.h
interface/wx/docview.h
src/common/docview.cpp

index 660c7db3362d3b2662b7a566ee5b37a7ebeb26bb..1c789626c783051d9146f0b7743235621850db46 100644 (file)
@@ -472,6 +472,12 @@ public:
     virtual void ActivateView(wxView *view, bool activate = true);
     virtual wxView *GetCurrentView() const { return m_currentView; }
 
+    // This method tries to find an active view harder than GetCurrentView():
+    // if the latter is NULL, it also checks if we don't have just a single
+    // view and returns it then.
+    wxView *GetAnyUsableView() const;
+
+
 #ifndef __VISUALC6__
     wxDocVector GetDocumentsVector() const;
     wxDocTemplateVector GetTemplatesVector() const;
@@ -551,11 +557,6 @@ protected:
     // return the command processor for the current document, if any
     wxCommandProcessor *GetCurrentCommandProcessor() const;
 
-    // this method tries to find an active view harder than GetCurrentView():
-    // if the latter is NULL, it also checks if we don't have just a single
-    // view and returns it then
-    wxView *GetActiveView() const;
-
     int               m_defaultDocumentNameCounter;
     int               m_maxDocsOpen;
     wxList            m_docs;
index 224c2ad298620092bf1a0ed5853d3608351517ec..6c8c2884678a95d0e406c1efafe6ee8f4f008f1c 100644 (file)
@@ -557,6 +557,18 @@ public:
     */
     virtual wxDocTemplate* FindTemplateForPath(const wxString& path);
 
+    /**
+        Returns the view to apply a user command to.
+
+        This method tries to find the view that the user wants to interact
+        with. It returns the same view as GetCurrentDocument() if there is any
+        currently active view but falls back to the first view of the first
+        document if there is no active view.
+
+        @since 2.9.5
+     */
+    wxView* GetAnyUsableView() const;
+
     /**
         Returns the document associated with the currently active view (if
         any).
@@ -564,7 +576,11 @@ public:
     wxDocument* GetCurrentDocument() const;
 
     /**
-        Returns the currently active view
+        Returns the currently active view.
+
+        This method can return @NULL if no view is currently active.
+
+        @see GetAnyUsableView()
     */
     virtual wxView* GetCurrentView() const;
 
index 4b1d2a0affece98aa03e069ac1ea97b380460f98..468016ec2dee70aa06896f7a15a40c6672f4e7b2 100644 (file)
@@ -1185,7 +1185,7 @@ void wxDocManager::OnMRUFileNotExist(unsigned n, const wxString& filename)
 
 void wxDocManager::OnPrint(wxCommandEvent& WXUNUSED(event))
 {
-    wxView *view = GetActiveView();
+    wxView *view = GetAnyUsableView();
     if (!view)
         return;
 
@@ -1219,7 +1219,7 @@ wxPreviewFrame* wxDocManager::CreatePreviewFrame(wxPrintPreviewBase* preview,
 void wxDocManager::OnPreview(wxCommandEvent& WXUNUSED(event))
 {
     wxBusyCursor busy;
-    wxView *view = GetActiveView();
+    wxView *view = GetAnyUsableView();
     if (!view)
         return;
 
@@ -1348,7 +1348,7 @@ void wxDocManager::OnUpdateRedo(wxUpdateUIEvent& event)
     cmdproc->SetMenuStrings();
 }
 
-wxView *wxDocManager::GetActiveView() const
+wxView *wxDocManager::GetAnyUsableView() const
 {
     wxView *view = GetCurrentView();
 
@@ -1374,7 +1374,7 @@ wxView *wxDocManager::GetActiveView() const
 
 bool wxDocManager::TryBefore(wxEvent& event)
 {
-    wxView * const view = GetActiveView();
+    wxView * const view = GetAnyUsableView();
     return view && view->ProcessEventLocally(event);
 }
 
@@ -1570,7 +1570,7 @@ bool wxDocManager::FlushDoc(wxDocument *WXUNUSED(doc))
 
 wxDocument *wxDocManager::GetCurrentDocument() const
 {
-    wxView * const view = GetActiveView();
+    wxView * const view = GetAnyUsableView();
     return view ? view->GetDocument() : NULL;
 }