diff --git a/src/renderer/components/MenuEditorView/MenuEditorView.tsx b/src/renderer/components/MenuEditorView/MenuEditorView.tsx
index c7321a0..44c485b 100644
--- a/src/renderer/components/MenuEditorView/MenuEditorView.tsx
+++ b/src/renderer/components/MenuEditorView/MenuEditorView.tsx
@@ -597,8 +597,10 @@ export const MenuEditorView: React.FC = () => {
setSelectedId(nodes[0]?.data.id || null);
}}
>
- {({ node, style, tree }) => (
+ {({ node, style, tree, dragHandle }) => (
setSelectedId(node.data.id)}
diff --git a/tests/renderer/components/MenuEditorView.test.tsx b/tests/renderer/components/MenuEditorView.test.tsx
index f9e3b67..2de53c2 100644
--- a/tests/renderer/components/MenuEditorView.test.tsx
+++ b/tests/renderer/components/MenuEditorView.test.tsx
@@ -105,6 +105,16 @@ describe('MenuEditorView entry editor', () => {
expect(screen.getByRole('button', { name: /^delete$/i })).toBeInTheDocument();
});
+ it('marks outliner rows as drag handles so drag-and-drop can start from rows', async () => {
+ const { container } = render();
+
+ await screen.findByRole('button', { name: /add entry/i });
+
+ const row = container.querySelector('.menu-editor-row');
+ expect(row).not.toBeNull();
+ expect(row).toHaveAttribute('data-drag-handle', 'true');
+ });
+
it('finalizes entry as page on a double-click gesture', async () => {
render();