Skip to content

Commit 2d89f56

Browse files
authored
fix: re-layout the Workbench when StatusBar is hidden (#557)
1 parent 2143308 commit 2d89f56

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

src/controller/menuBar.ts

+17
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import {
1111
LayoutService,
1212
IBuiltinService,
1313
BuiltinService,
14+
ActivityBarService,
15+
IActivityBarService,
1416
} from 'mo/services';
1517
import { ID_APP, ID_SIDE_BAR } from 'mo/common/id';
1618
import { IMonacoService, MonacoService } from 'mo/monaco/monacoService';
@@ -41,6 +43,7 @@ export class MenuBarController
4143
private readonly layoutService: ILayoutService;
4244
private readonly monacoService: IMonacoService;
4345
private readonly builtinService: IBuiltinService;
46+
private readonly activityBarService: IActivityBarService;
4447
private focusinEle: HTMLElement | null = null;
4548

4649
private automation = {};
@@ -51,6 +54,7 @@ export class MenuBarController
5154
this.layoutService = container.resolve(LayoutService);
5255
this.monacoService = container.resolve(MonacoService);
5356
this.builtinService = container.resolve(BuiltinService);
57+
this.activityBarService = container.resolve(ActivityBarService);
5458
}
5559

5660
public initView() {
@@ -119,6 +123,9 @@ export class MenuBarController
119123
*/
120124
this.emit(MenuBarEvent.onSelect, menuId);
121125
this.automation[menuId]?.();
126+
127+
// Update the check status of MenuBar in the contextmenu of ActivityBar
128+
this.updateActivityBarContextMenu(menuId);
122129
};
123130

124131
public createFile = () => {
@@ -271,4 +278,14 @@ export class MenuBarController
271278
const menuBarData = this.getFilteredMenuBarData(menuData, ids);
272279
return menuBarData;
273280
}
281+
282+
private updateActivityBarContextMenu(menuId: UniqueId) {
283+
const {
284+
MENU_VIEW_MENUBAR,
285+
CONTEXT_MENU_MENU,
286+
} = this.builtinService.getConstants();
287+
if (CONTEXT_MENU_MENU && menuId === MENU_VIEW_MENUBAR) {
288+
this.activityBarService.toggleContextMenuChecked(CONTEXT_MENU_MENU);
289+
}
290+
}
274291
}

src/workbench/style.scss

+4
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@
5050
height: calc(100% - 25px);
5151
}
5252
}
53+
54+
&--with-hidden-statusBar {
55+
height: 100%;
56+
}
5357
}
5458

5559
#{$compositeBar} {

src/workbench/workbench.tsx

+12-2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ const workbenchWithHorizontalMenuBarClassName = getBEMModifier(
3636
workbenchClassName,
3737
'with-horizontal-menuBar'
3838
);
39+
const withHiddenStatusBar = getBEMModifier(
40+
workbenchClassName,
41+
'with-hidden-statusBar'
42+
);
3943

4044
const layoutController = container.resolve(LayoutController);
4145
const layoutService = container.resolve(LayoutService);
@@ -82,13 +86,19 @@ export function WorkbenchView(props: IWorkbench & ILayout & ILayoutController) {
8286

8387
const isMenuBarHorizontal =
8488
!menuBar.hidden && menuBar.mode === MenuBarMode.horizontal;
85-
const horizontal = isMenuBarHorizontal
89+
const horizontalMenuBar = isMenuBarHorizontal
8690
? workbenchWithHorizontalMenuBarClassName
8791
: null;
92+
const hideStatusBar = statusBar.hidden ? withHiddenStatusBar : null;
93+
const workbenchFinalClassName = classNames(
94+
workbenchClassName,
95+
horizontalMenuBar,
96+
hideStatusBar
97+
);
8898

8999
return (
90100
<div id={ID_APP} className={appClassName} tabIndex={0}>
91-
<div className={classNames(workbenchClassName, horizontal)}>
101+
<div className={workbenchFinalClassName}>
92102
{isMenuBarHorizontal && (
93103
<MenuBarView mode={MenuBarMode.horizontal} />
94104
)}

0 commit comments

Comments
 (0)