diff --git a/panels/dock/package/main.qml b/panels/dock/package/main.qml index 5067170da..94d4534bc 100644 --- a/panels/dock/package/main.qml +++ b/panels/dock/package/main.qml @@ -56,6 +56,14 @@ Window { return appearance.opacity } + function requestShowDockMenu() { + // maybe has popup visible, close it. + Panel.requestClosePopup() + viewDeactivated() + hideTimer.stop() + MenuHelper.openMenu(dockMenuLoader.item) + } + DLayerShellWindow.anchors: position2Anchors(positionForAnimation) DLayerShellWindow.layer: DLayerShellWindow.LayerTop DLayerShellWindow.exclusionZone: Panel.hideMode === Dock.KeepShowing ? Applet.dockSize : 0 @@ -413,11 +421,7 @@ Window { MenuHelper.closeCurrent() dockMenuLoader.active = true if (button === Qt.RightButton && lastActive !== dockMenuLoader.item) { - // maybe has popup visible, close it. - Panel.requestClosePopup() - viewDeactivated() - hideTimer.stop() - MenuHelper.openMenu(dockMenuLoader.item) + requestShowDockMenu() } if (button === Qt.LeftButton) { // try to close popup when clicked empty, because dock does not have focus. @@ -427,6 +431,28 @@ Window { } } + //Touch screen click + TapHandler { + acceptedButtons: Qt.NoButton + acceptedDevices: PointerDevice.TouchScreen + onTapped: function(eventPoint, button) { + let lastActive = MenuHelper.activeMenu + MenuHelper.closeCurrent() + dockMenuLoader.active = true + // try to close popup when clicked empty, because dock does not have focus. + Panel.requestClosePopup() + viewDeactivated() + } + onLongPressed: { + let lastActive = MenuHelper.activeMenu + MenuHelper.closeCurrent() + dockMenuLoader.active = true + if (lastActive !== dockMenuLoader.item) { + requestShowDockMenu() + } + } + } + HoverHandler { cursorShape: Qt.ArrowCursor } diff --git a/panels/dock/taskmanager/package/AppItem.qml b/panels/dock/taskmanager/package/AppItem.qml index 1213d009e..40eed5b4e 100644 --- a/panels/dock/taskmanager/package/AppItem.qml +++ b/panels/dock/taskmanager/package/AppItem.qml @@ -427,6 +427,12 @@ Item { } } + function requestAppItemMenu() { + contextMenuLoader.trashEmpty = TaskManager.isTrashEmpty() + contextMenuLoader.active = true + MenuHelper.openMenu(contextMenuLoader.item) + } + MouseArea { id: mouseArea anchors.fill: parent @@ -451,12 +457,16 @@ Item { toolTip.close() closeItemPreview() } + // touchscreen long press. + onPressAndHold: function (mouse) { + if (mouse.button === Qt.NoButton) { + requestAppItemMenu() + } + } onClicked: function (mouse) { let index = root.modelIndex; if (mouse.button === Qt.RightButton) { - contextMenuLoader.trashEmpty = TaskManager.isTrashEmpty() - contextMenuLoader.active = true - MenuHelper.openMenu(contextMenuLoader.item) + requestAppItemMenu() } else { if (root.windows.length === 0) { launchAnimation.start();