fix embedding multiple ace editors fix #492
This commit is contained in:
parent
2b4351ccd7
commit
d3ba5b8111
2 changed files with 29 additions and 32 deletions
|
|
@ -183,9 +183,9 @@ exports.addMouseWheelListener = function(el, callback) {
|
|||
max = Math.abs(e.wheelDeltaY)
|
||||
|
||||
if (max > 5000)
|
||||
factor = 400;
|
||||
var factor = 400;
|
||||
else
|
||||
factor = 8;
|
||||
var factor = 8;
|
||||
|
||||
if (e.wheelDeltaX !== undefined) {
|
||||
e.wheelX = -e.wheelDeltaX / factor;
|
||||
|
|
@ -259,7 +259,7 @@ function normalizeCommandKeys(callback, e, keyCode) {
|
|||
break;
|
||||
case "Shift":
|
||||
hashId = 4;
|
||||
break
|
||||
break;
|
||||
case "Ctrl":
|
||||
hashId = 1;
|
||||
break;
|
||||
|
|
@ -321,4 +321,26 @@ exports.addCommandKeyListener = function(el, callback) {
|
|||
}
|
||||
};
|
||||
|
||||
if (window.postMessage) {
|
||||
var postMessageId = 1;
|
||||
this.nextTick = function(callback, win) {
|
||||
win = win || window;
|
||||
var messageName = "zero-timeout-message-" + postMessageId;
|
||||
exports.addListener(win, "message", function listener(e) {
|
||||
if (e.data == messageName) {
|
||||
exports.stopPropagation(e);
|
||||
exports.removeListener(win, "message", listener);
|
||||
callback();
|
||||
}
|
||||
});
|
||||
win.postMessage(messageName, "*");
|
||||
};
|
||||
}
|
||||
else {
|
||||
this.nextTick = function(callback, win) {
|
||||
win = win || window;
|
||||
window.setTimeout(callback, 0);
|
||||
};
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
|||
|
|
@ -40,11 +40,11 @@ define(function(require, exports, module) {
|
|||
|
||||
var event = require("./lib/event");
|
||||
|
||||
var RenderLoop = function(onRender, window) {
|
||||
var RenderLoop = function(onRender, win) {
|
||||
this.onRender = onRender;
|
||||
this.pending = false;
|
||||
this.changes = 0;
|
||||
this.setTimeoutZero = this.setTimeoutZero.bind(window);
|
||||
this.window = win || window;
|
||||
};
|
||||
|
||||
(function() {
|
||||
|
|
@ -56,40 +56,15 @@ var RenderLoop = function(onRender, window) {
|
|||
if (!this.pending) {
|
||||
this.pending = true;
|
||||
var _self = this;
|
||||
this.setTimeoutZero(function() {
|
||||
event.nextTick(function() {
|
||||
_self.pending = false;
|
||||
var changes = _self.changes;
|
||||
_self.changes = 0;
|
||||
_self.onRender(changes);
|
||||
});
|
||||
}, this.window);
|
||||
}
|
||||
};
|
||||
|
||||
if (window.postMessage) {
|
||||
this.setTimeoutZero = (function(messageName, attached, listener) {
|
||||
return function setTimeoutZero(callback) {
|
||||
// Set up listener if not listening already.
|
||||
if (!attached) {
|
||||
event.addListener(this, "message", function(e) {
|
||||
if (listener && e.data == messageName) {
|
||||
event.stopPropagation(e);
|
||||
listener();
|
||||
}
|
||||
});
|
||||
attached = true;
|
||||
}
|
||||
|
||||
listener = callback;
|
||||
this.postMessage(messageName, "*");
|
||||
};
|
||||
})("zero-timeout-message", false, null);
|
||||
}
|
||||
else {
|
||||
this.setTimeoutZero = function(callback) {
|
||||
this.setTimeout(callback, 0);
|
||||
};
|
||||
}
|
||||
|
||||
}).call(RenderLoop.prototype);
|
||||
|
||||
exports.RenderLoop = RenderLoop;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue