From f1d01cadf8813637d963d57937611f6b8edc0e49 Mon Sep 17 00:00:00 2001 From: Hannes Date: Sat, 29 Aug 2026 23:44:32 +0200 Subject: [PATCH] feat: update notification duration calculation to include milliseconds --- modules/notification/NotificationBody.qml | 45 +++++++++++++++++++++-- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/modules/notification/NotificationBody.qml b/modules/notification/NotificationBody.qml index 1a006d5..af2e0bd 100644 --- a/modules/notification/NotificationBody.qml +++ b/modules/notification/NotificationBody.qml @@ -16,7 +16,7 @@ Rectangle { property bool closing: false property real duration: ( - notification.expireTimeout > 0 ? notification.expireTimeout : + notification.expireTimeout > 0 ? notification.expireTimeout*1000 : urgency ? urgency * 2000 : 5000 ) @@ -47,7 +47,7 @@ Rectangle { anchors.fill: parent hoverEnabled: true onClicked: { - root.closeNotification(true) + root.closeNotification(false) } } Column { @@ -62,11 +62,47 @@ Rectangle { color: "transparent" border.width: Config.border_width border.color: textColor + + MouseArea { // covers cross only, not whole row + id: closingMouseArea + anchors.top: parent.top + anchors.right: parent.right + anchors.margins: Config.spacing // or 10 to match Row margins + + width: closeIconText.height + height: closeIconText.height // Config.screen_height_to_font_small(screen.height) ~12-16 + + hoverEnabled: true + cursorShape: Qt.PointingHandCursor + Rectangle { + anchors.fill: parent + radius: Config.radius + color: parent.containsMouse ? Colors.errorContainer : "transparent" + + border.width: Config.border_width + border.color: parent.containsMouse ? Colors.error : textColor + + Text { + id: closeIconText + anchors.centerIn: parent + text: "✕"; // or "✕" + font.family: Config.font + font.pixelSize: Config.screen_height_to_font_small(screen.height) + color: parent.parent.containsMouse ? Colors.error_fg : textColor + } + } + onClicked: { + mouse.accepted=true + root.closeNotification(true) + } + } + Row { id: contentRow anchors.fill: parent anchors.margins: 10 spacing: Config.spacing*4 + width: parent.width // Left side: icon + icon information Rectangle{ @@ -77,7 +113,7 @@ Rectangle { Column { id: iconColumn // height: Math.max(childrenRect.height, contentBodyColumn.height) - width: 1.25*128 + width: 1.25*iconImage.width spacing: Config.spacing Image { @@ -121,6 +157,7 @@ Rectangle { width: childrenRect.width height: childrenRect.height color: "transparent" + Column { id: contentBodyColumn width: root.width - iconColumn.width @@ -306,7 +343,7 @@ Rectangle { from: 1.0 to: 0.0 duration: root.duration - paused: mouseArea.containsMouse + paused: mouseArea.containsMouse || closingMouseArea.containsMouse || inlineReplyButtonMouseArea.containsMouse onFinished: root.closeNotification(false) }