summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/keyevents.c4
-rw-r--r--src/winwidget.c41
-rw-r--r--src/winwidget.h1
3 files changed, 29 insertions, 17 deletions
diff --git a/src/keyevents.c b/src/keyevents.c
index 08d444a..8bb85f5 100644
--- a/src/keyevents.c
+++ b/src/keyevents.c
@@ -36,7 +36,9 @@ void feh_event_invoke_action(winwidget winwid, char *action)
if (action) {
if (opt.slideshow) {
feh_action_run(FEH_FILE(winwid->file->data), action);
- slideshow_change_image(winwid, SLIDE_NEXT);
+ winwidget_update_caption(winwid);
+ /* slideshow_change_image(winwid, SLIDE_NEXT); */
+
} else if ((winwid->type == WIN_TYPE_SINGLE)
|| (winwid->type == WIN_TYPE_THUMBNAIL_VIEWER)) {
feh_action_run(FEH_FILE(winwid->file->data), action);
diff --git a/src/winwidget.c b/src/winwidget.c
index beae5df..e0862f8 100644
--- a/src/winwidget.c
+++ b/src/winwidget.c
@@ -306,6 +306,29 @@ void winwidget_update_title(winwidget ret)
return;
}
+void winwidget_update_caption(winwidget winwid)
+{
+ if (opt.caption_path) {
+ /* TODO: Does someone understand the caching here. Is this the right
+ * approach now that I have broken this out into a separate function. -lsmith */
+
+ /* cache bg pixmap. during caption entry, multiple redraws are done
+ * because the caption overlay changes - the image doesn't though, so re-
+ * rendering that is a waste of time */
+ if (winwid->caption_entry) {
+ GC gc;
+ if (winwid->bg_pmap_cache)
+ XFreePixmap(disp, winwid->bg_pmap_cache);
+ winwid->bg_pmap_cache = XCreatePixmap(disp, winwid->win, winwid->w, winwid->h, depth);
+ gc = XCreateGC(disp, winwid->win, 0, NULL);
+ XCopyArea(disp, winwid->bg_pmap, winwid->bg_pmap_cache, gc, 0, 0, winwid->w, winwid->h, 0, 0);
+ XFreeGC(disp, gc);
+ }
+ feh_draw_caption(winwid);
+ }
+ return;
+}
+
void winwidget_setup_pixmaps(winwidget winwid)
{
if (winwid->full_screen) {
@@ -506,22 +529,8 @@ void winwidget_render_image(winwidget winwid, int resize, int alias)
sh, dx, dy,
dw, dh, 1,
gib_imlib_image_has_alpha(winwid->im), alias);
- if (opt.caption_path) {
- /* cache bg pixmap. during caption entry, multiple redraws are done
- * because the caption overlay changes - the image doesn't though, so re-
- * rendering that is a waste of time */
- if (winwid->caption_entry) {
- GC gc;
- if (winwid->bg_pmap_cache)
- XFreePixmap(disp, winwid->bg_pmap_cache);
- winwid->bg_pmap_cache = XCreatePixmap(disp, winwid->win, winwid->w, winwid->h, depth);
- gc = XCreateGC(disp, winwid->win, 0, NULL);
- XCopyArea(disp, winwid->bg_pmap, winwid->bg_pmap_cache, gc, 0, 0, winwid->w, winwid->h, 0, 0);
- XFreeGC(disp, gc);
- }
- feh_draw_caption(winwid);
- }
-
+ if (opt.caption_path)
+ winwidget_update_caption(winwid);
if (opt.draw_filename)
feh_draw_filename(winwid);
if (opt.draw_actions)
diff --git a/src/winwidget.h b/src/winwidget.h
index 68b2c76..012d78f 100644
--- a/src/winwidget.h
+++ b/src/winwidget.h
@@ -128,6 +128,7 @@ void winwidget_move(winwidget winwid, int x, int y);
void winwidget_resize(winwidget winwid, int w, int h);
void winwidget_setup_pixmaps(winwidget winwid);
void winwidget_update_title(winwidget ret);
+void winwidget_update_caption(winwidget winwid);
void winwidget_rerender_all(int resize, int alias);
void winwidget_destroy_xwin(winwidget winwid);