[virt-tools-list] [PATCH virt-viewer] Allow to use numpad accelerators for zoom

Pavel Grunt pgrunt at redhat.com
Mon Feb 2 09:04:52 UTC 2015


NACK, It doesn't work in Gnome Shell

----- Original Message -----
> 
> Resolves https://bugzilla.redhat.com/show_bug.cgi?id=921326
> ---
>  src/virt-gtk-compat.h    |  3 +++
>  src/virt-viewer-window.c | 28 ++++++++++++++++++++++++++++
>  2 files changed, 31 insertions(+)
> 
> diff --git a/src/virt-gtk-compat.h b/src/virt-gtk-compat.h
> index 110c17a..99965ff 100644
> --- a/src/virt-gtk-compat.h
> +++ b/src/virt-gtk-compat.h
> @@ -57,6 +57,9 @@ G_BEGIN_DECLS
>  #define GDK_0 GDK_KEY_0
>  #define GDK_plus GDK_KEY_plus
>  #define GDK_minus GDK_KEY_minus
> +#define GDK_KP_0 GDK_KEY_KP_0
> +#define GDK_KP_Add GDK_KEY_KP_Add
> +#define GDK_KP_Subtract GDK_KEY_KP_Subtract
>  #endif
>  
>  #if !GTK_CHECK_VERSION(3, 0, 0)
> diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
> index c5f7c75..62f0d86 100644
> --- a/src/virt-viewer-window.c
> +++ b/src/virt-viewer-window.c
> @@ -283,6 +283,33 @@ can_activate_cb (GtkWidget *widget
> G_GNUC_UNUSED,
>  }
>  
>  static void
> +numpad_closure (VirtViewerWindow *self,
> +                GObject *acceleratable,
> +                guint keyval)
> +{
> +    if (keyval == GDK_KP_0)
> +
>        virt_viewer_window_menu_view_zoom_reset(GTK_WIDGET(acceleratable),
> self);
> +    else if (keyval == GDK_KP_Add)
> +
>        virt_viewer_window_menu_view_zoom_in(GTK_WIDGET(acceleratable),
> self);
> +    else if (keyval == GDK_KP_Subtract)
> +
>        virt_viewer_window_menu_view_zoom_out(GTK_WIDGET(acceleratable),
> self);
> +}
> +
> +static void
> +add_numpad_accelerators (VirtViewerWindow *self)
> +{
> +    VirtViewerWindowPrivate *priv = self->priv;
> +    g_return_if_fail(VIRT_VIEWER_IS_WINDOW(self));
> +
> +    gtk_accel_group_connect(priv->accel_group, GDK_KP_0,
> GDK_CONTROL_MASK, GTK_ACCEL_MASK,
> +
>                            g_cclosure_new_object_swap(G_CALLBACK(numpad_closure),
> G_OBJECT(self)));
> +    gtk_accel_group_connect(priv->accel_group, GDK_KP_Add,
> GDK_CONTROL_MASK, GTK_ACCEL_MASK,
> +
>                            g_cclosure_new_object_swap(G_CALLBACK(numpad_closure),
> G_OBJECT(self)));
> +    gtk_accel_group_connect(priv->accel_group, GDK_KP_Subtract,
> GDK_CONTROL_MASK, GTK_ACCEL_MASK,
> +
>                            g_cclosure_new_object_swap(G_CALLBACK(numpad_closure),
> G_OBJECT(self)));
> +}
> +
> +static void
>  virt_viewer_window_init (VirtViewerWindow *self)
>  {
>      VirtViewerWindowPrivate *priv;
> @@ -305,6 +332,7 @@ virt_viewer_window_init (VirtViewerWindow *self)
>      gtk_builder_connect_signals(priv->builder, self);
>  
>      priv->accel_group =
>      GTK_ACCEL_GROUP(gtk_builder_get_object(priv->builder,
>      "accelgroup"));
> +    add_numpad_accelerators(self);
>  
>      /* make sure they can be activated even if the menu item is not
>      visible */
>      g_signal_connect(gtk_builder_get_object(priv->builder,
>      "menu-view-fullscreen"),
> --
> 1.9.3
> 
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
> 




More information about the virt-tools-list mailing list