From 515a82dfc26d44336b77778e5aaa88be5089cb28 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Sat, 5 Sep 2026 08:13:18 +0200 Subject: [PATCH] yank clipboard + ? fix --- web/src/App.svelte | 30 +++++++++++++++++----- web/src/lib/Editor.svelte | 51 +++++++++++++++++++++++++++++++++++-- web/src/lib/Help.svelte | 6 +++-- web/src/lib/commands.ts | 6 ++++- web/src/lib/store.svelte.ts | 8 ++++++ 5 files changed, 89 insertions(+), 12 deletions(-) diff --git a/web/src/App.svelte b/web/src/App.svelte index 8764ae6..45d5c02 100644 --- a/web/src/App.svelte +++ b/web/src/App.svelte @@ -18,6 +18,7 @@ let cmdline = $state(null) let fileInput = $state() let shell = $state() + let overlayEl = $state() let pending = $state('') if (!shareToken) void diary.boot() @@ -32,6 +33,17 @@ hooks.openCommandLine = (initial) => (cmdline = initial) }) + /* + * The overlay takes focus while it is up, so its keys (q, ?, esc) reach the + * window handler instead of being swallowed by the editor underneath. + */ + $effect(() => { + if (diary.overlay !== 'none') { + overlayEl?.focus() + return () => (diary.editing ? hooks.focusEditor() : shell?.focus()) + } + }) + // Guard against losing a half-written entry to a stray refresh. $effect(() => { if (!diary.dirty) return @@ -81,6 +93,14 @@ } } + if (diary.overlay !== 'none') { + if (event.key === 'q' || event.key === '?') { + event.preventDefault() + diary.overlay = 'none' + } + return + } + if (cmdline !== null || isTypingTarget(event.target)) return if (event.ctrlKey || event.metaKey || event.altKey) return @@ -88,11 +108,6 @@ const previous = pending pending = '' - if (diary.overlay !== 'none') { - if (key === 'q' || key === '?') diary.overlay = 'none' - return - } - // Two-key sequences: gg and dd. if (previous === 'g' && key === 'g') { event.preventDefault() @@ -216,8 +231,9 @@ {/if} {#if diary.overlay !== 'none'} - -
e.target === e.currentTarget && (diary.overlay = 'none')}> + +
e.target === e.currentTarget && (diary.overlay = 'none')} + > {#if diary.overlay === 'help'}{:else}{/if}
{/if} diff --git a/web/src/lib/Editor.svelte b/web/src/lib/Editor.svelte index 7c01aa7..7507fb4 100644 --- a/web/src/lib/Editor.svelte +++ b/web/src/lib/Editor.svelte @@ -1,3 +1,8 @@ + +