File: eye-guide.js

package info (click to toggle)
conkeror 0.9.2%2Bgit100804-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 1,680 kB
  • ctags: 1,182
  • sloc: sh: 547; ansic: 272; xml: 107; makefile: 79
file content (97 lines) | stat: -rw-r--r-- 3,405 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/**
 * (C) Copyright 2009 John J. Foerch
 *
 * Use, modification, and distribution are subject to the terms specified in the
 * COPYING file.
**/

/*
 * Example usage:
 *
 * require('eye-guide.js');
 * define_key(content_buffer_normal_keymap, "space", "eye-guide-scroll-down");
 * define_key(content_buffer_normal_keymap, "back_space", "eye-guide-scroll-up");
 *
 */

in_module(null);

define_variable("eye_guide_interval", 800,
    "Interval during which the eye guide is visible (in ms). "+
    "When 0, the eye guide will remain visible.");

define_variable("eye_guide_context_size", 50,
    "Context size in pixels for eye-guide-scroll-down and "+
    "eye-guide-scroll-up.");

interactive("eye-guide-scroll-down",
    "Alternative to scroll-page-down, displays a guide to help "+
    "your eyes follow the scroll.",
    function(I) {
        let win = I.buffer.focused_frame;
        let doc = I.buffer.document;
        let context = eye_guide_context_size;
        let old_y = win.scrollY;
        win.scrollBy(0, win.innerHeight - context);
        if (win.scrollY == old_y)
            return;
        if (win.scrollY - old_y < win.innerHeight - context)
            context = win.innerHeight - (win.scrollY - old_y);
        let guide = doc.getElementById("__conkeror_eye_guide");
        if (! guide) {
            guide = doc.createElementNS(XHTML_NS, "div");
            guide.id = "__conkeror_eye_guide";
            doc.documentElement.appendChild(guide);
        }
        guide.style.top = '0px';
        guide.style.height = context+'px';
        guide.style.display = "block";
        guide.className = "__conkeror_eye_guide_scroll_down";
        if (win.eye_guide_timer) {
            win.clearTimeout(win.eye_guide_timer);
            win.eye_guide_timer = null;
        }
        if (eye_guide_interval != 0)
            win.eye_guide_timer = win.setTimeout(
                function () {
                    guide.style.display = "none";
                },
                eye_guide_interval);
    });

interactive("eye-guide-scroll-up",
    "Alternative to scroll-page-up, displays a guide to help "+
    "your eyes follow the scroll.",
    function(I) {
        let win = I.buffer.focused_frame;
        let doc = I.buffer.document;
        let context = eye_guide_context_size;
        let old_y = win.scrollY;
        win.scrollBy(0, 0 - (win.innerHeight - context));
        if (win.scrollY == old_y)
            return;
        if (old_y - win.scrollY < win.innerHeight - context)
            context = win.innerHeight - old_y;
        let guide = doc.getElementById("__conkeror_eye_guide");
        if (! guide) {
            guide = doc.createElementNS(XHTML_NS, "div");
            guide.id = "__conkeror_eye_guide";
            doc.documentElement.appendChild(guide);
        }
        guide.style.top = (win.innerHeight - context) + "px";
        guide.style.height = context+'px';
        guide.style.display = "block";
        guide.className = "__conkeror_eye_guide_scroll_up";
        if (win.eye_guide_timer) {
            win.clearTimeout(win.eye_guide_timer);
            win.eye_guide_timer = null;
        }
        if (eye_guide_interval != 0)
            win.eye_guide_timer = win.setTimeout(
                function () {
                    guide.style.display = "none";
                },
                eye_guide_interval);
    });

provide("eye-guide");