diff options
author | Timm Bäder <mail@baedert.org> | 2016-03-03 13:04:58 +0100 |
---|---|---|
committer | Timm Bäder <mail@baedert.org> | 2016-03-03 18:54:08 +0100 |
commit | 1c544e4237eaf67657260f49aec0bf2118e69767 (patch) | |
tree | edf59aec20246f5ca711ca1a5afe6d284fd4c3c0 /testsuite | |
parent | 8b6603bbd65fd8939c9d9337a90b1e8ed746ba65 (diff) | |
download | gtk+-1c544e4237eaf67657260f49aec0bf2118e69767.tar.gz |
Add GtkRevealer sizing tests
https://bugzilla.gnome.org/show_bug.cgi?id=762996
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/gtk/Makefile.am | 1 | ||||
-rw-r--r-- | testsuite/gtk/revealer-size.c | 153 |
2 files changed, 154 insertions, 0 deletions
diff --git a/testsuite/gtk/Makefile.am b/testsuite/gtk/Makefile.am index b6a7450c06..5fc1cf167d 100644 --- a/testsuite/gtk/Makefile.am +++ b/testsuite/gtk/Makefile.am @@ -73,6 +73,7 @@ TEST_PROGS += \ typename \ window \ displayclose \ + revealer-size \ $(NULL) if OS_UNIX diff --git a/testsuite/gtk/revealer-size.c b/testsuite/gtk/revealer-size.c new file mode 100644 index 0000000000..6c7cffcf01 --- /dev/null +++ b/testsuite/gtk/revealer-size.c @@ -0,0 +1,153 @@ +#include <gtk/gtk.h> + +const int KEEP_HEIGHT = 1 << 0; +const int KEEP_WIDTH = 1 << 1; + +static void +keep_size (int direction, + guint transition_type, + gboolean animations) +{ + gboolean animations_before; + int min_height, min_width; + int min_child_width, min_child_height; + GtkRevealer *revealer = gtk_revealer_new (); + GtkWidget *child = gtk_button_new_with_label ("Some Text!"); + GtkSettings *settings = gtk_settings_get_default (); + + g_object_get (settings, "gtk-enable-animations", &animations_before, NULL); + g_object_set (settings, "gtk-enable-animations", animations, NULL); + + gtk_container_add (GTK_CONTAINER (revealer), child); + gtk_widget_show_all (GTK_WIDGET (revealer)); + + gtk_revealer_set_transition_type (revealer, transition_type); + + gtk_revealer_set_reveal_child (revealer, TRUE); + + gtk_widget_get_preferred_width (GTK_WIDGET (child), &min_child_width, NULL); + gtk_widget_get_preferred_height (GTK_WIDGET (child), &min_child_height, NULL); + + gtk_widget_get_preferred_width (GTK_WIDGET (revealer), &min_width, NULL); + gtk_widget_get_preferred_height (GTK_WIDGET (revealer), &min_height, NULL); + + g_assert_cmpint (min_width, ==, min_child_width); + g_assert_cmpint (min_height, ==, min_child_height); + + + gtk_revealer_set_reveal_child (revealer, FALSE); + gtk_widget_get_preferred_width (GTK_WIDGET (revealer), &min_width, NULL); + gtk_widget_get_preferred_height (GTK_WIDGET (revealer), &min_height, NULL); + + if (direction & KEEP_WIDTH) + g_assert_cmpint (min_width, ==, min_child_width); + else + g_assert_cmpint (min_width, ==, 0); + + if (direction & KEEP_HEIGHT) + g_assert_cmpint (min_height, ==, min_child_height); + else + g_assert_cmpint (min_height, ==, 0); + + g_object_set (settings, "gtk-enable-animations", animations_before, NULL); +} + + +static void +slide_right_animations () +{ + keep_size (KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT, TRUE); +} + +static void +slide_right_no_animations () +{ + keep_size (KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT, FALSE); +} + +static void +slide_left_animations () +{ + keep_size (KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT, TRUE); +} + +static void +slide_left_no_animations () +{ + keep_size (KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT, FALSE); +} + +static void +none_animations () +{ + keep_size (0, GTK_REVEALER_TRANSITION_TYPE_NONE, TRUE); +} + +static void +none_no_animations () +{ + keep_size (0, GTK_REVEALER_TRANSITION_TYPE_NONE, FALSE); +} + +static void +crossfade_animations() +{ + keep_size (KEEP_WIDTH | KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_CROSSFADE, TRUE); +} + +static void +crossfade_no_animations () +{ + keep_size (KEEP_WIDTH | KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_CROSSFADE, FALSE); +} + +static void +slide_down_animations () +{ + keep_size (KEEP_WIDTH, GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN, TRUE); +} + +static void +slide_down_no_animations () +{ + keep_size (KEEP_WIDTH, GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN, TRUE); +} + +static void +slide_up_animations () +{ + keep_size (KEEP_WIDTH, GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP, TRUE); +} + +static void +slide_up_no_animations () +{ + keep_size (KEEP_WIDTH, GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP, TRUE); +} + +int +main (int argc, char **argv) +{ + gtk_init (&argc, &argv); + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/sizing/revealer/slide_right_animations", slide_right_animations); + g_test_add_func ("/sizing/revealer/slide_right_no_animations", slide_right_no_animations); + + g_test_add_func ("/sizing/revealer/slide_left_animations", slide_left_animations); + g_test_add_func ("/sizing/revealer/slide_left_no_animations", slide_left_no_animations); + + g_test_add_func ("/sizing/revealer/none_animations", none_animations); + g_test_add_func ("/sizing/revealer/none_no_animations", none_no_animations); + + g_test_add_func ("/sizing/revealer/crossfade_animations", crossfade_animations); + g_test_add_func ("/sizing/revealer/crossfade_no_animations", crossfade_no_animations); + + g_test_add_func ("/sizing/revealer/slide_down_animations", slide_down_animations); + g_test_add_func ("/sizing/revealer/slide_down_no_animations", slide_down_no_animations); + + g_test_add_func ("/sizing/revealer/slide_up_animations", slide_up_animations); + g_test_add_func ("/sizing/revealer/slide_up_no_animations", slide_up_no_animations); + + return g_test_run (); +} |