提交 281f32a4 编写于 作者: J Johannes Rieken

fix #57351

上级 6c369ea0
...@@ -5,15 +5,15 @@ ...@@ -5,15 +5,15 @@
'use strict'; 'use strict';
import 'vs/css!./breadcrumbsWidget';
import * as dom from 'vs/base/browser/dom'; import * as dom from 'vs/base/browser/dom';
import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement';
import { ScrollbarVisibility } from 'vs/base/common/scrollable';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { IMouseEvent } from 'vs/base/browser/mouseEvent'; import { IMouseEvent } from 'vs/base/browser/mouseEvent';
import { Event, Emitter } from 'vs/base/common/event'; import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement';
import { Color } from 'vs/base/common/color';
import { commonPrefixLength } from 'vs/base/common/arrays'; import { commonPrefixLength } from 'vs/base/common/arrays';
import { Color } from 'vs/base/common/color';
import { Emitter, Event } from 'vs/base/common/event';
import { dispose, IDisposable } from 'vs/base/common/lifecycle';
import { ScrollbarVisibility } from 'vs/base/common/scrollable';
import 'vs/css!./breadcrumbsWidget';
export abstract class BreadcrumbsItem { export abstract class BreadcrumbsItem {
dispose(): void { } dispose(): void { }
...@@ -197,23 +197,27 @@ export class BreadcrumbsWidget { ...@@ -197,23 +197,27 @@ export class BreadcrumbsWidget {
node.focus(); node.focus();
} }
} }
this._reveal(this._focusedItemIdx); this._reveal(this._focusedItemIdx, true);
this._onDidFocusItem.fire({ type: 'focus', item: this._items[this._focusedItemIdx], node: this._nodes[this._focusedItemIdx], payload }); this._onDidFocusItem.fire({ type: 'focus', item: this._items[this._focusedItemIdx], node: this._nodes[this._focusedItemIdx], payload });
} }
reveal(item: BreadcrumbsItem): void { reveal(item: BreadcrumbsItem): void {
let idx = this._items.indexOf(item); let idx = this._items.indexOf(item);
if (idx >= 0) { if (idx >= 0) {
this._reveal(idx); this._reveal(idx, false);
} }
} }
private _reveal(nth: number): void { private _reveal(nth: number, minimal: boolean): void {
const node = this._nodes[nth]; const node = this._nodes[nth];
if (node) { if (node) {
this._scrollable.setRevealOnScroll(false); const { width } = this._scrollable.getScrollDimensions();
this._scrollable.setScrollPosition({ scrollLeft: node.offsetLeft }); const { scrollLeft } = this._scrollable.getScrollPosition();
this._scrollable.setRevealOnScroll(true); if (!minimal || node.offsetLeft > scrollLeft + width || node.offsetLeft < scrollLeft) {
this._scrollable.setRevealOnScroll(false);
this._scrollable.setScrollPosition({ scrollLeft: node.offsetLeft });
this._scrollable.setRevealOnScroll(true);
}
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册