Updating branch refs/heads/ristretto-0.0 to 94dc596fe5c10eb41f75816663c4ec0f658e69c5 (commit) from d144f6ee499591485ba8976d0aa2b1c17d756e46 (commit)
commit 94dc596fe5c10eb41f75816663c4ec0f658e69c5 Author: Stephan Arts <step...@xfce.org> Date: Tue May 26 13:05:56 2009 +0200 Show an inactive image when there is no image loaded ChangeLog | 5 +++ src/picture_viewer.c | 68 +++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 62 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 446ca80..73b41ea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-05-26 Stephan Arts <step...@xfce.org> + + * src/picture_viewer.c: Show an 'inactive' image when there is no + image loaded. + 2009-05-25 Stephan Arts <step...@xfce.org> * src/main_window.c: change open-folder icon to 'folder-open' instead of diff --git a/src/picture_viewer.c b/src/picture_viewer.c index 348db4e..22bf027 100644 --- a/src/picture_viewer.c +++ b/src/picture_viewer.c @@ -396,15 +396,15 @@ rstto_picture_viewer_paint (GtkWidget *widget) GdkPixbuf *pixbuf = viewer->priv->dst_pixbuf; GdkColor color; GdkColor line_color; - GValue bg_color = {0, }, bg_color_override = {0, }, bg_color_fs = {0, }; - g_value_init (&bg_color, GDK_TYPE_COLOR); - g_value_init (&bg_color_fs, GDK_TYPE_COLOR); - g_value_init (&bg_color_override, G_TYPE_BOOLEAN); + GValue val_bg_color = {0, }, val_bg_color_override = {0, }, val_bg_color_fs = {0, }; + g_value_init (&val_bg_color, GDK_TYPE_COLOR); + g_value_init (&val_bg_color_fs, GDK_TYPE_COLOR); + g_value_init (&val_bg_color_override, G_TYPE_BOOLEAN); - g_object_get_property (G_OBJECT(settings_manager), "bgcolor", &bg_color); - g_object_get_property (G_OBJECT(settings_manager), "bgcolor-override", &bg_color_override); + g_object_get_property (G_OBJECT(settings_manager), "bgcolor", &val_bg_color); + g_object_get_property (G_OBJECT(settings_manager), "bgcolor-override", &val_bg_color_override); - g_object_get_property (G_OBJECT(settings_manager), "bgcolor-fullscreen", &bg_color_fs); + g_object_get_property (G_OBJECT(settings_manager), "bgcolor-fullscreen", &val_bg_color_fs); color.pixel = 0x0; @@ -412,6 +412,8 @@ rstto_picture_viewer_paint (GtkWidget *widget) gint i, a, height, width; + GdkColor *bg_color = NULL; + /* required for transparent pixbufs... add double buffering to fix flickering*/ if(GTK_WIDGET_REALIZED(widget)) { @@ -420,20 +422,25 @@ rstto_picture_viewer_paint (GtkWidget *widget) if(gdk_window_get_state(gdk_window_get_toplevel(GTK_WIDGET(viewer)->window)) & GDK_WINDOW_STATE_FULLSCREEN) { - gdk_gc_set_rgb_fg_color (gc, g_value_get_boxed (&bg_color_fs)); + bg_color = g_value_get_boxed (&val_bg_color_fs); } else { - if (g_value_get_boxed (&bg_color) && g_value_get_boolean (&bg_color_override)) + if (g_value_get_boxed (&val_bg_color) && g_value_get_boolean (&val_bg_color_override)) { - gdk_gc_set_rgb_fg_color (gc, g_value_get_boxed (&bg_color)); + bg_color = g_value_get_boxed (&val_bg_color); } else { - gdk_gc_set_foreground(gc, &(widget->style->bg[GTK_STATE_NORMAL])); + bg_color = &(widget->style->bg[GTK_STATE_NORMAL]); } } + gdk_colormap_alloc_color (gdk_gc_get_colormap (gc), bg_color, FALSE, TRUE); + gdk_gc_set_rgb_fg_color (gc, bg_color); + gdk_draw_rectangle(GDK_DRAWABLE(buffer), gc, TRUE, 0, 0, widget->allocation.width, widget->allocation.height); + + /* Check if there is a destination pixbuf */ if(pixbuf) { gint x1 = (widget->allocation.width-gdk_pixbuf_get_width(pixbuf))<0?0:(widget->allocation.width-gdk_pixbuf_get_width(pixbuf))/2; @@ -570,6 +577,43 @@ rstto_picture_viewer_paint (GtkWidget *widget) } } + else + { + + /* HACK HACK HACK HACK */ + guint size = 0; + if ((GTK_WIDGET (viewer)->allocation.width) < (GTK_WIDGET (viewer)->allocation.height)) + { + size = GTK_WIDGET (viewer)->allocation.width; + } + else + { + size = GTK_WIDGET (viewer)->allocation.height; + } + pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default(), + "ristretto", + (size*0.8), + GTK_ICON_LOOKUP_FORCE_SIZE, NULL); + gdk_pixbuf_saturate_and_pixelate (pixbuf, pixbuf, 0, TRUE); + pixbuf = gdk_pixbuf_composite_color_simple (pixbuf, (size*0.8), (size*0.8), GDK_INTERP_BILINEAR, 50, 50, bg_color->pixel, bg_color->pixel); + + gint x1 = (widget->allocation.width-gdk_pixbuf_get_width(pixbuf))<0?0:(widget->allocation.width-gdk_pixbuf_get_width(pixbuf))/2; + gint y1 = (widget->allocation.height-gdk_pixbuf_get_height(pixbuf))<0?0:(widget->allocation.height-gdk_pixbuf_get_height(pixbuf))/2; + gint x2 = gdk_pixbuf_get_width(pixbuf); + gint y2 = gdk_pixbuf_get_height(pixbuf); + + gdk_draw_pixbuf(GDK_DRAWABLE(buffer), + NULL, + pixbuf, + 0, + 0, + x1, + y1, + x2, + y2, + GDK_RGB_DITHER_NONE, + 0,0); + } gdk_draw_drawable(GDK_DRAWABLE(widget->window), gdk_gc_new(widget->window), buffer, @@ -1173,6 +1217,8 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer) } } } + + rstto_picture_viewer_paint (GTK_WIDGET (viewer)); g_source_remove (viewer->priv->repaint.idle_id); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits