diff --git a/containments/desktop/package/contents/ui/FolderItemDelegate.qml b/containments/desktop/package/contents/ui/FolderItemDelegate.qml --- a/containments/desktop/package/contents/ui/FolderItemDelegate.qml +++ b/containments/desktop/package/contents/ui/FolderItemDelegate.qml @@ -100,6 +100,7 @@ property Item toolTip: toolTip property Item selectionButton: null property Item popupButton: null + property bool touchTap: false onSelectedChanged: { if (selected && !blank) { @@ -158,7 +159,7 @@ location: root.useListViewMode ? (plasmoid.location === PlasmaCore.Types.LeftEdge ? PlasmaCore.Types.LeftEdge : PlasmaCore.Types.RightEdge) : plasmoid.location onContainsMouseChanged: { - if (containsMouse && !model.blank) { + if ((containsMouse || touchTap) && !model.blank) { if (toolTip.active) { toolTip.icon = model.decoration; toolTip.mainText = model.display; @@ -207,6 +208,48 @@ } } ] + + MouseArea { + anchors.left: parent.left + width: parent.width + height: parent.height + hoverEnabled: true + acceptedButtons: Qt.LeftButton + + onPressAndHold: { + if (touchTap) { + var pos = mapToGlobal(mouse.x, mouse.y); + eventGenerator.sendMouseEvent(listener, EventGenerator.MouseButtonPress, pos.x, pos.y, Qt.RightButton, Qt.RightButton, mouse.modifiers); + } + } + + onPressed: { + if (mouse.source == Qt.MouseEventSynthesizedByQt) { + touchTap = true; + parent.onContainsMouseChanged(); + var pos = mapToGlobal(mouse.x, mouse.y); + eventGenerator.sendMouseEvent(listener, EventGenerator.MouseButtonPress, pos.x, pos.y, mouse.button, mouse.buttons, mouse.modifiers); + } else { + touchTap = false; + } + } + + onReleased: { + if (main.GridView.view.hoveredItem && mouse.source == Qt.MouseEventSynthesizedByQt) { + var pos = mapToGlobal(mouse.x, mouse.y); + eventGenerator.sendMouseEvent(listener, EventGenerator.MouseButtonPress, pos.x, pos.y, Qt.LeftButton, Qt.LeftButton, mouse.modifiers); + eventGenerator.sendMouseEvent(listener, EventGenerator.MouseButtonRelease, pos.x, pos.y, mouse.button, mouse.buttons, mouse.modifiers); + } + + if (!Qt.styleHints.singleClickActivation && mouse.source == Qt.MouseEventSynthesizedByQt) { + var pos = mapToGlobal(mouse.x, mouse.y); + eventGenerator.sendMouseEvent(listener, EventGenerator.MouseButtonPress, pos.x, pos.y, Qt.LeftButton, Qt.LeftButton, mouse.modifiers); + eventGenerator.sendMouseEvent(listener, EventGenerator.MouseButtonRelease, pos.x, pos.y, mouse.button, mouse.buttons, mouse.modifiers); + } + + touchTap = false; + } + } } Loader {