From 4cb0c9e88c1e63486c2efc3e93a7f7b87104a6a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Fri, 22 Dec 2023 14:05:22 +0100 Subject: [PATCH] fix(files): Allow Ctrl/Command click on file entries to open in a new tab MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- apps/files/src/components/FileEntry.vue | 11 +++++++++-- apps/files/src/components/FileEntryGrid.vue | 11 +++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/apps/files/src/components/FileEntry.vue b/apps/files/src/components/FileEntry.vue index b89c5dcb3f437..3ed8b0a5d4b2d 100644 --- a/apps/files/src/components/FileEntry.vue +++ b/apps/files/src/components/FileEntry.vue @@ -105,6 +105,7 @@ import { showError } from '@nextcloud/dialogs' import { translate as t } from '@nextcloud/l10n' import { vOnClickOutside } from '@vueuse/components' import moment from '@nextcloud/moment' +import { generateUrl } from '@nextcloud/router' import Vue, { defineComponent } from 'vue' import { action as sidebarAction } from '../actions/sidebarAction.ts' @@ -398,8 +399,14 @@ export default defineComponent({ event.stopPropagation() }, - execDefaultAction(...args) { - this.$refs.actions.execDefaultAction(...args) + execDefaultAction(event) { + event.preventDefault() + if (event.ctrlKey || event.metaKey) { + window.open(generateUrl('/f/{fileId}', { fileId: this.fileid })) + return false + } + + this.$refs.actions.execDefaultAction(event) }, openDetailsIfAvailable(event) { diff --git a/apps/files/src/components/FileEntryGrid.vue b/apps/files/src/components/FileEntryGrid.vue index def818eea2f34..682c5fbbc236c 100644 --- a/apps/files/src/components/FileEntryGrid.vue +++ b/apps/files/src/components/FileEntryGrid.vue @@ -80,6 +80,7 @@ import { FileType, Permission, Folder, File as NcFile, NodeStatus, Node, View } import { getUploader } from '@nextcloud/upload' import { showError } from '@nextcloud/dialogs' import { translate as t } from '@nextcloud/l10n' +import { generateUrl } from '@nextcloud/router' import { vOnClickOutside } from '@vueuse/components' import Vue from 'vue' @@ -281,8 +282,14 @@ export default Vue.extend({ event.stopPropagation() }, - execDefaultAction(...args) { - this.$refs.actions.execDefaultAction(...args) + execDefaultAction(event) { + event.preventDefault() + if (event.ctrlKey || event.metaKey) { + window.open(generateUrl('/f/{fileId}', { fileId: this.fileid })) + return false + } + + this.$refs.actions.execDefaultAction(event) }, openDetailsIfAvailable(event) {