summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2014-11-02 17:51:18 -0500
committerTristan Van Berkom <tristan@upstairslabs.com>2014-11-07 17:20:22 +0900
commit961733bce5c00703d67727b83f006f6622ff783c (patch)
treeb24c36c7d56f023476725b9c1feec630c08b1803 /plugins
parent15b4f639031995ef4e0c0a7c600b23533786b239 (diff)
downloadglade-961733bce5c00703d67727b83f006f6622ff783c.tar.gz
Add a headerbar editor
Among other things, this lets us undoably remove a custom title widget.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/gtk+/Makefile.am3
-rw-r--r--plugins/gtk+/glade-gtk-header-bar.c12
-rw-r--r--plugins/gtk+/glade-gtk-resources.gresource.xml1
-rw-r--r--plugins/gtk+/glade-header-bar-editor.c168
-rw-r--r--plugins/gtk+/glade-header-bar-editor.h57
-rw-r--r--plugins/gtk+/glade-header-bar-editor.ui306
-rw-r--r--plugins/gtk+/gtk+.xml.in18
7 files changed, 562 insertions, 3 deletions
diff --git a/plugins/gtk+/Makefile.am b/plugins/gtk+/Makefile.am
index 3b4701d1..fbff8bc5 100644
--- a/plugins/gtk+/Makefile.am
+++ b/plugins/gtk+/Makefile.am
@@ -119,6 +119,7 @@ libgladegtk_la_SOURCES = \
glade-gtk-widget.c \
glade-gtk-window.c \
glade-gtk-header-bar.c \
+ glade-header-bar-editor.c \
glade-icon-factory-editor.c \
glade-icon-sources.c \
glade-icon-view-editor.c \
@@ -195,6 +196,7 @@ noinst_HEADERS = \
glade-gtk-menu-shell.h \
glade-gtk-notebook.h \
glade-gtk-tree-view.h \
+ glade-header-bar-editor.h \
glade-icon-factory-editor.h \
glade-icon-sources.h \
glade-icon-view-editor.h \
@@ -273,6 +275,7 @@ UI_FILES = \
glade-font-chooser-editor.ui \
glade-font-chooser-widget-editor.ui \
glade-grid-editor.ui \
+ glade-header-bar-editor.ui \
glade-icon-view-editor.ui \
glade-image-editor.ui \
glade-label-editor.ui \
diff --git a/plugins/gtk+/glade-gtk-header-bar.c b/plugins/gtk+/glade-gtk-header-bar.c
index 5d8ef44a..55ede2f7 100644
--- a/plugins/gtk+/glade-gtk-header-bar.c
+++ b/plugins/gtk+/glade-gtk-header-bar.c
@@ -3,6 +3,8 @@
#include <gladeui/glade.h>
#include "glade-gtk.h"
+#include "glade-header-bar-editor.h"
+
static gint
glade_gtk_header_bar_get_num_children (GObject *hb, GtkPackType type)
{
@@ -324,3 +326,13 @@ glade_gtk_header_bar_replace_child (GladeWidgetAdaptor * adaptor,
G_OBJECT (current),
G_OBJECT (new_widget));
}
+
+GladeEditable *
+glade_gtk_header_bar_create_editable (GladeWidgetAdaptor * adaptor,
+ GladeEditorPageType type)
+{
+ if (type == GLADE_PAGE_GENERAL)
+ return (GladeEditable *) glade_header_bar_editor_new ();
+ else
+ return GWA_GET_CLASS (GTK_TYPE_CONTAINER)->create_editable (adaptor, type);
+}
diff --git a/plugins/gtk+/glade-gtk-resources.gresource.xml b/plugins/gtk+/glade-gtk-resources.gresource.xml
index d0698d05..4052b025 100644
--- a/plugins/gtk+/glade-gtk-resources.gresource.xml
+++ b/plugins/gtk+/glade-gtk-resources.gresource.xml
@@ -21,6 +21,7 @@
<file compressed="true" preprocess="xml-stripblanks">glade-font-chooser-editor.ui</file>
<file compressed="true" preprocess="xml-stripblanks">glade-font-chooser-widget-editor.ui</file>
<file compressed="true" preprocess="xml-stripblanks">glade-grid-editor.ui</file>
+ <file compressed="true" preprocess="xml-stripblanks">glade-header-bar-editor.ui</file>
<file compressed="true" preprocess="xml-stripblanks">glade-icon-view-editor.ui</file>
<file compressed="true" preprocess="xml-stripblanks">glade-image-editor.ui</file>
<file compressed="true" preprocess="xml-stripblanks">glade-label-editor.ui</file>
diff --git a/plugins/gtk+/glade-header-bar-editor.c b/plugins/gtk+/glade-header-bar-editor.c
new file mode 100644
index 00000000..344edb18
--- /dev/null
+++ b/plugins/gtk+/glade-header-bar-editor.c
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2014 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Authors:
+ * Matthias Clasen <mclasen@redhat.com>
+ */
+
+#include <config.h>
+#include <gladeui/glade.h>
+#include <glib/gi18n-lib.h>
+#include <gdk/gdkkeysyms.h>
+
+#include "glade-header-bar-editor.h"
+
+static void glade_header_bar_editor_editable_init (GladeEditableIface * iface);
+static void glade_header_bar_editor_grab_focus (GtkWidget * widget);
+
+static void use_custom_title_toggled (GtkWidget *widget, GladeHeaderBarEditor * editor);
+
+struct _GladeHeaderBarEditorPrivate
+{
+ GtkWidget *embed;
+ GtkWidget *use_custom_title_check;
+};
+
+static GladeEditableIface *parent_editable_iface;
+
+G_DEFINE_TYPE_WITH_CODE (GladeHeaderBarEditor, glade_header_bar_editor, GLADE_TYPE_EDITOR_SKELETON,
+ G_ADD_PRIVATE (GladeHeaderBarEditor)
+ G_IMPLEMENT_INTERFACE (GLADE_TYPE_EDITABLE,
+ glade_header_bar_editor_editable_init))
+
+static void
+glade_header_bar_editor_class_init (GladeHeaderBarEditorClass * klass)
+{
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+ widget_class->grab_focus = glade_header_bar_editor_grab_focus;
+
+ gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/gladegtk/glade-header-bar-editor.ui");
+ gtk_widget_class_bind_template_child_private (widget_class, GladeHeaderBarEditor, embed);
+ gtk_widget_class_bind_template_child_private (widget_class, GladeHeaderBarEditor, use_custom_title_check);
+ gtk_widget_class_bind_template_callback (widget_class, use_custom_title_toggled);
+}
+
+static void
+glade_header_bar_editor_init (GladeHeaderBarEditor * self)
+{
+ self->priv = glade_header_bar_editor_get_instance_private (self);
+
+ gtk_widget_init_template (GTK_WIDGET (self));
+}
+
+static void
+glade_header_bar_editor_grab_focus (GtkWidget * widget)
+{
+ GladeHeaderBarEditor *editor = GLADE_HEADER_BAR_EDITOR (widget);
+
+ gtk_widget_grab_focus (editor->priv->embed);
+}
+
+static void
+glade_header_bar_editor_load (GladeEditable *editable,
+ GladeWidget *gwidget)
+{
+ GladeHeaderBarEditor *editor = GLADE_HEADER_BAR_EDITOR (editable);
+ GladeHeaderBarEditorPrivate *priv = editor->priv;
+
+ /* Chain up to default implementation */
+ parent_editable_iface->load (editable, gwidget);
+
+ if (gwidget)
+ {
+ gboolean setting;
+
+ glade_widget_property_get (gwidget, "use-custom-title", &setting);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->use_custom_title_check), setting);
+ }
+}
+
+static void
+glade_header_bar_editor_editable_init (GladeEditableIface * iface)
+{
+ parent_editable_iface = g_type_interface_peek_parent (iface);
+
+ iface->load = glade_header_bar_editor_load;
+}
+
+static void
+use_custom_title_toggled (GtkWidget *widget,
+ GladeHeaderBarEditor *editor)
+{
+ GladeHeaderBarEditorPrivate *priv = editor->priv;
+ GladeWidget *gwidget = glade_editable_loaded_widget (GLADE_EDITABLE (editor));
+ GladeWidget *gtitle = NULL;
+ GtkWidget *headerbar;
+ GtkWidget *title;
+ GladeProperty *property;
+ gboolean use_custom_title;
+
+ if (glade_editable_loading (GLADE_EDITABLE (editor)) || !gwidget)
+ return;
+
+ /* Get new desired property state */
+ use_custom_title = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->use_custom_title_check));
+
+ headerbar = (GtkWidget *)glade_widget_get_object (gwidget);
+ title = gtk_header_bar_get_custom_title (GTK_HEADER_BAR (headerbar));
+
+ if (title && !GLADE_IS_PLACEHOLDER (title))
+ gtitle = glade_widget_get_from_gobject (title);
+
+ glade_editable_block (GLADE_EDITABLE (editor));
+
+ if (use_custom_title)
+ glade_command_push_group (_("Setting %s to use a custom title"),
+ glade_widget_get_name (gwidget));
+ else
+ glade_command_push_group (_("Setting %s to use the standard title"),
+ glade_widget_get_name (gwidget));
+
+ if (gtitle)
+ {
+ GList list;
+ list.prev = list.next = NULL;
+ list.data = gtitle;
+ glade_command_delete (&list);
+ }
+
+ property = glade_widget_get_property (gwidget, "use-custom-title");
+ glade_command_set_property (property, use_custom_title);
+
+ if (use_custom_title)
+ {
+ property = glade_widget_get_property (gwidget, "title");
+ glade_command_set_property (property, NULL);
+ property = glade_widget_get_property (gwidget, "subtitle");
+ glade_command_set_property (property, NULL);
+ property = glade_widget_get_property (gwidget, "has-subtitle");
+ glade_command_set_property (property, TRUE);
+ }
+
+ glade_command_pop_group ();
+
+ glade_editable_unblock (GLADE_EDITABLE (editor));
+
+ glade_editable_load (GLADE_EDITABLE (editor), gwidget);
+}
+
+GtkWidget *
+glade_header_bar_editor_new (void)
+{
+ return g_object_new (GLADE_TYPE_HEADER_BAR_EDITOR, NULL);
+}
diff --git a/plugins/gtk+/glade-header-bar-editor.h b/plugins/gtk+/glade-header-bar-editor.h
new file mode 100644
index 00000000..865b5161
--- /dev/null
+++ b/plugins/gtk+/glade-header-bar-editor.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2014 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Authors:
+ * Matthias Clasen <mclasen@redhat.com>
+ */
+#ifndef _GLADE_HEADER_BAR_EDITOR_H_
+#define _GLADE_HEADER_BAR_EDITOR_H_
+
+#include <gtk/gtk.h>
+#include <gladeui/glade.h>
+
+G_BEGIN_DECLS
+
+#define GLADE_TYPE_HEADER_BAR_EDITOR (glade_header_bar_editor_get_type ())
+#define GLADE_HEADER_BAR_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLADE_TYPE_HEADER_BAR_EDITOR, GladeHeaderBarEditor))
+#define GLADE_HEADER_BAR_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GLADE_TYPE_HEADER_BAR_EDITOR, GladeHeaderBarEditorClass))
+#define GLADE_IS_HEADER_BAR_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLADE_TYPE_HEADER_BAR_EDITOR))
+#define GLADE_IS_HEADER_BAR_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLADE_TYPE_HEADER_BAR_EDITOR))
+#define GLADE_HEADER_BAR_EDITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GLADE_TYPE_HEADER_BAR_EDITOR, GladeHeaderBarEditorClass))
+
+typedef struct _GladeHeaderBarEditor GladeHeaderBarEditor;
+typedef struct _GladeHeaderBarEditorClass GladeHeaderBarEditorClass;
+typedef struct _GladeHeaderBarEditorPrivate GladeHeaderBarEditorPrivate;
+
+struct _GladeHeaderBarEditor
+{
+ GladeEditorSkeleton parent;
+
+ GladeHeaderBarEditorPrivate *priv;
+};
+
+struct _GladeHeaderBarEditorClass
+{
+ GladeEditorSkeletonClass parent;
+};
+
+GType glade_header_bar_editor_get_type (void) G_GNUC_CONST;
+GtkWidget *glade_header_bar_editor_new (void);
+
+G_END_DECLS
+
+#endif /* _GLADE_HEADER_BAR_EDITOR_H_ */
diff --git a/plugins/gtk+/glade-header-bar-editor.ui b/plugins/gtk+/glade-header-bar-editor.ui
new file mode 100644
index 00000000..365f19af
--- /dev/null
+++ b/plugins/gtk+/glade-header-bar-editor.ui
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.0
+
+libgladegtk - Glade UI Designer Gtk+ support plugin
+Copyright (C) 2014 Red Hat, Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Author: Matthias Clasen <mclasen@redhat.com>
+
+-->
+<interface domain="glade">
+ <requires lib="gtk+" version="3.10"/>
+ <requires lib="gladeui" version="0.0"/>
+ <template class="GladeHeaderBarEditor" parent="GladeEditorSkeleton">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkGrid" id="grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GladeEditorTable" id="embed">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">6</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="title">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Headerbar Attributes</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">6</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="use_custom_title_check">
+ <property name="label" translatable="yes">Custom title</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">Whether the headerbar should use a custom title widget.</property>
+ <property name="margin_left">12</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="use_custom_title_toggled"/>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ <property name="width">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyLabel" id="title_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">12</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">title</property>
+ <property name="sensitive" bind-source="use_custom_title_check" bind-property="active" bind-flags="invert-boolean"/>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyShell" id="title_editor">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">title</property>
+ <property name="sensitive" bind-source="use_custom_title_check" bind-property="active" bind-flags="invert-boolean"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyLabel" id="subtitle_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">12</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">subtitle</property>
+ <property name="sensitive" bind-source="use_custom_title_check" bind-property="active" bind-flags="invert-boolean"/>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyShell" id="subtitle_editor">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">subtitle</property>
+ <property name="sensitive" bind-source="use_custom_title_check" bind-property="active" bind-flags="invert-boolean"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyShell" id="has_subtitle_editor">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">has-subtitle</property>
+ <property name="editor_type">GladeEpropCheck</property>
+ <property name="sensitive" bind-source="use_custom_title_check" bind-property="active" bind-flags="invert-boolean"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">5</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyShell" id="show_decoration_editor">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">False</property>
+ <property name="margin_left">12</property>
+ <property name="property_name">show-close-button</property>
+ <property name="editor_type">GladeEpropCheck</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">6</property>
+ <property name="width">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyLabel" id="decoration_layout_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">12</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">decoration-layout</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">7</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyShell" id="decoration_layout_editor">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">decoration-layout</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">7</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyLabel" id="spacing_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">12</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">spacing</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">8</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyShell" id="spacing_editor">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">spacing</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">8</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyLabel" id="start_size_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">12</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">start-size</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">9</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyShell" id="start_size_editor">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">start-size</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">9</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyLabel" id="end_size_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">12</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">end-size</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">10</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GladePropertyShell" id="end_size_editor">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">False</property>
+ <property name="property_name">end-size</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">10</property>
+ <property name="width">4</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child-editors>
+ <editor id="embed"/>
+ <editor id="title_label"/>
+ <editor id="title_editor"/>
+ <editor id="subtitle_label"/>
+ <editor id="subtitle_editor"/>
+ <editor id="has_subtitle_editor"/>
+ <editor id="show_decoration_editor"/>
+ <editor id="decoration_layout_label"/>
+ <editor id="decoration_layout_editor"/>
+ <editor id="spacing_label"/>
+ <editor id="spacing_editor"/>
+ <editor id="start_size_label"/>
+ <editor id="start_size_editor"/>
+ <editor id="end_size_label"/>
+ <editor id="end_size_editor"/>
+ </child-editors>
+ </template>
+</interface>
diff --git a/plugins/gtk+/gtk+.xml.in b/plugins/gtk+/gtk+.xml.in
index b3a2ebe3..3ffb238d 100644
--- a/plugins/gtk+/gtk+.xml.in
+++ b/plugins/gtk+/gtk+.xml.in
@@ -2409,22 +2409,34 @@
<add-child-function>glade_gtk_header_bar_add_child</add-child-function>
<remove-child-function>glade_gtk_header_bar_remove_child</remove-child-function>
<replace-child-function>glade_gtk_header_bar_replace_child</replace-child-function>
+ <create-editable-function>glade_gtk_header_bar_create_editable</create-editable-function>
<special-child-type>type</special-child-type>
<properties>
+ <property id="title" custom-layout="True"/>
+ <property id="subtitle" custom-layout="True"/>
+ <property id="has-subtitle" _name="Reserve space for subtitle" custom-layout="True">
+ <_tooltip>Keep the headerbar height the same as the subtitle changes dynamically.</_tooltip>
+ </property>
+ <property id="show-close-button" _name="Show window controls" custom-layout="True">
+ <_tooltip>Whether to show window controls, e.g. a close button</_tooltip>
+ </property>
+ <property id="spacing" custom-layout="True"/>
+ <property id="decoration-layout" _name="Decoration Layout" optional="True" optional-default="False" custom-layout="True"/>
+ <property id="decoration-layout-set" disabled="True"/>
<property id="custom-title" disabled="True"/>
- <property id="use-custom-title" _name="Custom Title" default="FALSE" visible="True" save="False">
+ <property id="use-custom-title" _name="Custom Title" default="FALSE" visible="True" save="False" custom-layout="True">
<parameter-spec>
<type>GParamBoolean</type>
</parameter-spec>
</property>
- <property visible="True" save="False" id="start-size" default="1" _name="Number of items at the start">
+ <property visible="True" save="False" id="start-size" default="1" _name="Number of items at the start" custom-layout="True">
<parameter-spec>
<type>GParamInt</type>
<min>0</min>
</parameter-spec>
<_tooltip>The number of items at the start</_tooltip>
</property>
- <property visible="True" save="False" id="end-size" default="1" _name="Number of items at the end">
+ <property visible="True" save="False" id="end-size" default="1" _name="Number of items at the end" custom-layout="True">
<parameter-spec>
<type>GParamInt</type>
<min>0</min>