diff --git a/src/services/mouse.fg.ts b/src/services/mouse.fg.ts index ef0a54887..a4ae2461d 100644 --- a/src/services/mouse.fg.ts +++ b/src/services/mouse.fg.ts @@ -8,6 +8,7 @@ import * as Tabs from 'src/services/tabs.fg' import * as DnD from 'src/services/drag-and-drop.fg' import * as Preview from 'src/services/tabs.fg.preview' import * as Search from 'src/services/search.fg' +import * as Info from 'src/services/info' import * as Mouse from 'src/services/mouse.fg' @@ -217,6 +218,10 @@ export function stopLongClick(): void { } let clickLock = false +export function isCmdOrCtrl(e: MouseEvent): boolean { + return e.ctrlKey || (Info.reactive.os === 'mac' && e.metaKey) +} + export function isLocked(): boolean { return clickLock } diff --git a/src/sidebar/components/bar.new-tab.vue b/src/sidebar/components/bar.new-tab.vue index 53f7171a0..4cc1b34f9 100644 --- a/src/sidebar/components/bar.new-tab.vue +++ b/src/sidebar/components/bar.new-tab.vue @@ -250,7 +250,7 @@ function onNewTabMouseUp(e: MouseEvent, btn?: NewTabBtn): void { // Left if (e.button === 0) { - if (e.ctrlKey) { + if (Mouse.isCmdOrCtrl(e)) { Mouse.blockWheel() const actTab = Tabs.byId[Tabs.activeId] if (actTab && !actTab.pinned && actTab.panelId === props.panel.id) { @@ -287,7 +287,7 @@ function onNewTabMouseUp(e: MouseEvent, btn?: NewTabBtn): void { // Right else if (e.button === 2) { - if (e.ctrlKey || e.shiftKey || Windows.incognito) return + if (Mouse.isCmdOrCtrl(e) || e.shiftKey || Windows.incognito) return if (Menu.isBlocked()) return if (!Selection.isSet() && !Settings.state.ctxMenuNative) { @@ -315,14 +315,14 @@ function onNewTabCtxMenu(e: MouseEvent): void { e.stopPropagation() - if (Mouse.isLocked() || !Settings.state.ctxMenuNative || e.ctrlKey || e.shiftKey) { + if (Mouse.isLocked() || !Settings.state.ctxMenuNative || Mouse.isCmdOrCtrl(e) || e.shiftKey) { Mouse.resetClickLock() e.stopPropagation() e.preventDefault() return } - if (!e.ctrlKey && !e.shiftKey && !props.panel.selNewTab) { + if (!Mouse.isCmdOrCtrl(e) && !e.shiftKey && !props.panel.selNewTab) { Selection.resetSelection() } diff --git a/src/sidebar/components/bookmark-card.vue b/src/sidebar/components/bookmark-card.vue index c8f4cc086..b7bee8f84 100644 --- a/src/sidebar/components/bookmark-card.vue +++ b/src/sidebar/components/bookmark-card.vue @@ -73,7 +73,7 @@ async function onMouseDown(e: MouseEvent): Promise { // Left if (e.button === 0) { - if (e.ctrlKey) { + if (Mouse.isCmdOrCtrl(e)) { if (!props.node.sel) Selection.selectBookmark(props.node.id) else Selection.deselectBookmark(props.node.id) return @@ -115,7 +115,7 @@ async function onMouseDown(e: MouseEvent): Promise { function onMouseUp(e: MouseEvent): void { if (e.button === 0) { if (!Mouse.isTarget('bookmark', props.node.id)) return - if (e.ctrlKey || e.shiftKey) return + if (Mouse.isCmdOrCtrl(e) || e.shiftKey) return if (Selection.isBookmarks()) { return Selection.resetSelection() @@ -135,7 +135,7 @@ function onMouseUp(e: MouseEvent): void { if (conf.removeBookmark) Bookmarks.removeBookmarks([props.node.id], { noNotif: true }) } } else if (e.button === 2) { - if (e.ctrlKey || e.shiftKey) return + if (Mouse.isCmdOrCtrl(e) || e.shiftKey) return Mouse.stopMultiSelection() if (!Settings.state.ctxMenuNative) { @@ -146,13 +146,13 @@ function onMouseUp(e: MouseEvent): void { } function onCtxMenu(e: MouseEvent): void { - if (!Settings.state.ctxMenuNative || e.ctrlKey || e.shiftKey) { + if (!Settings.state.ctxMenuNative || Mouse.isCmdOrCtrl(e) || e.shiftKey) { e.stopPropagation() e.preventDefault() return } - if (!e.ctrlKey && !e.shiftKey && !props.node.sel) { + if (!Mouse.isCmdOrCtrl(e) && !e.shiftKey && !props.node.sel) { Selection.resetSelection() } diff --git a/src/sidebar/components/history-item.vue b/src/sidebar/components/history-item.vue index 34ac3306e..4bf3866df 100644 --- a/src/sidebar/components/history-item.vue +++ b/src/sidebar/components/history-item.vue @@ -63,7 +63,7 @@ function onMouseDown(e: MouseEvent, visit: Visit): void { // Left if (e.button === 0) { - if (e.ctrlKey) { + if (Mouse.isCmdOrCtrl(e)) { if (!visit.reactive.sel) Selection.selectHistory(visit.id) else Selection.deselectHistory(visit.id) return @@ -119,7 +119,7 @@ function onMouseUp(e: MouseEvent, visit: Visit): void { } if (e.button === 2) { - if (e.ctrlKey || e.shiftKey) return + if (Mouse.isCmdOrCtrl(e) || e.shiftKey) return if (Menu.isBlocked()) return if (!Selection.isSet() && !Settings.state.ctxMenuNative) { @@ -146,14 +146,14 @@ function onFavMouseDown(e: MouseEvent, visit: Visit): void { } function onCtxMenu(e: MouseEvent, visit: Visit): void { - if (Mouse.isLocked() || !Settings.state.ctxMenuNative || e.ctrlKey || e.shiftKey) { + if (Mouse.isLocked() || !Settings.state.ctxMenuNative || Mouse.isCmdOrCtrl(e) || e.shiftKey) { Mouse.resetClickLock() e.stopPropagation() e.preventDefault() return } - if (!e.ctrlKey && !e.shiftKey && !visit.reactive.sel) { + if (!Mouse.isCmdOrCtrl(e) && !e.shiftKey && !visit.reactive.sel) { Selection.resetSelection() } diff --git a/src/sidebar/components/tab.vue b/src/sidebar/components/tab.vue index fb8cc14e9..f4d420744 100644 --- a/src/sidebar/components/tab.vue +++ b/src/sidebar/components/tab.vue @@ -280,7 +280,7 @@ function onMouseDown(e: MouseEvent): void { // Left if (e.button === 0) { - if (e.ctrlKey) { + if (Mouse.isCmdOrCtrl(e)) { if (!(tab.sel || tab.selLock)) { const noSel = !Selection.isSet() @@ -453,7 +453,7 @@ function onMouseUp(e: MouseEvent): void { if (tab.reactive.customTitleEdit) return if (e.button === 0) { - const withoutMods = !e.ctrlKey && !e.shiftKey + const withoutMods = !Mouse.isCmdOrCtrl(e) && !e.shiftKey if (sameTarget) { if (withoutMods) Selection.resetSelection() if (Settings.state.activateOnMouseUp && withoutMods) activate() @@ -492,7 +492,7 @@ function onMouseUp(e: MouseEvent): void { } } } else if (e.button === 2) { - if (e.ctrlKey || e.shiftKey) return + if (Mouse.isCmdOrCtrl(e) || e.shiftKey) return const inMultiSelectionMode = Mouse.multiSelectionMode Mouse.stopMultiSelection() @@ -512,7 +512,7 @@ function onCtxMenu(e: MouseEvent): void { if ( Mouse.isLocked() || !Settings.state.ctxMenuNative || - e.ctrlKey || + Mouse.isCmdOrCtrl(e) || e.shiftKey || Mouse.longClickApplied ) { @@ -522,7 +522,7 @@ function onCtxMenu(e: MouseEvent): void { return } - if (!e.ctrlKey && !e.shiftKey && !(tab.sel || tab.selLock)) { + if (!Mouse.isCmdOrCtrl(e) && !e.shiftKey && !(tab.sel || tab.selLock)) { Selection.resetSelection() } @@ -774,7 +774,7 @@ function onExpandMouseUp(e: MouseEvent): void { } // Select whole branch and show menu - if (e.button === 2 && !e.ctrlKey && !e.shiftKey && sameTarget) { + if (e.button === 2 && !Mouse.isCmdOrCtrl(e) && !e.shiftKey && sameTarget) { Selection.resetSelection() Selection.selectTabsBranch(tab) }