]> Pileus Git - ~andy/gtk/blob - tests/testsensitive.c
stylecontext: Do invalidation on first resize container
[~andy/gtk] / tests / testsensitive.c
1 #include <gtk/gtk.h>
2
3 static void
4 set_insensitive (GtkButton *b, GtkWidget *w)
5 {
6   gtk_widget_set_sensitive (w, FALSE);
7 }
8
9 static void
10 state_changed (GtkWidget *widget)
11 {
12   GtkStateFlags flags;
13   const gchar *sep;
14
15   g_print ("state changed: \n");
16   switch (gtk_widget_get_state (widget))
17     {
18     case GTK_STATE_ACTIVE:
19       g_print ("active, ");
20       break;
21     case GTK_STATE_PRELIGHT:
22       g_print ("prelight, ");
23       break;
24     case GTK_STATE_SELECTED:
25       g_print ("selected, ");
26       break;
27     case GTK_STATE_INSENSITIVE:
28       g_print ("insensitive, ");
29       break;
30     case GTK_STATE_INCONSISTENT:
31       g_print ("inconsistent, ");
32       break;
33     case GTK_STATE_FOCUSED:
34       g_print ("focused, ");
35       break;
36     case GTK_STATE_NORMAL:
37       g_print ("normal, ");
38       break;
39     }
40
41   flags = gtk_widget_get_state_flags (widget);
42   sep = "";
43   if (flags & GTK_STATE_FLAG_ACTIVE)
44     {
45       g_print ("%sactive", sep);
46       sep = "|";
47     }
48   if (flags & GTK_STATE_FLAG_PRELIGHT)
49     {
50       g_print ("%sprelight", sep);
51       sep = "|";
52     }
53   if (flags & GTK_STATE_FLAG_SELECTED)
54     {
55       g_print ("%sselected", sep);
56       sep = "|";
57     }
58   if (flags & GTK_STATE_FLAG_INSENSITIVE)
59     {
60       g_print ("%sinsensitive", sep);
61       sep = "|";
62     }
63   if (flags & GTK_STATE_FLAG_INCONSISTENT)
64     {
65       g_print ("%sinconsistent", sep);
66       sep = "|";
67     }
68   if (flags & GTK_STATE_FLAG_FOCUSED)
69     {
70       g_print ("%sfocused", sep);
71       sep = "|";
72     }
73   if (sep[0] == 0)
74     g_print ("normal");
75   g_print ("\n");
76 }
77
78 int main (int argc, char *argv[])
79 {
80   GtkWidget *window;
81   GtkWidget *box;
82   GtkWidget *bu;
83   GtkWidget *w, *c;
84
85   gtk_init (&argc, &argv);
86
87   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
88   box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
89   gtk_container_add (GTK_CONTAINER (window), box);
90
91   w = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 15);
92   gtk_box_pack_start (GTK_BOX (box), w, TRUE, TRUE, 0);
93   gtk_box_pack_start (GTK_BOX (w), gtk_entry_new (), TRUE, TRUE, 0);
94   bu = gtk_button_new_with_label ("Bu");
95   gtk_box_pack_start (GTK_BOX (w), bu, TRUE, TRUE, 0);
96   c = gtk_switch_new ();
97   gtk_switch_set_active (GTK_SWITCH (c), TRUE);
98   gtk_widget_set_halign (c, GTK_ALIGN_CENTER);
99   gtk_widget_set_valign (c, GTK_ALIGN_CENTER);
100   gtk_box_pack_start (GTK_BOX (box), c, TRUE, TRUE, 0);
101   g_signal_connect (bu, "clicked", G_CALLBACK (set_insensitive), w);
102   g_signal_connect (bu, "state-changed", G_CALLBACK (state_changed), NULL);
103
104   g_object_bind_property (c, "active", w, "sensitive", G_BINDING_BIDIRECTIONAL);
105
106   gtk_widget_show_all (window);
107
108   gtk_main ();
109
110   return 0;
111 }