Commit ec30a031 authored by Daniel Boles's avatar Daniel Boles

testframe: Actually set the padding

The CSS was targeting node GtkFrame, which is wrong: it is called frame.

This commit also assumes the interesting padding is that between the
border and the child widget, not the padding around the entire Frame.
Some additional hoops must be jumped through to preserve padding values
not being changed in either callback. However, the way this is done
means I must set the initial paddings to 0, which simplifies main().
parent 68549307
......@@ -18,6 +18,8 @@
#include <gtk/gtk.h>
#include <math.h>
static gint hpadding = 0, vpadding = 0;
static void
spin_hpadding_cb (GtkSpinButton *spin, gpointer user_data)
{
......@@ -43,10 +45,9 @@ spin_hpadding_cb (GtkSpinButton *spin, gpointer user_data)
gtk_style_context_get_padding (context, gtk_style_context_get_state (context), &pad);
gtk_style_context_restore (context);
data = g_strdup_printf ("GtkFrame { padding: %dpx %dpx }",
pad.top,
(gint)gtk_spin_button_get_value (spin));
hpadding = (gint)gtk_spin_button_get_value (spin);
data = g_strdup_printf ("frame > border { padding: %dpx %dpx %dpx %dpx }",
vpadding, hpadding, vpadding, hpadding);
gtk_css_provider_load_from_data (provider, data, -1, NULL);
g_free (data);
......@@ -79,10 +80,9 @@ spin_vpadding_cb (GtkSpinButton *spin, gpointer user_data)
gtk_style_context_get_padding (context, gtk_style_context_get_state (context), &pad);
gtk_style_context_restore (context);
data = g_strdup_printf ("GtkFrame { padding: %dpx %dpx }",
(gint)gtk_spin_button_get_value (spin),
pad.left);
vpadding = (gint)gtk_spin_button_get_value (spin);
data = g_strdup_printf ("frame > border { padding: %dpx %dpx %dpx %dpx }",
vpadding, hpadding, vpadding, hpadding);
gtk_css_provider_load_from_data (provider, data, -1, NULL);
g_free (data);
......@@ -139,8 +139,6 @@ draw_border_cb (GtkToggleButton *toggle_button, GtkFrame *frame)
int main (int argc, char **argv)
{
GtkStyleContext *context;
GtkBorder pad;
GtkWidget *window, *widget;
GtkBox *vbox;
GtkFrame *frame;
......@@ -171,12 +169,6 @@ int main (int argc, char **argv)
gtk_grid_set_column_spacing (grid, 6);
gtk_box_pack_start (vbox, GTK_WIDGET (grid), FALSE, FALSE, 0);
context = gtk_widget_get_style_context (GTK_WIDGET (frame));
gtk_style_context_save (context);
gtk_style_context_set_state (context, GTK_STATE_FLAG_NORMAL);
gtk_style_context_get_padding (context, gtk_style_context_get_state (context), &pad);
gtk_style_context_restore (context);
gtk_frame_get_label_align (frame, &xalign, &yalign);
/* Spin to control :label-xalign */
......@@ -202,8 +194,8 @@ int main (int argc, char **argv)
gtk_grid_attach (grid, widget, 0, 2, 1, 1);
widget = gtk_spin_button_new_with_range (0, 250, 1);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), pad.top);
g_signal_connect (widget, "value-changed", G_CALLBACK (spin_vpadding_cb), frame);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), vpadding);
gtk_grid_attach (grid, widget, 1, 2, 1, 1);
/* Spin to control horizontal padding */
......@@ -211,8 +203,8 @@ int main (int argc, char **argv)
gtk_grid_attach (grid, widget, 0, 3, 1, 1);
widget = gtk_spin_button_new_with_range (0, 250, 1);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), pad.left);
g_signal_connect (widget, "value-changed", G_CALLBACK (spin_hpadding_cb), frame);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), hpadding);
gtk_grid_attach (grid, widget, 1, 3, 1, 1);
/* CheckButton to control whether to draw border */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment