@@ -530,6 +530,7 @@ Item {
530530
531531 Item {
532532 id: menuContainer
533+ objectName: " overflowMenuContainer"
533534
534535 readonly property real rawWidth: {
535536 const itemCount = root .hiddenBarItems .length
@@ -724,8 +725,7 @@ Item {
724725
725726 if (! trayItem .hasMenu ) return
726727
727- root .menuOpen = false
728- root .showForTrayItem (trayItem, parent, parentScreen, root .isAtBottom , root .isVertical , root .axis )
728+ root .showForTrayItem (trayItem, menuContainer, parentScreen, root .isAtBottom , root .isVertical , root .axis )
729729 }
730730 }
731731 }
@@ -911,10 +911,10 @@ Item {
911911
912912 onVisibleChanged: {
913913 if (visible) {
914+ updatePosition ()
914915 root .menuOpen = false
915916 PopoutManager .closeAllPopouts ()
916917 ModalManager .closeAllModalsExcept (null )
917- updatePosition ()
918918 }
919919 }
920920
@@ -954,11 +954,20 @@ Item {
954954
955955 function updatePosition () {
956956 const targetItem = (typeof menuRoot !== " undefined" && menuRoot .anchorItem ) ? menuRoot .anchorItem : root
957- const globalPos = targetItem .mapToGlobal (0 , 0 )
958- const screenX = screen .x || 0
959- const screenY = screen .y || 0
960- const relativeX = globalPos .x - screenX
961- const relativeY = globalPos .y - screenY
957+
958+ const isFromOverflowMenu = targetItem .objectName === " overflowMenuContainer"
959+
960+ let relativeX, relativeY
961+ if (isFromOverflowMenu) {
962+ relativeX = targetItem .x
963+ relativeY = targetItem .y
964+ } else {
965+ const globalPos = targetItem .mapToGlobal (0 , 0 )
966+ const screenX = screen .x || 0
967+ const screenY = screen .y || 0
968+ relativeX = globalPos .x - screenX
969+ relativeY = globalPos .y - screenY
970+ }
962971
963972 const widgetThickness = Math .max (20 , 26 + SettingsData .dankBarInnerPadding * 0.6 )
964973 const effectiveBarThickness = Math .max (widgetThickness + SettingsData .dankBarInnerPadding + 4 , Theme .barHeight - 4 - (8 - SettingsData .dankBarInnerPadding ))
0 commit comments