135 Commits

Author SHA1 Message Date
Fabian Maurer
a9ac425a90 user32/menu: Release menu in HiliteMenuItem() to avoid deadlock.
MENU_SelectItem sends a message, and we must not hold the lock when
that happens

Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-20 18:36:56 +02:00
Zhiyi Zhang
a205401b38 user32: Fix menu item rectangle calculation in GetMenuItemRect().
This fixes the menu of BibleWorks 10 not showing up and some todo in
tests.

Sysmenu is in non-client area. And because MapWindowPoints() should
not be used with non-client area coordinates. Doing so results in
wrong coordinates for sysmenu item rectangles.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-17 17:39:55 +02:00
Fabian Maurer
aee9fa0e55 user32: Always release menu item in EnableMenuItem.
Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-25 22:33:41 +02:00
Huw Davies
5fefb108c4 user32: Simplify CheckMenuRadioItem().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-15 12:33:56 +02:00
Nikolay Sivov
387ba1d605 user32/menu: Return locked menu data when looking for menu items.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-11 17:20:41 +02:00
Nikolay Sivov
6cae93a36e user32/menu: Replace macro checks for window style with a helper function.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-17 17:03:13 +02:00
Nikolay Sivov
fcdc7db390 user32/menu: Hold a reference to menu data for calls with menu handles on input.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-17 17:03:13 +02:00
Michael Stefaniuc
e8411d22d5 user32: Use the available ARRAY_SIZE() macro.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-02 16:02:53 +02:00
Thomas Faber
7ee4588c0a user32: Handle HeapReAlloc failure in RemoveMenu.
The array size is being decreased so failure is not critical here, but
it can still happen, e.g. when DPH is in use.

Signed-off-by: Thomas Faber <thomas.faber@reactos.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-05 10:00:07 +01:00
Rafał Harabień
5c2526a086 winex11.drv: Preserve last error in x11drv_thread_data().
Signed-off-by: Rafał Harabień <rafalh1992@o2.pl>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-17 17:44:05 +01:00
Fabian Maurer
5e59e9b34c user32: Add stub for CalcMenuBar.
Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-09-07 18:25:01 +02:00
Huw Davies
022e4b8243 user32: End the tracking on a system menu double-click.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-05 19:49:40 +02:00
Huw Davies
e60bc27dd2 user32: A button-up in the menu-bar, but not on an item, should stop the tracking.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-05 19:49:22 +02:00
Huw Davies
580915040e user32: A second button-up on the system menu should end the tracking.
This isn't quite how Windows behaves.  Windows doesn't follow the
tracking between the menu-bar and the system menu, while Wine does.
Since the system menu of top-level windows is likely to be hidden by
Wine's graphics driver, this seems like useful behaviour to keep and
thus this patch makes things behave sensibly.

