browser_object_up_url: support trimming #ref (fragment)
[conkeror.git] / modules / caret.js
blobeed2c926bd3f06259a7c96200cdf799cbdb221c0
1 /**
2  * (C) Copyright 2007-2008 Jeremy Maitin-Shepard
3  * (C) Copyright 2008-2009 John J. Foerch
4  *
5  * Use, modification, and distribution are subject to the terms specified in the
6  * COPYING file.
7 **/
9 in_module(null);
11 function caret_modality (buffer, elem) {
12     buffer.keymaps.push(caret_keymap);
15 define_buffer_mode('caret_mode',
16     function enable (buffer) {
17         buffer.browser.setAttribute('showcaret', 'true');
18         var sc = buffer.focused_selection_controller;
19         sc.setCaretEnabled(true);
20         buffer.top_frame.focus();
21         buffer.modalities.push(caret_modality);
22         buffer.set_input_mode();
23     },
24     function disable (buffer) {
25         buffer.browser.setAttribute('showcaret', 'false');
26         var sc = buffer.focused_selection_controller;
27         sc.setCaretEnabled(false);
28         buffer.browser.focus();
29         var i = buffer.modalities.indexOf(caret_modality);
30         if (i > -1)
31             buffer.modalities.splice(i, 1);
32         buffer.set_input_mode();
33     },
34     $display_name = 'CARET');
36 function caret_mode_enable (buffer) {
37     caret_mode.enable(buffer);
40 watch_pref('accessibility.browsewithcaret',
41            function caret_toggle_all_buffers () {
42                if (get_pref('accessibility.browsewithcaret')) {
43                    for_each_buffer(function (buffer) {
44                        caret_mode(buffer, true);
45                    });
46                    add_hook('create_buffer_hook', caret_mode_enable);
47                } else {
48                    for_each_buffer(function (buffer) {
49                        caret_mode(buffer, false);
50                    });
51                    remove_hook('create_buffer_hook', caret_mode_enable);
52                }
53            });
55 provide("caret");