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@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list