diff --git a/frame/qml/PanelPopup.qml b/frame/qml/PanelPopup.qml index c417f0532..dc15a823c 100644 --- a/frame/qml/PanelPopup.qml +++ b/frame/qml/PanelPopup.qml @@ -18,6 +18,7 @@ Item { property bool openPending: false property bool grabInactivePending: false property int grabInactiveTimeout: 200 + property bool useX11BypassWindowManagerHint: true // WM_NAME, used for kwin. property string windowTitle: "dde-shell/panelpopup" width: popup.childrenRect.width @@ -43,6 +44,11 @@ Item { target: popupWindow; property: "yOffset" value: control.popupY } + Binding { + when: readyBinding + target: popupWindow; property: "useX11BypassWindowManagerHint" + value: control.useX11BypassWindowManagerHint + } function open() { diff --git a/frame/qml/PanelPopupWindow.qml b/frame/qml/PanelPopupWindow.qml index f7f80b219..963a1dca2 100644 --- a/frame/qml/PanelPopupWindow.qml +++ b/frame/qml/PanelPopupWindow.qml @@ -18,6 +18,8 @@ PopupWindow { property int requestedWidth: 10 property int requestedHeight: 10 property bool geometryUpdatePending: false + // Individual popup instances can override this for window-manager compatibility. + property bool useX11BypassWindowManagerHint: true signal requestUpdateGeometry() signal updateGeometryFinished() @@ -74,7 +76,10 @@ PopupWindow { width: 10 height: 10 - flags: (Qt.platform.pluginName === "xcb" ? (Qt.Tool | Qt.WindowStaysOnTopHint | Qt.X11BypassWindowManagerHint) : Qt.Popup) + flags: (Qt.platform.pluginName === "xcb" + ? (Qt.Tool | Qt.WindowStaysOnTopHint + | (useX11BypassWindowManagerHint ? Qt.X11BypassWindowManagerHint : 0)) + : Qt.Popup) font: D.DTK.fontManager.t6 D.DWindow.enabled: true D.DWindow.windowRadius: D.DTK.platformTheme.windowRadius < 0 ? 4 : D.DTK.platformTheme.windowRadius