Commit Graph

442 Commits

Author SHA1 Message Date
Zhiyi Zhang 7be103bba9 comctl32: Use OpenThemeDataForDpi() to create a theme handle not associated to a window.
If a window is not passed to OpenThemeData(), OpenThemeData() assumes the DPI is 96 according to
tests. And GetThemePartSize() should select theme parts according to the DPI stored in theme
handles rather than using GDI device contexts. Thus, OpenThemeDataForDpi() should be used in place
of OpenThemeData() when DPI is not 96 and theme handles shouldn't be associated with a window.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 17:06:22 +02:00
Francois Gouget 29f73481df comctl32: Fix an ASCII / ANSI mixup in a comment.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-31 16:06:40 +02:00
Zhiyi Zhang 8107462b8a comctl32/toolbar: Don't use outside theme handles.
Fix Spy++ Toolbar buttons have artifacts. Spy++ first creates a Toolbar window, then calls
OpenThemeData(hwnd, "Rebar") with the Toolbar window. Then when the Toolbar control uses the theme
handle from GetWindowTheme(), it gets a Rebar theme the next time it draws, thus drawing wrong theme
parts.

According the tests, not all of the common controls have such behaviors. Some of them do have theme
handles opened by their window and then use that theme handle afterwards even it's changed from the
outside. However, for other controls, the behaviors are not very consistent across all Windows
versions. Also no applications depend on such behaviors for other controls yet. So, only modify the
Toolbar control for now.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-22 17:57:46 +02:00
Zhiyi Zhang a769679113 comctl32/toolbar: Remove a redundant theme handle check in TOOLBAR_NCCreate().
This is a no-op. In TOOLBAR_NCCreate(), GetWindowTheme() always returns NULL because the theme
handle is not open by OpenThemeData() by that time. Also tests show that TBSTYLE_TRANSPARENT is not
added when theming is active.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-22 17:57:46 +02:00
Zhiyi Zhang 6576d461b8 comctl32: Repaint after the WM_THEMECHANGED message is received.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-28 09:40:22 +02:00
Zhiyi Zhang bde397d220 comctl32/toolbar: Use correct state id for checked items.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-04 21:43:27 +01:00
Nikolay Sivov 564d5804b1 comctl32: Use wide-char string literals.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-16 17:51:30 +01:00
Piotr Caban 378548581d comctl32: Offset client area when toolbar divider is present.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 23:16:52 +02:00
Piotr Caban 659b0d7017 comctl32: Compute border size from client and window rectangles.
Fixes toolbar size when WS_EX_DLGMODALFRAME is used.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 23:16:52 +02:00
Ziqing Hui 3192fb5396 comctl32/toolbar: Correctly draw disabled button which contains 32 bpp bitmap with alpha channel.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=24784
Signed-off-by: Ziqing Hui <zhui@codeweavers.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-31 17:28:00 +02:00
Nikolay Sivov ae3b334695 comctl32/toolbar: Handle NULL string pointer from TBN_GETINFOTIPW.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-28 08:36:37 +01:00
Francois Gouget e0e119e41f comctl32: Typo and spelling fixes in comments.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-02 20:46:44 +02:00
Alexandre Julliard e4e2e8e551 comctl32: Build with msvcrt.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-29 11:38:38 +02:00
Nikolay Sivov f3775ed2ac comctl32/toolbar: Send BN_CLICKED for button that was pressed, not released.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=35516
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-18 16:02:35 +01:00
Nikolay Sivov f037019e5d comctl32/toolbar: Draw button in idle state when mouse is captured.
When captured moving cursor over other buttons should not produce hot item
feedback, only pressed button appearance changes. Hot item notifications are
still delivered.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-18 16:02:32 +01:00
Francois Gouget ab9dccda63 comctl32: Avoid an unneeded lstrlenW() call.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-22 11:12:28 +02:00
Nikolay Sivov c74a72c46e comctl32/toolbar: Handle resource strings returned for tooltip text.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-09 09:45:22 +02:00
Nikolay Sivov 0645fa1373 comctl32/toolbar: Fix tooltip notification forwarding.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-30 19:59:15 +02:00
Nikolay Sivov db2a3b7028 comctl32: Use ARRAY_SIZE() macro.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-27 09:16:27 +01:00
Nikolay Sivov 2e8dfbb1ad comctl32/toolbar: Fix a crash when tracing special button string identifier.
Based on patch by Mark Jansen <mark.jansen@reactos.org>.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-05 23:19:25 +01:00
Thomas Faber 4c57232962 comctl32: Unset the toolbar's hot item when deleting a button.
Signed-off-by: Thomas Faber <thomas.faber@reactos.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-19 16:40:55 +01:00
Nikolay Sivov d93ae6ff34 comctl32/toolbar: Support undocumented IDs for standard bitmap lists.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-31 10:53:54 +02:00
Nikolay Sivov ece34a1319 comctl32/toolbar: Don't add NULL imagelist entries.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-31 10:53:52 +02:00
Nikolay Sivov e558858d0f comctl32: Change some overly exciting tracing messages.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-30 11:14:55 +02:00
Eric Kohl b7cc44099a comctl32: Update the tooltip rectangle when a tool button is hidden.
Signed-off-by: Eric Kohl <eric.kohl@t-online.de>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-21 13:57:36 +01:00
Nikolay Sivov 970029bb9b comctl32/toolbar: Fix TB_SETDRAWTEXTFLAGS handler.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-26 10:36:17 +01:00
Nikolay Sivov 26067cc0b9 comctl32/toolbar: Protect from NULL pointer access in TB_GETBUTTONINFOW handler.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-11 16:04:23 +01:00
Michael Stefaniuc 8258d900ca comctl32: Use InflateRect() too when expanding in just one axis.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-09 15:42:47 +09:00
Michael Stefaniuc 65a2e59a78 comctl32: Avoid using CopyRect() on RECT structs.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-24 21:10:32 +09:00
Michael Stefaniuc 903ea19122 comctl32: Use SetRect() instead of open coding it.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-29 23:23:36 +09:00
Christopher Thielen ff063d9e25 comctl32: Ensure that toolbar respond only to changes in WM_CAPTURECHANGED handler.
Signed-off-by: Christopher Thielen <cthielen@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-02 22:21:31 +09:00
Jacek Caban 67819d6ee9 comctl32: Don't use comparisons to FALSE.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-10 11:53:20 +09:00
Nikolay Sivov 83a652a9d4 include: Add a couple of documented Toolbar messages definitions.
Thanks to Alan Feldman for pointing this out.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-19 12:20:56 +09:00
Alex Henrie c565145b0e comctl32: Remove redundant if (button) statements.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
2015-10-07 21:28:50 +09:00
Huw Davies 2a71d13b6b comctl32: Implement the legacy notifications during restore. 2015-07-02 16:54:01 +09:00
Huw Davies 6c95445559 comctl32: Set the default separator width when notifying a -ve cmd id. 2015-07-02 16:53:58 +09:00
Huw Davies eddfefa54f comctl32: Reset the string and lparam fields between notifications. 2015-07-01 19:18:27 +09:00
Huw Davies 96a6184c30 comctl32: All negative entries in the toolbar save state are special cases. 2015-07-01 19:18:27 +09:00
Huw Davies 77ed3733af comctl32: The number of buttons is set by the first TBN_RESTORE notification. 2015-07-01 19:18:27 +09:00
Huw Davies 063c7866f5 comctl32: Implement toolbar saving. 2015-07-01 19:18:26 +09:00
Huw Davies 199f51ff78 comctl32: Don't leak button text. 2015-07-01 19:18:26 +09:00
Huw Davies 01cd45cce1 comctl32: Add a helper to free button text. 2015-07-01 19:18:25 +09:00
Huw Davies a29b6958e1 comctl32: Add helpers to set the button text. 2015-07-01 19:18:25 +09:00
Nikolay Sivov b7969dfd94 comctl32/toolbar: Remove always true condition (Coverity). 2015-06-03 19:29:49 +09:00
Huw Davies 5c4dc9fc56 comctl32: Fix a typo in the TB_SAVERESTOREA handler. 2015-05-20 22:10:07 +09:00
Huw Davies 0634f3b409 comctl32: If necessary add the width of a dropdown arrow while wrapping.
This also fixes the layout code for the BTNS_WHOLEDROPDOWN case.
2015-05-19 22:57:36 +09:00
Huw Davies 797f42699e comctl32: Wrap the buttons inside the toolbar's client rect.
The toolbar need not be the same width as the parent.
2015-05-19 22:57:27 +09:00
Huw Davies 0bcadfa88f comctl32: Layout the toolbar after a potential resize. 2015-05-19 22:57:22 +09:00
Huw Davies 9d218048a6 comctl32: Don't store the width in the toolbar info structure.
It's only set and used by a single function.
2015-05-19 22:57:16 +09:00
Huw Davies eb8df37a69 comctl32: Remove button wrap states when TBSTYLE_WRAPABLE is cleared. 2015-04-30 16:17:59 +09:00