spice not correctly handling cursor events at edge of guest screen
Description
I have found that a Spice console does not necessarily function as expected for certain features of a modern desktop environment, with respect to handling cursor events at the screen edge.
I have tested in a configuration of a guest and host both running the Cinnamon desktop environment under Linux Mint 21. I have discovered two sequences of events, supported by Cinnamon, relating to screen edge, that the Spice stack has not handled properly, in my observations.
The first problematic sequence of events is the one that invokes the tiling feature of the window manager. The intended behavior is that when a user moves a window to the edge of the screen, or precisely, when the user attempts to move the window past the edge, the window manager resizes the window to occupy the half of the screen fully bordering the target edge. In particular, once the cursor has been positioned at the screen edge but the drag operation has not yet been released, the window manager shades the target region (see screen capture). However, when occurring through the Spice stack, the release event, which occurs after the cursor has passed beyond the edge of the client window, is never processed by the guest console. The intermediary state involving the shaded region remains until the client window is again engaged by the cursor. For the effect to work as desired, the client must monitor the drag operation that initiated inside of the client window, and propagate the release event to the guest.
The second sequence of events is the one related to the display of panels configured for "auto hide", such that they are meant to be revealed when the cursor places "pressure" on the edge of the screen where the panel is hiding. Similar to the first type of event, the pressure is not processed by the client such that the guest display system would behave according to its design.
Both problems persist when the client is operated on the full screen, the same as in a window.
Environment
- Host OS: Linux Mint 21, kernel 6.0.1
- Guest OS: Linux Mint 21, kernel 5.15.0
- Host Desktop: Cinnamon 5.4.12
- Guest Desktop: Cinnamon 5.4.12
- QEMU version: 5.4.12
- Spice client: Virtual Machine Manager 4.0.0
- Spice agent version: 0.22.1-1