2 * (C) Copyright 2011 Peter Lunicks
4 * Use, modification, and distribution are subject to the terms specified in the
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) {
15 if (mouse_wheel_scroll_lines != null)
16 lines = mouse_wheel_scroll_lines * (event.detail < 0 ? -1 : 1)
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",
37 function mouse_wheel_remove_listener (buffer) {
38 buffer.browser.removeEventListener("DOMMouseScroll",
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");