[Spice-devel] [PATCH spice-gtk 1/3] windows: clip pointer when grabbed, so it stays inside widget
Hans de Goede
hdegoede at redhat.com
Tue Dec 13 14:33:56 PST 2011
ACk series
On 12/13/2011 11:20 PM, Marc-André Lureau wrote:
> ---
> gtk/spice-widget.c | 16 +++++++++++++++-
> 1 files changed, 15 insertions(+), 1 deletions(-)
>
> diff --git a/gtk/spice-widget.c b/gtk/spice-widget.c
> index f5be849..83339e3 100644
> --- a/gtk/spice-widget.c
> +++ b/gtk/spice-widget.c
> @@ -554,7 +554,18 @@ static GdkGrabStatus do_pointer_grab(SpiceDisplay *display)
> d->mouse_grab_active = true;
> g_signal_emit(display, signals[SPICE_DISPLAY_MOUSE_GRAB], 0, true);
> }
> -
> +#ifdef WIN32
> + {
> + RECT client_rect;
> + POINT origin;
> +
> + origin.x = origin.y = 0;
> + ClientToScreen(focus_window,&origin);
> + GetClientRect(focus_window,&client_rect);
> + OffsetRect(&client_rect, origin.x, origin.y);
> + ClipCursor(&client_rect);
> + }
> +#endif
> gtk_grab_add(GTK_WIDGET(display));
>
> gdk_cursor_unref(blank);
> @@ -652,6 +663,9 @@ static void try_mouse_ungrab(SpiceDisplay *display)
>
> gdk_pointer_ungrab(GDK_CURRENT_TIME);
> gtk_grab_remove(GTK_WIDGET(display));
> +#ifdef WIN32
> + ClipCursor(NULL);
> +#endif
>
> d->mouse_grab_active = false;
>
More information about the Spice-devel
mailing list