Skip to content

Commit 6887250

Browse files
authored
Merge pull request #230 from beNative/codex/ensure-selected-node-is-visible-after-search-clear
Ensure document tree selection remains visible after clearing search
2 parents eb76dbb + 2df634f commit 6887250

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

App.tsx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ export const MainApp: React.FC = () => {
218218
const [confirmAction, setConfirmAction] = useState<{ title: string; message: React.ReactNode; onConfirm: () => void; } | null>(null);
219219
const [clipboardNotice, setClipboardNotice] = useState<{ title: string; message: React.ReactNode; helpUrl?: string } | null>(null);
220220
const [searchTerm, setSearchTerm] = useState('');
221+
const previousSearchTermRef = useRef('');
221222
const [contextMenu, setContextMenu] = useState<{ isOpen: boolean; position: { x: number, y: number }, items: MenuItem[] }>({ isOpen: false, position: { x: 0, y: 0 }, items: [] });
222223
const [isDraggingFile, setIsDraggingFile] = useState(false);
223224
const [formatTrigger, setFormatTrigger] = useState(0);
@@ -765,6 +766,23 @@ export const MainApp: React.FC = () => {
765766
return iterator.done ? null : iterator.value;
766767
}, [lastClickedId, selectedIds]);
767768

769+
useEffect(() => {
770+
const previousTrimmed = previousSearchTermRef.current.trim();
771+
const currentTrimmed = searchTerm.trim();
772+
773+
if (previousTrimmed && !currentTrimmed) {
774+
const primaryId = getPrimarySelectionId();
775+
if (primaryId) {
776+
const node = items.find(item => item.id === primaryId);
777+
if (node) {
778+
ensureNodeVisible(node);
779+
}
780+
}
781+
}
782+
783+
previousSearchTermRef.current = searchTerm;
784+
}, [searchTerm, getPrimarySelectionId, items, ensureNodeVisible]);
785+
768786
const handleDocumentTreeSelectAll = useCallback(() => {
769787
setSelectedIds(new Set(navigableItems.map(item => item.id)));
770788
}, [navigableItems, setSelectedIds]);

0 commit comments

Comments
 (0)