Commit Graph

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 a9bff001a1.

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