[Spice-devel] [PATCH spice-gtk 09/11] Grab on the display too
Marc-André Lureau
marcandre.lureau at gmail.com
Thu Dec 8 06:12:56 PST 2011
Without this additional grab, the pointer grab was effective for the
whole application
---
gtk/spice-widget.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/gtk/spice-widget.c b/gtk/spice-widget.c
index 2cc1017..1fa54c3 100644
--- a/gtk/spice-widget.c
+++ b/gtk/spice-widget.c
@@ -537,6 +537,8 @@ static GdkGrabStatus do_pointer_grab(SpiceDisplay *display)
g_signal_emit(display, signals[SPICE_DISPLAY_MOUSE_GRAB], 0, true);
}
+ gtk_grab_add(GTK_WIDGET(display));
+
return status;
}
@@ -631,7 +633,10 @@ static void try_mouse_ungrab(SpiceDisplay *display)
return;
gdk_pointer_ungrab(GDK_CURRENT_TIME);
+ gtk_grab_remove(GTK_WIDGET(display));
+
d->mouse_grab_active = false;
+
update_mouse_pointer(display);
g_signal_emit(display, signals[SPICE_DISPLAY_MOUSE_GRAB], 0, false);
}
@@ -939,8 +944,13 @@ static gboolean leave_event(GtkWidget *widget, GdkEventCrossing *crossing G_GNUC
SpiceDisplayPrivate *d = SPICE_DISPLAY_GET_PRIVATE(display);
SPICE_DEBUG("%s", __FUNCTION__);
+
+ if (d->mouse_grab_active)
+ return true;
+
d->mouse_have_pointer = false;
try_keyboard_ungrab(display);
+
return true;
}
--
1.7.7.3
More information about the Spice-devel
mailing list