diff --git a/frontend/src/desktop/DesktopWorkspace.tsx b/frontend/src/desktop/DesktopWorkspace.tsx index 944ab54..a830aee 100644 --- a/frontend/src/desktop/DesktopWorkspace.tsx +++ b/frontend/src/desktop/DesktopWorkspace.tsx @@ -150,12 +150,21 @@ const DesktopWorkspaceContent: React.FC = ({ } = useWorkspaceSelectionContext(); const handleSelectionChange = useCallback((ids: Identifier[]) => { + // Sort IDs by Z-index (ascending) so the last item is the top-most + const sortedIds = [...ids].sort((a, b) => { + const cardA = layoutStore.items.get(String(a)); + const cardB = layoutStore.items.get(String(b)); + const zA = cardA ? cardA.z : -Infinity; + const zB = cardB ? cardB.z : -Infinity; + return zA - zB; + }); + if (setSelectedEntries) { - const keys = ids.map(id => createDocumentEntryKey(id)); + const keys = sortedIds.map(id => createDocumentEntryKey(id)); setSelectedEntries(keys); } - onSelectionChange?.(ids); - }, [setSelectedEntries, onSelectionChange]); + onSelectionChange?.(sortedIds); + }, [setSelectedEntries, onSelectionChange, layoutStore]); const onClearSelection = useCallback(() => { clearSelection ? clearSelection() : handleSelectionChange([]);