mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix topbar layout
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
parent
3df6e2042c
commit
3a8e75d9c9
@ -29,7 +29,7 @@ import * as LensExtensionsMainApi from "../extensions/main-api";
|
|||||||
import { app, autoUpdater, BrowserWindow, dialog, Menu, powerMonitor } from "electron";
|
import { app, autoUpdater, BrowserWindow, dialog, Menu, powerMonitor } from "electron";
|
||||||
import { appName, isIntegrationTesting, isMac, isWindows, productName } from "../common/vars";
|
import { appName, isIntegrationTesting, isMac, isWindows, productName } from "../common/vars";
|
||||||
import { LensProxy } from "./lens-proxy";
|
import { LensProxy } from "./lens-proxy";
|
||||||
import { WindowManager } from "./window-manager";
|
import { IpcMainWindowEvents, WindowManager } from "./window-manager";
|
||||||
import { ClusterManager } from "./cluster-manager";
|
import { ClusterManager } from "./cluster-manager";
|
||||||
import { shellSync } from "./shell-sync";
|
import { shellSync } from "./shell-sync";
|
||||||
import { mangleProxyEnv } from "./proxy-env";
|
import { mangleProxyEnv } from "./proxy-env";
|
||||||
@ -256,10 +256,10 @@ app.on("ready", async () => {
|
|||||||
LensProtocolRouterMain.getInstance().rendererLoaded = true;
|
LensProtocolRouterMain.getInstance().rendererLoaded = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMainOn("show-app-context-menu", (event) => {
|
ipcMainOn(IpcMainWindowEvents.OPEN_CONTEXT_MENU, (event) => {
|
||||||
const menu = Menu.buildFromTemplate(getAppMenu(windowManager));
|
const menu = Menu.buildFromTemplate(getAppMenu(windowManager));
|
||||||
|
|
||||||
menu.popup(BrowserWindow.fromWebContents(event.sender) as any);
|
menu.popup(BrowserWindow.fromWebContents(event.sender) as Electron.PopupOptions);
|
||||||
});
|
});
|
||||||
|
|
||||||
logger.info("🧩 Initializing extensions");
|
logger.info("🧩 Initializing extensions");
|
||||||
|
|||||||
@ -20,14 +20,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
.topBar {
|
.topBar {
|
||||||
display: grid;
|
display: flex;
|
||||||
grid-template-columns: [title] 1fr [controls] auto;
|
|
||||||
grid-template-rows: var(--main-layout-header);
|
|
||||||
grid-template-areas: "title controls";
|
|
||||||
background-color: var(--layoutBackground);
|
background-color: var(--layoutBackground);
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
grid-area: topbar;
|
grid-area: topbar;
|
||||||
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
.winMenu {
|
.winMenu {
|
||||||
@ -60,6 +58,13 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.winDraggableArea {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-webkit-app-region: drag;
|
||||||
|
flex-grow: 1;
|
||||||
|
background-color: aliceblue;
|
||||||
|
}
|
||||||
|
|
||||||
.winButtons {
|
.winButtons {
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-left: 1.5rem;
|
margin-left: 1.5rem;
|
||||||
|
|||||||
@ -20,7 +20,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import styles from "./topbar.module.css";
|
import styles from "./topbar.module.css";
|
||||||
import React, { useEffect } from "react";
|
import React, { useEffect, useRef } from "react";
|
||||||
import { observer } from "mobx-react";
|
import { observer } from "mobx-react";
|
||||||
import { TopBarRegistry } from "../../../extensions/registries";
|
import { TopBarRegistry } from "../../../extensions/registries";
|
||||||
import { Icon } from "../icon";
|
import { Icon } from "../icon";
|
||||||
@ -48,6 +48,8 @@ ipcRendererOn("history:can-go-forward", (event, state: boolean) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const TopBar = observer(({ children, ...rest }: Props) => {
|
export const TopBar = observer(({ children, ...rest }: Props) => {
|
||||||
|
const elem = useRef<HTMLDivElement>();
|
||||||
|
|
||||||
const renderRegisteredItems = () => {
|
const renderRegisteredItems = () => {
|
||||||
const items = TopBarRegistry.getInstance().getItems();
|
const items = TopBarRegistry.getInstance().getItems();
|
||||||
|
|
||||||
@ -88,7 +90,12 @@ export const TopBar = observer(({ children, ...rest }: Props) => {
|
|||||||
webContents.getAllWebContents().find((webContent) => webContent.getType() === "window")?.goForward();
|
webContents.getAllWebContents().find((webContent) => webContent.getType() === "window")?.goForward();
|
||||||
};
|
};
|
||||||
|
|
||||||
const windowSizeToggle = () => {
|
const windowSizeToggle = (evt: React.MouseEvent) => {
|
||||||
|
if (elem.current != evt.target) {
|
||||||
|
// Skip clicking on child elements
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const window = getCurrentWindow();
|
const window = getCurrentWindow();
|
||||||
|
|
||||||
if (window.isMaximized()) {
|
if (window.isMaximized()) {
|
||||||
@ -105,12 +112,12 @@ export const TopBar = observer(({ children, ...rest }: Props) => {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.topBar} {...rest}>
|
<div className={styles.topBar} onDoubleClick={windowSizeToggle} ref={elem} {...rest}>
|
||||||
<div className={styles.tools} onDoubleClick={windowSizeToggle}>
|
<div className={styles.tools}>
|
||||||
<div className={styles.winMenu}>
|
<div className={styles.winMenu}>
|
||||||
{(isWindows || isLinux) && (
|
{(isWindows || isLinux) && (
|
||||||
<div onClick={openContextMenu} data-testid="window-menu">
|
<div onClick={openContextMenu} data-testid="window-menu">
|
||||||
<svg width="12" height="12" viewBox="0 0 12 12"><path fill="currentColor" d="m1 10h10v1h-10z"/><path fill="currentColor" d="m1 5.5h10v1h-10z"/><path fill="currentColor" d="m1 1h10v1h-10z"/></svg>
|
<svg width="12" height="12" viewBox="0 0 12 12" shapeRendering="crispEdges"><path fill="currentColor" d="m1 10h10v1h-10z"/><path fill="currentColor" d="m1 5.5h10v1h-10z"/><path fill="currentColor" d="m1 1h10v1h-10z"/></svg>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user