Skip to content

Commit 6d289cf

Browse files
committed
feat disable in-app search when in reading modal, hide panels too
1 parent eedc638 commit 6d289cf

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

src/App.jsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -230,11 +230,15 @@ function App() {
230230
calibration: bgCalibration
231231
} = useBgImageState();
232232

233+
// Reading modal state (declared early because it's used in useGlobalSearchHotkeys)
234+
const [readingModalOpen, setReadingModalOpen] = useState(false);
235+
233236
// Get search UI context for opening the search bar
234237
const { open: openSearchBar, isOpen } = useSearchUI();
235238

236239
// Set up global hotkeys for search (Ctrl+F to open, Escape is handled by the search bar itself)
237-
useGlobalSearchHotkeys(openSearchBar);
240+
// Disable search hotkey when reading modal is open to allow normal browser search
241+
useGlobalSearchHotkeys(openSearchBar, readingModalOpen);
238242

239243
// ---------- graph (nodes/edges/notes/mode) ----------
240244
const [graphData, setGraphData] = useState(() => {
@@ -324,9 +328,14 @@ function App() {
324328
setShowNoteCountOverlay(v => !v);
325329
}, []);
326330

327-
// Reading modal state
328-
const [readingModalOpen, setReadingModalOpen] = useState(false);
329-
const openReadingModal = useCallback(() => setReadingModalOpen(true), []);
331+
// Reading modal callbacks (state declared earlier before useGlobalSearchHotkeys)
332+
const openReadingModal = useCallback(() => {
333+
setReadingModalOpen(true);
334+
// Auto-collapse universal menu when reading modal opens
335+
if (!universalMenuCollapsed) {
336+
dispatchAppState({ type: ACTION_TYPES.SET_UNIVERSAL_MENU_COLLAPSED, payload: { collapsed: true } });
337+
}
338+
}, [universalMenuCollapsed]);
330339
const closeReadingModal = useCallback(() => setReadingModalOpen(false), []);
331340

332341
// Share modal state
@@ -1306,7 +1315,8 @@ useEffect(() => {
13061315
/>
13071316

13081317
{/* Mobile Search Button - only visible on mobile, top center */}
1309-
<div className={`fixed top-0 left-0 right-0 z-999 pa2 dn-m dn-l tc w-100 ${isOpen ? 'dn' : ''}`}>
1318+
{/* Hide when reading modal is open to avoid interference */}
1319+
<div className={`fixed top-0 left-0 right-0 z-999 pa2 dn-m dn-l tc w-100 ${isOpen || readingModalOpen ? 'dn' : ''}`}>
13101320
<div className="dib">
13111321
<MobileSearchButton />
13121322
</div>

src/search/useGlobalSearchHotkeys.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
import { useEffect } from 'react';
22
import { printDebug } from '../utils/debug';
33

4-
export function useGlobalSearchHotkeys(openFn) {
4+
export function useGlobalSearchHotkeys(openFn, disabled = false) {
55
useEffect(() => {
6+
// Don't set up the listener if disabled (e.g., when reading modal is open)
7+
if (disabled) {
8+
return;
9+
}
10+
611
function onKey(e) {
712
const key = e.key?.toLowerCase();
813
const mod = e.ctrlKey || e.metaKey; // Ctrl on Win/Linux, Cmd on macOS
@@ -25,5 +30,5 @@ export function useGlobalSearchHotkeys(openFn) {
2530
}
2631
window.addEventListener('keydown', onKey, { passive: false });
2732
return () => window.removeEventListener('keydown', onKey);
28-
}, [openFn]);
33+
}, [openFn, disabled]);
2934
}

0 commit comments

Comments
 (0)