1 #include <gtk/gtk.h>
2 #include <locale.h>
3 #include "gdk/gdkeventsprivate.h"
4
5 static gboolean
pop_up(gpointer data)6 pop_up (gpointer data)
7 {
8 gtk_popover_popup (GTK_POPOVER (data));
9
10 return G_SOURCE_REMOVE;
11 }
12
13 static gboolean
tickle(gpointer data)14 tickle (gpointer data)
15 {
16 GtkWidget *label;
17
18 label = gtk_widget_get_first_child (GTK_WIDGET (data));
19 gtk_widget_set_valign (label, GTK_ALIGN_START);
20
21 return G_SOURCE_REMOVE;
22 }
23
24 static gboolean
stop(gpointer data)25 stop (gpointer data)
26 {
27 gboolean *done = data;
28
29 *done = TRUE;
30
31 g_main_context_wakeup (NULL);
32
33 return G_SOURCE_REMOVE;
34 }
35
36 static void
test_show_popover(void)37 test_show_popover (void)
38 {
39 GtkWidget *window;
40 GtkWidget *button;
41 GtkWidget *popover;
42 gboolean done;
43
44 window = gtk_window_new ();
45 button = gtk_menu_button_new ();
46 popover = gtk_popover_new ();
47 gtk_popover_set_child (GTK_POPOVER (popover), gtk_label_new ("Nu?"));
48 gtk_menu_button_set_popover (GTK_MENU_BUTTON (button), popover);
49 gtk_window_set_child (GTK_WINDOW (window), button);
50
51 gtk_window_present (GTK_WINDOW (window));
52
53 g_timeout_add (1000, pop_up, popover);
54 g_timeout_add (2000, tickle, popover);
55 done = FALSE;
56 g_timeout_add (3000, stop, &done);
57
58 while (!done)
59 g_main_context_iteration (NULL, TRUE);
60 }
61
62 int
main(int argc,char * argv[])63 main (int argc, char *argv[])
64 {
65 gtk_test_init (&argc, &argv);
66
67 g_test_add_func ("/popover/show", test_show_popover);
68
69 return g_test_run ();
70 }
71