Skip to content

Commit

Permalink
fix(files): Do not add drag and drop listeners when renaming a file
Browse files Browse the repository at this point in the history
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
  • Loading branch information
susnux committed Dec 14, 2023
1 parent 892c0bf commit bb16a2b
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 10 deletions.
42 changes: 33 additions & 9 deletions apps/files/src/components/FileEntry.vue
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,7 @@
:data-cy-files-list-row-name="source.basename"
:draggable="canDrag"
class="files-list__row"
@contextmenu="onRightClick"
@dragover="onDragOver"
@dragleave="onDragLeave"
@dragstart="onDragStart"
@dragend="onDragEnd"
@drop="onDrop">
v-on="rowListeners">
<!-- Failed indicator -->
<span v-if="source.attributes.failed" class="files-list__row--failed" />

Expand Down Expand Up @@ -110,7 +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 Vue from 'vue'
import Vue, { defineComponent } from 'vue'
import { action as sidebarAction } from '../actions/sidebarAction.ts'
import { getDragAndDropPreview } from '../utils/dragUtils.ts'
Expand All @@ -132,7 +127,7 @@ import logger from '../logger.js'
Vue.directive('onClickOutside', vOnClickOutside)
export default Vue.extend({
export default defineComponent({
name: 'FileEntry',
components: {
Expand Down Expand Up @@ -194,6 +189,26 @@ export default Vue.extend({
},
computed: {
/**
* Conditionally add drag and drop listeners
* Do not add drag start and over listeners on renaming to allow to drag and drop text
*/
rowListeners() {
const conditionals = this.isRenaming
? {}
: {
dragstart: this.onDragStart,
dragover: this.onDragOver,
}
return {
...conditionals,
contextmenu: this.onRightClick,
dragleave: this.onDragLeave,
dragend: this.onDragEnd,
drop: this.onDrop,
}
},
currentView(): View {
return this.$navigation.active as View
},
Expand Down Expand Up @@ -303,6 +318,10 @@ export default Vue.extend({
},
canDrag() {
if (this.isRenaming) {
return false
}
const canDrag = (node: Node): boolean => {
return (node?.permissions & Permission.UPDATE) !== 0
}
Expand Down Expand Up @@ -449,7 +468,12 @@ export default Vue.extend({
logger.debug('Drag ended')
},
async onDrop(event) {
async onDrop(event: DragEvent) {
// skip if native drop like text drag and drop from files names
if (!this.draggingFiles && !event.dataTransfer?.files?.length) {
return
}
event.preventDefault()
event.stopPropagation()
Expand Down
4 changes: 3 additions & 1 deletion apps/files/src/components/FileEntry/FileEntryName.vue
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,15 @@
</template>

<script lang="ts">
import type { PropType } from 'vue'
import { emit } from '@nextcloud/event-bus'
import { FileType, NodeStatus, Permission } from '@nextcloud/files'
import { loadState } from '@nextcloud/initial-state'
import { showError, showSuccess } from '@nextcloud/dialogs'
import { translate as t } from '@nextcloud/l10n'
import axios from '@nextcloud/axios'
import Vue, { PropType } from 'vue'
import Vue from 'vue'
import NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'
Expand Down

0 comments on commit bb16a2b

Please sign in to comment.