[gnome-builder/wip/chergert/merge-shortcuts] workbench: dispatch key-press-event via shortcut engine



commit 23ae633b9e787c5c1a7da8564cdab3a14d269f68
Author: Christian Hergert <chergert redhat com>
Date:   Mon May 22 19:28:15 2017 -0700

    workbench: dispatch key-press-event via shortcut engine

 libide/workbench/ide-workbench-private.h |    3 +++
 libide/workbench/ide-workbench.c         |   17 +++++++++++++++++
 2 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/libide/workbench/ide-workbench-private.h b/libide/workbench/ide-workbench-private.h
index f761168..60fc859 100644
--- a/libide/workbench/ide-workbench-private.h
+++ b/libide/workbench/ide-workbench-private.h
@@ -21,6 +21,8 @@
 
 #include <libpeas/peas.h>
 
+#include "shortcuts/ide-shortcut-controller.h"
+#include "shortcuts/ide-shortcut-manager.h"
 #include "workbench/ide-perspective.h"
 #include "workbench/ide-perspective-menu-button.h"
 #include "workbench/ide-workbench.h"
@@ -37,6 +39,7 @@ struct _IdeWorkbench
   guint                      early_perspectives_removed : 1;
   guint                      did_initial_editor_transition : 1;
 
+  IdeShortcutController     *controller;
   IdeContext                *context;
   GCancellable              *cancellable;
   PeasExtensionSet          *addins;
diff --git a/libide/workbench/ide-workbench.c b/libide/workbench/ide-workbench.c
index dc92319..961cc57 100644
--- a/libide/workbench/ide-workbench.c
+++ b/libide/workbench/ide-workbench.c
@@ -191,6 +191,21 @@ ide_workbench_delete_event (GtkWidget   *widget,
   return GDK_EVENT_PROPAGATE;
 }
 
+static gboolean
+ide_workbench_key_press_event (GtkWidget   *widget,
+                               GdkEventKey *event)
+{
+  IdeWorkbench *self = (IdeWorkbench *)widget;
+
+  g_assert (IDE_IS_WORKBENCH (self));
+  g_assert (event != NULL);
+
+  if (ide_shortcut_manager_handle_event (NULL, event, widget))
+    return GDK_EVENT_STOP;
+
+  return GTK_WIDGET_CLASS (ide_workbench_parent_class)->key_press_event (widget, event);
+}
+
 static void
 ide_workbench_constructed (GObject *object)
 {
@@ -300,6 +315,7 @@ ide_workbench_class_init (IdeWorkbenchClass *klass)
   object_class->set_property = ide_workbench_set_property;
 
   widget_class->delete_event = ide_workbench_delete_event;
+  widget_class->key_press_event = ide_workbench_key_press_event;
 
   /**
    * IdeWorkbench:context:
@@ -421,6 +437,7 @@ ide_workbench_init (IdeWorkbench *self)
 
   gtk_widget_init_template (GTK_WIDGET (self));
 
+  self->controller = ide_shortcut_controller_new (GTK_WIDGET (self));
   self->perspectives = g_list_store_new (IDE_TYPE_PERSPECTIVE);
 
   ide_window_settings_register (GTK_WINDOW (self));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]