Skip to content

applets/notifications: remove binding loop in popup

Reason for the change

The notification popup sets the width of the body to equal the width of its parent ScrollView's Flickable. This does not necessarily cause a binding loop in a Layout, but it can if the body is long enough to require wrapping (which esablishes the loop) but not long enough to create a scroll bar (which would break the loop).

Instead, we bind the width to the ScrollView's width minus the scroll bar's width, which avoids the binding loop.

Test plan

Test cases:

  1. notify-send "Useful Summary" "Informative body" -i "dialog-information"
  2. notify-send "Useful Summary" "Informative body with more detail that is word-wrapped" -i "dialog-information"
  3. notify-send "notify-send" "Informative body with more detail that is word-wrapped and the information never stops it's enough to get the notification to scroll even though it's hard to read this much until the notification times out" -i "dialog-information"

(without) 2) causes a binding loop, the others do not

(with) no binding loops

Screenshots or screen recordings

N/A

Bugs fixed

BUG: 499024 FIXED-IN: 6.4.0


The specifics seem to depend on the word-wrap algorithm as well, sometimes a notification that should otherwise trigger a binding loop does not actually do it. I haven't completely figured out the pattern, and I don't think it's worth spending more time on. I couldn't find a binding loop with the change.

Merge request reports

Loading