new module to enable editing and deleting of bookmarks
[conkeror/arlinius.git] / modules / mouse-wheel.js
blob360f4ce46ee1bbcd86eef285639b33dbabcbaef5
1 /**
2  * (C) Copyright 2011 Peter Lunicks
3  *
4  * Use, modification, and distribution are subject to the terms specified in the
5  * COPYING file.
6 **/
8 define_variable("mouse_wheel_scroll_lines", null,
9                 "How many lines to scroll when the mouse wheel is used. " +
10                 "A null value causes mouse-wheel-mode to scroll by the " +
11                 "number of lines specified in the DOMMouseScroll event.");
13 function mouse_wheel_scroll (event) {
14     var lines;
15     if (mouse_wheel_scroll_lines != null)
16         lines = mouse_wheel_scroll_lines * (event.detail < 0 ? -1 : 1)
17     else
18         lines = event.detail;
20     // Scroll the frame under mouse, not necessarily the current/focused frame
21     var window = this.ownerDocument.defaultView;
22     var frame = event.target.ownerDocument.defaultView;
23     do_repeatedly(attempt_builtin_command, lines,
24                   [window, frame, "cmd_scrollLineDown"],
25                   [window, frame, "cmd_scrollLineUp"]);
27     // Prevent the scrollbars from scrolling further (if visible)
28     event.preventDefault();
31 function mouse_wheel_add_listener (buffer) {
32     buffer.browser.addEventListener("DOMMouseScroll",
33                                     mouse_wheel_scroll,
34                                     true);
37 function mouse_wheel_remove_listener (buffer) {
38     buffer.browser.removeEventListener("DOMMouseScroll",
39                                        mouse_wheel_scroll,
40                                        true);
43 function mouse_wheel_mode_enable () {
44     add_hook("create_buffer_hook", mouse_wheel_add_listener);
45     for_each_buffer(mouse_wheel_add_listener);
48 function mouse_wheel_mode_disable () {
49     remove_hook("create_buffer_hook", mouse_wheel_remove_listener);
50     for_each_buffer(mouse_wheel_remove_listener);
53 define_global_mode("mouse_wheel_mode",
54                    mouse_wheel_mode_enable,
55                    mouse_wheel_mode_disable);
57 mouse_wheel_mode(true);
59 provide("mouse-wheel");