Commit Graph

4424 Commits

Author SHA1 Message Date
Gabriel Ivăncescu 44e6fff010 comctl32/listbox: Implement LBS_NODATA for multi-selection listboxes.
Use a byte array to store selection state of items, since we don't need any
other data for LBS_NODATA multi-selection listboxes. This improves memory
usage dramatically for large lists, and performance boosts are nice too.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-28 21:37:30 +01:00
Gabriel Ivăncescu a853301e7a comctl32/listbox: Use a helper to get the size of an item.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-28 21:37:30 +01:00
Huw Davies b60108e022 comctl32/listbox.c Use helper functions for item initialization.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-28 21:37:30 +01:00
Vijay Kiran Kamuju 7a6b00dc25 user32: Add DlgDirList wildcard checks.
Based on a patch from Christian Lupien.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=8226
Signed-off-by: Vijay Kiran Kamuju <infyquest@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-27 22:21:17 +01:00
Gabriel Ivăncescu 874c5508ee comctl32/listbox: Rewrite FindString to use helpers and avoid the macro.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-27 16:29:37 +01:00
Gabriel Ivăncescu 2fddd6211e comctl32/listbox: Use a helper to set item data by index.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-27 16:29:35 +01:00
Nikolay Sivov 71004a825f comctl32/propsheet: Avoid posting uninitialized data (Valgrind).
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46691
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 12:51:21 +01:00
Gabriel Ivăncescu 170f59e574 comctl32/listbox: Use is_item_selected in GetSelCount and GetSelItems.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 12:51:21 +01:00
Michael Stefaniuc e4f66b0483 comctl32: Avoid using the comma operator.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-22 12:27:20 +01:00
Austin English b4a9f3f3f3 comctl32: Fix a memory leak (valgrind).
Signed-off-by: Austin English <austinenglish@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-21 16:07:38 +01:00
Gabriel Ivăncescu 7ec954988c comctl32/tests: Test negative counts in LB_SETCOUNT.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 15:54:07 +01:00
Gabriel Ivăncescu 1b7886edaf comctl32/listbox: Implement LBS_NODATA for single-selection listboxes.
The LBS_NODATA style's purpose is to drastically improve performance and
memory usage on very large lists, since they should function as virtual
lists. Thus, don't store any data for single-selection listboxes (descr->items
always NULL).

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=32374
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 15:54:05 +01:00
Gabriel Ivăncescu e98d4b4502 comctl32/listbox: Move the item data removal into a separate function.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 15:54:03 +01:00
Gabriel Ivăncescu bd2cc1342b comctl32/listbox: Move the item data insertion into a separate function.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 15:54:01 +01:00
Gabriel Ivăncescu e0984d4013 comctl32/listbox: Use a helper to set item height by index.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 15:53:56 +01:00
Gabriel Ivăncescu 249c09f4b1 comctl32/listbox: Use a helper to retrieve item height by index.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 15:53:54 +01:00
Nikolay Sivov cfc323db26 comctl32/updown: Make sure buttons rectangles are consistent with each other.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-18 16:02:54 +01: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
Gabriel Ivăncescu 7d1350491e comctl32/listbox: Send LB_RESETCONTENT from RemoveItem rather than DeleteItem.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 11:43:30 +01:00
Gabriel Ivăncescu 7834e40989 comctl32/listbox: Use a helper to set the selected item state.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 11:43:27 +01:00
Gabriel Ivăncescu c033748c66 comctl32/listbox: Use is_item_selected in more places.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 11:43:24 +01:00
Gabriel Ivăncescu d1b0626c81 comctl32/listbox: Use a helper to retrieve item string by index.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 11:43:21 +01:00
Gabriel Ivăncescu e16d591dc8 comctl32/listbox: Use a helper to retrieve item data by index.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 11:43:18 +01:00
Gabriel Ivăncescu b00482e2a4 comctl32/tests: Test changing the selection styles after listbox creation.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 11:43:15 +01:00
Gabriel Ivăncescu 1f062e386f comctl32/listbox: Use descr->selected_item for single-selection listboxes when checking selection.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 11:43:10 +01:00
Gabriel Ivăncescu 012b7669f7 comctl32/listbox: Repaint the old selected item after setting the item selection.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 11:43:07 +01:00
Gabriel Ivăncescu eed36af54b comctl32/listbox: Resize the entire item array at once in SetCount.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 11:43:04 +01:00
Nikolay Sivov f1f7b7b509 comctl32/listview: Remove duplicated handle check.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-11 11:52:00 +01:00
Nikolay Sivov 5b397df631 comctl32/listview: Take care of scrolling offset when repositioning header.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-11 11:52:00 +01:00
Gabriel Ivăncescu f69a1807e8 comctl32/tests: Add tests for LB_INITSTORAGE.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-07 22:44:15 +01:00
Gabriel Ivăncescu 77cba36331 comctl32/listbox: Return proper value for LB_INITSTORAGE.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-07 22:44:09 +01:00
Gabriel Ivăncescu ff87384048 comctl32/listbox: Shrink the item array with resize_storage.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-07 22:44:04 +01:00
Gabriel Ivăncescu 3afbda2ae2 comctl32/listbox: Use a helper to expand the item array.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-07 22:43:49 +01:00
Gabriel Ivăncescu 98ece04660 comctl32/listbox: Check for out of bounds using the index when painting the item.
Needed for LBS_NODATA.

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-07 22:43:40 +01:00
Nikolay Sivov fc87823654 comctl32/rebar: Do not use global variable for debug buffer (Coverity).
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-28 10:25:54 +01:00
Nikolay Sivov 620a25ef1d comctl32/progress: Handle min == max case in PBM_STEPIT.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46485
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-23 17:05:10 +01:00
Andrey Gusev 535ef08b67 comctl32/tests: Remove redundant assignment.
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-04 17:03:39 +01:00
Huw Davies 76a9f965fd comctl32/tests: Move the cursor over the treeview to avoid random mouse move messages.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45719
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-03 12:49:49 +01:00
Dmitry Timoshkov 4ee173dfdd comctl32: Don't ignore page creation error for a non-modal propery sheet.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-18 20:49:56 +01:00
Dmitry Timoshkov ca41fd8904 comctl32/tests: Add a test for passing dialog template with bad control class to PropertySheet.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-18 20:49:51 +01:00
Alexandre Julliard 0e166d998d comctl32/tests: Avoid a structure initialization warning.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-14 18:33:34 +01:00
Dmitry Timoshkov bf4304211c comctl32/tests: Add a test to check built-in comctl32 classes.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-14 18:24:46 +01:00
Dmitry Timoshkov 685a4b5062 comctl32/tests: Fix a test failure under Windows 7.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-14 18:24:46 +01:00
Eberhard Beilharz f760079a71 comctl32/imagelist: Fix crash with large number of images.
Fix a crash that occurred when reading a imagelist with a large number
of images. In the particular case we read a cMaxImage value of 1032,
but allocated only 40 or so images. This lead to memory corruption in
ImageList_Read.  This change allows to run TntConnect.

Signed-off-by: Eberhard Beilharz <eb1@sil.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-12 19:43:12 +01:00
Nikolay Sivov cb7a426ceb comctl32/tests: Use actual text width for ideal button size tests.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-11 14:45:02 +01:00
Waritnan Sookbuntherng 0f12fa1e43 comctl32/status: Checking size grip bounds in x-axis only.
Signed-off-by: Waritnan Sookbuntherng <lion328@hotmail.co.th>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-10 14:59:46 +01:00
Waritnan Sookbuntherng 1bb95af322 comctl32/status: Hide size grip when the parent window is maximized.
Signed-off-by: Waritnan Sookbuntherng <lion328@hotmail.co.th>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-10 14:59:45 +01:00
Waritnan Sookbuntherng d8428406c6 comctl32/tests: Test status bar size grip behavior and bounds.
Signed-off-by: Waritnan Sookbuntherng <lion328@hotmail.co.th>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-10 14:59:42 +01:00
Nikolay Sivov e6a91103a0 comctl32/listview: Fix NM_CLICK notification when clicking on checkboxes.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-05 22:33:43 +01:00