rendered paste body/* gcc -Wall -g `pkg-config --cflags --libs gtk+-2.0` -o labels labels.c*/#include <gtk/gtk.h>/* http://tadeboro.blogspot.com/2009/05/wrapping-adn-resizing-gtklabel.html */static void on_size_allocate_tadeboro_hack(GtkWidget *label, GtkAllocation *alloc,gpointer data){ gtk_widget_set_size_request( label, alloc->width - 2, -1 );}int main(int argc, char **argv){ gtk_init(&argc, &argv); GtkWidget *window; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(window), "destroy", gtk_main_quit, NULL); /* Set a default window size */ GdkGeometry gdkGeometry; gdkGeometry.min_width= 60; gdkGeometry.min_height = 60; gtk_window_set_geometry_hints(GTK_WINDOW(window), window, &gdkGeometry, GDK_HINT_MIN_SIZE); /* Create an empty button */ GtkWidget *button = gtk_button_new(); /* Add a horizontal box as the button's child */ GtkWidget *button_hbox = gtk_hbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(button),button_hbox); /* Create the left label */ GtkWidget *left_label = gtk_label_new("<b>This is a really long label that should wrap at least once</b>"); gtk_misc_set_alignment(GTK_MISC(left_label),0,0.5); gtk_label_set_line_wrap(GTK_LABEL(left_label),TRUE); gtk_label_set_use_markup(GTK_LABEL(left_label),TRUE); /* Create the right label */ GtkWidget *right_label = gtk_label_new("Small Label"); gtk_misc_set_alignment(GTK_MISC(right_label),1,0.5); /* GtkLabel Line Wrap Hack - GTK SUCKS! */ g_signal_connect( G_OBJECT( left_label ), "size-allocate", G_CALLBACK( on_size_allocate_tadeboro_hack ), NULL ); /* Add the labels to the button's horizontal box */ gtk_box_pack_start(GTK_BOX(button_hbox),left_label,TRUE,TRUE,2); gtk_box_pack_start(GTK_BOX(button_hbox),right_label,TRUE,TRUE,2); /* Add everything in a vertical box for the main window's contents */ GtkWidget *window_vbox = gtk_vbox_new(FALSE,1); gtk_box_pack_start(GTK_BOX(window_vbox), gtk_label_new("Resize Me"),FALSE,TRUE,0); gtk_box_pack_start(GTK_BOX(window_vbox),button,TRUE,TRUE,0); gtk_container_add(GTK_CONTAINER(window),window_vbox); gtk_widget_show_all(window); gtk_main(); return 0;}