From be97b21bf167708c52aaa4ac81d215ca4f129dfb Mon Sep 17 00:00:00 2001 From: jisangs Date: Thu, 14 May 2026 16:02:52 +0900 Subject: [PATCH] =?UTF-8?q?=ED=83=80=EC=9D=B4=ED=8B=80=EB=B0=94=EB=A5=BC?= =?UTF-8?q?=20=EC=9D=BC=EB=B0=98=EC=A0=81=EC=9D=B8=20=EB=A7=A5=20=EB=94=94?= =?UTF-8?q?=EC=9E=90=EC=9D=B8=EC=97=90=20=EB=A7=9E=EA=B2=8C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/index.js | 7 +++++++ src/main/preload.js | 11 ++++++----- src/renderer/renderer.js | 4 ++++ src/renderer/style.css | 18 ++++++++++++++---- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/main/index.js b/src/main/index.js index 54d7036..c18f4f7 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -25,6 +25,13 @@ function createWindow() { mainWindow.once('ready-to-show', () => { mainWindow.show(); }); + + mainWindow.on('enter-full-screen', () => { + mainWindow.webContents.send('fullscreen-change', true); + }); + mainWindow.on('leave-full-screen', () => { + mainWindow.webContents.send('fullscreen-change', false); + }); } app.whenReady().then(() => { diff --git a/src/main/preload.js b/src/main/preload.js index a436788..0e2d38b 100644 --- a/src/main/preload.js +++ b/src/main/preload.js @@ -1,9 +1,10 @@ const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('api', { - selectFolder: () => ipcRenderer.invoke('select-folder'), - listImages: (folder) => ipcRenderer.invoke('list-images', folder), - readImage: (path) => ipcRenderer.invoke('read-image', path), - renameFiles: (args) => ipcRenderer.invoke('rename-files', args), - revealFolder: (folder) => ipcRenderer.invoke('reveal-folder', folder), + selectFolder: () => ipcRenderer.invoke('select-folder'), + listImages: (folder) => ipcRenderer.invoke('list-images', folder), + readImage: (path) => ipcRenderer.invoke('read-image', path), + renameFiles: (args) => ipcRenderer.invoke('rename-files', args), + revealFolder: (folder) => ipcRenderer.invoke('reveal-folder', folder), + onFullscreenChange: (callback) => ipcRenderer.on('fullscreen-change', (_e, v) => callback(v)), }); diff --git a/src/renderer/renderer.js b/src/renderer/renderer.js index 1684a0e..a5e4700 100644 --- a/src/renderer/renderer.js +++ b/src/renderer/renderer.js @@ -43,6 +43,10 @@ selection.init({ gridContainer, rubberBand, grid, state, callbacks }); dragDrop.init({ grid, gridContainer, dragGhostEl, state, callbacks }); hoverPreview.init(); +window.api.onFullscreenChange((isFullscreen) => { + document.body.classList.toggle('fullscreen', isFullscreen); +}); + // ── 버튼 이벤트 ────────────────────────────────── inputPrefix.addEventListener('input', updatePreview); inputDigits.addEventListener('input', updatePreview); diff --git a/src/renderer/style.css b/src/renderer/style.css index 7efbe32..349792b 100644 --- a/src/renderer/style.css +++ b/src/renderer/style.css @@ -32,24 +32,34 @@ body { /* ── 타이틀바 ── */ #titlebar { - height: 44px; + height: 52px; background: var(--bg); -webkit-app-region: drag; display: flex; align-items: center; - padding: 0 80px 0 20px; + justify-content: flex-end; + padding: 0 16px 0 80px; border-bottom: 1px solid var(--border); flex-shrink: 0; + position: relative; +} +body.fullscreen #titlebar { + padding-left: 16px; } #titlebar h1 { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + pointer-events: none; + white-space: nowrap; font-size: 13px; font-weight: 600; color: var(--muted); letter-spacing: .08em; text-transform: uppercase; } #titlebar .dir-path { - margin-left: 16px; font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--muted); opacity: .7; - max-width: 600px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + max-width: 400px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* ── 툴바 ── */