-
a5d68b60
by Rémi Bernon at 2024-11-22T16:55:04+01:00
winex11: Introduce a new get_window_state_updates helper.
-
7abbcd16
by Rémi Bernon at 2024-11-22T16:55:04+01:00
winex11: Generate GravityNotify events instead of ConfigureNotify.
In order to better distinguish them from the ConfigureNotify events
sent by the WM.
Some window managers (openbox) send a sequence of ConfigureNotify to
top-level window frames when restoring them from minimized state, for
animation purposes, and they shouldn't be reflected on the Win32 side.
We do not need to update the Win32 state when top-level windows frame is
being moved, as the WM will send us a ConfigureNotify later and we only
need to keep track of its position for mouse event coordinates.
Handle the generated GravityNotify events for embedded windows only, to
match their Win32 state/config with their X state/config.
-
4b27077f
by Rémi Bernon at 2024-11-22T16:55:06+01:00
winex11: Avoid sending WM_WINDOWPOSCHANGING when applying window manager config.
It sometimes create a feedback loop, trying to override the window
manager config changes.
-
b84f533a
by Rémi Bernon at 2024-11-22T16:55:08+01:00
winex11: Delay window config request when restoring from fullscreen/maximized.
-
e6a1d6bf
by Rémi Bernon at 2024-11-22T16:55:08+01:00
user32/tests: Workaround a FVWM maximized window state bug.
This adds a todo_wine because it exhibits a FVWM bug: the window manager
doesn't keep the _NET_WM_STATE maximized bits, and instead simply resize
the windows.
The missing events don't matter too much, although they would prevent us
from serializing the updates with other changes, but it also makes it
impossible to figure whether the windows are actually maximized or not.
For visible windows, the message we send to the window manager simply
doesn't trigger any PropertyNotify event. The update is considered as
pending until the maximized style is cleared, and we never try to remove
the maximized state from the Win32 state.
For hidden windows, the _NET_WM_STATE property is changed directly, this
sticks and we receive a corresponding PropertyNotify event. However, as
soon as the window is mapped, FVWM removes the bits and we receive
another PropertyNotify event accordingly. This can only be considered as
a genuine state update, and we clear the maximized state from the Win32
side accordingly.
Previously, as the state updates were not re-entrant, the update didn't
trigger another window manager state/config update and the window stayed
in an inconsistent state, which somehow passed the tests.
As the updates are now re-entrant, the window manager is notified of the
maximized state removal, and resizes the window to its normal size, then
fails the tests.
-
0f1d999b
by Rémi Bernon at 2024-11-22T16:55:11+01:00
winex11: Update the Win32 window state outside of event handlers.
-
26f3edd4
by Rémi Bernon at 2024-11-22T16:55:11+01:00
winex11: Remove now unnecessary WindowPosChanged re-entry guards.