]> git.saurik.com Git - wxWidgets.git/commitdiff
hook the docview-specific customization of event handling logic at TryValidator(...
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 22 Sep 2008 00:33:11 +0000 (00:33 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 22 Sep 2008 00:33:11 +0000 (00:33 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55786 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

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

index a94a48c73dda2ecb18d46ac7c52bfdc16cf2c73a..b544b46068ae7085388f9150f4cef874a04f17f5 100644 (file)
@@ -35,9 +35,6 @@ public:
         const wxString& title, const wxPoint& pos = wxDefaultPosition,
         const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxT("frame"));
 
-    // Extend event processing to search the document manager's event table
-    virtual bool ProcessEvent(wxEvent& event);
-
     wxDocManager *GetDocumentManager(void) const { return m_docManager; }
 
     void OnExit(wxCommandEvent& event);
@@ -46,6 +43,9 @@ public:
 
 protected:
     void Init();
+
+    virtual bool TryValidator(wxEvent& event);
+
     wxDocManager *m_docManager;
 
 private:
@@ -77,9 +77,6 @@ public:
                 long type = wxDEFAULT_FRAME_STYLE,
                 const wxString& name = wxFrameNameStr);
 
-    // Extend event processing to search the view's event table
-    virtual bool ProcessEvent(wxEvent& event);
-
     void OnActivate(wxActivateEvent& event);
     void OnCloseWindow(wxCloseEvent& event);
 
@@ -91,6 +88,9 @@ public:
 
 protected:
     void Init();
+
+    virtual bool TryValidator(wxEvent& event);
+
     wxDocument*       m_childDocument;
     wxView*           m_childView;
 
index 7799f53c230f73d68230fbe606a64172fa6b38d0..beac80fc73d025d14e9ceeb4f318c61d0655c8e3 100644 (file)
@@ -213,9 +213,6 @@ public:
     // Override to do cleanup/veto close
     virtual bool OnClose(bool deleteWindow);
 
-    // Extend event processing to search the document's event table
-    virtual bool ProcessEvent(wxEvent& event);
-
     // A view's window can call this to notify the view it is (in)active.
     // The function then notifies the document manager.
     virtual void Activate(bool activate);
@@ -228,6 +225,9 @@ public:
 #endif
 
 protected:
+    // hook the document into event handlers chain here
+    virtual bool TryValidator(wxEvent& event);
+
     wxDocument*       m_viewDocument;
     wxString          m_viewTypeName;
     wxWindow*         m_viewFrame;
@@ -349,9 +349,6 @@ public:
     void OnUpdateUndo(wxUpdateUIEvent& event);
     void OnUpdateRedo(wxUpdateUIEvent& event);
 
-    // Extend event processing to search the view's event table
-    virtual bool ProcessEvent(wxEvent& event);
-
     // called when file format detection didn't work, can be overridden to do
     // something in this case
     virtual void OnOpenFileFailure() { }
@@ -442,6 +439,9 @@ public:
 #endif // WXWIN_COMPATIBILITY_2_6
 
 protected:
+    // hook the currently active view into event handlers chain here
+    virtual bool TryValidator(wxEvent& event);
+
     int               m_defaultDocumentNameCounter;
     int               m_maxDocsOpen;
     wxList            m_docs;
@@ -481,9 +481,6 @@ public:
                     const wxString& name = wxT("frame"));
     virtual ~wxDocChildFrame(){}
 
-    // Extend event processing to search the view's event table
-    virtual bool ProcessEvent(wxEvent& event);
-
     void OnActivate(wxActivateEvent& event);
     void OnCloseWindow(wxCloseEvent& event);
 
@@ -494,6 +491,9 @@ public:
     bool Destroy() { m_childView = NULL; return wxFrame::Destroy(); }
 
 protected:
+    // hook the child view into event handlers chain here
+    virtual bool TryValidator(wxEvent& event);
+
     wxDocument*       m_childDocument;
     wxView*           m_childView;
 
@@ -529,9 +529,6 @@ public:
                 long style = wxDEFAULT_FRAME_STYLE,
                 const wxString& name = wxFrameNameStr);
 
-    // Extend event processing to search the document manager's event table
-    virtual bool ProcessEvent(wxEvent& event);
-
     wxDocManager *GetDocumentManager() const { return m_docManager; }
 
     void OnExit(wxCommandEvent& event);
@@ -539,6 +536,9 @@ public:
     void OnCloseWindow(wxCloseEvent& event);
 
 protected:
+    // hook the document manager into event handling chain here
+    virtual bool TryValidator(wxEvent& event);
+
     wxDocManager *m_docManager;
 
 private:
index 29f89756d093a347ee404d403146c625620e43d8..72930bbaaf3b29c5bb62a3894a11e4b4457a693b 100644 (file)
@@ -68,14 +68,9 @@ void wxDocMDIParentFrame::OnMRUFile(wxCommandEvent& event)
         (void)m_docManager->CreateDocument(f, wxDOC_SILENT);
 }
 
