提交 44ab7993 编写于 作者: J Johannes Rieken

outline - prefer active group when revealing outline element

上级 3ff43d06
...@@ -342,14 +342,28 @@ export class OutlineModel extends TreeElement { ...@@ -342,14 +342,28 @@ export class OutlineModel extends TreeElement {
return topMatch; return topMatch;
} }
getItemEnclosingPosition(position: IPosition): OutlineElement { getItemEnclosingPosition(position: IPosition, context?: OutlineElement): OutlineElement {
let preferredGroup: OutlineGroup;
if (context) {
let candidate = context.parent;
while (candidate && !preferredGroup) {
if (candidate instanceof OutlineGroup) {
preferredGroup = candidate;
}
candidate = candidate.parent;
}
}
let result: OutlineElement = undefined;
for (const key in this._groups) { for (const key in this._groups) {
let result = this._groups[key].getItemEnclosingPosition(position); const group = this._groups[key];
if (result) { result = group.getItemEnclosingPosition(position);
return result; if (result && (!preferredGroup || preferredGroup === group)) {
break;
} }
} }
return undefined; return result;
} }
getItemById(id: string): TreeElement { getItemById(id: string): TreeElement {
......
...@@ -638,10 +638,11 @@ export class OutlinePanel extends ViewletPanel { ...@@ -638,10 +638,11 @@ export class OutlinePanel extends ViewletPanel {
if (!this._outlineViewState.followCursor || !this._tree.getInput()) { if (!this._outlineViewState.followCursor || !this._tree.getInput()) {
return; return;
} }
let [first] = this._tree.getSelection();
let item = model.getItemEnclosingPosition({ let item = model.getItemEnclosingPosition({
lineNumber: selection.selectionStartLineNumber, lineNumber: selection.selectionStartLineNumber,
column: selection.selectionStartColumn column: selection.selectionStartColumn
}); }, first instanceof OutlineElement ? first : undefined);
if (item) { if (item) {
await this._tree.reveal(item, .5); await this._tree.reveal(item, .5);
this._tree.setFocus(item, this); this._tree.setFocus(item, this);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册