From 3a8e75d9c941b36a9a8f50b722f0da867f27a4ed Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Wed, 8 Dec 2021 12:48:21 +0300 Subject: [PATCH] Fix topbar layout Signed-off-by: Alex Andreev --- src/main/index.ts | 6 +++--- .../components/layout/topbar.module.css | 13 +++++++++---- src/renderer/components/layout/topbar.tsx | 17 ++++++++++++----- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/main/index.ts b/src/main/index.ts index be793449af..f109ea1536 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -29,7 +29,7 @@ import * as LensExtensionsMainApi from "../extensions/main-api"; import { app, autoUpdater, BrowserWindow, dialog, Menu, powerMonitor } from "electron"; import { appName, isIntegrationTesting, isMac, isWindows, productName } from "../common/vars"; import { LensProxy } from "./lens-proxy"; -import { WindowManager } from "./window-manager"; +import { IpcMainWindowEvents, WindowManager } from "./window-manager"; import { ClusterManager } from "./cluster-manager"; import { shellSync } from "./shell-sync"; import { mangleProxyEnv } from "./proxy-env"; @@ -256,10 +256,10 @@ app.on("ready", async () => { LensProtocolRouterMain.getInstance().rendererLoaded = true; }); - ipcMainOn("show-app-context-menu", (event) => { + ipcMainOn(IpcMainWindowEvents.OPEN_CONTEXT_MENU, (event) => { 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"); diff --git a/src/renderer/components/layout/topbar.module.css b/src/renderer/components/layout/topbar.module.css index 9dd6da2bc8..2103849925 100644 --- a/src/renderer/components/layout/topbar.module.css +++ b/src/renderer/components/layout/topbar.module.css @@ -20,14 +20,12 @@ */ .topBar { - display: grid; - grid-template-columns: [title] 1fr [controls] auto; - grid-template-rows: var(--main-layout-header); - grid-template-areas: "title controls"; + display: flex; background-color: var(--layoutBackground); z-index: 2; width: 100%; grid-area: topbar; + justify-content: space-between; } .winMenu { @@ -60,6 +58,13 @@ height: 100%; } +.winDraggableArea { + -webkit-user-select: none; + -webkit-app-region: drag; + flex-grow: 1; + background-color: aliceblue; +} + .winButtons { display: flex; margin-left: 1.5rem; diff --git a/src/renderer/components/layout/topbar.tsx b/src/renderer/components/layout/topbar.tsx index 7211fa92b9..958bed61a3 100644 --- a/src/renderer/components/layout/topbar.tsx +++ b/src/renderer/components/layout/topbar.tsx @@ -20,7 +20,7 @@ */ import styles from "./topbar.module.css"; -import React, { useEffect } from "react"; +import React, { useEffect, useRef } from "react"; import { observer } from "mobx-react"; import { TopBarRegistry } from "../../../extensions/registries"; import { Icon } from "../icon"; @@ -48,6 +48,8 @@ ipcRendererOn("history:can-go-forward", (event, state: boolean) => { }); export const TopBar = observer(({ children, ...rest }: Props) => { + const elem = useRef(); + const renderRegisteredItems = () => { const items = TopBarRegistry.getInstance().getItems(); @@ -88,7 +90,12 @@ export const TopBar = observer(({ children, ...rest }: Props) => { 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(); if (window.isMaximized()) { @@ -105,12 +112,12 @@ export const TopBar = observer(({ children, ...rest }: Props) => { }, []); return ( -
-
+
+
{(isWindows || isLinux) && (
- +
)}