-// Extend event processing to search the view's event table
-bool wxDocMDIParentFrame::ProcessEvent(wxEvent& event)
+bool wxDocMDIParentFrame::TryValidator(wxEvent& event)
 {
-    // Try the document manager, then do default processing
-    if (!m_docManager || !m_docManager->ProcessEvent(event))
-        return wxEvtHandler::ProcessEvent(event);
-    else
-        return true;
+    return m_docManager && m_docManager->ProcessEventHere(event);
 }
 
 void wxDocMDIParentFrame::OnCloseWindow(wxCloseEvent& event)
@@ -138,31 +133,9 @@ wxDocMDIChildFrame::~wxDocMDIChildFrame(void)
     m_childView = (wxView *) NULL;
 }
 
-// Extend event processing to search the view's event table
-bool wxDocMDIChildFrame::ProcessEvent(wxEvent& event)
+bool wxDocMDIChildFrame::TryValidator(wxEvent& event)
 {
-    static wxEvent *ActiveEvent = NULL;
-
-    // Break recursion loops
-    if (ActiveEvent == &event)
-        return false;
-
-    ActiveEvent = &event;
-
-    bool ret;
-    if ( !m_childView || ! m_childView->ProcessEvent(event) )
-    {
-        // Only hand up to the parent if it's a menu command
-        if (!event.IsKindOf(CLASSINFO(wxCommandEvent)) || !GetParent() || !GetParent()->ProcessEvent(event))
-            ret = wxEvtHandler::ProcessEvent(event);
-        else
-            ret = true;
-    }
-    else
-        ret = true;
-
-    ActiveEvent = NULL;
-    return ret;
+    return m_childView && m_childView->ProcessEventHere(event);
 }
 
 void wxDocMDIChildFrame::OnActivate(wxActivateEvent& event)
index 5d53187c73137a7333ee367ed12ed3c5edcc6cbd..2fa45c7e2cffd466808775413612d5d117c7315e 100644 (file)
@@ -652,13 +652,10 @@ wxView::~wxView()
     m_viewDocument->RemoveView(this);
 }
 
-// Extend event processing to search the document's event table
-bool wxView::ProcessEvent(wxEvent& event)
+bool wxView::TryValidator(wxEvent& event)
 {
-    if ( !GetDocument() || !GetDocument()->ProcessEvent(event) )
-        return wxEvtHandler::ProcessEvent(event);
-
-    return true;
+    wxDocument * const doc = GetDocument();
+    return doc && doc->ProcessEventHere(event);
 }
 
 void wxView::OnActivateView(bool WXUNUSED(activate), wxView *WXUNUSED(activeView), wxView *WXUNUSED(deactiveView))
@@ -1145,14 +1142,10 @@ wxView *wxDocManager::GetCurrentView() const
     return NULL;
 }
 
-// Extend event processing to search the view's event table
-bool wxDocManager::ProcessEvent(wxEvent& event)
+bool wxDocManager::TryValidator(wxEvent& event)
 {
     wxView * const view = GetCurrentView();
-    if ( view && view->ProcessEvent(event) )
-        return true;
-
-    return wxEvtHandler::ProcessEvent(event);
+    return view && view->ProcessEventHere(event);
 }
 
 namespace
@@ -1782,22 +1775,15 @@ wxDocChildFrame::wxDocChildFrame(wxDocument *doc,
         view->SetFrame(this);
 }
 
-// Extend event processing to search the view's event table
-bool wxDocChildFrame::ProcessEvent(wxEvent& event)
+bool wxDocChildFrame::TryValidator(wxEvent& event)
 {
-    if (m_childView)
-        m_childView->Activate(true);
+    if ( !m_childView )
+        return false;
 
-    if ( !m_childView || ! m_childView->ProcessEvent(event) )
-    {
-        // Only hand up to the parent if it's a menu command
-        if (!event.IsKindOf(CLASSINFO(wxCommandEvent)) || !GetParent() || !GetParent()->ProcessEvent(event))
-            return wxEvtHandler::ProcessEvent(event);
-        else
-            return true;
-    }
-    else
-        return true;
+    // FIXME: why is this needed here?
+    m_childView->Activate(true);
+
+    return m_childView->ProcessEventHere(event);
 }
 
 void wxDocChildFrame::OnActivate(wxActivateEvent& event)
@@ -1912,13 +1898,9 @@ void wxDocParentFrame::OnMRUFile(wxCommandEvent& event)
 }
 
 // Extend event processing to search the view's event table
-bool wxDocParentFrame::ProcessEvent(wxEvent& event)
+bool wxDocParentFrame::TryValidator(wxEvent& event)
 {
-    // Try the document manager, then do default processing
-    if (!m_docManager || !m_docManager->ProcessEvent(event))
-        return wxEvtHandler::ProcessEvent(event);
-    else
-        return true;
+    return m_docManager && m_docManager->ProcessEventHere(event);
 }
 
 // Define the behaviour for the frame closing