]> git.saurik.com Git - wxWidgets.git/commit
Avoid dropping events in wxDocParentFrameAnyBase in some circumstances.
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 2 Oct 2013 23:32:06 +0000 (23:32 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 2 Oct 2013 23:32:06 +0000 (23:32 +0000)
commite118367990e341b7ba8e5f02295d7aa8def23d5b
tree993694c5f5ba4e5f37cd6dd24bf64debcd8148e9
parent736692f3a4a35b24b80f94784183e0d46fba22d9
Avoid dropping events in wxDocParentFrameAnyBase in some circumstances.

The code trying to avoid forwarding duplicate events to wxDocManager was over
eager and in some situations filtered out the events which hadn't been sent to
it yet and were, in fact, not handled at all. This could be seen, for example,
by running the docview sample with "--sdi" command line option, creating one
child frame and then trying to create another one from the parent frame menu:
this failed because the existence of a valid child was considered to be enough
for the event to have been already processed in it which was false in this case.

Unfortunately there is no obvious fix to this problem, notably because of the
very roundabout way the toolbar events are processed in MDI windows: the
toolbar itself is a child of the parent frame but the events from it are still
sent to the currently active child frame by wxMDIParentFrameBase. So we can't
rely on any kind of parent-of-originating-window checks.

Instead, remember the last event handled in the child and avoid processing the
same event in wxDocManager again. This should at least avoid the false
positives (like the one fixed by this commit), although it could still result
in false negatives (i.e. some duplicated events) if an event handler generated
other events while skipping the original one. This is a lesser evil though and
should be relatively rare in practice, so live with this ugliness until
someone comes with another idea of fixing the bug described above.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74919 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
include/wx/docview.h
src/common/docview.cpp