https://bugs.winehq.org/show_bug.cgi?id=52534
Bug ID: 52534 Summary: ListView: multi select never sends LVN_ODSTATECHANGED Product: Wine Version: 7.1 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: comctl32 Assignee: wine-bugs@winehq.org Reporter: winehq-bugs@angelohaller.com Distribution: ---
When using a ListView in virtual mode (LVS_OWNERDATA) and selecting multiple rows (holding down shift and selecting) the message code LVN_ODSTATECHANGED is never sent.
Looking through the wine source, there is definitely code present sending LVN_ODSTATECHANGED, this however never reaches the application and hence is a bug.
Running the same application in Windows 7 will however send the LVN_ODSTATECHANGED code.
This seems to be true for ALL programs using LVS_OWNERDATA and supporting multi select.
This is an issue that arose working on https://github.com/libui-ng/libui-ng/pull/73
A nicer example to reproduce would be from the `Windows classic samples`. I forked the official Microsoft repo to add some debug printing:
1. Clone https://github.com/szanni/Windows-classic-samples 2. Change to directory Samples/Win7Samples/winui/controls/common/vlistvw 3. Build VListVw (I cross compile via `x86_64-w64-mingw32-gcc VListVw.c -lcomctl32` but using the vcproj should work too?) or use the test binary a.exe (linked at the bottom) 4. Run the resulting .exe 5. Select a cell (should print `LVN_ITEMCHANGED`) 6. Hold down `shift` and select a cell a few rows down below.
On Windows 7 step 6. triggers the message `LVN_ODSTATECHANGED` to be emitted (as can be seen in the debug print statements). wine however never sends this message. This is contrary to the documentation provided in https://docs.microsoft.com/en-us/windows/win32/controls/lvn-itemchanged#rema... and behavior developers rely on.
Test binary: https://github.com/szanni/Windows-classic-samples/blob/main/Samples/Win7Samp...
https://bugs.winehq.org/show_bug.cgi?id=52534
--- Comment #1 from Angelo winehq-bugs@angelohaller.com ---
Test binary: https://github.com/szanni/Windows-classic-samples/blob/main/Samples/Win7Samp...
Permalink should have been https://github.com/szanni/Windows-classic-samples/blob/e50d85b9604bf02a2a3a9...
https://bugs.winehq.org/show_bug.cgi?id=52534
--- Comment #2 from Angelo winehq-bugs@angelohaller.com --- Updated tester with more debug output:
https://github.com/szanni/Windows-classic-samples/blob/a670d65e47e399fe9f6dc...
Clearer instructions on how to reproduce:
1. Run a.exe included in this comment 2. Click `Item 1` 3. Hold down Shift and click `Item 5`
See the differences in the output log between Windows 7 and wine 7.1. LVN_ODSTATECHANGED does not get signaled on wine 7.1.
I actually discovered the FIXME in the LISTVIEW_SetGroupSelection function. I was looking at the LISTVIEW_AddGroupSelection which does actually work as intended.
Interestingly enough LVN_ODSTATECHANGED is emitted when holding down CONTROL+SHIFT as this uses the code path LISTVIEW_AddGroupSelection instead of LISTVIEW_SetGroupSelection. I can however not discern why there are two entirely different functions seemingly doing the very same thing - just very differently. I must be missing something here.
There is another difference `LVN_ITEMCHANGED: -1` that should be addressed in a different issue though.
https://bugs.winehq.org/show_bug.cgi?id=52534
--- Comment #3 from Angelo winehq-bugs@angelohaller.com --- Created attachment 71845 --> https://bugs.winehq.org/attachment.cgi?id=71845 Log output running a.exe on Windows 7
https://bugs.winehq.org/show_bug.cgi?id=52534
--- Comment #4 from Angelo winehq-bugs@angelohaller.com --- Created attachment 71846 --> https://bugs.winehq.org/attachment.cgi?id=71846 Log output running a.exe on wine 7.1
https://bugs.winehq.org/show_bug.cgi?id=52534
Zhiyi Zhang zzhang@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |zzhang@codeweavers.com Fixed by SHA1| |c73290154297e037d2f9181eba0 | |1759e1e13965f Resolution|--- |FIXED Status|UNCONFIRMED |RESOLVED
--- Comment #5 from Zhiyi Zhang zzhang@codeweavers.com --- Fixed by c73290154297e037d2f9181eba01759e1e13965f
https://bugs.winehq.org/show_bug.cgi?id=52534
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #6 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 7.15.
https://bugs.winehq.org/show_bug.cgi?id=52534
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |7.0.x
https://bugs.winehq.org/show_bug.cgi?id=52534
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|7.0.x |---
--- Comment #7 from Michael Stefaniuc mstefani@winehq.org --- Removing the 7.0.x milestone from bug fixes included in 7.0.2.