[virt-tools-list] [PATCH virt-viewer 2/9] Add VirtViewerApp:enable-accel property

Marc-André Lureau marcandre.lureau at gmail.com
Wed Feb 15 00:29:53 UTC 2012


---
 src/virt-viewer-app.c    |   28 ++++++++++++++++++++++++++++
 src/virt-viewer-app.h    |    1 +
 src/virt-viewer-window.c |    6 ++++++
 3 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
index 985edca..0ba57b6 100644
--- a/src/virt-viewer-app.c
+++ b/src/virt-viewer-app.c
@@ -111,6 +111,7 @@ struct _VirtViewerAppPrivate {
 
     gboolean direct;
     gboolean verbose;
+    gboolean enable_accel;
     gboolean authretry;
     gboolean started;
     gboolean fullscreen;
@@ -150,6 +151,7 @@ enum {
     PROP_GURI,
     PROP_FULLSCREEN,
     PROP_TITLE,
+    PROP_ENABLE_ACCEL,
 };
 
 enum {
@@ -1121,6 +1123,10 @@ virt_viewer_app_get_property (GObject *object, guint property_id,
         g_value_set_string(value, priv->title);
         break;
 
+    case PROP_ENABLE_ACCEL:
+        g_value_set_boolean(value, virt_viewer_app_get_enable_accel(self));
+        break;
+
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
     }
@@ -1165,6 +1171,10 @@ virt_viewer_app_set_property (GObject *object, guint property_id,
         virt_viewer_app_set_all_window_subtitles(self);
         break;
 
+    case PROP_ENABLE_ACCEL:
+        priv->enable_accel = g_value_get_boolean(value);
+        break;
+
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
     }
@@ -1342,6 +1352,16 @@ virt_viewer_app_class_init (VirtViewerAppClass *klass)
                                                         G_PARAM_WRITABLE |
                                                         G_PARAM_STATIC_STRINGS));
 
+    g_object_class_install_property(object_class,
+                                    PROP_ENABLE_ACCEL,
+                                    g_param_spec_boolean("enable-accel",
+                                                         "Enable Accel",
+                                                         "Enable accelerators",
+                                                         FALSE,
+                                                         G_PARAM_CONSTRUCT |
+                                                         G_PARAM_READWRITE |
+                                                         G_PARAM_STATIC_STRINGS));
+
     signals[SIGNAL_WINDOW_ADDED] =
         g_signal_new("window-added",
                      G_OBJECT_CLASS_TYPE(object_class),
@@ -1638,6 +1658,14 @@ virt_viewer_app_show_display(VirtViewerApp *self)
     g_hash_table_foreach(self->priv->windows, show_display_cb, self);
 }
 
+gboolean
+virt_viewer_app_get_enable_accel(VirtViewerApp *self)
+{
+    g_return_val_if_fail(VIRT_VIEWER_IS_APP(self), FALSE);
+
+    return self->priv->enable_accel;
+}
+
 GHashTable*
 virt_viewer_app_get_windows(VirtViewerApp *self)
 {
diff --git a/src/virt-viewer-app.h b/src/virt-viewer-app.h
index 4022ddf..52f43ea 100644
--- a/src/virt-viewer-app.h
+++ b/src/virt-viewer-app.h
@@ -94,6 +94,7 @@ GHashTable* virt_viewer_app_get_windows(VirtViewerApp *self);
 
 void virt_viewer_app_usb_device_selection(VirtViewerApp   *self,
                                           GtkWindow       *parent);
+gboolean virt_viewer_app_get_enable_accel(VirtViewerApp *self);
 
 G_END_DECLS
 
diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
index 0b1d397..fd08fcb 100644
--- a/src/virt-viewer-window.c
+++ b/src/virt-viewer-window.c
@@ -587,6 +587,9 @@ virt_viewer_window_disable_modifiers(VirtViewerWindow *self)
 
     /* This stops global accelerators like Ctrl+Q == Quit */
     for (accels = priv->accel_list ; accels ; accels = accels->next) {
+        if (virt_viewer_app_get_enable_accel(priv->app) &&
+            priv->accel_group == accels->data)
+            continue;
         gtk_window_remove_accel_group(GTK_WINDOW(priv->window), accels->data);
     }
 
@@ -620,6 +623,9 @@ virt_viewer_window_enable_modifiers(VirtViewerWindow *self)
 
     /* This allows global accelerators like Ctrl+Q == Quit */
     for (accels = priv->accel_list ; accels ; accels = accels->next) {
+        if (virt_viewer_app_get_enable_accel(priv->app) &&
+            priv->accel_group == accels->data)
+            continue;
         gtk_window_add_accel_group(GTK_WINDOW(priv->window), accels->data);
     }
 
-- 
1.7.7.6




More information about the virt-tools-list mailing list