[gnome-builder] workbench: propagate focus to perspectives
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] workbench: propagate focus to perspectives
- Date: Mon, 19 Jun 2017 02:28:43 +0000 (UTC)
commit 3abaf0c60f9473dbbb817818ed61ed54abd4aa16
Author: Christian Hergert <chergert redhat com>
Date: Sun Jun 18 19:27:48 2017 -0700
workbench: propagate focus to perspectives
This can be handy to ensure we land our focus back on the perspective.
libide/editor/ide-editor-perspective.c | 12 ++++++++++++
libide/workbench/ide-workbench.c | 14 ++++++++++++++
2 files changed, 26 insertions(+), 0 deletions(-)
---
diff --git a/libide/editor/ide-editor-perspective.c b/libide/editor/ide-editor-perspective.c
index 99381c8..650da92 100644
--- a/libide/editor/ide-editor-perspective.c
+++ b/libide/editor/ide-editor-perspective.c
@@ -389,6 +389,16 @@ ide_editor_perspective_grid_empty (IdeEditorPerspective *self,
}
static void
+ide_editor_perspective_grab_focus (GtkWidget *widget)
+{
+ IdeEditorPerspective *self = (IdeEditorPerspective *)widget;
+
+ g_assert (IDE_IS_EDITOR_PERSPECTIVE (self));
+
+ gtk_widget_grab_focus (GTK_WIDGET (self->grid));
+}
+
+static void
ide_editor_perspective_get_property (GObject *object,
guint prop_id,
GValue *value,
@@ -417,6 +427,8 @@ ide_editor_perspective_class_init (IdeEditorPerspectiveClass *klass)
object_class->get_property = ide_editor_perspective_get_property;
object_class->finalize = ide_editor_perspective_finalize;
+ widget_class->grab_focus = ide_editor_perspective_grab_focus;
+
container_class->add = ide_editor_perspective_add;
gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/builder/ui/ide-editor-perspective.ui");
diff --git a/libide/workbench/ide-workbench.c b/libide/workbench/ide-workbench.c
index a264cdb..8d4063a 100644
--- a/libide/workbench/ide-workbench.c
+++ b/libide/workbench/ide-workbench.c
@@ -192,6 +192,19 @@ ide_workbench_delete_event (GtkWidget *widget,
}
static void
+ide_workbench_grab_focus (GtkWidget *widget)
+{
+ IdeWorkbench *self = (IdeWorkbench *)widget;
+ GtkWidget *child;
+
+ g_assert (IDE_IS_WORKBENCH (self));
+
+ child = gtk_stack_get_visible_child (self->perspectives_stack);
+ if (child != NULL)
+ gtk_widget_grab_focus (child);
+}
+
+static void
ide_workbench_constructed (GObject *object)
{
IdeWorkbench *self = (IdeWorkbench *)object;
@@ -299,6 +312,7 @@ ide_workbench_class_init (IdeWorkbenchClass *klass)
object_class->get_property = ide_workbench_get_property;
object_class->set_property = ide_workbench_set_property;
+ widget_class->grab_focus = ide_workbench_grab_focus;
widget_class->delete_event = ide_workbench_delete_event;
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]