[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