debugViewlet: listen on pane size changes to update the breakpoints max size

fixes #25384
This commit is contained in:
isidor 2017-11-21 17:40:16 +01:00
parent df57723097
commit 840b74974b

View file

@ -10,7 +10,7 @@ import { Action, IAction } from 'vs/base/common/actions';
import * as DOM from 'vs/base/browser/dom';
import { TPromise } from 'vs/base/common/winjs.base';
import { IActionItem } from 'vs/base/browser/ui/actionbar/actionbar';
import { PersistentViewsViewlet } from 'vs/workbench/browser/parts/views/viewsViewlet';
import { PersistentViewsViewlet, ViewsViewletPanel } from 'vs/workbench/browser/parts/views/viewsViewlet';
import { IDebugService, VIEWLET_ID, State, VARIABLES_VIEW_ID, WATCH_VIEW_ID, CALLSTACK_VIEW_ID, BREAKPOINTS_VIEW_ID } from 'vs/workbench/parts/debug/common/debug';
import { StartAction, ToggleReplAction, ConfigureAction } from 'vs/workbench/parts/debug/browser/debugActions';
import { StartDebugActionItem } from 'vs/workbench/parts/debug/browser/debugActionItems';
@ -25,11 +25,15 @@ import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
import { ViewLocation } from 'vs/workbench/browser/parts/views/viewsRegistry';
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
import { Constants } from 'vs/editor/common/core/uint';
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
export class DebugViewlet extends PersistentViewsViewlet {
private startDebugActionItem: StartDebugActionItem;
private progressRunner: IProgressRunner;
private breakpointView: ViewsViewletPanel;
private panelListeners = new Map<string, IDisposable>();
constructor(
@ITelemetryService telemetryService: ITelemetryService,
@ -56,6 +60,7 @@ export class DebugViewlet extends PersistentViewsViewlet {
const el = parent.getHTMLElement();
DOM.addClass(el, 'debug-viewlet');
this.updateBreakpointsMaxSize();
}
public focus(): void {
@ -105,6 +110,28 @@ export class DebugViewlet extends PersistentViewsViewlet {
this.progressRunner = null;
}
}
addPanel(panel: ViewsViewletPanel, size: number, index?: number): void {
super.addPanel(panel, size, index);
// attach event listener to
if (panel.id === BREAKPOINTS_VIEW_ID) {
this.breakpointView = panel;
} else {
this.panelListeners.set(panel.id, panel.onDidChange(() => this.updateBreakpointsMaxSize()));
}
}
removePanel(panel: ViewsViewletPanel): void {
super.removePanel(panel);
dispose(this.panelListeners.get(panel.id));
this.panelListeners.delete(panel.id);
}
private updateBreakpointsMaxSize(): void {
const allOtherCollapsed = this.views.every(view => !view.isExpanded() || view === this.breakpointView);
this.breakpointView.maximumBodySize = allOtherCollapsed ? Constants.MAX_SAFE_SMALL_INTEGER : this.breakpointView.minimumBodySize;
}
}
export class FocusVariablesViewAction extends Action {