as some kind of workaround for bug #459518, show the fallback icon when

2007-10-08  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpviewrendererimage.c
	(gimp_view_renderer_image_render): as some kind of workaround 
for
	bug #459518, show the fallback icon when rendering the preview 
for
	an invisible channel.


svn path=/trunk/; revision=23768
This commit is contained in:
Sven Neumann 2007-10-08 20:13:58 +00:00 committed by Sven Neumann
parent 38f72c00ac
commit 1446520338
1 changed files with 90 additions and 81 deletions

View File

@ -63,14 +63,23 @@ gimp_view_renderer_image_render (GimpViewRenderer *renderer,
GtkWidget *widget) GtkWidget *widget)
{ {
GimpViewRendererImage *rendererimage = GIMP_VIEW_RENDERER_IMAGE (renderer); GimpViewRendererImage *rendererimage = GIMP_VIEW_RENDERER_IMAGE (renderer);
GimpImage *image; GimpImage *image = GIMP_IMAGE (renderer->viewable);
const gchar *stock_id;
/* The conditions checked here are mostly a hack to hide the fact that
* we are creating the channel preview from the image preview and turning
* off visibility of a channel has the side-effect of painting the channel
* preview all black. See bug #459518 for details.
*/
if (rendererimage->channel == -1 ||
(gimp_image_get_component_visible (image, rendererimage->channel) &&
gimp_image_get_component_visible (image, GIMP_ALPHA_CHANNEL)))
{
gint view_width; gint view_width;
gint view_height; gint view_height;
gboolean scaling_up; gboolean scaling_up;
TempBuf *render_buf = NULL; TempBuf *render_buf = NULL;
image = GIMP_IMAGE (renderer->viewable);
gimp_viewable_calc_preview_size (image->width, gimp_viewable_calc_preview_size (image->width,
image->height, image->height,
renderer->width, renderer->width,
@ -88,7 +97,8 @@ gimp_view_renderer_image_render (GimpViewRenderer *renderer,
temp_buf = gimp_viewable_get_new_preview (renderer->viewable, temp_buf = gimp_viewable_get_new_preview (renderer->viewable,
renderer->context, renderer->context,
image->width, image->height); image->width,
image->height);
if (temp_buf) if (temp_buf)
{ {
@ -137,10 +147,10 @@ gimp_view_renderer_image_render (GimpViewRenderer *renderer,
GIMP_VIEW_BG_WHITE); GIMP_VIEW_BG_WHITE);
temp_buf_free (render_buf); temp_buf_free (render_buf);
return;
}
} }
else
{
const gchar *stock_id;
switch (rendererimage->channel) switch (rendererimage->channel)
{ {
@ -157,5 +167,4 @@ gimp_view_renderer_image_render (GimpViewRenderer *renderer,
} }
gimp_view_renderer_default_render_stock (renderer, widget, stock_id); gimp_view_renderer_default_render_stock (renderer, widget, stock_id);
}
} }