diff options
Diffstat (limited to 'src/widgets/icon.cpp')
| -rw-r--r-- | src/widgets/icon.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/widgets/icon.cpp b/src/widgets/icon.cpp index cab03fa50..0aa01a37e 100644 --- a/src/widgets/icon.cpp +++ b/src/widgets/icon.cpp @@ -189,6 +189,19 @@ static int sp_icon_expose(GtkWidget *widget, GdkEventExpose *event) if ( GTK_WIDGET_DRAWABLE(widget) ) { SPIcon *icon = SP_ICON(widget); if ( !icon->pb ) { + sp_icon_fetch_pixbuf( icon ); + } + + sp_icon_paint(SP_ICON(widget), &event->area); + } + + return TRUE; +} + +void sp_icon_fetch_pixbuf( SPIcon *icon ) +{ + if ( icon ) { + if ( !icon->pb ) { guchar *pixels = 0; icon->psize = sp_icon_get_phys_size(icon->lsize); @@ -220,14 +233,9 @@ static int sp_icon_expose(GtkWidget *widget, GdkEventExpose *event) g_warning ("failed to load icon '%s'", icon->name); } } - - sp_icon_paint(SP_ICON(widget), &event->area); } - - return TRUE; } - static void sp_icon_screen_changed( GtkWidget *widget, GdkScreen *previous_screen ) { if ( GTK_WIDGET_CLASS( parent_class )->screen_changed ) { |
