testgtk: Connect to draw signal in "rotated text" example

This commit is contained in:
Benjamin Otte
2010-09-08 22:34:28 +02:00
parent 7af767333e
commit b8ebcdd0e0

View File

@@ -2329,22 +2329,19 @@ on_rotated_text_unrealize (GtkWidget *widget)
}
static gboolean
on_rotated_text_expose (GtkWidget *widget,
GdkEventExpose *event,
GdkPixbuf *tile_pixbuf)
on_rotated_text_draw (GtkWidget *widget,
cairo_t *cr,
GdkPixbuf *tile_pixbuf)
{
GtkAllocation allocation;
static const gchar *words[] = { "The", "grand", "old", "Duke", "of", "York",
"had", "10,000", "men" };
int n_words;
int i;
int width, height;
double radius;
PangoLayout *layout;
PangoContext *context;
PangoFontDescription *desc;
cairo_t *cr;
cr = gdk_cairo_create (event->window);
if (tile_pixbuf)
{
@@ -2354,13 +2351,13 @@ on_rotated_text_expose (GtkWidget *widget,
else
cairo_set_source_rgb (cr, 0, 0, 0);
gtk_widget_get_allocation (widget, &allocation);
radius = MIN (allocation.width, allocation.height) / 2.;
width = gtk_widget_get_allocated_width (widget);
height = gtk_widget_get_allocated_height (widget);
radius = MIN (width, height) / 2.;
cairo_translate (cr,
radius + (allocation.width - 2 * radius) / 2,
radius + (allocation.height - 2 * radius) / 2);
radius + (width - 2 * radius) / 2,
radius + (height - 2 * radius) / 2);
cairo_scale (cr, radius / DEFAULT_TEXT_RADIUS, radius / DEFAULT_TEXT_RADIUS);
context = gtk_widget_get_pango_context (widget);
@@ -2389,7 +2386,6 @@ on_rotated_text_expose (GtkWidget *widget,
}
g_object_unref (layout);
cairo_destroy (cr);
return FALSE;
}
@@ -2430,8 +2426,8 @@ create_rotated_text (GtkWidget *widget)
tile_pixbuf = gdk_pixbuf_new_from_file ("marble.xpm", NULL);
g_signal_connect (drawing_area, "expose-event",
G_CALLBACK (on_rotated_text_expose), tile_pixbuf);
g_signal_connect (drawing_area, "draw",
G_CALLBACK (on_rotated_text_draw), tile_pixbuf);
g_signal_connect (drawing_area, "unrealize",
G_CALLBACK (on_rotated_text_unrealize), NULL);