]> git.scottworley.com Git - vopamoi/commitdiff
Factor out task offset logic
authorScott Worley <scottworley@scottworley.com>
Wed, 26 Jan 2022 18:59:16 +0000 (10:59 -0800)
committerScott Worley <scottworley@scottworley.com>
Thu, 27 Jan 2022 20:21:55 +0000 (12:21 -0800)
vopamoi.ts

index b90b8956a90e80c2d01bf21635fa138ab9133dc0..3042adde1255c00fece833224eb7af7f3521c990 100644 (file)
@@ -125,10 +125,8 @@ const BrowserUI = {
     event.preventDefault();
   },
 
     event.preventDefault();
   },
 
-  moveCursor: function (offset: number): boolean {
-    var initial_cursor = document.activeElement;
-    if (!initial_cursor) return false;
-    var cursor: Element | null = initial_cursor;
+  visibleTaskAtOffset(task: Element, offset: number): Element {
+    var cursor: Element | null = task;
     var valid_cursor = cursor;
     const increment = offset / Math.abs(offset);
     while (true) {
     var valid_cursor = cursor;
     const increment = offset / Math.abs(offset);
     while (true) {
@@ -140,8 +138,15 @@ const BrowserUI = {
       }
       if (Math.abs(offset) < 0.5) break;
     }
       }
       if (Math.abs(offset) < 0.5) break;
     }
-    if (valid_cursor !== initial_cursor && valid_cursor instanceof HTMLElement) {
-      valid_cursor.focus();
+    return valid_cursor;
+  },
+
+  moveCursor: function (offset: number): boolean {
+    const active = document.activeElement;
+    if (!active) return false;
+    const dest = this.visibleTaskAtOffset(active, offset);
+    if (dest !== active && dest instanceof HTMLElement) {
+      dest.focus();
       return true;
     }
     return false;
       return true;
     }
     return false;