Fix key repeat workaround for Safari.
Typing "(" now works in Safari
This commit is contained in:
parent
7ddb4d728c
commit
53ea2aeb17
2 changed files with 32 additions and 30 deletions
|
|
@ -17,6 +17,7 @@ require.def("ace/lib/core", function() {
|
||||||
core.isMac = (os == "mac");
|
core.isMac = (os == "mac");
|
||||||
core.isLinux = (os == "linux");
|
core.isLinux = (os == "linux");
|
||||||
core.isIE = ! + "\v1";
|
core.isIE = ! + "\v1";
|
||||||
|
core.isGecko = window.controllers && window.navigator.product === "Gecko";
|
||||||
|
|
||||||
core.provide = function(namespace) {
|
core.provide = function(namespace) {
|
||||||
var parts = namespace.split(".");
|
var parts = namespace.split(".");
|
||||||
|
|
|
||||||
|
|
@ -149,24 +149,24 @@ require.def("ace/lib/event", ["ace/lib/core"], function(core) {
|
||||||
var startX, startY;
|
var startX, startY;
|
||||||
|
|
||||||
var listener = function(e) {
|
var listener = function(e) {
|
||||||
clicks += 1;
|
clicks += 1;
|
||||||
if (clicks == 1) {
|
if (clicks == 1) {
|
||||||
startX = e.clientX;
|
startX = e.clientX;
|
||||||
startY = e.clientY;
|
startY = e.clientY;
|
||||||
|
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
clicks = 0;
|
clicks = 0;
|
||||||
}, timeout || 600);
|
}, timeout || 600);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5)
|
if (Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5)
|
||||||
clicks = 0;
|
clicks = 0;
|
||||||
|
|
||||||
if (clicks == count) {
|
if (clicks == count) {
|
||||||
clicks = 0;
|
clicks = 0;
|
||||||
callback(e);
|
callback(e);
|
||||||
}
|
}
|
||||||
return event.preventDefault(e);
|
return event.preventDefault(e);
|
||||||
};
|
};
|
||||||
|
|
||||||
event.addListener(el, "mousedown", listener);
|
event.addListener(el, "mousedown", listener);
|
||||||
|
|
@ -174,23 +174,24 @@ require.def("ace/lib/event", ["ace/lib/core"], function(core) {
|
||||||
};
|
};
|
||||||
|
|
||||||
event.addKeyListener = function(el, callback) {
|
event.addKeyListener = function(el, callback) {
|
||||||
var lastDown = null;
|
var lastDown = null;
|
||||||
|
|
||||||
event.addListener(el, "keydown", function(e) {
|
event.addListener(el, "keydown", function(e) {
|
||||||
lastDown = e.keyIdentifier || e.keyCode;
|
lastDown = e.keyIdentifier || e.keyCode;
|
||||||
return callback(e);
|
return callback(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (core.isMac) {
|
// repeated keys are fired as keypress and not keydown events
|
||||||
event.addListener(el, "keypress", function(e) {
|
if (core.isMac && core.isGecko) {
|
||||||
var keyId = e.keyIdentifier || e.keyCode;
|
event.addListener(el, "keypress", function(e) {
|
||||||
if (lastDown !== keyId) {
|
var keyId = e.keyIdentifier || e.keyCode;
|
||||||
return callback(e);
|
if (lastDown !== keyId) {
|
||||||
} else {
|
return callback(e);
|
||||||
lastDown = null;
|
} else {
|
||||||
}
|
lastDown = null;
|
||||||
});
|
}
|
||||||
}
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return event;
|
return event;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue