/usr/share/plasma/plasmoids/org.kde.plasma.quicklaunch/contents/ui/Popup.qml is in plasma-widgets-addons 4:5.12.4-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | /*
* Copyright 2015 David Rosca <nowrep@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
import QtQuick 2.2
import org.kde.draganddrop 2.0 as DragAndDrop
import "../code/layout.js" as LayoutManager
Item {
id: popup
property bool dragging: false
property alias popupModel : popupModel
width: LayoutManager.popupItemWidth()
height: Math.max(1, popupModel.count) * LayoutManager.popupItemHeight()
DragAndDrop.DropArea {
anchors.fill: parent
preventStealing: true
enabled: !plasmoid.immutable
onDragEnter: {
dragging = true;
}
onDragMove: {
if (!event.mimeData.hasUrls) {
return;
}
var index = listView.indexAt(event.x, event.y);
if (isInternalDrop(event)) {
popupModel.moveUrl(event.mimeData.source.itemIndex, index);
} else if (event.mimeData.hasUrls) {
popupModel.showDropMarker(index);
}
}
onDragLeave: {
dragging = false;
popupModel.clearDropMarker();
}
onDrop: {
dragging = false;
popupModel.clearDropMarker();
if (isInternalDrop(event)) {
event.accept(Qt.IgnoreAction);
saveConfiguration();
} else if (event.mimeData.hasUrls) {
var index = listView.indexAt(event.x, event.y);
popupModel.insertUrls(index == -1 ? popupModel.count : index, event.mimeData.urls);
event.accept(event.proposedAction);
}
}
}
ListView {
id: listView
anchors.fill: parent
interactive: false
model: UrlModel {
id: popupModel
}
delegate: IconItem {
isPopupItem: true
}
}
Connections {
target: plasmoid.configuration
onPopupUrlsChanged: {
popupModel.urlsChanged.disconnect(saveConfiguration);
popupModel.setUrls(plasmoid.configuration.popupUrls);
popupModel.urlsChanged.connect(saveConfiguration);
}
}
Component.onCompleted: {
popupModel.setUrls(plasmoid.configuration.popupUrls);
popupModel.urlsChanged.connect(saveConfiguration);
}
function saveConfiguration()
{
if (!dragging) {
plasmoid.configuration.popupUrls = popupModel.urls();
}
}
function isInternalDrop(event)
{
return event.mimeData.source
&& event.mimeData.source.ListView
&& event.mimeData.source.ListView.view == listView;
}
}
|