Even without Wine's special tracking behaviour, this patch is an
improvement.  The tracking state has no reason to be stored in the
menu structure.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-05 19:49:16 +02:00
Huw Davies
77026e244c user32: Allow button-down events on the system menu to continue tracking.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-05 19:48:55 +02:00
Huw Davies
962d5e6469 user32: Don't bother drawing an item if it's outside the items_rect.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-31 14:03:50 +02:00
Huw Davies
21c5545a97 user32: Simplify the use of rectangles.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-31 14:03:44 +02:00
Huw Davies
66d3c80de0 user32: Pass a POPUPMENU ptr to MENU_DrawMenuItem().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-31 14:03:32 +02:00
Huw Davies
e42bcbdea3 user32: Remove the height parameter from MENU_DrawMenuItem().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-31 14:03:23 +02:00
Huw Davies
3c0ddd5971 user32: Limit the menu height to that of the work area.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-30 22:06:33 +02:00
Huw Davies
1d4992282d user32: Disable scrolling for multi-column menus.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-30 22:06:33 +02:00
Huw Davies
d4544f7fed user32: Don't finish tracking when the menu borders or scroll arrows are clicked.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-30 22:06:33 +02:00
Huw Davies
6abb7db763 user32: Scale the scroll arrows with the menu's font size.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-29 17:17:15 +02:00
Huw Davies
bd785a5ac0 user32: Don't fill the background when drawing the scroll arrows.
This is done, in the correct colour, in MENU_DrawPopupMenu().

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-29 17:17:15 +02:00
Huw Davies
79bdeceab4 user32: Clip painting to the items_rect.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-29 17:17:15 +02:00
Huw Davies
1bdd12f493 user32: Store the item rects as relative to the items_rect.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-29 17:17:14 +02:00
Huw Davies
bdcaae4b78 user32: Add an items rect to the header and use it to fix scrolling down.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-28 22:13:14 +02:00
Huw Davies
d4d0247f4e user32: Simplify GetMenuItemRect().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-28 22:12:45 +02:00
Huw Davies
c72a7219fd user32: Add a helper to retrieve the height of the scroll arrows.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-28 22:12:16 +02:00
Huw Davies
a8344b9616 user32: Rationalize the popup menu margin calculation.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-28 22:11:33 +02:00
Huw Davies
0a36078ee1 user32: Explicitly set last error to ERROR_SUCCESS.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-27 16:54:53 +02:00
Fabian Maurer
115bbf424c user32: Don't send WM_CHAR when a menu gets VK_ESCAPE and add tests.
Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-03 19:05:09 +01:00
Alex Henrie
68ca28a8bc user32: Tell MENU_SuspendPopup which message to remove.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-06 15:45:54 +01:00
Michael Stefaniuc
07ada9a85b user32: Use SetRect() instead of open coding it.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-19 19:59:30 +09:00
Alexandre Julliard
83ed0a636b user32: Setup system menu even when used through TrackPopupMenu.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-08 16:12:26 +09:00
Vincent Povirk
3cc6a1acc3 Revert "user32: Set capture earlier on popup menus.".
This reverts commit a9bff001a1e2c919b3f6e68d642abb8da957a2bf.

We can't set capture this early because the popup menu isn't visible
yet. To my knowledge, no applications depend on this, nor did the
next patch in the series. It's only a theoretical issue revealed by
a message test.

Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-20 16:54:47 +09:00
Vincent Povirk
906db769f1 user32: Skip menu loop for empty popup menus.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-17 19:44:02 +09:00
Vincent Povirk
a9bff001a1 user32: Set capture earlier on popup menus.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-17 19:44:02 +09:00
Alexandre Julliard
c82626a4c1 user32: Add workaround for removed SC_TASKLIST system menu item.
Word 95 assumes that the item exists.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-19 20:55:15 +09:00
Dmitry Timoshkov
c0de7f8641 user32: Menu item with a "magic" bitmap should not have MFT_BITMAP type set.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-18 13:07:15 +09:00
Alex Henrie
5b53c0b88b user32: Avoid double initialization.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-06 21:59:08 +09:00
Huw Davies
e79684874d user32: Restore the dc's colours after sending WM_DRAWITEM.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-02 23:02:24 +09:00
Huw Davies
9650f21b2d user32: Actually use the menu's background brush. 2015-01-16 16:52:40 +01:00
Piotr Caban
dcdf4dbf15 user32: Return early on child windows in DrawMenuBar. 2014-09-23 18:48:26 +02:00
Michael Müller
997e197f23 user32: Also set cch member in GetMenuItemInfo when passing a null pointer. 2014-09-09 11:11:27 +02:00
Akihiro Sagawa
cb2b15921d user32: Don't close a popup menu when clicking a sub-menu parent item twice. 2014-06-13 15:57:25 +02:00
Andrew Eikum
d7f827254e user32: Remove unused internal menu messages. 2014-05-19 18:55:55 +02:00
Dmitry Timoshkov
c6dbb33e19 user32: When converting from MF_ flags to MENUITEMINFO ignore MF_POPUP if id is not a menu. 2014-04-21 11:09:52 +02:00
Vincent Povirk
68f2b878d2 user32: Allow EndMenu() calls from WM_ENTERMENULOOP. 2014-04-18 14:36:04 +02:00
Piotr Caban
55ff066103 user32: Don't fail on windows without menu bar in DrawMenuBar. 2014-04-10 16:51:09 +02:00