aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorDmitrij D. Czarkoff <czarkoff@gmail.com>2016-04-26 22:07:02 +0200
committerDmitrij D. Czarkoff <czarkoff@gmail.com>2016-04-26 22:07:02 +0200
commitfe10d9d38f02dbfe229e40f96f9640c3568a7f69 (patch)
treed8c06b524331784d004b8a549004295c12067373 /src/main.c
parent4d2f36a98be483e021845e4e8fc17722a8aa800c (diff)
downloadimv-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.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/main.c b/src/main.c
index a342a6c..2bb2729 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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;
}
}