Commit Graph

240 Commits

Author SHA1 Message Date
PB
f57f214122 Remove BCC-specific hdrstop pragma from everywhere 2020-10-12 21:58:37 +02:00
Rick S
14717af39c Restore wxMenu::Break() functionality in wxMSW
This was broken in da319a87cd (Make wxMSW owner drawn menu item code
more clear and correct., 2014-03-27) for non-owner-drawn menus.

Closes #18692.
2020-04-18 00:42:27 +02:00
Václav Slavík
66e07d6465 Fix crash in wxMenu::MSWCommand if item is NULL 2018-10-09 18:27:47 +02:00
Vadim Zeitlin
de5ba70203 Fix handling events from their items in submenu itself
This previously worked in wxGTK, but not in wxMSW and even under wxGTK
it could be surprising that the submenu got the event, but its parent
menu did not.

Make things consistent between the platforms and send the event to the
menu directly containing it first, but then also to its parent menu(s).

Document the new behaviour and verify that it works as intended with a
new unit test.

Closes #18202.
2018-08-25 02:36:45 +02:00
Blake-Eryx
49e20a961d Fix misspellings in comments and documentation
No real changes.

Closes https://github.com/wxWidgets/wxWidgets/pull/870
2018-07-31 13:20:17 +02:00
orbitcowboy
f423b88ded Replace post-increment on iterators with pre-increment
This is a micro-optimization, as pre-increment is at least as efficient
as post-increment and typically slightly more so because it doesn't need
to make a copy of the iterator, and better conforms to the prevailing
C++ style.

Closes https://github.com/wxWidgets/wxWidgets/pull/655
2017-12-29 19:59:24 +01:00
Artur Wieczorek
0624108acc Use dedicated function to check whether menu item is a radio button
No real changes, just refactoring.
2017-08-20 21:28:46 +02:00
Artur Wieczorek
e56cb112d3 Fix warning about unused variable in release build
Refactor the code to remove variable which is used only in the assertion.

See #14213.
2017-08-20 21:28:12 +02:00
Artur Wieczorek
4bc1c6fb7c Extract wxMenuRadioItemsData to a separate file
wxMenuRadioItemsData implementation is not MSW-specific and can be reused
on other platforms.

See #14213.
2017-08-13 00:36:37 +02:00
Artur Wieczorek
28af0ca6e9 Fix updating radio groups when non-radio item is inserted to wxMenu (MSW)
When wxMenu contains radio groups and a new item (radio and non-radio) is
being added to the menu, data describing exisiting groups have to
be updated accordingly. Because adding radio and non-radio items has
a different impact on the groups, adding non-radio items has to be handled
separately. (The main difference between adding radio and non-radio item is
that when a radio item is inserted inside the group this group is extended,
but for non-radio item the group is split into two subgroups.)
2017-08-13 00:31:53 +02:00
Catalin
f3cda45ced Remove checks for MNS_CHECKORBMP, MIM_STYLE.
<https://msdn.microsoft.com/en-us/library/windows/desktop/ms647575(v=vs.85).aspx>
2017-03-05 15:17:54 +02:00
Václav Slavík
60542745f6 Fix accel handling when removing item from submenu
wxMSW propagates accelerators to the top menu in wxMenu::UpdateAccel(),
but the reverse operation in wxMenu::DoRemove() didn't do it, resulting
in leaked leftover accelerator entries that could prevent the same
accelerator from working if an item using it was later added. Fix by
adding RemoveAccel() helper method that behaves analogously to
UpdateAccel().
2016-12-05 17:59:03 +01:00
Artur Wieczorek
3d476369ec Fix inserting owner drawn menu items in wxMSW after menu creation
When menu item is inserted to the menu using wxMenu::DoInsert(), it is first
added to the list of all menu items in wxMenuBase::DoAppend() and then it is
added to the physical menu in wxMenu::DoInsertOrAppend(). Prior to adding the
menu item to the menu all already existing menu items are set as owner drawn,
so the list of items is iterated and SetOwnerDrawnMenuItem() is called for
each item. Because the new item is on the list but doesn't yet physically
exist, it has to be skipped in the iterations to avoid assigning wrong data
(like address of handler) to the wrong item.

