33// SPDX-License-Identifier: GPL-3.0-or-later
44
55import QtQuick 2.15
6- import QtQuick.Controls 2.4
6+ import QtQuick.Controls
77import QtQuick.Layouts 2.15
88import QtQuick.Window 2.15
99
1010import QtQml
11- import Qt.labs.platform as LP
1211
1312import org.deepin.ds 1.0
1413import org.deepin.ds.dock 1.0
@@ -57,12 +56,21 @@ Window {
5756 return appearance .opacity
5857 }
5958
60- function requestShowDockMenu () {
59+ function requestShowDockMenu (point ) {
6160 // maybe has popup visible, close it.
6261 Panel .requestClosePopup ()
6362 viewDeactivated ()
6463 hideTimer .stop ()
65- MenuHelper .openMenu (dockMenuLoader .item )
64+
65+ let localPoint = point ? Qt .point (point .x , point .y ) : Qt .point (dockContainer .width / 2 , dockContainer .height / 2 )
66+ Qt .callLater (function () {
67+ let menu = dockMenuLoader .item
68+ if (! menu)
69+ return
70+
71+ let pos = MenuHelper .calculateMenuPosition (localPoint, menu, Panel .position )
72+ MenuHelper .openMenu (menu, dockContainer, pos)
73+ })
6674 }
6775
6876 DLayerShellWindow .anchors : position2Anchors (positionForAnimation)
@@ -266,11 +274,12 @@ Window {
266274 }
267275 }
268276
269- component EnumPropertyMenuItem: LP .MenuItem {
277+ component EnumPropertyMenuItem: D .MenuItem {
270278 required property string name
271279 required property string prop
272280 required property int value
273281 text: name
282+ checkable: true
274283
275284 onTriggered: {
276285 Applet[prop] = value
@@ -280,12 +289,9 @@ Window {
280289 }
281290 checked: Applet[prop] === value
282291 }
283- component MutuallyExclusiveMenu: LP .Menu {
284- id: menu
285- LP .MenuItemGroup {
286- id: group
287- items: menu .items
288- }
292+ component MutuallyExclusiveMenu: D .Menu {
293+ popupType: Popup .Window
294+ D .PopupHandle .enableBlurWindow : true
289295 }
290296
291297 function updateAppItems ()
@@ -298,8 +304,11 @@ Window {
298304 Loader {
299305 id: dockMenuLoader
300306 active: false
301- sourceComponent: LP .Menu {
307+ sourceComponent: D .Menu {
302308 id: dockMenu
309+ popupType: Popup .Window
310+ D .PopupHandle .enableBlurWindow : true
311+
303312 MutuallyExclusiveMenu {
304313 visible: Panel .debugMode
305314 title: qsTr (" Indicator Style" )
@@ -368,14 +377,15 @@ Window {
368377 value: Dock .SmartHide
369378 }
370379 }
371- LP .MenuItem {
380+ D .MenuItem {
372381 text: qsTr (" Lock the Dock" )
382+ checkable: true
373383 checked: Panel .locked
374384 onTriggered: {
375385 Panel .locked = ! Panel .locked
376386 }
377387 }
378- LP .MenuItem {
388+ D .MenuItem {
379389 text: qsTr (" Dock Settings" )
380390 onTriggered: {
381391 Panel .openDockSettings ()
@@ -422,7 +432,7 @@ Window {
422432 MenuHelper .closeCurrent ()
423433 dockMenuLoader .active = true
424434 if (button === Qt .RightButton && lastActive !== dockMenuLoader .item ) {
425- requestShowDockMenu ()
435+ requestShowDockMenu (eventPoint . position )
426436 }
427437 if (button === Qt .LeftButton ) {
428438 // try to close popup when clicked empty, because dock does not have focus.
@@ -434,6 +444,7 @@ Window {
434444
435445 // Touch screen click
436446 TapHandler {
447+ id: touchMenuTapHandler
437448 acceptedButtons: Qt .NoButton
438449 acceptedDevices: PointerDevice .TouchScreen
439450 onTapped : function (eventPoint , button ) {
@@ -449,7 +460,7 @@ Window {
449460 MenuHelper .closeCurrent ()
450461 dockMenuLoader .active = true
451462 if (lastActive !== dockMenuLoader .item ) {
452- requestShowDockMenu ()
463+ requestShowDockMenu (touchMenuTapHandler . point . position )
453464 }
454465 }
455466 }
0 commit comments