https://bugs.winehq.org/show_bug.cgi?id=50743
Bug ID: 50743 Summary: .NET Core WPF applications with layered windows do not initially render Product: Wine Version: 6.3 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: winex11.drv Assignee: wine-bugs@winehq.org Reporter: madewokherd@gmail.com Distribution: ---
Found while working on WPF in Wine Mono. I've committed a work-around to Wine Mono (not yet in a release), but the bug is present in .NET Core as well.
For any application using a WPF window with AllowsTransparency set to true (which makes it a layered window), the window's contents are initially an opaque black fill. Fully transparent areas are still transparent. If part of the window redraws (such as from a hover effect), the refreshed area draws correctly.
I'm working on uploading a self-contained test case. Unfortunately, the archive exceeds the file size limit.
The work-around in Wine Mono is to redraw the entire window in response to WM_WINDOWPOSCHANGED messages.
The code that controls this can be found here: https://github.com/dotnet/wpf/blob/release/3.1/src/Microsoft.DotNet.Wpf/src/...
There are a lot of cases where they redraw, but the relevant ones here are probably WM_SIZE and WM_SHOWWINDOW.
I tried the test program in CrossOver Mac 20, and it rendered correctly. This makes me think it's an X11-specific issue, but it could also be related to version difference.