#include "exif.h"
#include "metadata.h"
#include "histogram.h"
+#include "history_list.h"
#include "image-load.h"
#include "image-overlay.h"
#include "layout.h"
static GList *image_list = NULL;
-static void image_update_title(ImageWindow *imd);
+void image_update_title(ImageWindow *imd);
static void image_read_ahead_start(ImageWindow *imd);
static void image_cache_set(ImageWindow *imd, FileData *fd);
*-------------------------------------------------------------------
*/
-static void image_update_title(ImageWindow *imd)
+void image_update_title(ImageWindow *imd)
{
gchar *title = NULL;
gchar *zoom = NULL;
return imd->overunderexposed;
}
+void image_set_ignore_alpha(ImageWindow *imd, gboolean ignore_alpha)
+{
+ pixbuf_renderer_set_ignore_alpha((PixbufRenderer *)imd->pr, ignore_alpha);
+}
+
/*
*-------------------------------------------------------------------
* read ahead (prebuffer)
break;
case FORMAT_CLASS_VIDEO:
pixbuf = pixbuf_inline(PIXBUF_INLINE_VIDEO);
+ break;
case FORMAT_CLASS_COLLECTION:
pixbuf = pixbuf_inline(PIXBUF_INLINE_COLLECTION);
break;
static gboolean image_scroll_cb(GtkWidget *widget, GdkEventScroll *event, gpointer data)
{
ImageWindow *imd = data;
+ gboolean in_lw = FALSE;
+ gint i = 0;
+ LayoutWindow *lw = NULL;
- if (imd->func_scroll &&
- event && event->type == GDK_SCROLL)
+ if (imd->func_scroll && event && event->type == GDK_SCROLL)
{
- imd->func_scroll(imd, event, imd->data_scroll);
- return TRUE;
+ layout_valid(&lw);
+ /* check if the image is in a layout window */
+ for (i = 0; i < MAX_SPLIT_IMAGES; i++)
+ {
+ if (imd == lw->split_images[i])
+ {
+ in_lw = TRUE;
+ break;
+ }
+ }
+
+ if (in_lw)
+ {
+ if (lw->options.split_pane_sync)
+ {
+ for (i = 0; i < MAX_SPLIT_IMAGES; i++)
+ {
+ if (lw->split_images[i])
+ {
+ layout_image_activate(lw, i, FALSE);
+ imd->func_scroll(lw->split_images[i], event, lw->split_images[i]->data_scroll);
+ }
+ }
+ }
+ else
+ {
+ imd->func_scroll(imd, event, imd->data_scroll);
+ }
+ return TRUE;
+ }
+ else
+ {
+ imd->func_scroll(imd, event, imd->data_scroll);
+ return TRUE;
+ }
}
return FALSE;
lw = layout_find_by_image(imd);
- if (!(options->image.fit_window_to_image && lw && lw->options.tools_float)) window = NULL;
+ if (!(options->image.fit_window_to_image && lw && (lw->options.tools_float || lw->options.tools_hidden))) window = NULL;
pixbuf_renderer_set_parent((PixbufRenderer *)imd->pr, (GtkWindow *)window);
void image_change_pixbuf(ImageWindow *imd, GdkPixbuf *pixbuf, gdouble zoom, gboolean lazy)
{
+ LayoutWindow *lw;
StereoPixbufData stereo_data = STEREO_PIXBUF_DEFAULT;
/* read_exif and similar functions can actually notice that the file has changed and trigger
a notification that removes the pixbuf from cache and unrefs it. Therefore we must ref it
if (pixbuf) g_object_unref(pixbuf);
- if (imd->color_profile_enable)
+ /* Color correction takes too much time for an animated gif */
+ lw = layout_find_by_image(imd);
+ if (imd->color_profile_enable && lw && !lw->animation)
{
- image_post_process_color(imd, 0, FALSE); /* TODO: error handling */
+ image_post_process_color(imd, 0, FALSE); /** @todo error handling */
}
if (imd->cm || imd->desaturate || imd->overunderexposed)
collection_table_unselect_all(cw->table);
collection_table_select(cw->table,info);
}
+
+ if (info->fd)
+ {
+ image_chain_append_end(info->fd->path);
+ }
}
CollectionData *image_get_collection(ImageWindow *imd, CollectInfo **info)
if ((type & NOTIFY_REREAD) && fd == imd->image_fd)
{
/* there is no need to reload on NOTIFY_CHANGE,
- modified files should be detacted anyway and NOTIFY_REREAD should be recieved
+ modified files should be detacted anyway and NOTIFY_REREAD should be received
or they are removed from the filelist completely on "move" and "delete"
*/
DEBUG_1("Notify image: %s %04x", fd->path, type);