[gnome-builder/wip/gtk4-port] libide/gui: add helper to get page position
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/gtk4-port] libide/gui: add helper to get page position
- Date: Thu, 7 Apr 2022 21:46:02 +0000 (UTC)
commit 719b2b4c7a9e242ceee9497b48b36849dea845f8
Author: Christian Hergert <chergert redhat com>
Date: Thu Apr 7 14:45:55 2022 -0700
libide/gui: add helper to get page position
src/libide/gui/ide-page.c | 40 ++++++++++++++++++++++++++++++++++++
src/libide/gui/ide-page.h | 52 +++++++++++++++++++++++++----------------------
2 files changed, 68 insertions(+), 24 deletions(-)
---
diff --git a/src/libide/gui/ide-page.c b/src/libide/gui/ide-page.c
index eec130d86..89cb30be1 100644
--- a/src/libide/gui/ide-page.c
+++ b/src/libide/gui/ide-page.c
@@ -559,3 +559,43 @@ ide_page_set_progress (IdePage *self,
priv->progress_bar, "fraction",
G_BINDING_SYNC_CREATE);
}
+
+/**
+ * ide_page_get_position:
+ * @self: a #IdePage
+ *
+ * Gets the position of a page within the workspace.
+ *
+ * Returns: (transfer full) (nullable): an #IdePanelPosition or %NULL
+ * if the page is not rooted.
+ */
+IdePanelPosition *
+ide_page_get_position (IdePage *self)
+{
+ IdePanelPosition *position;
+ GtkWidget *frame;
+ guint n_pages;
+
+ g_return_val_if_fail (IDE_IS_PAGE (self), NULL);
+
+ if (!(frame = gtk_widget_get_ancestor (GTK_WIDGET (self), IDE_TYPE_FRAME)))
+ return NULL;
+
+ if (!(position = ide_frame_get_position (IDE_FRAME (frame))))
+ return NULL;
+
+ n_pages = panel_frame_get_n_pages (PANEL_FRAME (frame));
+
+ for (guint i = 0; i < n_pages; i++)
+ {
+ if (panel_frame_get_page (PANEL_FRAME (frame), i) == PANEL_WIDGET (self))
+ {
+ ide_panel_position_set_depth (position, i);
+ return position;
+ }
+ }
+
+ g_critical ("Failed to find page within frame");
+
+ return position;
+}
diff --git a/src/libide/gui/ide-page.h b/src/libide/gui/ide-page.h
index 427c32049..b708a163e 100644
--- a/src/libide/gui/ide-page.h
+++ b/src/libide/gui/ide-page.h
@@ -28,6 +28,8 @@
#include <libide-core.h>
+#include "ide-panel-position.h"
+
G_BEGIN_DECLS
#define IDE_TYPE_PAGE (ide_page_get_type())
@@ -57,41 +59,43 @@ struct _IdePageClass
};
IDE_AVAILABLE_IN_ALL
-gboolean ide_page_get_can_split (IdePage *self);
+gboolean ide_page_get_can_split (IdePage *self);
+IDE_AVAILABLE_IN_ALL
+void ide_page_set_can_split (IdePage *self,
+ gboolean can_split);
IDE_AVAILABLE_IN_ALL
-void ide_page_set_can_split (IdePage *self,
- gboolean can_split);
+IdePage *ide_page_create_split (IdePage *self);
IDE_AVAILABLE_IN_ALL
-IdePage *ide_page_create_split (IdePage *self);
+gboolean ide_page_get_failed (IdePage *self);
IDE_AVAILABLE_IN_ALL
-gboolean ide_page_get_failed (IdePage *self);
+void ide_page_set_failed (IdePage *self,
+ gboolean failed);
IDE_AVAILABLE_IN_ALL
-void ide_page_set_failed (IdePage *self,
- gboolean failed);
+const gchar *ide_page_get_menu_id (IdePage *self);
IDE_AVAILABLE_IN_ALL
-const gchar *ide_page_get_menu_id (IdePage *self);
+void ide_page_set_menu_id (IdePage *self,
+ const gchar *menu_id);
IDE_AVAILABLE_IN_ALL
-void ide_page_set_menu_id (IdePage *self,
- const gchar *menu_id);
+void ide_page_agree_to_close_async (IdePage *self,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
IDE_AVAILABLE_IN_ALL
-void ide_page_agree_to_close_async (IdePage *self,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
+gboolean ide_page_agree_to_close_finish (IdePage *self,
+ GAsyncResult *result,
+ GError **error);
IDE_AVAILABLE_IN_ALL
-gboolean ide_page_agree_to_close_finish (IdePage *self,
- GAsyncResult *result,
- GError **error);
+void ide_page_mark_used (IdePage *self);
IDE_AVAILABLE_IN_ALL
-void ide_page_mark_used (IdePage *self);
+void ide_page_report_error (IdePage *self,
+ const gchar *format,
+ ...) G_GNUC_PRINTF (2, 3);
IDE_AVAILABLE_IN_ALL
-void ide_page_report_error (IdePage *self,
- const gchar *format,
- ...) G_GNUC_PRINTF (2, 3);
+GFile *ide_page_get_file_or_directory (IdePage *self);
IDE_AVAILABLE_IN_ALL
-GFile *ide_page_get_file_or_directory (IdePage *self);
+void ide_page_set_progress (IdePage *self,
+ IdeNotification *notification);
IDE_AVAILABLE_IN_ALL
-void ide_page_set_progress (IdePage *self,
- IdeNotification *notification);
+IdePanelPosition *ide_page_get_position (IdePage *self);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]