diff options
author | Dmitrij D. Czarkoff <czarkoff@gmail.com> | 2016-04-26 22:07:02 +0200 |
---|---|---|
committer | Dmitrij D. Czarkoff <czarkoff@gmail.com> | 2016-04-26 22:07:02 +0200 |
commit | fe10d9d38f02dbfe229e40f96f9640c3568a7f69 (patch) | |
tree | d8c06b524331784d004b8a549004295c12067373 /src/main.c | |
parent | 4d2f36a98be483e021845e4e8fc17722a8aa800c (diff) | |
download | imv-fe10d9d38f02dbfe229e40f96f9640c3568a7f69.tar.gz |
Reimplement '-x' flag
This change effectively backs out f1737ddd06141afbe99f37af3b5c2d0f1df5fe7a,
implementing the same functionality in a simpler and more correct way.
Implementation details:
* imv_navigator.wrapped - a new field that has value "0" by default; once
navigator wraps around the list, this field recieves value "1".
* imv_navigator_wrapped(&nav) - a new function that returns non-zero value iff
navigator wrapped around the list. Currently just returns value of
imv_navigator.wrapped.
While at it, expanded "test_navigator_remove" and merged it with
"test_navigator_add". Resulting test is called "test_navigator_add_remove".
Fixes #94.
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 17 |
1 files changed, 8 insertions, 9 deletions
@@ -348,17 +348,13 @@ int main(int argc, char** argv) break; case SDLK_LEFTBRACKET: case SDLK_LEFT: - if(!imv_navigator_select_rel(&nav, -1, g_options.cycle)) { - quit = 1; - } + imv_navigator_select_rel(&nav, -1); /* reset slideshow delay */ delay_msec = 0; break; case SDLK_RIGHTBRACKET: case SDLK_RIGHT: - if(!imv_navigator_select_rel(&nav, 1, g_options.cycle)) { - quit = 1; - } + imv_navigator_select_rel(&nav, 1); /* reset slideshow delay */ delay_msec = 0; break; @@ -486,6 +482,11 @@ int main(int argc, char** argv) free(err_path); } + /* Check if navigator wrapped around paths lists */ + if(!g_options.cycle && imv_navigator_wrapped(&nav)) { + break; + } + /* if the user has changed image, start loading the new one */ if(imv_navigator_poll_changed(&nav, poll_countdown--)) { const char *current_path = imv_navigator_selection(&nav); @@ -549,9 +550,7 @@ int main(int argc, char** argv) delay_msec += dt; need_redraw = 1; if(delay_msec >= g_options.delay) { - if(!imv_navigator_select_rel(&nav, 1, g_options.cycle)) { - quit = 1; - } + imv_navigator_select_rel(&nav, 1); delay_msec = 0; } } |