Skip to content

Commit d6637c4

Browse files
Akos Kittajbicker
Akos Kitta
authored andcommitted
PROEDITOR-20: Restored the dirt flag in editor tab
Signed-off-by: Akos Kitta <kittaakos@typefox.io>
1 parent cf44fe2 commit d6637c4

File tree

5 files changed

+42
-28
lines changed

5 files changed

+42
-28
lines changed

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

-4
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ import { SilentMonacoStatusBarContribution } from './customization/silent-monaco
4646
import { ApplicationShell } from '@theia/core/lib/browser';
4747
import { CustomApplicationShell } from './customization/custom-application-shell';
4848
import { CustomFrontendApplication } from './customization/custom-frontend-application';
49-
import { EditorWidgetFactory } from '@theia/editor/lib/browser/editor-widget-factory';
50-
import { CustomEditorWidgetFactory } from './customization/custom-editor-widget-factory';
5149
import { SelectBoardDialog, SelectBoardDialogProps } from './boards/select-board-dialog';
5250
import { SelectBoardDialogWidget } from './boards/select-board-dialog-widget';
5351

@@ -152,6 +150,4 @@ export default new ContainerModule((bind: interfaces.Bind, unbind: interfaces.Un
152150
bind(ApplicationShell).to(CustomApplicationShell).inSingletonScope();
153151
unbind(FrontendApplication);
154152
bind(FrontendApplication).to(CustomFrontendApplication).inSingletonScope();
155-
unbind(EditorWidgetFactory);
156-
bind(EditorWidgetFactory).to(CustomEditorWidgetFactory).inSingletonScope();
157153
});
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,33 @@
1-
import { ApplicationShell } from "@theia/core/lib/browser";
1+
import { ApplicationShell, Widget, Saveable, FocusTracker, Message } from '@theia/core/lib/browser';
2+
import { EditorWidget } from '@theia/editor/lib/browser';
23

34
export class CustomApplicationShell extends ApplicationShell {
5+
46
protected refreshBottomPanelToggleButton() {
5-
67
}
8+
9+
protected async track(widget: Widget): Promise<void> {
10+
const tracker = (this as any).tracker as FocusTracker<Widget>;
11+
tracker.add(widget);
12+
this.disableClose(Saveable.apply(widget));
13+
if (ApplicationShell.TrackableWidgetProvider.is(widget)) {
14+
for (const toTrack of await widget.getTrackableWidgets()) {
15+
tracker.add(toTrack);
16+
this.disableClose(Saveable.apply(toTrack));
17+
}
18+
if (widget.onDidChangeTrackableWidgets) {
19+
widget.onDidChangeTrackableWidgets(widgets => widgets.forEach(w => this.track(w)));
20+
}
21+
}
22+
}
23+
24+
private disableClose(widget: Widget | undefined): void {
25+
if (widget instanceof EditorWidget) {
26+
const onCloseRequest = (_: Message) => {
27+
// NOOP
28+
};
29+
(widget as any).onCloseRequest = onCloseRequest.bind(widget);
30+
}
31+
}
32+
733
}

arduino-ide-extension/src/browser/customization/custom-editor-widget-factory.ts

-22
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/* Do not show the `close` icon for editor, but show the dirty state. */
2+
.p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable:hover > .p-TabBar-tabCloseIcon,
3+
.p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-current > .p-TabBar-tabCloseIcon {
4+
background-image: none;
5+
cursor: pointer;
6+
}
7+
8+
.p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable.theia-mod-dirty:hover > .p-TabBar-tabCloseIcon,
9+
.p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable.theia-mod-dirty > .p-TabBar-tabCloseIcon:hover {
10+
background-size: 10px;
11+
background-image: var(--theia-icon-circle);
12+
cursor: pointer;
13+
}
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
@import './list-widget.css';
22
@import './board-select-dialog.css';
33
@import './main.css';
4+
@import './editor.css';

0 commit comments

Comments
 (0)