forked from alice0775/userChrome.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfixF7keyWarningDialog.uc.js
120 lines (112 loc) · 4.31 KB
/
fixF7keyWarningDialog.uc.js
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// ==UserScript==
// @name fixF7keyWarningDialog.uc.js
// @namespace http://space.geocities.yahoo.co.jp/gl/alice0775
// @description 「今後このダイアログを表示しない」を,いいえを押した場合も記憶する
// @description もう一度,ダイアログを出したい時はabout:configでaccessibility.warn_on_browsewithcaretをtrueにする
// @description alt+F7 で トグル
// @include main
// @compatibility Firefox 2.0 3.0
// @author Alice0775
// @version LastMod 2007/06/26 19:00
// @Note Session Managerに対応
// ==/UserScript==
(function(){
function fixF7keyWarningDialog(event){
//try{debug("bbb"+event.type);}catch(e){debug("aaa");}
if(!event){
var max = gBrowser.mPanelContainer.childNodes.length;;
for(var i = 0; i < max; i++){
gBrowser.getBrowserAtIndex(i).setAttribute("onkeypress", "this.onkeypress(event);");
gBrowser.getBrowserAtIndex(i).onkeypress = onkeypress;
}
}else{
var browser = event.originalTarget.linkedBrowser;
browser.setAttribute("onkeypress", "this.onkeypress(event);");
browser.onkeypress = onkeypress;
}
function onkeypress(event){
if (event.getPreventDefault() || !event.isTrusted)
return;
if(event.keyCode == KeyEvent.DOM_VK_F7 && !event.altKey){
try {
var isEnabled = this.mPrefs.getBoolPref("accessibility.browsewithcaret_shortcut.enabled");
if (!isEnabled)
return;
} catch (ex) { }
event.preventDefault()
event.stopPropagation();
// Toggle browse with caret mode
var browseWithCaretOn = false;
var warn = true;
try {
warn = this.mPrefs.getBoolPref("accessibility.warn_on_browsewithcaret");
} catch (ex) {
}
try {
browseWithCaretOn = this.mPrefs.getBoolPref("accessibility.browsewithcaret");
} catch (ex) {
}
if (warn) {
var checkValue = {value:false};
promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);
var buttonPressed = promptService.confirmEx(window,
this.mStrBundle.GetStringFromName('browsewithcaret.checkWindowTitle'),
this.mStrBundle.GetStringFromName('browsewithcaret.checkLabel'),
(promptService.BUTTON_TITLE_YES * promptService.BUTTON_POS_0) +
(promptService.BUTTON_TITLE_NO * promptService.BUTTON_POS_1),
null, null, null, this.mStrBundle.GetStringFromName('browsewithcaret.checkMsg'),
checkValue);
if (buttonPressed == 0){
try {
this.mPrefs.setBoolPref("accessibility.browsewithcaret",true);
} catch (ex) {
}
}else{
try {
this.mPrefs.setBoolPref("accessibility.browsewithcaret",false);
} catch (ex) {
}
}
if (checkValue.value) {
try {
this.mPrefs.setBoolPref("accessibility.warn_on_browsewithcaret", false);
}
catch (ex) {
}
}
}
}else if(event.keyCode == KeyEvent.DOM_VK_F7 && event.altKey){
try {
var isEnabled = this.mPrefs.getBoolPref("accessibility.browsewithcaret_shortcut.enabled");
if (!isEnabled)
return;
} catch (ex) { }
event.preventDefault()
event.stopPropagation();
try {
browseWithCaretOn = this.mPrefs.getBoolPref("accessibility.browsewithcaret");
} catch (ex) {
}
// Toggle the pref
try {
this.mPrefs.setBoolPref("accessibility.browsewithcaret",!browseWithCaretOn);
}
catch (ex) {
}
}
}
function debug(aMsg){
const Cc = Components.classes;
const Ci = Components.interfaces;
Cc["@mozilla.org/consoleservice;1"]
.getService(Ci.nsIConsoleService)
.logStringMessage(aMsg);
}
}
//最初に既にあるタブに対して
fixF7keyWarningDialog()
//新たなタブに対して
gBrowser.tabContainer.addEventListener("TabOpen", fixF7keyWarningDialog, false);
//復元されたタブに対して
gBrowser.tabContainer.addEventListener("SSTabRestored", fixF7keyWarningDialog, false);
})();