aboutsummaryrefslogtreecommitdiffstats
path: root/notifications/NotificationBalloon.qml
diff options
context:
space:
mode:
Diffstat (limited to 'notifications/NotificationBalloon.qml')
-rw-r--r--notifications/NotificationBalloon.qml20
1 files changed, 19 insertions, 1 deletions
diff --git a/notifications/NotificationBalloon.qml b/notifications/NotificationBalloon.qml
index dc8072f..e3763da 100644
--- a/notifications/NotificationBalloon.qml
+++ b/notifications/NotificationBalloon.qml
@@ -16,7 +16,25 @@ import QtQuick
Rectangle {
id: b
- required property var notification
+ // Neither property is `required` on purpose. A required property makes
+ // QML create the delegate in its own context, where `modelData` and
+ // `index` are not defined, so the Repeater's `notification: modelData`
+ // silently arrives undefined and every binding on it fails.
+ property var notification
+ property double now: 0
+
+ // Driven by the shell's tick. The balloon drops itself once its expiry
+ // passes, or while a suppression says so: the drawer and snooze withhold
+ // everything, DND withholds low and normal but still shows critical. The
+ // drawer lists a notification DND chose not to pop, because a list the
+ // user opened is not an interruption.
+ visible: {
+ if (Notify.drawerOpen) return false;
+ if (Notify.snoozeUntil > b.now) return false;
+ if (Status.dnd && b.notification.urgency !== "critical") return false;
+ if (b.notification.expires !== 0 && b.now >= b.notification.expires) return false;
+ return true;
+ }
width: parent ? parent.width : 340
implicitHeight: texts.implicitHeight + 20