Commit Graph

28 Commits

Author SHA1 Message Date
Vadim Zeitlin
5ac5e40e41 Prevent duplicate menu event processing in MDI windows.
Record the object propagating the given event upwards in the event object
itself and use it in wxMDIParentFrame to determine whether the event being
handled is already coming from wxMDIChildFrame and avoid sending it back for
processing it there again in this case.

This is ugly and makes wx event processing even more complex but this is the
only way I could find to ensure that

(a) Both the child and the parent frames get the events from the toolbar
    (even though the toolbar parent is the parent frame and hence normally
    the child wouldn't get notified about them at all and so the forwarding
    at wxMDIParentFrame level is required to make this work).

(b) The child gets the event only once, whether it comes from a toolbar (and
    hence indirectly via the parent frame) or from the child menu (and hence
    directly to the child, at least in wxMSW).

This commit fixes the event propagation unit test case, at least under MSW and
GTK.

See #14314.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74357 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-03 22:18:42 +00:00
Vadim Zeitlin
6f65a5e1aa Forward events to active child in wxMDIParentFrameBase, not only wxMSW.
Menu, toolbar and update UI events should be forwarded to the active child
under all platforms in MDI applications and not only MSW, so move TryBefore()
overload from wxMSW wxMDIParentFrame to wxMDIParentFrameBase.

This should make things more consistent in general and notably fixes the lack
of toolbar events in wxDocChildFrame since the changes of r73928.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74314 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-06-29 12:53:44 +00:00
Vadim Zeitlin
3285e9a347 Fix showing MDI child from wxDocManager::ActivateDocument().
This fix has 2 components: first, call Raise() instead of simple SetFocus()
from ActivateDocument() as this corresponds better to what we want to do here.
And second, override Raise() to call Activate() in wxMDIChildFrame to ensure
that it works as expected as raising an MDI child doesn't work otherwise in
most ports (with the exceptions for wxOSX which, on the contrary, needs a
small fix to preserve the existing working Raise() behaviour).

Closes #13946.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70790 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-03-04 00:29:03 +00:00
Stefan Neis
6dd0883d55 Do not put semicolons after the definition of an inline function.
Even though most compilers just ignore this, it's just wrong and if you
do get warnings about header files, they can become quite overwhelming.
Forward port of r70163.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70165 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-12-29 14:42:13 +00:00
Vadim Zeitlin
6e92c2991b Fix bug with TAB being able to switch focus between MDI frames.
The keyboard navigation code correctly checked that TAB was not propagated
above the TLW containing the window in which the key was pressed to avoid
switching focus between different TLWs by pressing TAB.

However wxMDIChildFrame is not a TLW and so it was possible to switch focus
between two different MDI child frames by pressing TAB. This was unexpected
and counterintuitive, especially because the frame receiving focus was not
even activated (which might be another bug).

Fix this by adding a new wxWindow::IsTopNavigationDomain() virtual method that
can be overridden to indicate that a window is a self-contained "keyboard
navigation domain" and that keyboard events shouldn't propagate outside of it
and override it in both wxTopLevelWindow and wxMDIChildFrame to ensure that it
behaves correctly.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68502 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-03 00:45:42 +00:00
Vadim Zeitlin
74c34d2277 don't do anything in SetWindowMenu() if we're setting the same menu as we already have
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58457 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-27 14:48:20 +00:00
Vadim Zeitlin
975dd469ba include wx/menu.h as we delete wxMenu pointer in this header (and creating a separate .cpp file just to move the code doing it there seems impractical)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56677 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-04 12:11:30 +00:00
Vadim Zeitlin
d2824cdb7f Review/simplify/cleanup MDI classes for all platforms and introduce base
classes for wxMDI{Parent,Child}Frame and wxMDIClientWindow.

