Skip to content

Commit 9ca2612

Browse files
committed
fix: context menu handling in folder tree
1 parent 3ab9533 commit 9ca2612

3 files changed

Lines changed: 6 additions & 24 deletions

File tree

src/renderer/components/sidebar/folders/Tree.vue

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ const {
4848
const { state } = useApp()
4949
const { clearSnippetsState } = useSnippets()
5050
51-
const contextMenuTriggerRef = useTemplateRef('contextMenuTriggerRef')
52-
5351
const hoveredNodeId = ref('')
5452
const isHoveredByIdDisabled = ref(false)
5553
const contextNode = ref<Node | null>(null)
@@ -85,21 +83,8 @@ function toggleNode(node: Node) {
8583
return emit('toggleNode', node)
8684
}
8785
88-
/**
89-
* Поскольку в TreeNode есть @contextmenu.stop, то для того чтобы
90-
* предотвратить высплытие в родительский узел для корректной подсветки,
91-
* используем программную отправку события contextmenu.
92-
* Так же такое решение избавит от n кол-ва ContextMenu на каждый узел.
93-
*/
94-
function contextMenu(node: Node, event: MouseEvent) {
86+
function contextMenu(node: Node) {
9587
contextNode.value = node
96-
contextMenuTriggerRef.value?.dispatchEvent(
97-
new MouseEvent('contextmenu', {
98-
bubbles: false,
99-
clientX: event.clientX,
100-
clientY: event.clientY,
101-
}),
102-
)
10388
}
10489
10590
async function onDeleteFolder() {
@@ -221,10 +206,7 @@ provide(treeKeys, {
221206
<div class="scrollbar h-full min-h-0 overflow-x-hidden overflow-y-auto">
222207
<ContextMenu.Root>
223208
<ContextMenu.Trigger as-child>
224-
<div
225-
ref="contextMenuTriggerRef"
226-
data-folder-tree
227-
>
209+
<div data-folder-tree>
228210
<TreeNode
229211
v-for="(node, index) in modelValue"
230212
:key="node.id"

src/renderer/components/sidebar/folders/TreeNode.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ function onClickNode(id: string | number, event?: MouseEvent) {
151151
clickNode(Number(id), event)
152152
}
153153
154-
function onClickContextMenu(e: MouseEvent) {
154+
function onClickContextMenu() {
155155
highlightedFolderIds.value.clear()
156156
highlightedFolderIds.value.add(Number(props.node.id))
157157
@@ -165,7 +165,7 @@ function onClickContextMenu(e: MouseEvent) {
165165
}
166166
167167
highlightedSnippetIds.value.clear()
168-
contextMenu(props.node, e)
168+
contextMenu(props.node)
169169
}
170170
171171
function onDragStart(e: DragEvent) {
@@ -340,7 +340,6 @@ if (focusHandler)
340340
@dragend.stop="onDragEnd"
341341
@drop.stop="onDrop"
342342
@dragover.prevent
343-
@contextmenu.stop="onClickContextMenu"
344343
>
345344
<div
346345
:id="String(node.id)"
@@ -357,6 +356,7 @@ if (focusHandler)
357356
@dragenter.stop="onDragEnter"
358357
@dragover="onDragOver"
359358
@click="(event) => onClickNode(node.id, event)"
359+
@contextmenu="onClickContextMenu"
360360
>
361361
<span class="node__name relative z-10 flex w-full items-center">
362362
<div

src/renderer/components/sidebar/folders/keys.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export interface TreeInjection {
77
focusHandler?: (isFocused: Ref<boolean>) => void
88
isHoveredByIdDisabled: Ref<boolean>
99
toggleNode: (node: Node) => void
10-
contextMenu: (node: Node, event: MouseEvent) => void
10+
contextMenu: (node: Node) => void
1111
}
1212

1313
export const treeKeys: InjectionKey<TreeInjection> = Symbol('tree')

0 commit comments

Comments
 (0)