When the child window and the parent window are no longer in the same process,
the parent window shadow does not update the vis rgn of the child window and
modify the WS_VISIBLE style of the child window. so we need to update the vis
rgn when another process gets the DC of the child window.
Signed-off-by: Jiajin Cui <cuijiajin(a)uniontech.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1306
MR !607 was trying to fix an issue with Life Is Strange Remastered, but
although it fixed some race conditions with presentation end, the issue
it was trying to fix is still there.
The game calls IMFMediaSession_Stop while the presentation is ending, expects
that command to quickly execute, interrupting the presentation end and
emitting a MESessionStopped event instead of the MESessionEnded.
Delaying the Stop command and emitting the MESessionEnded event breaks
the game assumptions and it crashes.
--
v4: mf: Discard end of presentation on IMFMediaSession_Stop.
mf/tests: Test IMFMediaSession_Stop command near presentation end.
mf/tests: Test Start / Pause / Stop IMFMEdiaSession events.
mf/tests: Split wait_media_event helper into wait_next_media_event.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1710
Implements navigation bar featuring:
- back/forward buttons
- go up button
- address crumbs
- hides crumbs when there's not enough space to display all of them
- always shows at least 2 crumbs
- truncating them if needed
- first crumb is at least 56px
- aligns label to the left if truncated
- right clicking on the crumb, or free space, opens a menu with `Copy address as text` and `Edit address` options
- reuses existing crumbs to avoid some flickering
- overflow menu
- ~~first crumb is always moved here~~
- removes the split, if there are no items in the menu
- hidden crumbs are moved here
- left ~~or right~~ click on the button starts address editing
- address edit
- accepts an existing path
- expands environment variables, e.g. `%APPDATA%\Microsoft` -> `C:\users\%USERNAME%\AppData\Roaming\Microsoft`
- errors with a `MessageBox` on nonexistent paths
- refresh button
- changes into go to button when editing address
- DPI scaling
Screenshots:
![navbar-crumbs-classic](/uploads/8c9a806b57f8e456fcbfd3cbc1ef3bb7/navbar-crumbs-classic.png)
![navbar-crumbs-light](/uploads/9c8a7acf9b55ae5ac182219edd45b65d/navbar-crumbs-light.png)
![navbar-edit-classic](/uploads/f68309bbc9200a8d8d4e3cd692179409/navbar-edit-classic.png)
![navbar-edit-light](/uploads/6798e79e6d2498a052b0ecbc2545c6e4/navbar-edit-light.png)
![navbar-120dpi-classic](/uploads/72abee382ab6171ff9c1b99a9065c845/navbar-120dpi-classic.png)
![navbar-120dpi-light](/uploads/538a030bc2028f8654d6c35d6f2825dd/navbar-120dpi-light.png)
Remaining issues:
- crumbs not lighting up when hovered sometimes
- can be observed in current file dialog, hovering over dropdown arrow of a file type fixes it for a moment
- crumbs flickering on address change sometimes
- mostly when there's not enough space to display all of them
- `DeferWindowPos` doesn't seem to be atomic in Wine, presumably is in native Windows?
- unexpected address conversion for some PIDLs
- e.g. `Desktop` -> `C:\users\%USERNAME%\Desktop`, which is an entirely different location
- or `My Computer` into an empty string
- known folders are not handled by address edit, e.g. `Desktop`, `My Computer`
- icons are not DPI scaled
- while writing this:
```
0024:fixme:bitmap:NtGdiCreateBitmap planes = 0
0024:err:system:user_check_not_lock BUG: holding USER lock
wine/dlls/win32u/sysparams.c:396: user_check_not_lock: Assertion `0' failed.
wine: Assertion failed at address F7FF8549 (thread 0024), starting debugger...
```
- can't reproduce, happened when clicking on an item in overflow menu
- race condition? cosmic ray?
Addresses following bugs:
- https://bugs.winehq.org/show_bug.cgi?id=29912
- https://bugs.winehq.org/show_bug.cgi?id=50338
- https://bugs.winehq.org/show_bug.cgi?id=51855 (partially? no search box)
--
v13: comdlg32: Add Ctrl+Backspace delete word to IFileDialog address edit.
comdlg32: Use path word break in IFileDialog address edit.
comctl32: Fix PathWordBreakProc.
comdlg32: Keep IExplorerBrowser in IFileDialog focused after Backspace.
fixup: comdlg32: Add address edit to IFileDialog navigation bar.
comdlg32: Add refresh/go to button to IFileDialog navigation bar.
comdlg32: Add address edit to IFileDialog navigation bar.
comdlg32: Add breadcrumb overflow menu to IFileDialog navigation bar.
comdlg32: Add address breadcrumbs to IFileDialog navigation bar.
comdlg32: Add go up button to IFileDialog navigation bar.
comdlg32: Add IFileDialog navigation bar.
comdlg32: Enable visual styles when showing IFileDialog.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1857
--
v3: d2d1/tests: Test IsSupported() for bitmap render targets.
d2d1: Implement d2d_bitmap_render_target_IsSupported().
d2d1/tests: Test IsSupported() for DC render targets.
d2d1: Implement d2d_dc_render_target_IsSupported().
d2d1/tests: Test IsSupported() for hwnd render targets.
d2d1: Implement d2d_hwnd_render_target_IsSupported().
https://gitlab.winehq.org/wine/wine/-/merge_requests/811
Rationale:
- currently, winetest is built either as a 32bit exec or a 64bit exec,
containaing a bunch of tests of same bitness.
- there's no simple support for having parent process in one bitness,
and child process in a different bitness.
- lots of cases are not covered in ntdll, kernel32 and kernelbase tests.
- there are here and there a couple of tweaks to workaround this,
but nothing a bit solid.
Attached is a proposal to extend winetest to support better these
use cases:
- the idea is to add an extra-option to winetest.exe (64bit)
passing the path to the corresponding winetest.exe (32bit).
- when running test X (64bit), the path to corresponding test X (32bit)
will be passed to test X (64 bit), allowing it to trigger test
with test X (32bit).
- nothing more is provided: it's up to the test designer to decide
whether to use the 32bit child (and to adapt potentially the test)
to cope with the difference in bitness between parent and child.
- this can be used either in current wow64 setup, and also in
multi-arch wow64 setup (just need to change the patch to 32bit
winetest.exe)
There's an example of such test at the end of the serie.
Comments, ideas welcomed. And especially if it's something worth
continuing.
Note:
- this is first shot at it, it should be improved (especially in
ensuring that the 32bit/64bit pair is correct).
A+
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2002
This makes one able to see what is being built as PE and UNIX code and shows 'LINK' for linking in silent configuration `--enable-silent-rules`.
For example:
```
make: Entering directory '/home/bernhard/Documents/programming/builds/wine/x64'
UNIX dlls/windows.media.speech/unixlib.o
PE dlls/windows.media.speech/x86_64-windows/async.o
PE dlls/windows.media.speech/x86_64-windows/main.o
PE dlls/windows.media.speech/x86_64-windows/recognizer.o
PE dlls/windows.media.speech/x86_64-windows/event_handlers.o
PE dlls/windows.media.speech/x86_64-windows/listconstraint.o
PE dlls/windows.media.speech/x86_64-windows/synthesizer.o
PE dlls/windows.media.speech/x86_64-windows/vector.o
WIDL dlls/windows.media.speech/x86_64-windows/classes_r.res
LINK dlls/windows.media.speech/x86_64-windows/windows.media.speech.dll
LINK dlls/windows.media.speech/windows.media.speech.so
Wine build complete.
```
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2241