X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=tests%2Ftestframe.c;h=1ef5100b95a57a2f66a0b7a7a9d78f0d7e7eca20;hb=HEAD;hp=1ab6e2902f2170bbe0026d826f08cde5404f8ddd;hpb=3a0afce5091978b51b75153dc9b910c2a251bc2c;p=~andy%2Fgtk diff --git a/tests/testframe.c b/tests/testframe.c index 1ab6e2902..1ef5100b9 100644 --- a/tests/testframe.c +++ b/tests/testframe.c @@ -12,9 +12,7 @@ * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ #include @@ -24,28 +22,66 @@ static void spin_ythickness_cb (GtkSpinButton *spin, gpointer user_data) { GtkWidget *frame = user_data; - GtkRcStyle *rcstyle; - - rcstyle = gtk_rc_style_new (); - rcstyle->xthickness = gtk_widget_get_style (frame)->xthickness; - rcstyle->ythickness = gtk_spin_button_get_value (spin); - gtk_widget_modify_style (frame, rcstyle); - - g_object_unref (rcstyle); + GtkCssProvider *provider; + GtkStyleContext *context; + gchar *data; + GtkBorder pad; + + context = gtk_widget_get_style_context (frame); + provider = g_object_get_data (G_OBJECT (frame), "provider"); + if (provider == NULL) + { + provider = gtk_css_provider_new (); + g_object_set_data (G_OBJECT (frame), "provider", provider); + gtk_style_context_add_provider (context, + GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + } + + gtk_style_context_get_padding (context, GTK_STATE_FLAG_NORMAL, &pad); + + data = g_strdup_printf ("GtkFrame { padding: %d %d }", + pad.top, + (gint)gtk_spin_button_get_value (spin)); + + gtk_css_provider_load_from_data (provider, data, -1, NULL); + g_free (data); + + gtk_style_context_invalidate (context); + gtk_widget_queue_resize (frame); } static void spin_xthickness_cb (GtkSpinButton *spin, gpointer user_data) { GtkWidget *frame = user_data; - GtkRcStyle *rcstyle; - - rcstyle = gtk_rc_style_new (); - rcstyle->xthickness = gtk_spin_button_get_value (spin); - rcstyle->ythickness = gtk_widget_get_style (frame)->ythickness; - gtk_widget_modify_style (frame, rcstyle); - - g_object_unref (rcstyle); + GtkCssProvider *provider; + GtkStyleContext *context; + gchar *data; + GtkBorder pad; + + context = gtk_widget_get_style_context (frame); + provider = g_object_get_data (G_OBJECT (frame), "provider"); + if (provider == NULL) + { + provider = gtk_css_provider_new (); + g_object_set_data (G_OBJECT (frame), "provider", provider); + gtk_style_context_add_provider (context, + GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + } + + gtk_style_context_get_padding (context, GTK_STATE_FLAG_NORMAL, &pad); + + data = g_strdup_printf ("GtkFrame { padding: %d %d }", + (gint)gtk_spin_button_get_value (spin), + pad.left); + + gtk_css_provider_load_from_data (provider, data, -1, NULL); + g_free (data); + + gtk_style_context_invalidate (context); + gtk_widget_queue_resize (frame); } /* Function to normalize rounding errors in FP arithmetic to @@ -88,9 +124,10 @@ spin_yalign_cb (GtkSpinButton *spin, GtkFrame *frame) int main (int argc, char **argv) { - GtkStyle *style; + GtkStyleContext *context; + GtkBorder pad; GtkWidget *window, *frame, *xthickness_spin, *ythickness_spin, *vbox; - GtkWidget *xalign_spin, *yalign_spin, *button, *table, *label; + GtkWidget *xalign_spin, *yalign_spin, *button, *grid, *label; gfloat xalign, yalign; gtk_init (&argc, &argv); @@ -110,48 +147,49 @@ int main (int argc, char **argv) button = gtk_button_new_with_label ("Hello!"); gtk_container_add (GTK_CONTAINER (frame), button); - table = gtk_table_new (4, 2, FALSE); - gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); + grid = gtk_grid_new (); + gtk_box_pack_start (GTK_BOX (vbox), grid, FALSE, FALSE, 0); - style = gtk_widget_get_style (frame); + context = gtk_widget_get_style_context (frame); + gtk_style_context_get_padding (context, GTK_STATE_FLAG_NORMAL, &pad); /* Spin to control xthickness */ label = gtk_label_new ("xthickness: "); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1); + gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1); xthickness_spin = gtk_spin_button_new_with_range (0, 250, 1); g_signal_connect (G_OBJECT (xthickness_spin), "value-changed", G_CALLBACK (spin_xthickness_cb), frame); - gtk_spin_button_set_value (GTK_SPIN_BUTTON (xthickness_spin), style->xthickness); - gtk_table_attach_defaults (GTK_TABLE (table), xthickness_spin, 1, 2, 0, 1); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (xthickness_spin), pad.left); + gtk_grid_attach (GTK_GRID (grid), xthickness_spin, 1, 0, 1, 1); /* Spin to control ythickness */ label = gtk_label_new ("ythickness: "); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 1, 2); + gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1); ythickness_spin = gtk_spin_button_new_with_range (0, 250, 1); g_signal_connect (G_OBJECT (ythickness_spin), "value-changed", G_CALLBACK (spin_ythickness_cb), frame); - gtk_spin_button_set_value (GTK_SPIN_BUTTON (ythickness_spin), style->ythickness); - gtk_table_attach_defaults (GTK_TABLE (table), ythickness_spin, 1, 2, 1, 2); + gtk_spin_button_set_value (GTK_SPIN_BUTTON (ythickness_spin), pad.top); + gtk_grid_attach (GTK_GRID (grid), ythickness_spin, 1, 1, 1, 1); gtk_frame_get_label_align (GTK_FRAME (frame), &xalign, &yalign); /* Spin to control label xalign */ label = gtk_label_new ("xalign: "); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3); + gtk_grid_attach (GTK_GRID (grid), label, 0, 2, 1, 1); xalign_spin = gtk_spin_button_new_with_range (0.0, 1.0, 0.1); g_signal_connect (G_OBJECT (xalign_spin), "value-changed", G_CALLBACK (spin_xalign_cb), frame); gtk_spin_button_set_value (GTK_SPIN_BUTTON (xalign_spin), xalign); - gtk_table_attach_defaults (GTK_TABLE (table), xalign_spin, 1, 2, 2, 3); + gtk_grid_attach (GTK_GRID (grid), xalign_spin, 1, 2, 1, 1); /* Spin to control label yalign */ label = gtk_label_new ("yalign: "); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 3, 4); + gtk_grid_attach (GTK_GRID (grid), label, 0, 3, 1, 1); yalign_spin = gtk_spin_button_new_with_range (0.0, 1.0, 0.1); g_signal_connect (G_OBJECT (yalign_spin), "value-changed", G_CALLBACK (spin_yalign_cb), frame); gtk_spin_button_set_value (GTK_SPIN_BUTTON (yalign_spin), yalign); - gtk_table_attach_defaults (GTK_TABLE (table), yalign_spin, 1, 2, 3, 4); + gtk_grid_attach (GTK_GRID (grid), yalign_spin, 1, 3, 1, 1); gtk_widget_show_all (window);