Skip to content

Commit 50ac2b8

Browse files
committed
fix: dnd/bookmarks sub-panel: wrong dst info for the bottom nav elements
1 parent ae5296c commit 50ac2b8

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

src/services/drag-and-drop.actions.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,16 @@ function applyLvlOffset(lvl: number, dst: DstPlaceInfo): void {
309309
dst.parentId = -1
310310
} else if (Utils.isBookmarksPanel(panel)) {
311311
if (panel.rootId !== NOID && panel.rootId !== BKM_ROOT_ID) {
312-
dst.parentId = panel.rootId
312+
let offset = panel.reactive.rootOffset
313+
if (offset > 0) {
314+
let parent = Bookmarks.reactive.byId[panel.rootId]
315+
while (parent && offset--) {
316+
parent = Bookmarks.reactive.byId[parent.parentId]
317+
}
318+
dst.parentId = parent?.id ?? BKM_OTHER_ID
319+
} else {
320+
dst.parentId = panel.rootId
321+
}
313322
} else {
314323
dst.parentId = BKM_OTHER_ID
315324
}

src/sidebar/components/sub-panel.bookmarks.vue

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template lang="pug">
2-
.BookmarksSubPanel(@drop="onDrop")
3-
.content
2+
.BookmarksSubPanel
3+
.content(@drop="onContentDrop")
44
ScrollBox(v-if="tree && !state.loading && Permissions.reactive.bookmarks && hostPanel" ref="scrollBox")
55
.bookmarks-tree
66
DragAndDropPointer(:panelId="bookmarksPanel.id" :subPanel="true")
@@ -19,7 +19,9 @@
1919
:isMsg="!tree.length && !!Bookmarks.reactive.tree.length"
2020
:msg="translate('panel.nothing')")
2121

22-
.nav(v-if="state.active && !state.loading && props.bookmarksPanel.rootId !== NOID && props.bookmarksPanel.rootId !== BKM_ROOT_ID")
22+
.nav(
23+
v-if="state.active && !state.loading && props.bookmarksPanel.rootId !== NOID && props.bookmarksPanel.rootId !== BKM_ROOT_ID"
24+
@drop="onNavDrop")
2325
.up-btn(:data-inactive="state.rootFolderId === BKM_ROOT_ID" @click="goUp")
2426
.dnd-layer(@dragenter.stop="goUp")
2527
svg: use(xlink:href="#icon_expand")
@@ -177,15 +179,18 @@ function goDown(): boolean {
177179
else return false
178180
}
179181
180-
function onDrop(): void {
182+
function onContentDrop(): void {
181183
DnD.reactive.dstType = DropType.Bookmarks
182184
if (DnD.reactive.dstParentId === -1) {
183-
const panel = props.bookmarksPanel
184-
if (panel.rootId !== NOID && panel.rootId !== BKM_ROOT_ID) {
185-
DnD.reactive.dstParentId = panel.rootId
186-
} else {
187-
DnD.reactive.dstParentId = BKM_OTHER_ID
188-
}
185+
if (state.rootFolderId === BKM_ROOT_ID) DnD.reactive.dstParentId = BKM_OTHER_ID
186+
else DnD.reactive.dstParentId = state.rootFolderId
189187
}
190188
}
189+
190+
function onNavDrop() {
191+
DnD.reactive.dstType = DropType.Bookmarks
192+
DnD.reactive.dstIndex = -1
193+
if (state.rootFolderId === BKM_ROOT_ID) DnD.reactive.dstParentId = BKM_OTHER_ID
194+
else DnD.reactive.dstParentId = state.rootFolderId
195+
}
191196
</script>

0 commit comments

Comments
 (0)