diff options
author | Owen Taylor <otaylor@redhat.com> | 2002-04-30 18:32:08 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2002-04-30 18:32:08 +0000 |
commit | 75e535515a927367dec64eb81fffa060a3868bf2 (patch) | |
tree | 2756605b542f8c873f292f89fecc90e65e795ce8 /tests | |
parent | 4f13adf9ff5537202260c7b70868e9d0b7b92a54 (diff) | |
download | gtk+-75e535515a927367dec64eb81fffa060a3868bf2.tar.gz |
fix problem with finalizing non-initialized fully display when failing to
Tue Apr 30 14:23:43 2002 Owen Taylor <otaylor@redhat.com>
* gdk/x11/gdkdisplay-x11.c (gdk_open_display): fix
problem with finalizing non-initialized fully display
when failing to open display.
* tests/testxinerama.c: Xinerama test case from
multihead branch, with some cleanups. (Start even
if there is only one monitor, for one.)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 5 | ||||
-rw-r--r-- | tests/testxinerama.c | 79 |
2 files changed, 83 insertions, 1 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 6a9072f967..72cd257b4e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -41,7 +41,8 @@ noinst_PROGRAMS = \ testtreeflow \ testtreecolumns \ testtreesort \ - treestoretest + treestoretest \ + testxinerama simple_DEPENDENCIES = $(TEST_DEPS) testcalendar_DEPENDENCIES = $(TEST_DEPS) @@ -61,6 +62,7 @@ testtreeflow_DEPENDENCIES = $(DEPS) testtreecolumns_DEPENDENCIES = $(DEPS) testtreesort_DEPENDENCIES = $(DEPS) treestoretest_DEPENDENCIES = $(TEST_DEPS) +testxinerama_DEPENDENCIES = $(TEST_DEPS) simple_LDADD = $(LDADDS) testcalendar_LDADD = $(LDADDS) @@ -80,6 +82,7 @@ testtreecolumns_LDADD = $(LDADDS) testtreesort_LDADD = $(LDADDS) testtext_LDADD = $(LDADDS) treestoretest_LDADD = $(LDADDS) +testxinerama_LDADD = $(LDADDS) testgtk_SOURCES = \ prop-editor.c \ diff --git a/tests/testxinerama.c b/tests/testxinerama.c new file mode 100644 index 0000000000..69bc6fc7bd --- /dev/null +++ b/tests/testxinerama.c @@ -0,0 +1,79 @@ +#include <stdlib.h> +#include <gtk/gtk.h> +#include "x11/gdkx.h" + +static gint num_monitors; + +static void +request (GtkWidget *widget, + GdkEventMotion *event, + gpointer user_data) +{ + gchar *str; + gint i = gdk_screen_get_monitor_at_window (gtk_widget_get_screen (widget), + GDK_WINDOW_XWINDOW (widget->window)); + + if (i < 0) + str = g_strdup ("<big><span foreground='white' background='black'>Not on a monitor </span></big>"); + else + { + GdkRectangle *monitor = gdk_screen_get_monitor_geometry (gtk_widget_get_screen (widget), i); + str = g_strdup_printf ("<big><span foreground='white' background='black'>" + "Monitor %d of %d</span></big>\n" + "<i>Width - Height </i>: (%d,%d)\n" + "<i>Top left coordinate </i>: (%d,%d)",i+1, num_monitors, + monitor->width, monitor->height, monitor->x, monitor->y); + } + + gtk_label_set_markup (GTK_LABEL (user_data), str); + g_free (str); +} + +int +main (int argc, char *argv[]) +{ + GtkWidget *window, *label, *vbox, *button; + GdkScreen *screen; + gint i; + + gtk_init (&argc, &argv); + + screen = gdk_get_default_screen (); + + num_monitors = gdk_screen_get_n_monitors (screen); + if (num_monitors == 1) + g_warning ("The current display has only one monitor."); + + for (i=0; i<num_monitors; i++) + { + GdkRectangle *monitor = gdk_screen_get_monitor_geometry (screen, i); + gchar *str; + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + + gtk_window_set_default_size (GTK_WINDOW (window), 200, 200); + gtk_window_move (GTK_WINDOW (window), (monitor->width - 200) / 2 + monitor->x, + (monitor->height - 200) / 2 + monitor->y); + + label = gtk_label_new (NULL); + str = g_strdup_printf ("<big><span foreground='white' background='black'>" + "Monitor %d of %d</span></big>\n" + "<i>Width - Height </i>: (%d,%d)\n" + "<i>Top left coordinate </i>: (%d,%d)",i+1, num_monitors, + monitor->width, monitor->height, monitor->x, monitor->y); + gtk_label_set_markup (GTK_LABEL (label), str); + g_free (str); + button = gtk_button_new_with_label ("Close"); + g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (gtk_main_quit), NULL); + g_signal_connect (G_OBJECT (window), "configure-event", G_CALLBACK (request), label); + vbox = gtk_vbox_new (TRUE, 1); + gtk_container_add (GTK_CONTAINER (window), vbox); + gtk_container_add (GTK_CONTAINER (vbox), label); + gtk_container_add (GTK_CONTAINER (vbox), button); + gtk_widget_show_all (window); + } + + gtk_main (); + + return 0; +} |