mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-17 23:10:22 +00:00
Some window size test tweaks
Draw a checkerboard pattern, and add an interactive mode that waits for events before moving on. This makes it easier to see when a size is wrong.
This commit is contained in:
parent
7fd0836567
commit
96e0d9db72
@ -1,5 +1,7 @@
|
|||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
static gboolean interactive = FALSE;
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
stop_main (gpointer data)
|
stop_main (gpointer data)
|
||||||
{
|
{
|
||||||
@ -8,6 +10,36 @@ stop_main (gpointer data)
|
|||||||
return G_SOURCE_REMOVE;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
on_draw (GtkWidget *widget, cairo_t *cr)
|
||||||
|
{
|
||||||
|
gint i, j;
|
||||||
|
|
||||||
|
for (i = 0; 20 * i < gtk_widget_get_allocated_width (widget); i++)
|
||||||
|
{
|
||||||
|
for (j = 0; 20 * j < gtk_widget_get_allocated_height (widget); j++)
|
||||||
|
{
|
||||||
|
if ((i + j) % 2 == 1)
|
||||||
|
cairo_set_source_rgb (cr, 1., 1., 1.);
|
||||||
|
else
|
||||||
|
cairo_set_source_rgb (cr, 0., 0., 0.);
|
||||||
|
|
||||||
|
cairo_rectangle (cr, 20. * i, 20. *j, 20., 20.);
|
||||||
|
cairo_fill (cr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
on_keypress (GtkWidget *widget)
|
||||||
|
{
|
||||||
|
gtk_main_quit ();
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
test_default_size (void)
|
test_default_size (void)
|
||||||
{
|
{
|
||||||
@ -16,33 +48,42 @@ test_default_size (void)
|
|||||||
gint w, h;
|
gint w, h;
|
||||||
|
|
||||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||||
|
g_signal_connect (window, "draw", G_CALLBACK (on_draw), NULL);
|
||||||
|
if (interactive)
|
||||||
|
g_signal_connect (window, "key-press-event", G_CALLBACK (on_keypress), NULL);
|
||||||
|
|
||||||
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
||||||
gtk_container_add (GTK_CONTAINER (window), box);
|
gtk_container_add (GTK_CONTAINER (window), box);
|
||||||
|
|
||||||
gtk_window_get_default_size (GTK_WINDOW (window), &w, &h);
|
gtk_window_get_default_size (GTK_WINDOW (window), &w, &h);
|
||||||
g_assert (w == -1 && h == -1);
|
g_assert_cmpint (w, ==, -1);
|
||||||
|
g_assert_cmpint (h, ==, -1);
|
||||||
|
|
||||||
gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);
|
gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);
|
||||||
|
|
||||||
gtk_window_get_default_size (GTK_WINDOW (window), &w, &h);
|
gtk_window_get_default_size (GTK_WINDOW (window), &w, &h);
|
||||||
g_assert (w == 300 && h == 300);
|
g_assert_cmpint (w, ==, 300);
|
||||||
|
g_assert_cmpint (h, ==, 300);
|
||||||
|
|
||||||
gtk_window_get_size (GTK_WINDOW (window), &w, &h);
|
gtk_window_get_size (GTK_WINDOW (window), &w, &h);
|
||||||
g_assert (w == 300 && h == 300);
|
g_assert_cmpint (w, ==, 300);
|
||||||
|
g_assert_cmpint (h, ==, 300);
|
||||||
|
|
||||||
gtk_widget_show_all (window);
|
gtk_widget_show_all (window);
|
||||||
|
|
||||||
g_timeout_add (1000, stop_main, NULL);
|
if (!interactive)
|
||||||
|
g_timeout_add (200, stop_main, NULL);
|
||||||
gtk_main ();
|
gtk_main ();
|
||||||
|
|
||||||
gtk_window_get_size (GTK_WINDOW (window), &w, &h);
|
gtk_window_get_size (GTK_WINDOW (window), &w, &h);
|
||||||
g_assert (w == 300 && h == 300);
|
g_assert_cmpint (w, ==, 300);
|
||||||
|
g_assert_cmpint (h, ==, 300);
|
||||||
|
|
||||||
g_assert (gtk_widget_get_allocated_width (window) == 300);
|
g_assert_cmpint (gtk_widget_get_allocated_width (window), ==, 300);
|
||||||
g_assert (gtk_widget_get_allocated_height (window) == 300);
|
g_assert_cmpint (gtk_widget_get_allocated_height (window), ==, 300);
|
||||||
|
|
||||||
g_assert (gtk_widget_get_allocated_width (box) == 300);
|
g_assert_cmpint (gtk_widget_get_allocated_width (box), ==, 300);
|
||||||
g_assert (gtk_widget_get_allocated_height (box) == 300);
|
g_assert_cmpint (gtk_widget_get_allocated_height (box), ==, 300);
|
||||||
|
|
||||||
gtk_widget_destroy (window);
|
gtk_widget_destroy (window);
|
||||||
}
|
}
|
||||||
@ -55,6 +96,10 @@ test_resize (void)
|
|||||||
gint w, h;
|
gint w, h;
|
||||||
|
|
||||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||||
|
g_signal_connect (window, "draw", G_CALLBACK (on_draw), NULL);
|
||||||
|
if (interactive)
|
||||||
|
g_signal_connect (window, "key-press-event", G_CALLBACK (on_keypress), NULL);
|
||||||
|
|
||||||
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
||||||
gtk_container_add (GTK_CONTAINER (window), box);
|
gtk_container_add (GTK_CONTAINER (window), box);
|
||||||
|
|
||||||
@ -62,19 +107,23 @@ test_resize (void)
|
|||||||
|
|
||||||
gtk_widget_show_all (window);
|
gtk_widget_show_all (window);
|
||||||
|
|
||||||
g_timeout_add (1000, stop_main, NULL);
|
if (!interactive)
|
||||||
|
g_timeout_add (200, stop_main, NULL);
|
||||||
gtk_main ();
|
gtk_main ();
|
||||||
|
|
||||||
gtk_window_get_size (GTK_WINDOW (window), &w, &h);
|
gtk_window_get_size (GTK_WINDOW (window), &w, &h);
|
||||||
g_assert (w == 400 && h == 200);
|
g_assert_cmpint (w, ==, 400);
|
||||||
|
g_assert_cmpint (h, ==, 200);
|
||||||
|
|
||||||
gtk_window_resize (GTK_WINDOW (window), 200, 400);
|
gtk_window_resize (GTK_WINDOW (window), 200, 400);
|
||||||
|
|
||||||
g_timeout_add (1000, stop_main, NULL);
|
if (!interactive)
|
||||||
|
g_timeout_add (200, stop_main, NULL);
|
||||||
gtk_main ();
|
gtk_main ();
|
||||||
|
|
||||||
gtk_window_get_size (GTK_WINDOW (window), &w, &h);
|
gtk_window_get_size (GTK_WINDOW (window), &w, &h);
|
||||||
g_assert (w == 200 && h == 400);
|
g_assert_cmpint (w, ==, 200);
|
||||||
|
g_assert_cmpint (h, ==, 400);
|
||||||
|
|
||||||
gtk_widget_destroy (window);
|
gtk_widget_destroy (window);
|
||||||
}
|
}
|
||||||
@ -82,8 +131,16 @@ test_resize (void)
|
|||||||
int
|
int
|
||||||
main (int argc, char *argv[])
|
main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
gint i;
|
||||||
|
|
||||||
gtk_test_init (&argc, &argv);
|
gtk_test_init (&argc, &argv);
|
||||||
|
|
||||||
|
for (i = 0; i < argc; i++)
|
||||||
|
{
|
||||||
|
if (g_strcmp0 (argv[i], "--interactive") == 0)
|
||||||
|
interactive = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
g_test_add_func ("/window/default-size", test_default_size);
|
g_test_add_func ("/window/default-size", test_default_size);
|
||||||
g_test_add_func ("/window/resize", test_resize);
|
g_test_add_func ("/window/resize", test_resize);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user