+bool wxDocParentFrameAnyBase::TryProcessEvent(wxEvent& event)
+{
+ if ( !m_docManager )
+ return false;
+
+ // If we have an active view, its associated child frame may have
+ // already forwarded the event to wxDocManager, check for this:
+ if ( wxView* const view = m_docManager->GetAnyUsableView() )
+ {
+ wxWindow* win = view->GetFrame();
+ if ( win && win != m_frame )
+ {
+ // Notice that we intentionally don't use wxGetTopLevelParent()
+ // here because we want to check both for the case of a child
+ // "frame" (e.g. MDI child frame or notebook page) inside this TLW
+ // and a separate child TLW frame (as used in the SDI mode) here.
+ for ( win = win->GetParent(); win; win = win->GetParent() )
+ {
+ if ( win == m_frame )
+ return false;
+ }
+ }
+ //else: This view is directly associated with the parent frame (which
+ // can happen in the so called "single" mode in which only one
+ // document can be opened and so is managed by the parent frame
+ // itself), there can be no child frame in play so we must forward
+ // the event to wxDocManager ourselves.
+ }
+
+ // But forward the event to wxDocManager ourselves if there are no views at
+ // all or if we are the frame's view ourselves.
+ return m_docManager->ProcessEventLocally(event);
+}
+
+// ----------------------------------------------------------------------------
+// Printing support
+// ----------------------------------------------------------------------------
+