diff --git a/panels/dock/tray/SurfacePopup.qml b/panels/dock/tray/SurfacePopup.qml index c3a0027b2..a5aab015d 100644 --- a/panels/dock/tray/SurfacePopup.qml +++ b/panels/dock/tray/SurfacePopup.qml @@ -104,6 +104,18 @@ Item { sizeFollowsWindow: false } + // 监听菜单 surface 尺寸变化,内容异步到达后重新请求几何更新。 + Connections { + target: menuSurfaceLayer + enabled: menu.readyBinding && menu.menuVisible + function onWidthChanged() { + menu.menuWindow.requestUpdateGeometry() + } + function onHeightChanged() { + menu.menuWindow.requestUpdateGeometry() + } + } + Connections { target: DockCompositor function onPopupCreated(popupSurface) { diff --git a/panels/dock/tray/SurfaceSubPopup.qml b/panels/dock/tray/SurfaceSubPopup.qml index 6f5b5bb7d..f76cb928c 100644 --- a/panels/dock/tray/SurfaceSubPopup.qml +++ b/panels/dock/tray/SurfaceSubPopup.qml @@ -65,6 +65,18 @@ Item { } } + // 监听子菜单 surface 尺寸变化,内容异步到达后重新请求几何更新。 + Connections { + target: popupSurfaceLayer + enabled: popup.readyBinding && popup.menuVisible + function onWidthChanged() { + popup.menuWindow.requestUpdateGeometry() + } + function onHeightChanged() { + popup.menuWindow.requestUpdateGeometry() + } + } + Connections { target: DockCompositor function onPopupCreated(popupSurface) { diff --git a/panels/dock/tray/TrayItemSurfacePopup.qml b/panels/dock/tray/TrayItemSurfacePopup.qml index c3cfbcdc2..63504b6c4 100644 --- a/panels/dock/tray/TrayItemSurfacePopup.qml +++ b/panels/dock/tray/TrayItemSurfacePopup.qml @@ -109,6 +109,18 @@ Item { popupMenu.shellSurface.updatePluginGeometry(Qt.rect(popupMenu.menuWindow.x, popupMenu.menuWindow.y, 0, 0)) } } + + // 监听菜单 surface 尺寸变化,内容异步到达后重新请求几何更新。 + Connections { + target: popupMenuContent + enabled: popupMenu.readyBinding && popupMenu.menuVisible + function onWidthChanged() { + popupMenu.menuWindow.requestUpdateGeometry() + } + function onHeightChanged() { + popupMenu.menuWindow.requestUpdateGeometry() + } + } } }