Fix for event propagation in "single document" doc/view mode.
Ensure that the events still get to wxDocManager even when we are using the single document mode in which a view can be directly associated with the parent frame. Closes #14314. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73943 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -2075,15 +2075,24 @@ bool wxDocParentFrameAnyBase::TryProcessEvent(wxEvent& event)
|
|||||||
// already forwarded the event to wxDocManager, check for this:
|
// already forwarded the event to wxDocManager, check for this:
|
||||||
if ( wxView* const view = m_docManager->GetAnyUsableView() )
|
if ( wxView* const view = m_docManager->GetAnyUsableView() )
|
||||||
{
|
{
|
||||||
// Notice that we intentionally don't use wxGetTopLevelParent() here
|
wxWindow* win = view->GetFrame();
|
||||||
// because we want to check both for the case of a child "frame" (e.g.
|
if ( win != m_frame )
|
||||||
// MDI child frame or notebook page) inside this TLW and a separate
|
|
||||||
// child TLW frame (as used in the SDI mode) here.
|
|
||||||
for ( wxWindow* win = view->GetFrame(); win; win = win->GetParent() )
|
|
||||||
{
|
{
|
||||||
if ( win == m_frame )
|
// Notice that we intentionally don't use wxGetTopLevelParent()
|
||||||
return false;
|
// 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
|
// But forward the event to wxDocManager ourselves if there are no views at
|
||||||
|
Reference in New Issue
Block a user