Also use generic MDI implementation for wxMotif as it seems to be more
functional and definitely is more maintained (we probably should use the
generic version for wxGTK too).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56674 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-11-04 02:46:19 +00:00
Stefan Csomor
ef0e92205a fixing file paths after renaming
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54125 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-06-11 19:17:41 +00:00
Mart Raudsepp
1be7a35c5e Include gtk1 headers for non-gtk2. I don't really like this CPP logic, or more exactly __WXGTK__ without __WXGTK20__
being GTK1, oh well.
Might have missed some.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37066 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-01-23 03:27:34 +00:00
Julian Smart
99d800190a Added licence/copyright information
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33948 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-05-04 18:57:50 +00:00
Włodzimierz Skiba
2ecf902bc8 Use defs.h (and automatically setup.h and chkconf.h) before first wxUSE_* check (bug #1164141).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32852 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-03-16 16:18:31 +00:00
Vadim Zeitlin
efd17a1d4f split wxUSE_MDI from wxUSE_MDI_ARCHITECTURE (which is wxUSE_MDI + wxUSE_DOCVIEW)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27152 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-05-07 22:17:29 +00:00
David Elliott
9de2e75ad0 wxCocoa: Use the new native MDI implementation instead of generic
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24547 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2003-11-13 16:05:24 +00:00
Mattia Barbon
1ce0cc20cd Compilation fix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22603 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2003-08-05 17:52:35 +00:00
Vadim Zeitlin
1bf49fb99a don't include MDI headers if !wxUSE_MDI
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22585 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2003-08-04 16:44:05 +00:00
David Elliott
0201182bf5 Use generic implementation for wxCocoa
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19696 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2003-03-22 06:13:03 +00:00
Mattia Barbon
e9e4acc519 Remove #ifdef __WXSTUBS__ from headers.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18573 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2003-01-04 09:22:53 +00:00
David Webster
92ac4cdc8c Make OS/2 use the generic MDI.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@17195 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-15 17:18:59 +00:00
Julian Smart
b9f933ab5d Applied patch [ 597398 ] Generic MDI, wxNotebook based.
By Hans Van Leemputten (hansvl)

- This patch implements a generic notebook based mdi,
due to that wxMDIChildFrame could not derive from
wxFrame some things in the samples and in the docmdi
classes needed to be adjusted... basically this comes
down to not do (wxFrame *) but instead do
(wxMDIChildFrame *), or store a pointer to the frame in a
wxWindow* instead of a wxFrame variable...

- The main reason wxMDIChildFrame cannot derive from
wxFrame is that it would take to much platform specific
functions to be overwritten (= lot of ifdef's). This then
couldn't be called generic anymore, so that's why we
need to derive from wxPanel...

- Tested on/with:
1. wxMSW (I disabled the MSW MDI implementation to
be able to test it), tested it with the MDI sample,
docvwmdi sample and docview sample and also tested it
with wxWorkshop. (test = compile and run)
2. wxX11, tested with the same set wxWin samples as
the wxMSW test. I also compiled wxWorkshop with it,
but could not run wxWorkshop due to some issue not
related to the MDI implementation.

- How to apply:
* Apply the patch
* move mdig.cpp into wxWindows/src/generic/
* move mdig.h into wxWindows/include/wx/generic/

- Some extra things that still need to be done:
* File lists, project files should be updated to include
mdig.cpp (the patch only change this on wxX11)
* The configuration script should be updated.
* Maybe wxUSE_GENERIC_MDI_ARCHITECTURE also
should be added so it is only included when wanted...




git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16610 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-08-20 09:09:55 +00:00
Václav Slavík
1aee06c5b7 cleaned a bit of mess in wxX11
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14274 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-02-17 14:53:58 +00:00
Julian Smart
83df96d63a Reformatted Motif headers; added __WXX11__ symbol support to common headers;
added place-holding src/x11 and include/wx/x11 files.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14015 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-02-05 16:34:33 +00:00
Vadim Zeitlin
6e711d5c09 applied patch 446836: removed qt headers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11469 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2001-08-25 14:52:26 +00:00
David Webster
1777b9bbf4 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3173 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1999-07-28 03:38:12 +00:00
Julian Smart
34138703c3 Changes mostly as a result of __WXSTUBS__ compilation. The stubs code now
compiles under Windows with VC++. Also OGL enhancements espec. wxDrawnShape.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 00:23:28 +00:00
Robert Roebling
b4e76e0d7e More work on wxQt integration, configure
I tried notr to break anything...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@454 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 20:23:17 +00:00
Karsten Ballüder
2049ba38ad Changed __GTK__, __WINDOWS__ and __MOTIF__ to __WXGTK__, __WXMSW__ and __WXMOTIF__
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 14:15:17 +00:00
Karsten Ballüder
c801d85f15 Initial revision
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-20 14:01:55 +00:00