Closes #17350.
2016-01-30 00:09:00 +01:00
Artur Wieczorek
9e657d82f9 Fixed creating menu item which is disabled before being attached to the menu.
Menu item should be created in disabled state if wxMenuItem is flagged as disabled.

Closes #17282.
2015-12-12 21:27:12 +01:00
Vadim Zeitlin
ecdc7c3442 Fix harmless warning about unused variable in wxMSW wxMenu
A variable was unused in wxDEBUG_LEVEL==0 build and assigning to it resulted
in a warning. Fix this by not defining this variable at all, which also makes
the check more clear.
2015-10-16 17:13:00 +02:00
Tobias Taschner
79d485d7a9 Remove dynamic loading of SetMenuInfo.
SetMenuInfo is available since Win2k
2015-09-27 19:10:50 +02:00
Tobias Taschner
8282c1be0f Remove Windows CE support
Windows CE doesn't seem to be supported by Microsoft any longer. Last CE
release was in early 2013 and the PocketPC and Smartphone targets supported by
wxWidgets are long gone.

The build files where already removed in an earlier cleanup this commit
removes all files, every #ifdef and all documentation regarding the Windows CE
support.

Closes https://github.com/wxWidgets/wxWidgets/pull/81
2015-09-23 00:52:30 +02:00
Paul Cornett
36e31e515e avoid shadowed variable warnings with VS2015 2015-07-24 20:56:11 -07:00
Vadim Zeitlin
30b523d1f2 Remove redundant tests for __WIN32__ in wxMSW code.
This is always defined, Win16 is not supported since ages and Win64 defines
both __WIN32__ and __WIN64__.
2015-07-05 16:55:25 +02:00
Vadim Zeitlin
fec1dcbd73 Don't send events for already selected radio popup menu items.
Selecting an already selected radio menu item didn't generate any events in
wxGTK nor in wxMSW with the top level (i.e. attached to a menu bar) menus but
did send them for popup menus under MSW.

Make the last case consistent with the rest of them and don't send any events
in this case neither.

Closes #16891.
2015-03-23 01:11:34 +01:00
Vadim Zeitlin
bf08ea2666 Don't generate wxEVT_MENU_{OPEN,CLOSE} for disabled top menus in wxMSW.
Windows still sends these messages even if a top level menu is disabled, for
some reason, so filter them out manually.

Closes #2168.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78247 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-12-05 22:19:19 +00:00
Vadim Zeitlin
79f93d5535 No real changes, just make wxMenuBar::MSWGetMenu() const.
There is no reason not to.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-12-05 22:19:16 +00:00
Vadim Zeitlin
c6cd1a305e Don't put wxMenu::MSWGetMenu() inside wxUSE_OWNER_DRAWN check.
This doesn't make any sense, this function is not related to the owner drawing
code at all and should always be available.

This corrects the changes of r70316, see #13851.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78232 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-12-05 22:18:07 +00:00
Vadim Zeitlin
0c61827188 Remove unnecessary assert from wxMenuBar::MSWGetMenu().
This assert was triggered after the changes of the previous commit as we can
get WM_MENUSELECT with menu bar handle as parameter from Windows and still
search for the menu with this handle -- and there is nothing wrong with this,
so just return NULL but without asserting in this case.

This corrects the changes of r67355, see #13080.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78231 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-12-05 22:18:01 +00:00
Dimitri Schoolwerth
fffa92eaee Fix compilation with wxUSE_MENUITEMINFO==0.
Add argument to a call to GetHBitmapForMenu, which doesn't have a default
parameter any more. Fixes (this part of) WinCE compilation. Broken since
r76760.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76780 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-06-27 05:29:30 +00:00
Dimitri Schoolwerth
d201caad89 Clean up GetHBitmapForMenu.
Merge wxMenuItem::GetHBitmapForMenuCheckable and ::DoGetHBitmapForMenu
into wxMenuItem::GetHBitmapForMenu. Change its boolean parameter to an
enum specifying the kind of bitmap that is wanted (normal, checked, or
unchecked).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76760 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-06-24 18:54:05 +00:00
Dimitri Schoolwerth
6b12639c49 Fix failing Win32 calls with checkable menu item.
Since r76202 InsertMenuItem is used when adding checkable menu items even
without a bitmap. The call fails because hbmpChecked and hbmpUnchecked are
set to HBMMENU_CALLBACK on pre-Vista, making the menu owner drawn
unnecessarily.

