diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/feh.h | 2 | ||||
-rw-r--r-- | src/options.c | 10 | ||||
-rw-r--r-- | src/signals.c | 13 | ||||
-rw-r--r-- | src/signals.h | 2 | ||||
-rw-r--r-- | src/slideshow.c | 4 | ||||
-rw-r--r-- | src/wallpaper.c | 19 | ||||
-rw-r--r-- | src/winwidget.c | 1 |
7 files changed, 29 insertions, 22 deletions
@@ -152,7 +152,7 @@ void feh_event_handle_stdin(); void feh_event_handle_generic(winwidget winwid, unsigned int state, KeySym keysym, unsigned int button); fehkey *feh_str_to_kb(char * action); void feh_action_run(feh_file * file, char *action, winwidget winwid); -char *format_size(int size); +char *format_size(double size); char *feh_printf(char *str, feh_file * file, winwidget winwid); void im_weprintf(winwidget w, char *fmt, ...); void feh_draw_zoom(winwidget w); diff --git a/src/options.c b/src/options.c index 34e248e..37fad88 100644 --- a/src/options.c +++ b/src/options.c @@ -470,6 +470,8 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) if (opt.slideshow_delay < 0.0) { opt.slideshow_delay *= (-1); opt.paused = 1; + } else { + opt.paused = 0; } break; case 'E': @@ -751,10 +753,12 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) break; case 234: opt.info_cmd = estrdup(optarg); - if (opt.info_cmd[0] == ';') + if (opt.info_cmd[0] == ';') { + opt.draw_info = 0; opt.info_cmd++; - else + } else { opt.draw_info = 1; + } break; case 235: opt.force_aliasing = 1; @@ -834,8 +838,6 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun) add_file_to_filelist_recursively(".", FILELIST_FIRST); } } - else if (finalrun && !opt.filelistfile && !opt.bgmode) - add_file_to_filelist_recursively(".", FILELIST_FIRST); /* So that we can safely be called again */ optind = 0; 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); diff --git a/src/signals.h b/src/signals.h index 38fc0d2..bff737e 100644 --- a/src/signals.h +++ b/src/signals.h @@ -27,5 +27,5 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define SIGNALS_H void setup_signal_handlers(); -volatile extern int sig_exit; +extern volatile int sig_exit; #endif diff --git a/src/slideshow.c b/src/slideshow.c index 145ced1..ac8c545 100644 --- a/src/slideshow.c +++ b/src/slideshow.c @@ -445,7 +445,7 @@ void feh_action_run(feh_file * file, char *action, winwidget winwid) return; } -char *format_size(int size) +char *format_size(double size) { static char ret[5]; char units[] = {' ', 'k', 'M', 'G', 'T'}; @@ -454,7 +454,7 @@ char *format_size(int size) size /= 1000; postfix++; } - snprintf(ret, 5, "%3d%c", size, units[postfix]); + snprintf(ret, 5, "%3.0f%c", size, units[postfix]); return ret; } diff --git a/src/wallpaper.c b/src/wallpaper.c index ef7ecca..9df259f 100644 --- a/src/wallpaper.c +++ b/src/wallpaper.c @@ -502,15 +502,16 @@ void feh_wm_set_bg(char *fil, Imlib_Image im, int centered, int scaled, } fputc(' ', fp); if (use_filelist) { - for (int i = 0; i < cmdargc; i++) { - if (filelist_pos && !strcmp(FEH_FILE(filelist_pos->data)->filename, cmdargv[i])) { - /* argument is a file */ - absolute_path = feh_absolute_path(cmdargv[i]); - fputs(shell_escape(absolute_path), fp); - filelist_pos = filelist_pos->next; - free(absolute_path); - fputc(' ', fp); - } +#ifdef HAVE_LIBXINERAMA + for (int i = 0; (i < opt.xinerama ? num_xinerama_screens : 1) && filelist_pos; i++) { +#else + for (int i = 0; (i < 1 ) && filelist_pos; i++) { +#endif + absolute_path = feh_absolute_path(FEH_FILE(filelist_pos->data)->filename); + fputs(shell_escape(absolute_path), fp); + filelist_pos = filelist_pos->next; + free(absolute_path); + fputc(' ', fp); } } else if (fil) { absolute_path = feh_absolute_path(fil); diff --git a/src/winwidget.c b/src/winwidget.c index 4f5f4a6..bb4fdae 100644 --- a/src/winwidget.c +++ b/src/winwidget.c @@ -203,7 +203,6 @@ void winwidget_create_window(winwidget ret, int w, int h) } if (opt.paused) { - printf("name %s\n", ret->name); tmpname = estrjoin(" ", ret->name, "[Paused]", NULL); free(ret->name); ret->name = tmpname; |