Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0bcb182

Browse files
dankeboy36kittaakos
authored andcommitted
fix(terminal): widget flickering on resize
Ref: eclipse-theia/theia#12587 Signed-off-by: dankeboy36 <dankeboy36@gmail.com>
1 parent 42d017e commit 0bcb182

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

‎arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,8 @@ import { StylingParticipant } from '@theia/core/lib/browser/styling-service';
355355
import { MonacoEditorMenuContribution } from './theia/monaco/monaco-menu';
356356
import { MonacoEditorMenuContribution as TheiaMonacoEditorMenuContribution } from '@theia/monaco/lib/browser/monaco-menu';
357357
import { UpdateArduinoState } from './contributions/update-arduino-state';
358+
import { TerminalWidgetImpl } from './theia/terminal/terminal-widget-impl';
359+
import { TerminalWidget } from '@theia/terminal/lib/browser/base/terminal-widget';
358360

359361
// Hack to fix copy/cut/paste issue after electron version update in Theia.
360362
// https://github.com/eclipse-theia/theia/issues/12487
@@ -1026,4 +1028,7 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
10261028
rebind(TheiaMonacoEditorMenuContribution).toService(
10271029
MonacoEditorMenuContribution
10281030
);
1031+
1032+
// Patch terminal issues.
1033+
rebind(TerminalWidget).to(TerminalWidgetImpl).inTransientScope();
10291034
});
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { injectable } from '@theia/core/shared/inversify';
2+
import { TerminalWidgetImpl as TheiaTerminalWidgetImpl } from '@theia/terminal/lib/browser/terminal-widget-impl';
3+
import debounce from 'p-debounce';
4+
5+
// Patch for https://github.com/eclipse-theia/theia/pull/12587
6+
@injectable()
7+
export class TerminalWidgetImpl extends TheiaTerminalWidgetImpl {
8+
private readonly debouncedResizeTerminal = debounce(
9+
() => this.doResizeTerminal(),
10+
50
11+
);
12+
13+
protected override resizeTerminal(): void {
14+
this.debouncedResizeTerminal();
15+
}
16+
17+
private doResizeTerminal(): void {
18+
const geo = this.fitAddon.proposeDimensions();
19+
const cols = geo.cols;
20+
const rows = geo.rows - 1; // subtract one row for margin
21+
this.term.resize(cols, rows);
22+
}
23+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /