diff --git a/shell/modules/Tooltip.qml b/shell/modules/Tooltip.qml index 01643f3..105a896 100644 --- a/shell/modules/Tooltip.qml +++ b/shell/modules/Tooltip.qml @@ -11,8 +11,13 @@ PanelWindow { visible: _winVisible color: "transparent" + // Mirror of `screen` captured at construction. Reading `root.screen` + // directly in `_shown` couples it to visibility transitions (PanelWindow + // re-evaluates `screen` when mapped/unmapped), which feeds back into + // `_shown` via `_winVisible` and trips a binding loop. + property var assignedScreen: null property bool _winVisible: false - property bool _shown: M.TooltipState.visible && M.TooltipState.screen === root.screen + property bool _shown: M.TooltipState.visible && M.TooltipState.screen === assignedScreen on_ShownChanged: { if (_shown) { diff --git a/shell/shell.qml b/shell/shell.qml index eff500c..12828c5 100644 --- a/shell/shell.qml +++ b/shell/shell.qml @@ -33,6 +33,7 @@ ShellRoot { Tooltip { screen: scope.modelData + assignedScreen: scope.modelData } LazyLoader {