[gnome-builder] libide/gui: re-raise pane after moving
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] libide/gui: re-raise pane after moving
- Date: Sat, 17 Sep 2022 04:27:28 +0000 (UTC)
commit 184646bea9b63e120bac01c797d5e7425fc0e8f8
Author: Christian Hergert <chergert redhat com>
Date: Fri Sep 16 21:27:17 2022 -0700
libide/gui: re-raise pane after moving
This is just a start, and it needs some work to truly maintain the
proper ordering.
src/libide/gui/ide-workspace-session.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/src/libide/gui/ide-workspace-session.c b/src/libide/gui/ide-workspace-session.c
index a6a861e8f..f97948839 100644
--- a/src/libide/gui/ide-workspace-session.c
+++ b/src/libide/gui/ide-workspace-session.c
@@ -170,6 +170,9 @@ ide_workspace_save_session_frame_cb (PanelFrame *frame,
ide_session_item_set_module_name (page_item, "libide-gui");
ide_session_item_set_position (page_item, page_position);
+ if (panel_frame_get_visible_child (frame) == widget)
+ ide_session_item_set_metadata (page_item, "is-front", "b", TRUE);
+
ide_session_append (session, page_item);
}
}
@@ -474,6 +477,7 @@ ide_workspace_restore_pane (IdeWorkspace *self,
PanelWidget *widget;
const char *id;
GtkWidget *frame;
+ gboolean is_front;
g_assert (IDE_IS_MAIN_THREAD ());
g_assert (IDE_IS_WORKSPACE (self));
@@ -485,17 +489,23 @@ ide_workspace_restore_pane (IdeWorkspace *self,
!(widget = _ide_workspace_find_widget (self, dock, id)))
return;
+ g_object_ref (widget);
+
if ((current_position = panel_widget_get_position (widget)) &&
panel_position_equal (current_position, position))
- return;
+ goto check_front;
if ((frame = gtk_widget_get_ancestor (GTK_WIDGET (widget), PANEL_TYPE_FRAME)))
{
- g_object_ref (widget);
panel_frame_remove (PANEL_FRAME (frame), widget);
ide_workspace_add_pane (self, IDE_PANE (widget), position);
- g_object_unref (widget);
}
+
+check_front:
+ if (ide_session_item_get_metadata (item, "is-front", "b", &is_front) && is_front)
+ panel_widget_raise (widget);
+
+ g_object_unref (widget);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]