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; return options.$moduleUrls[name] = subst;
}; };
exports.$loading = {};
exports.loadModule = function(moduleName, onLoad) { exports.loadModule = function(moduleName, onLoad) {
var module, moduleType; var module, moduleType;
if (Array.isArray(moduleName)) { if (Array.isArray(moduleName)) {
moduleType = moduleName[0]; moduleType = moduleName[0];
moduleName = moduleName[1]; moduleName = moduleName[1];
} }
try { try {
module = require(moduleName); module = require(moduleName);
} catch (e) {}; } 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); 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() { var afterLoad = function() {
require([moduleName], function(module) { require([moduleName], function(module) {
exports._emit("load.module", {name: moduleName, module: 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) { EventEmitter.once = function(eventName, callback) {
var _self = this; var _self = this;
var newCallback = function() { callback && this.addEventListener(eventName, function newCallback() {
fun && fun.apply(null, arguments); _self.removeEventListener(eventName, newCallback);
_self.removeEventListener(event, newCallback); callback.apply(null, arguments);
}; });
this.addEventListener(event, newCallback);
}; };

View file

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

View file

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

View file

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

View file

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