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) {
|
function AuthorLayer(session) {
|
||||||
var plugin = new Plugin("Ajax.org", main.consumes);
|
var plugin = new Plugin("Ajax.org", main.consumes);
|
||||||
// var emit = plugin.getEmitter();
|
// var emit = plugin.getEmitter();
|
||||||
var marker = session.addDynamicMarker({ update: drawAuthInfos }, false);
|
var marker;
|
||||||
|
|
||||||
function refresh() {
|
function refresh() {
|
||||||
|
if (showAuthorInfo) {
|
||||||
|
session.on("changeEditor", onChangeEditor);
|
||||||
|
marker = session.addDynamicMarker({ update: drawAuthInfos }, false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
|
|
||||||
var doc = session.collabDoc.original;
|
var doc = session.collabDoc.original;
|
||||||
var ace = doc.editor && doc.editor.ace;
|
var ace = doc.editor && doc.editor.ace;
|
||||||
var aceSession = ace && ace.session;
|
var aceSession = ace && ace.session;
|
||||||
|
@ -48,15 +56,33 @@ define(function(require, module, exports) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
session._emit("changeBackMarker");
|
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.$gutterLayer.$padding = null;
|
||||||
renderer.$loop.schedule(renderer.CHANGE_GUTTER);
|
renderer.$loop.schedule(renderer.CHANGE_GUTTER);
|
||||||
if (showAuthorInfo) {
|
if (showAuthorInfo && e.editor) {
|
||||||
renderer.$gutterLayer.on("afterRender", decorateGutter);
|
renderer.$gutterLayer.on("afterRender", decorateGutter);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
renderer.$gutterLayer.off("afterRender", decorateGutter);
|
renderer.$gutterLayer.off("afterRender", decorateGutter);
|
||||||
clearGutterDecorations(renderer);
|
clearGutterDecorations(renderer.$gutterLayer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,14 +145,15 @@ define(function(require, module, exports) {
|
||||||
var doc = session.collabDoc;
|
var doc = session.collabDoc;
|
||||||
var isCollabGutter = doc && showAuthorInfo && util.isRealCollab(workspace);
|
var isCollabGutter = doc && showAuthorInfo && util.isRealCollab(workspace);
|
||||||
|
|
||||||
|
if (!isCollabGutter)
|
||||||
|
return;
|
||||||
|
|
||||||
var config = gutter.config;
|
var config = gutter.config;
|
||||||
var range = new Range(config.firstRow, 0, config.lastRow, Number.MAX_VALUE);
|
var range = new Range(config.firstRow, 0, config.lastRow, Number.MAX_VALUE);
|
||||||
var authorKeysCache = isCollabGutter && createAuthorKeyCache(editorDoc, doc.authAttribs, range).authorKeys;
|
var authorKeysCache = isCollabGutter && createAuthorKeyCache(editorDoc, doc.authAttribs, range).authorKeys;
|
||||||
var colorPool = workspace.colorPool;
|
var colorPool = workspace.colorPool;
|
||||||
var reversedAuthorPool = workspace.reversedAuthorPool;
|
var reversedAuthorPool = workspace.reversedAuthorPool;
|
||||||
|
|
||||||
if (!isCollabGutter)
|
|
||||||
return clearGutterDecorations();
|
|
||||||
var cells = gutter.$lines.cells;
|
var cells = gutter.$lines.cells;
|
||||||
for (var i = 0; i < cells.length; i++) {
|
for (var i = 0; i < cells.length; i++) {
|
||||||
var cell = cells[i];
|
var cell = cells[i];
|
||||||
|
@ -144,9 +171,9 @@ define(function(require, module, exports) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearGutterDecorations(renderer) {
|
function clearGutterDecorations(gutter) {
|
||||||
renderer.$gutterLayer.$lines.cellCache.length = 0;
|
gutter.$lines.cellCache.length = 0;
|
||||||
var cells = renderer.$gutterLayer.$lines.cells;
|
var cells = gutter.$lines.cells;
|
||||||
for (var i = 0; i < cells.length; i++) {
|
for (var i = 0; i < cells.length; i++) {
|
||||||
var cell = cells[i];
|
var cell = cells[i];
|
||||||
cell.element.style.borderLeft = "";
|
cell.element.style.borderLeft = "";
|
||||||
|
@ -154,7 +181,7 @@ define(function(require, module, exports) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function createAuthorKeyCache (editorDoc, authAttribs, range) {
|
function createAuthorKeyCache(editorDoc, authAttribs, range) {
|
||||||
var startI = editorDoc.positionToIndex(range.start);
|
var startI = editorDoc.positionToIndex(range.start);
|
||||||
var endI = editorDoc.positionToIndex(range.end);
|
var endI = editorDoc.positionToIndex(range.end);
|
||||||
|
|
||||||
|
@ -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) {
|
function getLineAuthorKey(session, authAttribs, row) {
|
||||||
var editorDoc = session.doc;
|
var editorDoc = session.doc;
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue