summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--man/feh.pre10
-rw-r--r--src/signals.c13
2 files changed, 16 insertions, 7 deletions
diff --git a/man/feh.pre b/man/feh.pre
index 913b9b3..b1ef16a 100644
--- a/man/feh.pre
+++ b/man/feh.pre
@@ -1856,7 +1856,7 @@ So, to enlarge a specific part of an image, click the zoom button on that part.
.
.Sh SIGNALS
.
-In slideshow mode,
+In slideshow and multiwindow mode,
.Nm
handles the following signals:
.
@@ -1864,11 +1864,15 @@ handles the following signals:
.
.It Dv SIGUSR1
.
-Switch to next image
+Slideshow mode: switch to next image;
+reload current image if the slideshow consists of a single file.
+Multiwindow mode: reload all images.
.
.It Dv SIGUSR2
.
-Switch to previous image
+Slideshow mode: switch to previous image;
+reload current image if the slideshow consists of a single file.
+Multiwindow mode: reload all images.
.
.El
.
diff --git a/src/signals.c b/src/signals.c
index d65f49b..85d81bc 100644
--- a/src/signals.c
+++ b/src/signals.c
@@ -24,6 +24,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include "feh.h"
+#include "filelist.h"
#include "winwidget.h"
#include "options.h"
@@ -94,10 +95,14 @@ void feh_handle_signal(int signo)
winwid = winwidget_get_first_window_of_type(WIN_TYPE_SLIDESHOW);
if (winwid) {
- if (signo == SIGUSR1)
- slideshow_change_image(winwid, SLIDE_NEXT, 1);
- else if (signo == SIGUSR2)
- slideshow_change_image(winwid, SLIDE_PREV, 1);
+ if (filelist_len > 1) {
+ if (signo == SIGUSR1)
+ slideshow_change_image(winwid, SLIDE_NEXT, 1);
+ else if (signo == SIGUSR2)
+ slideshow_change_image(winwid, SLIDE_PREV, 1);
+ } else {
+ feh_reload_image(winwid, 0, 0);
+ }
} else if (opt.multiwindow) {
for (i = window_num - 1; i >= 0; i--)
feh_reload_image(windows[i], 0, 0);