Warning, /plasma/plasma-desktop/containments/desktop/package/contents/ui/FolderViewDropArea.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2014-2017 Eike Hein <hein@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 import QtQuick 2.4 0008 0009 import org.kde.draganddrop 2.0 as DragDrop 0010 import org.kde.kirigami 2.20 as Kirigami 0011 0012 DragDrop.DropArea { 0013 id: dropArea 0014 0015 property Item folderView: null 0016 0017 function handleDragMove(folderView, pos) { 0018 // Trigger autoscroll. 0019 folderView.scrollLeft = (pos.x < (Kirigami.Units.gridUnit * 3)); 0020 folderView.scrollRight = (pos.x > width - (Kirigami.Units.gridUnit * 3)); 0021 folderView.scrollUp = (pos.y < (Kirigami.Units.gridUnit * 3)); 0022 folderView.scrollDown = (pos.y > height - (Kirigami.Units.gridUnit * 3)); 0023 0024 folderView.handleDragMove(pos.x, pos.y); 0025 } 0026 0027 function handleDragEnd(folderView) { 0028 // Cancel autoscroll. 0029 folderView.scrollLeft = false; 0030 folderView.scrollRight = false; 0031 folderView.scrollUp = false; 0032 folderView.scrollDown = false; 0033 0034 folderView.endDragMove(); 0035 } 0036 0037 onDragMove: event => { 0038 // TODO: We should reject drag moves onto file items that don't accept drops 0039 // (cf. QAbstractItemModel::flags() here, but DeclarativeDropArea currently 0040 // is currently incapable of rejecting drag events. 0041 0042 if (folderView) { 0043 handleDragMove(folderView, mapToItem(folderView, event.x, event.y)); 0044 } 0045 } 0046 0047 onDragLeave: event => { 0048 if (folderView) { 0049 handleDragEnd(folderView); 0050 } 0051 } 0052 0053 onDrop: event => { 0054 if (folderView) { 0055 handleDragEnd(folderView); 0056 0057 folderView.drop(folderView, event, mapToItem(folderView, event.x, event.y)); 0058 } 0059 } 0060 }