[gnome-builder] gui: add helper to get workbench from context
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] gui: add helper to get workbench from context
- Date: Thu, 14 Mar 2019 17:16:29 +0000 (UTC)
commit 5bb7b1da914b007dc1751c5242d07b4c79d0db09
Author: Christian Hergert <chergert redhat com>
Date: Wed Mar 13 23:19:14 2019 -0700
gui: add helper to get workbench from context
This private function can be used to get a workbench from a
given context pointer. In 3.34, we can probably make it public
but I don't want to add new API during patch releases.
src/libide/gui/ide-gui-private.h | 1 +
src/libide/gui/ide-workbench.c | 24 ++++++++++++++++++++++++
2 files changed, 25 insertions(+)
---
diff --git a/src/libide/gui/ide-gui-private.h b/src/libide/gui/ide-gui-private.h
index 634312a3d..a400d0eb8 100644
--- a/src/libide/gui/ide-gui-private.h
+++ b/src/libide/gui/ide-gui-private.h
@@ -93,6 +93,7 @@ void _ide_workspace_set_context (IdeWorkspace *workspace,
IdeContext *context);
gboolean _ide_workbench_is_last_workspace (IdeWorkbench *self,
IdeWorkspace *workspace);
+IdeWorkbench *_ide_workbench_from_context (IdeContext *context);
void _ide_header_bar_init_shortcuts (IdeHeaderBar *self);
void _ide_header_bar_show_menu (IdeHeaderBar *self);
void _ide_gtk_progress_bar_start_pulsing (GtkProgressBar *progress);
diff --git a/src/libide/gui/ide-workbench.c b/src/libide/gui/ide-workbench.c
index cdec87604..4690d914b 100644
--- a/src/libide/gui/ide-workbench.c
+++ b/src/libide/gui/ide-workbench.c
@@ -171,6 +171,24 @@ ignore_error (GError *error)
g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED);
}
+/**
+ * ide_workbench_from_context:
+ * @context: an #IdeContext
+ *
+ * Helper to get the #IdeWorkbench for a given context.
+ *
+ * Returns: (transfer none) (nullable): an #IdeWorkbench or %NULL
+ *
+ * Since: 3.34
+ */
+IdeWorkbench *
+_ide_workbench_from_context (IdeContext *context)
+{
+ g_return_val_if_fail (IDE_IS_CONTEXT (context), NULL);
+
+ return IDE_WORKBENCH (g_object_get_data (G_OBJECT (context), "WORKBENCH"));
+}
+
static void
ide_workbench_set_context (IdeWorkbench *self,
IdeContext *context)
@@ -185,6 +203,9 @@ ide_workbench_set_context (IdeWorkbench *self,
if (context == NULL)
context = new_context = ide_context_new ();
+ /* backpointer for the workbench */
+ g_object_set_data (G_OBJECT (context), "WORKBENCH", self);
+
g_set_object (&self->context, context);
/* Make sure we have access to buffer manager early */
@@ -366,6 +387,9 @@ ide_workbench_finalize (GObject *object)
g_assert (IDE_IS_MAIN_THREAD ());
+ if (self->context != NULL)
+ g_object_set_data (G_OBJECT (self->context), "WORKBENCH", NULL);
+
g_clear_object (&self->build_system);
g_clear_object (&self->vcs);
g_clear_object (&self->search_engine);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]