]> git.scottworley.com Git - picsort/commitdiff
Disallow scrolling off the beginning and end
authorScott Worley <scottworley@scottworley.com>
Fri, 28 Feb 2014 21:11:25 +0000 (13:11 -0800)
committerScott Worley <scottworley@scottworley.com>
Fri, 28 Feb 2014 21:36:02 +0000 (13:36 -0800)
picsorter.js

index cf2c399f9cb39ae3bbf61e8bec99991fa1bcaa0a..ec63cbc8fd3d5a64473e0a368ed6579932685cab 100644 (file)
@@ -59,9 +59,23 @@ function toggle_zoom() {
 
 function move_by_filter(direction, filter) {
   // Keep moving in direction until filter is satisfied
-  do {
-    input_index += direction;
-  } while (!filter());
+  var new_index = input_index;
+  while (true) {
+    var next = new_index + direction;
+    if (next < 0) {
+      say("At beginning");
+      return;
+    }
+    if (next >= files.length) {
+      say("At end");
+      return;
+    }
+    new_index = next;
+    if (filter(new_index)) {
+      break;
+    }
+  }
+  input_index = new_index;
   say(input_index + " " + (picinfo[files[input_index]].name || ""));
   setpic();
 }
@@ -69,13 +83,13 @@ function move(direction) {
   move_by_filter(direction, function() { return true; });
 }
 function move_to_nondeleted(direction) {
-  move_by_filter(direction, function() {
-    return !("deleted" in picinfo[files[input_index]]); });
+  move_by_filter(direction, function(i) {
+    return !("deleted" in picinfo[files[i]]); });
 }
 function move_to_unnamed(direction) {
-  move_by_filter(direction, function() {
-    return !("deleted" in picinfo[files[input_index]]) &&
-           !("name" in picinfo[files[input_index]]); });
+  move_by_filter(direction, function(i) {
+    return !("deleted" in picinfo[files[i]]) &&
+           !("name" in picinfo[files[i]]); });
 }
 
 function mark_deleted() {