[gnome-builder/wip/chergert/perspective] libide: implement preferences action for workbench
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/perspective] libide: implement preferences action for workbench
- Date: Mon, 16 Nov 2015 05:31:35 +0000 (UTC)
commit 225099352b3678c3007b2c45cd06e046236266f9
Author: Christian Hergert <chergert redhat com>
Date: Sun Nov 15 21:31:29 2015 -0800
libide: implement preferences action for workbench
libide/greeter/ide-greeter-perspective.c | 7 +++++
libide/ide-application-actions.c | 31 ++++++++++++++--------
libide/ide-workbench.c | 7 ++---
libide/preferences/ide-preferences-perspective.c | 7 +++++
4 files changed, 37 insertions(+), 15 deletions(-)
---
diff --git a/libide/greeter/ide-greeter-perspective.c b/libide/greeter/ide-greeter-perspective.c
index 71b06e7..fc9d577 100644
--- a/libide/greeter/ide-greeter-perspective.c
+++ b/libide/greeter/ide-greeter-perspective.c
@@ -82,9 +82,16 @@ ide_greeter_perspective_get_actions (IdePerspective *perspective)
return g_object_ref (IDE_GREETER_PERSPECTIVE (perspective)->actions);
}
+static gchar *
+ide_greeter_perspective_get_id (IdePerspective *perspective)
+{
+ return g_strdup ("greeter");
+}
+
static void
ide_perspective_iface_init (IdePerspectiveInterface *iface)
{
+ iface->get_id = ide_greeter_perspective_get_id;
iface->get_actions = ide_greeter_perspective_get_actions;
iface->get_titlebar = ide_greeter_perspective_get_titlebar;
}
diff --git a/libide/ide-application-actions.c b/libide/ide-application-actions.c
index 0bd0970..ff61d79 100644
--- a/libide/ide-application-actions.c
+++ b/libide/ide-application-actions.c
@@ -34,28 +34,37 @@ ide_application_actions_preferences (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
-#if 0
IdeApplication *self = user_data;
+ GList *windows;
IDE_ENTRY;
g_assert (IDE_IS_APPLICATION (self));
- if (self->preferences_window == NULL)
+ /*
+ * TODO: Make this work at the greeter screen too.
+ */
+
+ windows = gtk_application_get_windows (GTK_APPLICATION (self));
+
+ for (; windows; windows = windows->next)
{
- IdePreferencesWindow *window;
+ GtkWindow *window = windows->data;
+ const gchar *name;
- window = g_object_new (IDE_TYPE_PREFERENCES_WINDOW,
- "type-hint", GDK_WINDOW_TYPE_HINT_DIALOG,
- "window-position", GTK_WIN_POS_CENTER,
- NULL);
- ide_set_weak_pointer (&self->preferences_window, window);
- }
+ if (!IDE_IS_WORKBENCH (window))
+ continue;
- gtk_window_present (GTK_WINDOW (self->preferences_window));
+ name = ide_workbench_get_visible_perspective_name (IDE_WORKBENCH (window));
+
+ if (!ide_str_equal0 (name, "greeter"))
+ {
+ ide_workbench_set_visible_perspective_name (IDE_WORKBENCH (window), "preferences");
+ IDE_EXIT;
+ }
+ }
IDE_EXIT;
-#endif
}
#if 0
diff --git a/libide/ide-workbench.c b/libide/ide-workbench.c
index 42bf745..5f00424 100644
--- a/libide/ide-workbench.c
+++ b/libide/ide-workbench.c
@@ -458,13 +458,12 @@ ide_workbench_get_perspective_by_name (IdeWorkbench *self,
IdePerspective *
ide_workbench_get_visible_perspective (IdeWorkbench *self)
{
- GtkWidget *visible_child;
-
g_return_val_if_fail (IDE_IS_WORKBENCH (self), NULL);
- visible_child = gtk_stack_get_visible_child (self->perspectives_stack);
+ if (gtk_stack_get_visible_child (self->top_stack) == GTK_WIDGET (self->greeter_perspective))
+ return IDE_PERSPECTIVE (self->greeter_perspective);
- return IDE_PERSPECTIVE (visible_child);
+ return IDE_PERSPECTIVE (gtk_stack_get_visible_child (self->perspectives_stack));
}
void
diff --git a/libide/preferences/ide-preferences-perspective.c
b/libide/preferences/ide-preferences-perspective.c
index bba8529..d734de1 100644
--- a/libide/preferences/ide-preferences-perspective.c
+++ b/libide/preferences/ide-preferences-perspective.c
@@ -784,6 +784,12 @@ ide_preferences_iface_init (IdePreferencesInterface *iface)
}
static gchar *
+ide_preferences_perspective_get_id (IdePerspective *perspective)
+{
+ return g_strdup ("preferences");
+}
+
+static gchar *
ide_preferences_perspective_get_title (IdePerspective *perspective)
{
return g_strdup (_("Preferences"));
@@ -814,6 +820,7 @@ ide_preferences_perspective_get_actions (IdePerspective *perspective)
static void
ide_perspective_iface_init (IdePerspectiveInterface *iface)
{
+ iface->get_id = ide_preferences_perspective_get_id;
iface->get_icon_name = ide_preferences_perspective_get_icon_name;
iface->get_title = ide_preferences_perspective_get_title;
iface->get_titlebar = ide_preferences_perspective_get_titlebar;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]