This reverts54753c3d75
and (partially)dbd5b2ce42
(leaving the unit test added by it) and implements yet another fix for the original problem of duplicate wxContextMenuEvents generated in wxMSW which doesn't break the generation of wxContextMenuEvents entirely in wxTreeCtrl. wxTreeCtrl is special as its DefWindowProc() sends WM_CONTEXTMENU directly to its parent, and not to the control itself, when handling WM_RBUTTONUP, so the code checking that WM_CONTEXTMENU was not coming from one of the window own children added in dbd5b2 filtered out all messages from it completely. As it's probably not the only control behaving in this way, abandon the idea of the message origin check and instead set things up so that we still pass the message to DefWindowProc() (because not doing it breaks built-in context menus in wxTextCtrl, for example), but don't do anything when the message is propagated upwards from it. This should ensure that we only process the message once in MSWHandleMessage() of the first window which gets it, whether it's the original window or its parent, which ensures the event propagation on wxWidgets side of things, but prevents it being done by Windows itself. See #13683.
About
wxWidgets is a free and open source cross-platform C++ framework for writing advanced GUI applications using native controls.
wxWidgets allows you to write native-looking GUI applications for all the major desktop platforms and also helps with abstracting the differences in the non-GUI aspects between them. It is free for the use in both open source and commercial applications, comes with the full, easy to read and modify, source and extensive documentation and a collection of more than a hundred examples. You can learn more about wxWidgets at https://www.wxwidgets.org/ and read its documentation online at http://docs.wxwidgets.org/
Platforms
wxWidgets currently supports the following primary platforms:
- Windows XP, Vista, 7, 8 and 10 (32/64 bits).
- Most Unix variants using the GTK+ toolkit (version 2.6 or newer or 3.x).
- Mac OS X (10.7 or newer) using Cocoa (32/64 bits) or Carbon (32 only).
Most popular C++ compilers are supported including but not limited to:
- Microsoft Visual C++ 2003 or later (up to 2015).
- g++ 3.4 or later, including MinGW/MinGW-64/TDM under Windows.
- Clang under OS X and Linux.
- Intel icc compiler.
- Oracle (ex-Sun) aCC.
Licence
wxWidgets licence is a modified version of LGPL explicitly allowing not distributing the sources of an application using the library even in the case of static linking.
Further information
If you are looking for support, you can get it from
- Mailing Lists
- [Discussion Forums][https://forums.wxwidgets.org/]
- [#wxwidgets IRC channel][https://www.wxwidgets.org/support/irc/]
- Stack Overflow (tag your questions with @c wxwidgets): https://stackoverflow.com/questions/tagged/wxwidgets
- Please report bugs at http://trac.wxwidgets.org/newticket
We would also gladly welcome your contributions.
Have fun!
The wxWidgets Team.