Bug 38024

Summary: regression: multiple devices: server mouse cannot escape a single window
Product: Spice Reporter: Alon Levy <alevy>
Component: spice-gtkAssignee: Spice Bug List <spice-bugs>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Alon Levy 2011-06-07 01:30:32 UTC
When running a winxp vm with two qxl pci devices, both enabled, not in fullscreen, mouse captured in one window, you cannot move the mouse to the other window. This is a regression compared to spicec.

How to reproduce:
1. start qemu with two devices (-vga qxl -device qxl)
2. install driver for both devices
3. enable second monitor
4. capture mouse in one monitor by clicking.
5. try to move the mouse to the second monitor

Expected results:
mouse moves to second monitor

Achieved results:
mouse stays captured in first monitor. Actually, it ""excapes"" the boundary of the monitor but then returns. The capture seems to be implemented differently compared to spicec on this respect as well.
Comment 1 Alon Levy 2011-06-07 01:32:06 UTC
Addentum: just noticed that dragging a window actually works across both windows (==guest monitors), but when you release the mouse button the mouse is whisked back to the starting monitor.
Comment 2 Marc-Andre Lureau 2014-11-03 01:44:31 UTC
argh, this was actually working, until I fixed it very recently in the last release with this:

-            !d->show_cursor) {
+            !d->show_cursor && d->mouse_grab_active) {

We need a session "grab-active"
Comment 3 Marc-Andre Lureau 2014-11-03 12:57:02 UTC
sent patches:
http://lists.freedesktop.org/archives/spice-devel/2014-November/017807.html
Comment 4 Marc-Andre Lureau 2014-11-10 10:39:33 UTC
commit 1032b94fd3c8597562fd029730b1f5590a3f8a72
Author: Marc-André Lureau <marcandre.lureau@redhat.com>
Date:   Mon Nov 3 13:50:43 2014 +0100

    gtk-session: add pointer-grabbed property

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.