Compositors send a "done" event after every text-input commit, even if
the reported state (preedit etc) hasn't changed. Acting on such events
is at best wasteful, but can additionally lead to incorrect IME related
effects (e.g., deleting the currently selected text), so ignore them,
similarly to what Qt and GTK do.
The first commit performs some state related cleanups.
--
This solves an IME problem I have been experiencing with compositors that support text-input-v3 (e.g., kwin).
1. Run notepad
2. Write some text
3. Try to select text
Expected result: text is selected
Actual result: text is deleted
What happens is that while the user is selecting text the driver gets a series of `SetIMECompositionRect` callback which cause a series of text-input-v3 `set_cursor_rectangle`-`commit` requests. These `commit`s elicit `done` events from the compositor with no state changes, which we interpret as "clear the composition string" (and by extension the active selection), because that's what such states normally means, and forward them to windows IME.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8196
If the "Properties" button is clicked in the printdlg it opens the print properties dlg. The problem is the values set in the properties dlg don't get passed through correctly to the final printing stage. This prevents properties like duplex and page size from working.
--
v2: comdlg32: Don't use a shadow devmode structure in PrintDlgA.
comdlg32/tests: Add tests for changing devmode properties in the hook procedure for PrintDlgA.
comdlg32: Don't use a shadow devmode structure in PrintDlgW.
comdlg32/tests: Add tests for changing devmode properties in the hook procedure for PrintDlgW.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8220
Wine applications crash in VNC/headless environments due to invalid all-zero monitor coordinates.
The root cause is:
- Environment Issue: VNC systems report all displays as RR_Disconnected
- Faulty Fallback: Wine incorrectly reverts to legacy XRandR 1.0 API when no "connected" displays are detected
- API Incompatibility: Modern XRandR 1.6 doesn't support Wine's XRandR 1.0 implementation, causing XRRSizes() to return empty display modes
- Uninitialized Data: This leaves critical display fields (dmPelsWidth/Height) at initialization value 0
--
v2: winex11: handle fallback display modes when XRandR fails
server: prevent division by zero in coordinate mapping
https://gitlab.winehq.org/wine/wine/-/merge_requests/8216
Wine applications crash in VNC/headless environments due to invalid all-zero monitor coordinates.
The root cause is:
Environment Issue: VNC systems report all displays as RR_Disconnected
Faulty Fallback: Wine incorrectly reverts to legacy XRandR 1.0 API when no "connected" displays are detected
API Incompatibility: Modern XRandR 1.6 doesn't support Wine's XRandR 1.0 implementation, causing XRRSizes() to return empty display modes
Uninitialized Data: This leaves critical display fields (dmPelsWidth/Height) at initialization value 0
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8216