diff --git a/src/main/index.ts b/src/main/index.ts index e19bc7f..abe02eb 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -3119,6 +3119,16 @@ function attachDevToolsShortcut(win: BrowserWindow): void { }) } +function suppressSystemContextMenu(win: BrowserWindow): void { + type SystemContextMenuWindow = BrowserWindow & { + on(event: 'system-context-menu', listener: (event: { preventDefault: () => void }) => void): BrowserWindow + } + + ;(win as SystemContextMenuWindow).on('system-context-menu', (event) => { + event.preventDefault() + }) +} + function toggleFocusedDevTools(): void { const target = BrowserWindow.getFocusedWindow() if (!target) return @@ -3178,6 +3188,7 @@ function createWindow(): void { }) attachDevToolsShortcut(mainWindow) + suppressSystemContextMenu(mainWindow) mainWindow.once('ready-to-show', () => { setTimeout(() => { splashWindow?.close() diff --git a/src/renderer/src/components/TitleBar.tsx b/src/renderer/src/components/TitleBar.tsx index 3cb0085..edbba6b 100644 --- a/src/renderer/src/components/TitleBar.tsx +++ b/src/renderer/src/components/TitleBar.tsx @@ -445,14 +445,24 @@ export default function TitleBar({ user, accessToken = '', onHelpClick, onOpenCo event.preventDefault() event.stopPropagation() } - + const handleWindowControlMouseDown = (event: React.MouseEvent): void => { + if (event.button !== 0) suppressTitlebarContextMenu(event) + } + const releaseWindowControlFocus = (event: React.SyntheticEvent): void => { + event.currentTarget.blur() + } + const windowControlStyle = { WebkitAppRegion: 'no-drag' } as React.CSSProperties return ( <>
{ + if (event.button === 2) suppressTitlebarContextMenu(event) + }} onMouseDown={(event) => { if (event.button === 2) suppressTitlebarContextMenu(event) }} @@ -648,13 +658,61 @@ export default function TitleBar({ user, accessToken = '', onHelpClick, onOpenCo ) : null}
- - -