Fix by adding GetHBitmapForMenuCheckable which is used when assigning
values to hbmpChecked and hbmpUnchecked. GetHBitmapForMenu remains
unchanged (for possible porting reasons) and is used for hBmpItem only.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-06-23 20:05:30 +00:00
Václav Slavík
2cf91e5c7c Add wxMenu::MSWDetachHMENU().
Make it possible to pass ownership of a wxMenu to win32.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76722 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-06-18 12:51:45 +00:00
Vadim Zeitlin
8f39cd1301 Fix bug with removing items from menus with radio buttons in wxMSW.
Update the indices of the radio groups after removing an item from the menu.

See #14213.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76656 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-06-02 01:15:34 +00:00
Vadim Zeitlin
15f255cebb Remove support for Digital Mars compiler.
This compilers is not being developed any longer since many years, drop
support for it.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76547 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-05-16 13:01:23 +00:00
Vadim Zeitlin
da319a87cd Make wxMSW owner drawn menu item code more clear and correct.
The user-visible effect of this change is that removing the item from the menu
and adding it back doesn't lose its icon any more.

At the code level, wxMenuItem::SetBitmaps() and related methods are
implemented outside of "#if wxUSE_OWNER_DRAWN" which allows to use them even
in minimalistic library builds. And IsOwnerDrawn() is not used any more to
determine whether the item has bitmaps, just only if it's really owner drawn,
making the code more clear and fixing at least the bug above and possible more.

Closes #13878.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76202 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-03-27 00:02:28 +00:00
Vadim Zeitlin
d94b858bc9 Rename wxMenuItem::MustUseOwnerDrawn() to MSWMustUseOwnerDrawn().
No real changes, just make it clear that this method is MSW-specific and is
about using owner drawn items at MSW level and not wx one.

See #13878.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76201 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-03-27 00:02:22 +00:00
Vadim Zeitlin
67b128e186 Refactor wxMSW: move some code from wxMenu to wxMenuItem.
This will allow reusing it for other wxMenuItem bitmap-related operations.

See #9388.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76190 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-03-23 15:18:31 +00:00
Vadim Zeitlin
98601f5646 Fix check for the item being checked when appending it under wxMSW.
The changes of r75448 were wrong, we can't ask Windows for the item state
before attaching it to the menu, so just check the internal flag here.

See ##15748.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75570 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-01-07 21:54:51 +00:00
Vadim Zeitlin
5cd81ca598 Allow initializing wxScopedArray more conveniently.
Typical wxScopedArray initialization uses "new T[n]" expression, allow to omit
most of it and specify just n, the number of elements to allocate.

Use the new shorter form in the places where wxScopedArray(new ...) was used
(which is in almost all of them)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75504 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-12-31 14:03:34 +00:00
Vadim Zeitlin
2d3a1aab74 Fix handling of menu items checked before being attached in wxMSW.
Calling wxMenuItem::Check() before appending the item to a menu didn't have
any effect, fix this by checking the item state when actually attaching it.

Closes #15748.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75448 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-12-29 00:01:38 +00:00
Vadim Zeitlin
be61f84af5 Yet another fix after wxMenu::Remove() refactoring.
wxMenu::Remove() was still broken in wxMSW after r75250, even with the fix in
r75290, as wxMSW code relied on the item still being present in
wxMenu::m_items.

Delay removing it from there until after DoRemove() call to fix this.

