Merge pull request #1323 from ajaxorg/newclient

Newclient
This commit is contained in:
Ruben Daniels 2013-03-24 09:35:25 -07:00
commit 91afcc5800
6 changed files with 32 additions and 16 deletions

View file

@ -93,22 +93,37 @@ exports.setModuleUrl = function(name, subst) {
return options.$moduleUrls[name] = subst;
};
exports.$loading = {};
exports.loadModule = function(moduleName, onLoad) {
var module, moduleType;
if (Array.isArray(moduleName)) {
moduleType = moduleName[0];
moduleName = moduleName[1];
}
try {
module = require(moduleName);
} catch (e) {};
if (module)
// require(moduleName) can return empty object if called after require([moduleName], callback)
if (module && !exports.$loading[moduleName])
return onLoad && onLoad(module);
if (!exports.$loading[moduleName])
exports.$loading[moduleName] = [];
exports.$loading[moduleName].push(onLoad);
if (exports.$loading[moduleName].length > 1)
return;
var afterLoad = function() {
require([moduleName], function(module) {
exports._emit("load.module", {name: moduleName, module: module});
onLoad && onLoad(module);
var listeners = exports.$loading[moduleName];
exports.$loading[moduleName] = null;
listeners.forEach(function(onLoad) {
onLoad && onLoad(module);
});
});
};

View file

@ -79,11 +79,10 @@ EventEmitter._signal = function(eventName, e) {
EventEmitter.once = function(eventName, callback) {
var _self = this;
var newCallback = function() {
fun && fun.apply(null, arguments);
_self.removeEventListener(event, newCallback);
};
this.addEventListener(event, newCallback);
callback && this.addEventListener(eventName, function newCallback() {
_self.removeEventListener(eventName, newCallback);
callback.apply(null, arguments);
});
};

View file

@ -121,6 +121,7 @@ var MouseHandler = function(editor) {
renderer.$moveTextAreaToCursor();
}
self.isMousePressed = false;
self.onMouseEvent("mouseup", e)
};
var onCaptureInterval = function() {

View file

@ -106,7 +106,7 @@ function onMouseDown(e) {
var oldRange = selection.rangeList.rangeAtPoint(pos);
event.capture(editor.container, function(){}, function() {
editor.once("mouseup", function() {
var tmpSel = selection.toOrientedRange();
if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))

View file

@ -831,14 +831,10 @@ exports.onSessionChange = function(e) {
var oldSession = e.oldSession;
if (oldSession) {
// todo use events
if (oldSession.multiSelect && oldSession.multiSelect.editor == this)
oldSession.multiSelect.editor = null;
session.multiSelect.removeEventListener("addRange", this.$onAddRange);
session.multiSelect.removeEventListener("removeRange", this.$onRemoveRange);
session.multiSelect.removeEventListener("multiSelect", this.$onMultiSelect);
session.multiSelect.removeEventListener("singleSelect", this.$onSingleSelect);
oldSession.multiSelect.removeEventListener("addRange", this.$onAddRange);
oldSession.multiSelect.removeEventListener("removeRange", this.$onRemoveRange);
oldSession.multiSelect.removeEventListener("multiSelect", this.$onMultiSelect);
oldSession.multiSelect.removeEventListener("singleSelect", this.$onSingleSelect);
}
session.multiSelect.on("addRange", this.$onAddRange);

View file

@ -326,6 +326,9 @@ var VirtualRenderer = function(container, theme) {
changes = changes | this.CHANGE_FULL;
}
if (!this.$size.scrollerHeight)
return;
if (force)
this.$renderChanges(changes, true);
else
@ -1265,6 +1268,8 @@ var VirtualRenderer = function(container, theme) {
}
function afterLoad(theme) {
if (!theme.cssClass)
return;
dom.importCssString(
theme.cssText,
theme.cssClass,