diff options
author | Matthias Clasen <mclasen@redhat.com> | 2014-01-06 10:30:15 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2014-01-06 10:32:19 -0500 |
commit | d28ca4cdce0dd6f103af4e6227af985558c32e56 (patch) | |
tree | 9da9b878926e245592b170179ce84e612817fad2 /tests/testsplitheaders.c | |
parent | f723113127ae5d61cbd53dae4404f4f7a4f9c05c (diff) | |
download | gtk+-d28ca4cdce0dd6f103af4e6227af985558c32e56.tar.gz |
Add an example for split headers
This shows how to deal with variability in window decorations
with split header bars.
Diffstat (limited to 'tests/testsplitheaders.c')
-rw-r--r-- | tests/testsplitheaders.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/testsplitheaders.c b/tests/testsplitheaders.c new file mode 100644 index 0000000000..6be3ca9257 --- /dev/null +++ b/tests/testsplitheaders.c @@ -0,0 +1,71 @@ +#include <gtk/gtk.h> + +static void +split_decorations (GObject *obj, + GParamSpec *pspec, + gpointer data) +{ + GtkBuilder *builder = data; + GtkWidget *sheader, *mheader; + gchar *layout, *p1, *p2; + gchar **p; + + sheader = gtk_builder_get_object (builder, "sidebar-header"); + mheader = gtk_builder_get_object (builder, "main-header"); + + g_object_get (obj, "gtk-decoration-layout", &layout, NULL); + + p = g_strsplit (layout, ":", -1); + + p1 = g_strconcat (p[0], ":", NULL); + p2 = g_strconcat (":", p[1], NULL); + + gtk_header_bar_set_decoration_layout (GTK_HEADER_BAR (sheader), p1); + gtk_header_bar_set_decoration_layout (GTK_HEADER_BAR (mheader), p2); + + g_free (p1); + g_free (p2); + g_strfreev (p); + g_free (layout); +} + +int +main (int argc, char *argv[]) +{ + GtkBuilder *builder; + GtkSettings *settings; + GtkWidget *win; + GtkWidget *entry; + GtkWidget *check; + GtkWidget *header; + + gtk_init (NULL, NULL); + + builder = gtk_builder_new_from_file ("testsplitheaders.ui"); + + win = gtk_builder_get_object (builder, "window"); + settings = gtk_widget_get_settings (win); + + g_signal_connect (settings, "notify::gtk-decoration-layout", + G_CALLBACK (split_decorations), builder); + split_decorations (settings, NULL, builder); + + entry = gtk_builder_get_object (builder, "layout-entry"); + g_object_bind_property (settings, "gtk-decoration-layout", + entry, "text", + G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE); + check = gtk_builder_get_object (builder, "decorations"); + header = gtk_builder_get_object (builder, "sidebar-header"); + g_object_bind_property (check, "active", + header, "show-close-button", + G_BINDING_DEFAULT); + header = gtk_builder_get_object (builder, "main-header"); + g_object_bind_property (check, "active", + header, "show-close-button", + G_BINDING_DEFAULT); + gtk_window_present (GTK_WINDOW (win)); + + gtk_main (); + + return 0; +} |