}
static gboolean
-on_expose_alignment (GtkWidget *widget,
- GdkEventExpose *event,
- void *data)
+on_draw_alignment (GtkWidget *widget,
+ cairo_t *cr,
+ void *data)
{
- cairo_t *cr;
- GtkAllocation allocation;
-
- cr = gdk_cairo_create (event->window);
-
cairo_set_source_rgb (cr, 1.0, 0.0, 0.0);
- gtk_widget_get_allocation (widget, &allocation);
- cairo_rectangle (cr,
- allocation.x,
- allocation.y,
- allocation.width,
- allocation.height);
- cairo_fill (cr);
-
- cairo_destroy (cr);
+ cairo_paint (cr);
return FALSE;
}
/* make the alignment visible */
gtk_widget_set_redraw_on_allocate (alignment, TRUE);
g_signal_connect (G_OBJECT (alignment),
- "expose-event",
- G_CALLBACK (on_expose_alignment),
+ "draw",
+ G_CALLBACK (on_draw_alignment),
NULL);
return alignment;
g_signal_connect (window, "delete-event",
G_CALLBACK (gtk_main_quit), window);
- box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 0);
+ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add (GTK_CONTAINER (window), box);
toggle =
GtkWidget *inner_box;
GtkWidget *test_widget;
GtkWidget *label;
- GdkColor color;
+ GdkRGBA color;
outer_box = gtk_event_box_new ();
- gdk_color_parse ("black", &color);
- gtk_widget_modify_bg (outer_box, GTK_STATE_NORMAL, &color);
+ gdk_rgba_parse (&color, "black");
+ gtk_widget_override_background_color (outer_box, 0, &color);
inner_box = gtk_event_box_new ();
gtk_container_set_border_width (GTK_CONTAINER (inner_box), 5);
- gdk_color_parse ("blue", &color);
- gtk_widget_modify_bg (inner_box, GTK_STATE_NORMAL, &color);
+ gdk_rgba_parse (&color, "blue");
+ gtk_widget_override_background_color (inner_box, 0, &color);
gtk_container_add (GTK_CONTAINER (outer_box), inner_box);
test_widget = gtk_event_box_new ();
- gdk_color_parse ("red", &color);
- gtk_widget_modify_bg (test_widget, GTK_STATE_NORMAL, &color);
+ gdk_rgba_parse (&color, "red");
+ gtk_widget_override_background_color (test_widget, 0, &color);
gtk_container_add (GTK_CONTAINER (inner_box), test_widget);
gtk_widget_show_all (test_window);
}
+static void
+open_valigned_label_window (void)
+{
+ GtkWidget *window, *box, *label, *frame;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ g_signal_connect (test_window, "delete-event",
+ G_CALLBACK (gtk_main_quit), test_window);
+
+ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_widget_show (box);
+ gtk_container_add (GTK_CONTAINER (window), box);
+
+ label = gtk_label_new ("Both labels expand");
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
+
+ label = gtk_label_new ("Some wrapping text with width-chars = 15 and max-width-chars = 35");
+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+ gtk_label_set_width_chars (GTK_LABEL (label), 15);
+ gtk_label_set_max_width_chars (GTK_LABEL (label), 35);
+
+ gtk_widget_show (label);
+
+ frame = gtk_frame_new (NULL);
+ gtk_widget_show (frame);
+ gtk_container_add (GTK_CONTAINER (frame), label);
+
+ gtk_widget_set_valign (frame, GTK_ALIGN_CENTER);
+ gtk_widget_set_halign (frame, GTK_ALIGN_CENTER);
+
+ gtk_box_pack_start (GTK_BOX (box), frame, TRUE, TRUE, 0);
+
+ gtk_window_present (GTK_WINDOW (window));
+}
+
int
main (int argc, char *argv[])
{
open_control_window ();
open_alignment_window ();
open_margin_window ();
+ open_valigned_label_window ();
gtk_main ();