kopia lustrzana https://github.com/c9/core
fix author layer getting lost when moving tab between panes
rodzic
7e90154196
commit
2e524ab8ba
|
@ -38,9 +38,17 @@ define(function(require, module, exports) {
|
|||
function AuthorLayer(session) {
|
||||
var plugin = new Plugin("Ajax.org", main.consumes);
|
||||
// var emit = plugin.getEmitter();
|
||||
var marker = session.addDynamicMarker({ update: drawAuthInfos }, false);
|
||||
var marker;
|
||||
|
||||
function refresh() {
|
||||
if (showAuthorInfo) {
|
||||
session.on("changeEditor", onChangeEditor);
|
||||
marker = session.addDynamicMarker({ update: drawAuthInfos }, false);
|
||||
}
|
||||
else {
|
||||
dispose();
|
||||
}
|
||||
|
||||
var doc = session.collabDoc.original;
|
||||
var ace = doc.editor && doc.editor.ace;
|
||||
var aceSession = ace && ace.session;
|
||||
|
@ -48,15 +56,33 @@ define(function(require, module, exports) {
|
|||
return;
|
||||
|
||||
session._emit("changeBackMarker");
|
||||
var renderer = ace.renderer;
|
||||
onChangeEditor({ editor: ace });
|
||||
}
|
||||
|
||||
function dispose() {
|
||||
marker && session.removeMarker(marker.id);
|
||||
session.off("changeEditor", onChangeEditor);
|
||||
}
|
||||
|
||||
plugin.freezePublicAPI({
|
||||
get colorPool() { return workspace.colorPool; },
|
||||
refresh: refresh,
|
||||
dispose: dispose
|
||||
});
|
||||
|
||||
return plugin;
|
||||
}
|
||||
|
||||
function onChangeEditor(e) {
|
||||
var renderer = (e.editor || e.oldEditor).renderer;
|
||||
renderer.$gutterLayer.$padding = null;
|
||||
renderer.$loop.schedule(renderer.CHANGE_GUTTER);
|
||||
if (showAuthorInfo) {
|
||||
if (showAuthorInfo && e.editor) {
|
||||
renderer.$gutterLayer.on("afterRender", decorateGutter);
|
||||
}
|
||||
else {
|
||||
renderer.$gutterLayer.off("afterRender", decorateGutter);
|
||||
clearGutterDecorations(renderer);
|
||||
clearGutterDecorations(renderer.$gutterLayer);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -119,14 +145,15 @@ define(function(require, module, exports) {
|
|||
var doc = session.collabDoc;
|
||||
var isCollabGutter = doc && showAuthorInfo && util.isRealCollab(workspace);
|
||||
|
||||
if (!isCollabGutter)
|
||||
return;
|
||||
|
||||
var config = gutter.config;
|
||||
var range = new Range(config.firstRow, 0, config.lastRow, Number.MAX_VALUE);
|
||||
var authorKeysCache = isCollabGutter && createAuthorKeyCache(editorDoc, doc.authAttribs, range).authorKeys;
|
||||
var colorPool = workspace.colorPool;
|
||||
var reversedAuthorPool = workspace.reversedAuthorPool;
|
||||
|
||||
if (!isCollabGutter)
|
||||
return clearGutterDecorations();
|
||||
var cells = gutter.$lines.cells;
|
||||
for (var i = 0; i < cells.length; i++) {
|
||||
var cell = cells[i];
|
||||
|
@ -144,9 +171,9 @@ define(function(require, module, exports) {
|
|||
}
|
||||
}
|
||||
|
||||
function clearGutterDecorations(renderer) {
|
||||
renderer.$gutterLayer.$lines.cellCache.length = 0;
|
||||
var cells = renderer.$gutterLayer.$lines.cells;
|
||||
function clearGutterDecorations(gutter) {
|
||||
gutter.$lines.cellCache.length = 0;
|
||||
var cells = gutter.$lines.cells;
|
||||
for (var i = 0; i < cells.length; i++) {
|
||||
var cell = cells[i];
|
||||
cell.element.style.borderLeft = "";
|
||||
|
@ -219,19 +246,6 @@ define(function(require, module, exports) {
|
|||
};
|
||||
}
|
||||
|
||||
function dispose () {
|
||||
session.removeMarker(marker.id);
|
||||
}
|
||||
|
||||
plugin.freezePublicAPI({
|
||||
get colorPool() { return workspace.colorPool; },
|
||||
refresh: refresh,
|
||||
dispose: dispose
|
||||
});
|
||||
|
||||
return plugin;
|
||||
}
|
||||
|
||||
function getLineAuthorKey(session, authAttribs, row) {
|
||||
var editorDoc = session.doc;
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue