summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/Makefile.am5
-rw-r--r--tests/testexpand.c152
2 files changed, 157 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 2b5845863f..175b7cf83a 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -90,6 +90,7 @@ noinst_PROGRAMS = $(TEST_PROGS) \
testactions \
testgrouping \
testtooltips \
+ testexpand \
testexpander \
testvolumebutton
@@ -176,6 +177,7 @@ testgrouping_DEPENDENCIES = $(TEST_DEPS)
testtooltips_DEPENDENCIES = $(TEST_DEPS)
testvolumebutton_DEPENDENCIES = $(TEST_DEPS)
testwindows_DEPENDENCIES = $(TEST_DEPS)
+testexpand_DEPENDENCIES = $(TEST_DEPS)
testexpander_DEPENDENCIES = $(TEST_DEPS)
flicker_LDADD = $(LDADDS)
@@ -247,6 +249,7 @@ testgrouping_LDADD = $(LDADDS)
testtooltips_LDADD = $(LDADDS)
testvolumebutton_LDADD = $(LDADDS)
testwindows_LDADD = $(LDADDS)
+testexpand_LDADD = $(LDADDS)
testexpander_LDADD = $(LDADDS)
testentrycompletion_SOURCES = \
@@ -359,6 +362,8 @@ testoffscreenwindow_SOURCES = \
testwindows_SOURCES = \
testwindows.c
+testexpand_SOURCES = testexpand.c
+
testexpander_SOURCES = testexpander.c
EXTRA_DIST += \
diff --git a/tests/testexpand.c b/tests/testexpand.c
new file mode 100644
index 0000000000..c28bcd85ce
--- /dev/null
+++ b/tests/testexpand.c
@@ -0,0 +1,152 @@
+/* testexpand.c
+ * Copyright (C) 2010 Havoc Pennington
+ *
+ * Author:
+ * Havoc Pennington <hp@pobox.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <gtk/gtk.h>
+
+static void
+on_toggle_hexpand (GtkToggleButton *toggle,
+ void *data)
+{
+ GtkWidget *parent;
+
+ /* get the event box with color set on it */
+ parent = gtk_widget_get_parent (gtk_widget_get_parent (GTK_WIDGET (toggle)));
+
+ g_object_set (toggle,
+ "hexpand", gtk_toggle_button_get_active (toggle),
+ NULL);
+}
+
+static void
+on_toggle_vexpand (GtkToggleButton *toggle,
+ void *data)
+{
+ GtkWidget *parent;
+
+ /* get the event box with color set on it */
+ parent = gtk_widget_get_parent (gtk_widget_get_parent (GTK_WIDGET (toggle)));
+
+ g_object_set (toggle,
+ "vexpand", gtk_toggle_button_get_active (toggle),
+ NULL);
+}
+
+static GtkWidget*
+create_window (void)
+{
+ GtkWidget *window;
+ GtkWidget *box1, *box2, *box3;
+ GtkWidget *toggle;
+ GtkWidget *alignment;
+ GtkWidget *colorbox;
+ GdkColor red, blue;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ box1 = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 0);
+ box2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 0);
+ box3 = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX (box1),
+ gtk_label_new ("VBox 1 Top"),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (box1),
+ box2,
+ FALSE, TRUE, 0);
+ gtk_box_pack_end (GTK_BOX (box1),
+ gtk_label_new ("VBox 1 Bottom"),
+ FALSE, FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX (box2),
+ gtk_label_new ("HBox 2 Left"),
+ FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (box2),
+ box3,
+ FALSE, TRUE, 0);
+ gtk_box_pack_end (GTK_BOX (box2),
+ gtk_label_new ("HBox 2 Right"),
+ FALSE, FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX (box3),
+ gtk_label_new ("VBox 3 Top"),
+ FALSE, FALSE, 0);
+ gtk_box_pack_end (GTK_BOX (box3),
+ gtk_label_new ("VBox 3 Bottom"),
+ FALSE, FALSE, 0);
+
+ gdk_color_parse ("red", &red);
+ gdk_color_parse ("blue", &blue);
+
+ colorbox = gtk_event_box_new ();
+ gtk_widget_modify_bg (colorbox, GTK_STATE_NORMAL, &red);
+
+ alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
+ gtk_container_add (GTK_CONTAINER (colorbox), alignment);
+
+ toggle = gtk_toggle_button_new_with_label ("H Expand");
+ g_signal_connect (G_OBJECT (toggle), "toggled",
+ G_CALLBACK (on_toggle_hexpand), NULL);
+ gtk_container_add (GTK_CONTAINER (alignment), toggle);
+
+ gtk_box_pack_start (GTK_BOX (box3),
+ colorbox,
+ FALSE, TRUE, 0);
+
+ colorbox = gtk_event_box_new ();
+ gtk_widget_modify_bg (colorbox, GTK_STATE_NORMAL, &blue);
+
+ alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
+ gtk_container_add (GTK_CONTAINER (colorbox), alignment);
+
+ toggle = gtk_toggle_button_new_with_label ("V Expand");
+ g_signal_connect (G_OBJECT (toggle), "toggled",
+ G_CALLBACK (on_toggle_vexpand), NULL);
+ gtk_container_add (GTK_CONTAINER (alignment), toggle);
+ gtk_box_pack_start (GTK_BOX (box3),
+ colorbox,
+ FALSE, TRUE, 0);
+
+ gtk_container_add (GTK_CONTAINER (window),
+ box1);
+ gtk_widget_show_all (box1);
+
+ return window;
+}
+
+int
+main (int argc, char *argv[])
+{
+ GtkWidget *window;
+
+ gtk_init (&argc, &argv);
+
+ window = create_window ();
+
+ g_signal_connect (window, "delete-event",
+ G_CALLBACK (gtk_main_quit), window);
+
+ gtk_widget_show (window);
+
+ gtk_main ();
+
+ return 0;
+}