[gnome-builder/wip/chergert/perspective] layout: use sizegroup to keep panel header heights in sync
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/perspective] layout: use sizegroup to keep panel header heights in sync
- Date: Fri, 11 Dec 2015 09:42:05 +0000 (UTC)
commit d4a533afbf3df8d003e033942feb7b3b868d824d
Author: Christian Hergert <chergert redhat com>
Date: Fri Dec 11 01:40:00 2015 -0800
layout: use sizegroup to keep panel header heights in sync
data/ui/ide-workbench.ui | 3 +++
libide/ide-layout-pane.c | 6 ++++++
libide/ide-layout-tab-bar.c | 19 +++++++++++++++++++
libide/ide-workbench-private.h | 2 ++
libide/ide-workbench.c | 1 +
5 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/data/ui/ide-workbench.ui b/data/ui/ide-workbench.ui
index f1e8f7e..17dca7e 100644
--- a/data/ui/ide-workbench.ui
+++ b/data/ui/ide-workbench.ui
@@ -62,4 +62,7 @@
</object>
</child>
</template>
+ <object class="GtkSizeGroup" id="header_size_group">
+ <property name="mode">vertical</property>
+ </object>
</interface>
diff --git a/libide/ide-layout-pane.c b/libide/ide-layout-pane.c
index abb794c..cc4f6e3 100644
--- a/libide/ide-layout-pane.c
+++ b/libide/ide-layout-pane.c
@@ -21,6 +21,8 @@
#include "egg-signal-group.h"
#include "ide-layout-pane.h"
+#include "ide-workbench.h"
+#include "ide-workbench-private.h"
struct _IdeLayoutPane
{
@@ -199,6 +201,10 @@ ide_layout_pane_hierarchy_changed (GtkWidget *widget,
toplevel = NULL;
egg_signal_group_set_target (self->toplevel_signals, toplevel);
+
+ if (IDE_IS_WORKBENCH (toplevel) && gtk_widget_get_visible (GTK_WIDGET (self->stack_switcher)))
+ gtk_size_group_add_widget (IDE_WORKBENCH (toplevel)->header_size_group,
+ GTK_WIDGET (self->stack_switcher));
}
static void
diff --git a/libide/ide-layout-tab-bar.c b/libide/ide-layout-tab-bar.c
index 477d526..f4cb33c 100644
--- a/libide/ide-layout-tab-bar.c
+++ b/libide/ide-layout-tab-bar.c
@@ -302,6 +302,23 @@ ide_layout_tab_bar_set_stack (IdeLayoutTabBar *self,
}
static void
+ide_layout_tab_bar_hierarchy_changed (GtkWidget *widget,
+ GtkWidget *old_toplevel)
+{
+ IdeLayoutTabBar *self = (IdeLayoutTabBar *)widget;
+ GtkWidget *toplevel;
+
+ g_assert (IDE_IS_LAYOUT_TAB_BAR (self));
+
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
+ if (!GTK_IS_WINDOW (toplevel))
+ toplevel = NULL;
+
+ if (IDE_IS_WORKBENCH (toplevel))
+ gtk_size_group_add_widget (IDE_WORKBENCH (toplevel)->header_size_group, widget);
+}
+
+static void
ide_layout_tab_bar_get_property (GObject *object,
guint prop_id,
GValue *value,
@@ -348,6 +365,8 @@ ide_tab_layout_bar_class_init (IdeLayoutTabBarClass *klass)
object_class->get_property = ide_layout_tab_bar_get_property;
object_class->set_property = ide_layout_tab_bar_set_property;
+ widget_class->hierarchy_changed = ide_layout_tab_bar_hierarchy_changed;
+
properties [PROP_STACK] =
g_param_spec_object ("stack",
"stack",
diff --git a/libide/ide-workbench-private.h b/libide/ide-workbench-private.h
index 0d2239e..0f1f98e 100644
--- a/libide/ide-workbench-private.h
+++ b/libide/ide-workbench-private.h
@@ -43,6 +43,8 @@ struct _IdeWorkbench
GtkStack *perspectives_stack;
GtkStackSwitcher *perspectives_stack_switcher;
GtkPopover *perspectives_popover;
+
+ GtkSizeGroup *header_size_group;
};
void ide_workbench_set_context (IdeWorkbench *workbench,
diff --git a/libide/ide-workbench.c b/libide/ide-workbench.c
index 7775f79..94a97f8 100644
--- a/libide/ide-workbench.c
+++ b/libide/ide-workbench.c
@@ -332,6 +332,7 @@ ide_workbench_class_init (IdeWorkbenchClass *klass)
gtk_widget_class_set_css_name (widget_class, "workbench");
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/builder/ui/ide-workbench.ui");
+ gtk_widget_class_bind_template_child (widget_class, IdeWorkbench, header_size_group);
gtk_widget_class_bind_template_child (widget_class, IdeWorkbench, perspectives_stack);
gtk_widget_class_bind_template_child (widget_class, IdeWorkbench, perspectives_stack_switcher);
gtk_widget_class_bind_template_child (widget_class, IdeWorkbench, titlebar_stack);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]