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)
|
max = Math.abs(e.wheelDeltaY)
|
||||||
|
|
||||||
if (max > 5000)
|
if (max > 5000)
|
||||||
factor = 400;
|
var factor = 400;
|
||||||
else
|
else
|
||||||
factor = 8;
|
var factor = 8;
|
||||||
|
|
||||||
if (e.wheelDeltaX !== undefined) {
|
if (e.wheelDeltaX !== undefined) {
|
||||||
e.wheelX = -e.wheelDeltaX / factor;
|
e.wheelX = -e.wheelDeltaX / factor;
|
||||||
|
|
@ -259,7 +259,7 @@ function normalizeCommandKeys(callback, e, keyCode) {
|
||||||
break;
|
break;
|
||||||
case "Shift":
|
case "Shift":
|
||||||
hashId = 4;
|
hashId = 4;
|
||||||
break
|
break;
|
||||||
case "Ctrl":
|
case "Ctrl":
|
||||||
hashId = 1;
|
hashId = 1;
|
||||||
break;
|
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 event = require("./lib/event");
|
||||||
|
|
||||||
var RenderLoop = function(onRender, window) {
|
var RenderLoop = function(onRender, win) {
|
||||||
this.onRender = onRender;
|
this.onRender = onRender;
|
||||||
this.pending = false;
|
this.pending = false;
|
||||||
this.changes = 0;
|
this.changes = 0;
|
||||||
this.setTimeoutZero = this.setTimeoutZero.bind(window);
|
this.window = win || window;
|
||||||
};
|
};
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
|
|
@ -56,40 +56,15 @@ var RenderLoop = function(onRender, window) {
|
||||||
if (!this.pending) {
|
if (!this.pending) {
|
||||||
this.pending = true;
|
this.pending = true;
|
||||||
var _self = this;
|
var _self = this;
|
||||||
this.setTimeoutZero(function() {
|
event.nextTick(function() {
|
||||||
_self.pending = false;
|
_self.pending = false;
|
||||||
var changes = _self.changes;
|
var changes = _self.changes;
|
||||||
_self.changes = 0;
|
_self.changes = 0;
|
||||||
_self.onRender(changes);
|
_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);
|
}).call(RenderLoop.prototype);
|
||||||
|
|
||||||
exports.RenderLoop = RenderLoop;
|
exports.RenderLoop = RenderLoop;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue