Fix the wayland side of https://bugs.winehq.org/show_bug.cgi?id=55336
### Exit menu key by default:
That's the actual behavior, any non-special key will exit the menu key, and be sent to the client.
I was also wondering if we should add `menu_sys_key = f10_key = 0;` when receiving a `WM_ACTIVATE` in `win32u/defwnd.c`'s `default_window_proc` but I guess not ?
### Fix repeated key for no reason:
For some reason when ALT is pressed, it is spammed and thus spams SYS_COMMAND. This fix that, but I don't know what I am doing here. I don't see any repeating key spamming with winex11 but I could be wrong. However alt/SYS_COMMAND should not be repeated.
That wasn't happening with winex11.drv.
### Fix release_all_keys modifier filtering:
That was the main reason why alt-tab leads to the menu key, NtUserGetAsyncKeyboardState also uses left and right system keys.
### Fix release_all_keys scan value:
This one is incomplete, the scan code or something else is broken, at least with the down arrow on a french azerty keyboard. Even though release_all_keys sends the input for the down arrow, it is not transmitted to NtUserTranslateMessage.
keyboard_handle_key send a key=28 and scan=0x150, but release_all_keys sends key=28 and scan=0x50. Winex11 sends 0x50, but internally NtUserTranslateMessage receives 0x150.
This results in the down arrow kept being repeated while being focused out, and after focusing in, pressing again the arrow is needed.
I tried changing things but ultimately it doesn't change anything.
Maybe NtUserMapVirtualKeyEx is broken or is it the handling of the keyboard layout ? Or is it actually keyboard_handle_key ?
Winex11 and winemac uses `if !(NtUserGetAsyncKeyboardState(state)) return;` but I guess here we don't need to as we want to release all keys even if it fails ?
--
v2: winewayland.drv: Fix release_all_keys scan value
winewayland.drv: Fix release_all_keys modifier filtering
server: Fix repeated key for no reason
https://gitlab.winehq.org/wine/wine/-/merge_requests/6199
Currently shell32 only transfers the plain icon for `Shell_NotifyIcon` calls, ignoring balloon icons. This patch allows transferring both images to explorer.exe tray.
--
v7: shell32: add support for balloon icon copying
https://gitlab.winehq.org/wine/wine/-/merge_requests/2875
> virtual monitor is different than physical monitor,it has no builtin resolution. it is a window on host. for example, wine explorer.exe /desktop=123x456 can also show. so it has no need for apply builtin mode.
Of course, the virtual monitor window doesn't have any real resolution. However, it's a virtual monitor, its purpose is to simulate a physical monitor. That's why we added a bunch of fake resolutions so that functions like ChangeDisplaySettings() can succeed. The initial resolution/size of the virtual monitor should be the one specified by the user, either via the registry or command line.
> we can chat by weixin, my weixinhao fan-wenjie
You can use #winehackers at libera IRC. So that others can see and maybe join the conversation.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6150#note_77734
Rémi Bernon (@rbernon) commented about dlls/winebus.sys/main.c:
> RtlEnterCriticalSection(&ext->cs);
> list_add_tail(&ext->reports, &report->entry);
>
> - if (!ext->collection_desc.ReportIDs[0].ReportID) last_report = ext->last_reports[0];
> + for ( i = 0; i < ext->collection_desc.CollectionDescLength; ++i )
> + {
> + HIDP_COLLECTION_DESC *desc = &ext->collection_desc.CollectionDesc[i];
> + for ( j = 0; j < ext->collection_desc.ReportIDsLength; ++j )
> + {
> + if (ext->collection_desc.ReportIDs[j].CollectionNumber != desc->CollectionNumber) continue;
> + if (!ext->collection_desc.ReportIDs[j].ReportID) last_report = ext->last_reports[0];
> else last_report = ext->last_reports[report_buf[0]];
> memcpy(last_report->buffer, report_buf, report_len);
> + break;
> + }
> + }
I'm not sure to understand this. Is it to cover the case where some of the TLC use report IDs while other don't, and I don't think that can happen?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6074#note_77776
The UK Kalender program was crashing when a new event was created as stated in the bug report. The fix is to create all the property sheet pages from the beginning instead of when they are selected.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54861
--
v6: comctl32/propsheet: Create pages with PSP_PREMATURE on initialization.
comctl32/tests: Add test for propsheet page creation when propsheet gets initialized.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6146
Adding PSN_QUERYINITIALFOCUS helped fix some focus issues with the property sheet in bug 54862. Previously the listview in the tab control did not get focus from the start when it should have.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54862
--
v10: comctl32: Add handling for PSN_QUERYINITIALFOCUS in prop.c.
comctl32/tests: Add test for PSN_QUERYINITIALFOCUS for the propsheet.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6145
Since LoadIconW returns NULL on an error anyway, we should try LoadIconW. This fixes a crash with the Affinity V2 installers.
--
v10: shell32: make SHGetStockIconInfo() attempt to set hIcon.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6189
> Please merge this. Like I previously explained I'm not interested in fighting over code, forcing anyone into doing something they don't want, or in endless and pointless ideological discussions.
>
> I'm now pretty much convinced that GStreamer is not a good choice as a backend because of the impedance mismatch and the amount of dogma that apparently comes with it. I will probably start looking into other options.
All else aside, there is no dogma about winegstreamer. As maintainer, I tried to use my experience working with the component to architect the best design that accommodates all of the necessary fixes and features. As reviewer, I seek to point out functional problems with any new patches. 5998 has some of these functional problems.
Fundamentally the question is one of expediency and correctness, not ideology. 5988 makes use of existing code to fix the same bugs as 5998 proposes to rewrite the entire DLL to fix, and it avoids the problems that 5998 introduces.
GStreamer is a poor fit in some ways, in particular its asynchronous nature and its use of callbacks from new Unix threads. For these reasons, I've never loved it. However, it is also a very good choice in some other ways: it is heavily developed, has extensive codec support, has a stable API, and the project leadership is very open to new APIs. The only other library I know of with extensive enough codec support is ffmpeg, which does *not* have a stable API. Between the two options, I believe that GStreamer is the better one, especially because it already exists and works well.
Moreover, those problems with GStreamer have already been solved, and I've also talked to the project leadership about extending GStreamer to solve them on the other side and simplify our code anyway.
Between (1) GStreamer and Wine as it exists now, (2) GStreamer with future extensions to simplify Wine code, and (3) writing the whole component from scratch in some other library, it is eminently much more expedient to choose the first option, perhaps with an eye to the second, than switching to some other library.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5340#note_77742
Because WINENV is limited (32767 bytes), and HOSTENV can be much larger,
a whitelisting approach is used to keep WINENV as small as possible.
Currently, only the following envvars are propagated from the host env to WINENV
WINEPATH, WINEPWD, WINEHOME, WINETEMP, WINETMP, WINEQT_, WINEVK_, WINEXDG_SESSION_TYPE
Moreover, the NIXENV (env for running wine processes - not applications) on the
host system is not produced from WINENV anymore, but the global ENV
is propagated to all wine processes and threads.
This might be an alternative approach to MR!5231, MR!6140, bug #56941
and should provide a more deterministic behaviour of wine, because unrelated
envvars do have no influence on the env for running windows applications.
Initial tests (winemine, notepad, cmd, etc) seem to run fine, but some envvars might need additional
consideration. XVDK_* was mentioned, WINE*, MESA_*, VK_*, QT_*, LIBGL_* are other suspects.
Moreover, this is my first merge request, so your feedback is highly appreciated.
--
v9: mmdevapi: Remove unused critical section from MMDevice.
iphlpapi: Add stub for SetCurrentThreadCompartmentId.
gdi32: Fix out-of-bounds write in EMR_ALPHABLEND handling.
kernel32/tests: Test ReadProcessMemory on PAGE_NOACCESS memory.
ntdll: Optimize NtReadVirtualMemory for in-process reads.
maintainers: Remove shdocvw from WebBrowser control section.
msvcrt: Reuse standard streams after they are closed.
jscript: Allow using MSHTML constructors in instanceof expressions.
mshtml: Use proper prototype names.
mshtml: Store name in dispex_data_t.
mshtml: Don't expose prototype properties directly from object instances.
mshtml: Add initial support for MSHTML prototype objects.
mshtml: Factor out init_dispatch_from_desc.
mshtml: Split ensure_dispex_info.
mshtml: Store vtbl in dispex_data_t.
mshtml: Add initial constructor implementation.
odbc32: Forward SQLGetInfo() to the Unicode version if needed.
odbc32: Forward SQLGetDescField() to the Unicode version if needed.
odbc32: Forward SQLGetDescRec() to the Unicode version if needed.
odbc32: Forward SQLGetDescField() to the Unicode version if needed.
odbc32: Forward SQLGetCursorName() to the Unicode version if needed.
odbc32: Forward SQLGetConnectOption() to the Unicode version if needed.
odbc32: Forward SQLGetConnectAttr() to the Unicode version if needed.
mmdevapi/tests: Add test for IAudioSessionEnumerator.
mmdevapi: Add implementation for IAudioSessionEnumerator.
mmdevapi: Return stub interface from ASM_GetSessionEnumerator().
jscript: Implement arguments.caller.
comctl32: Fix sorting for listview.
comctl32/tests: Add test for listview sorting order.
d3dx9/tests: Add some tests for D3DXEFFECT_DESC fields.
propsys: Initially implement VariantToPropVariant.
propsys/tests: Add tests for VariantToPropVariant.
propsys: Add stubs for variant conversion functions.
win32u: Merge drivers CreateLayeredWindow with CreateWindowSurface.
win32u: Avoid sending WM_PAINT to layered window surfaces.
winemac: Rely on win32u previous surface reuse.
winemac: Remove unnecessary old window surface bounds copy.
winewayland: Rely on win32u previous surface reuse.
wineandroid: Rely on win32u previous surface reuse.
winex11: Rely on win32u previous surface reuse.
win32u: Simplify offscreen surface previous surface reuse check.
odbc32: In get_drivers simplify loop condition.
odbc32: In get_drivers prevent memory leak in error case (coverity).
nsiproxy.sys: Only get owning pid when needed in udp_endpoint_enumerate_all().
nsiproxy.sys: Fix the build on non-Apple, non-Linux systems.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6166