See #3424.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75297 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-11-26 14:50:55 +00:00
Vadim Zeitlin
fec6f3bea1 Fix problem with inserting menus in wxMDIParentFrame menu bar.
Account for the "Window" menu (and any other foreign windows lurking in our
menu bar) correctly in wxMenuBar::Insert() instead of the old code which
apparently tried to do something similar but didn't make much sense and didn't
work when trying to insert the menu at the position actually occupied by the
"Window" menu in the menu bar.

Closes #15662, #1732.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75241 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-11-18 14:19:40 +00:00
Vadim Zeitlin
097ad8f1b0 Don't use owner drawn items under Win7 even when using larger bitmaps.
The check for menu bitmaps size added in r58557 was apparently only needed for
XP and earlier versions and doesn't seem to be necessary under Win7, so don't
use it there, if only because it allows to retrieve the menu item text which
is useful for automation/screen reader tools.

Closes #13544.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75001 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-10-14 15:08:13 +00:00
Václav Slavík
be10c7f969 Compilation fix for !wxUSE_OWNER_DRAWN.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74875 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-09-30 17:12:24 +00:00
Vadim Zeitlin
ee3de647ff Correct making the newly inserted menu item owner drawn in some cases.
The item being inserted is not inserted yet when we call
SetOwnerDrawnMenuItem() so we must call it separately for it after inserting
it.

Closes #15437.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74717 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-08-27 22:49:28 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Vadim Zeitlin
23c37c2c4e Reset accelerator table after removing last accelerator in wxMSW wxMenuBar.
We didn't update the accelerator table if no more accelerators were left in it
but we still need to do it to stop handling the previously active accelerators.

Closes #15078.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73594 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-03-02 12:11:53 +00:00
Vadim Zeitlin
017dc06b50 Use wxString::t_str() in calls to Windows API functions in wxMSW.
Use t_str() instead of wx_str() to make the code work correctly in UTF-8 build
in which wx_str() returns a pointer to UTF-8 buffer while we need a wchar_t
pointer for Windows.

Closes #14371.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71640 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-06-03 19:16:59 +00:00
Vadim Zeitlin
d34791c2be Fix incorrect cast resulting in a warning in wxMSW wxMenu code.
Menu id is a 32 bit UINT value, even in 64 bit builds, so don't cast it to
UINT_PTR.

Closes #13815.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70441 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-23 11:28:05 +00:00
Vadim Zeitlin
be85a191e1 No changes, just minor wxMSW code cleanup: use WinStruct<>.
Use WinStruct instead of the usual ZeroMemory() + cbSize setting fragment to
initialize Win32 structs that need to be initialized in this way.

No real changes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70383 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-18 10:05:27 +00:00
Vadim Zeitlin
e4a23857ec Implement wxMenuBar::EnableTop() for wxMSW and wxGTK.
This method was only available in wxUniv before and just always returned true
in the other ports. Implement it for wxMSW and wxGTK too now and document it.
Also add a unit test.

Closes #795.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70350 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-15 13:41:17 +00:00
Vadim Zeitlin
af36ec0aa1 Correct wrong checks for wxUSE_OWNER_DRAWN.
Fix the checks added in r70316, wxUSE_OWNER_DRAWN should have been used
instead of inexistent and undefined wxUSE_OWNER_DRAW.

See #13851.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70343 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-15 01:01:44 +00:00
Vadim Zeitlin
51c2f7ea41 Add wxUSE_OWNER_DRAW checks to wxMSW wxMenu code.
Allow compiling with wxUSE_OWNER_DRAW==0. This fixes another problem in
Windows CE build where owner drawn menus are not supported.

Closes #13851.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70316 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-11 13:42:02 +00:00
Vadim Zeitlin
e23e368bc4 Fix int field of wxCommandEvents generated by menu items in wxMSW.
Set the int field of wxCommandEvent generated by clicking on the menu items
correctly for not checkable items: it is supposed to be -1 and not 0 (which is
the value for checkable but currently unchecked items). This was already the
case for wxGTK and wxOSX and implied by the comments in the code.

Make wxMSW behave like this too and clearly document this behaviour.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69101 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-09-16 13:23:14 +00:00