На какой сигнал нужно повесить обработчик ресайза GtkImage при ресайзе формы?
Сейчас делаю так:
...
g_signal_connect( img_src, "size-request", GTK_SIGNAL_FUNC( resize_image ), NULL );
...
...
if ( gtk_dialog_run( GTK_DIALOG( dialog ) ) == GTK_RESPONSE_ACCEPT ) {
char *filename;
filename = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER( dialog ) );
pixbuf = gdk_pixbuf_new_from_file( filename, NULL );
gtk_widget_get_size_request( img_src, &w, &h );
gtk_image_set_from_pixbuf( GTK_IMAGE( img_src ),
gdk_pixbuf_scale_simple( pixbuf, w, h, GDK_INTERP_BILINEAR ) );
gtk_widget_show( img_src );
g_free( filename );
}
...
static void resize_image( GtkWidget *widget, GtkRequisition *allocation, gpointer data )
{
GdkPixbuf *pixbuf = gtk_image_get_pixbuf( GTK_IMAGE( widget ) );
printf("Width: %i\tHeight: %i\n", allocation->width, allocation->height);
gtk_image_set_from_pixbuf( GTK_IMAGE( widget ),
gdk_pixbuf_scale_simple( pixbuf, allocation->width, allocation->height, GDK_INTERP_BILINEAR ) );
}
Когда открываю картинку, прогу циклит в обработчике.