Skip to content

Commit f61c8b5

Browse files
author
Akos Kitta
committed
fix: smoother monitor widget state reset
Signed-off-by: Akos Kitta <[email protected]>
1 parent 7207b3c commit f61c8b5

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

Diff for: arduino-ide-extension/src/browser/serial/monitor/monitor-view-contribution.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,7 @@ export class MonitorViewContribution
143143
protected async reset(): Promise<void> {
144144
const widget = this.tryGetWidget();
145145
if (widget) {
146-
widget.dispose();
147-
await this.openView({ activate: true, reveal: true });
146+
widget.reset();
148147
}
149148
}
150149

Diff for: arduino-ide-extension/src/browser/serial/monitor/monitor-widget.tsx

+14-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import {
55
postConstruct,
66
} from '@theia/core/shared/inversify';
77
import { Emitter } from '@theia/core/lib/common/event';
8-
import { Disposable } from '@theia/core/lib/common/disposable';
8+
import {
9+
Disposable,
10+
DisposableCollection,
11+
} from '@theia/core/lib/common/disposable';
912
import {
1013
ReactWidget,
1114
Message,
@@ -57,19 +60,23 @@ export class MonitorWidget extends ReactWidget {
5760
@inject(FrontendApplicationStateService)
5861
private readonly appStateService: FrontendApplicationStateService;
5962

63+
private readonly toDisposeOnReset: DisposableCollection;
64+
6065
constructor() {
6166
super();
6267
this.id = MonitorWidget.ID;
6368
this.title.label = MonitorWidget.LABEL;
6469
this.title.iconClass = 'monitor-tab-icon';
6570
this.title.closable = true;
6671
this.scrollOptions = undefined;
67-
this.toDispose.push(this.clearOutputEmitter);
72+
this.toDisposeOnReset = new DisposableCollection();
73+
this.toDispose.pushAll([this.clearOutputEmitter, this.toDisposeOnReset]);
6874
}
6975

7076
@postConstruct()
7177
protected init(): void {
72-
this.toDispose.pushAll([
78+
this.toDisposeOnReset.dispose();
79+
this.toDisposeOnReset.pushAll([
7380
Disposable.create(() => this.monitorManagerProxy.disconnect()),
7481
this.monitorModel.onChange(() => this.update()),
7582
this.monitorManagerProxy.onMonitorSettingsDidChange((event) =>
@@ -79,6 +86,10 @@ export class MonitorWidget extends ReactWidget {
7986
this.startMonitor();
8087
}
8188

89+
reset(): void {
90+
this.init();
91+
}
92+
8293
private updateSettings(settings: MonitorSettings): void {
8394
this.settings = {
8495
...this.settings,

0 commit comments

Comments
 (0)