diff --git a/quickshell/Modals/DankLauncherV2/Controller.qml b/quickshell/Modals/DankLauncherV2/Controller.qml index 681b29a0..2242782a 100644 --- a/quickshell/Modals/DankLauncherV2/Controller.qml +++ b/quickshell/Modals/DankLauncherV2/Controller.qml @@ -1721,11 +1721,15 @@ Item { return ""; var idx = text.toLowerCase().indexOf(lowerQuery); if (idx === -1) - return text; + return _escapeRichText(text); var before = text.substring(0, idx); var match = text.substring(idx, idx + queryLen); var after = text.substring(idx + queryLen); - return '' + before + '' + match + '' + after + ''; + return '' + _escapeRichText(before) + '' + _escapeRichText(match) + '' + _escapeRichText(after) + ''; + } + + function _escapeRichText(text) { + return String(text).replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); } function getCurrentSectionViewMode() { diff --git a/quickshell/Modules/Notifications/Center/HistoryNotificationCard.qml b/quickshell/Modules/Notifications/Center/HistoryNotificationCard.qml index 15ee3e76..be55f2e8 100644 --- a/quickshell/Modules/Notifications/Center/HistoryNotificationCard.qml +++ b/quickshell/Modules/Notifications/Center/HistoryNotificationCard.qml @@ -99,8 +99,9 @@ Rectangle { id: contentItem readonly property real expandedTextHeight: descriptionText.contentHeight - readonly property real twoLineHeight: descriptionText.font.pixelSize * 1.2 * 2 - readonly property real extraHeight: (descriptionExpanded && expandedTextHeight > twoLineHeight + 2) ? (expandedTextHeight - twoLineHeight) : 0 + readonly property real collapsedLineCount: compactMode ? 1 : 2 + readonly property real collapsedLineHeight: descriptionText.font.pixelSize * 1.2 * collapsedLineCount + readonly property real extraHeight: (descriptionExpanded && expandedTextHeight > collapsedLineHeight + 2) ? (expandedTextHeight - collapsedLineHeight) : 0 anchors.top: parent.top anchors.left: parent.left @@ -229,7 +230,7 @@ Rectangle { property bool hasMoreText: truncated text: historyItem.htmlBody || historyItem.body || "" - textFormat: Text.RichText + textFormat: Text.StyledText color: Theme.surfaceVariantText font.pixelSize: Theme.fontSizeSmall width: parent.width diff --git a/quickshell/Modules/Notifications/Center/NotificationCard.qml b/quickshell/Modules/Notifications/Center/NotificationCard.qml index a7705ea5..22a3e285 100644 --- a/quickshell/Modules/Notifications/Center/NotificationCard.qml +++ b/quickshell/Modules/Notifications/Center/NotificationCard.qml @@ -395,7 +395,7 @@ Rectangle { property bool hasMoreText: truncated text: fullText - textFormat: Text.RichText + textFormat: Text.StyledText color: Theme.surfaceVariantText font.pixelSize: Theme.fontSizeSmall width: parent.width @@ -561,9 +561,9 @@ Rectangle { height: { if (!messageExpanded) return expandedBaseHeight; - const twoLineHeight = bodyText.font.pixelSize * 1.2 * 2; - if (bodyText.implicitHeight > twoLineHeight + 2) - return expandedBaseHeight + bodyText.implicitHeight - twoLineHeight; + const collapsedBodyHeight = bodyText.collapsedLineHeight; + if (bodyText.implicitHeight > collapsedBodyHeight + 2) + return expandedBaseHeight + bodyText.implicitHeight - collapsedBodyHeight; return expandedBaseHeight; } radius: Theme.cornerRadius @@ -703,15 +703,17 @@ Rectangle { StyledText { id: bodyText + readonly property real collapsedLineCount: compactMode ? 1 : 2 + readonly property real collapsedLineHeight: font.pixelSize * 1.2 * collapsedLineCount property bool hasMoreText: truncated text: modelData?.htmlBody || "" - textFormat: Text.RichText + textFormat: Text.StyledText color: Theme.surfaceVariantText font.pixelSize: Theme.fontSizeSmall width: parent.width elide: messageExpanded ? Text.ElideNone : Text.ElideRight - maximumLineCount: messageExpanded ? -1 : 2 + maximumLineCount: messageExpanded ? -1 : collapsedLineCount wrapMode: Text.WrapAtWordBoundaryOrAnywhere visible: text.length > 0 linkColor: Theme.primary diff --git a/quickshell/Modules/Notifications/Center/NotificationCenterPopout.qml b/quickshell/Modules/Notifications/Center/NotificationCenterPopout.qml index 9c1c7672..012a1e1f 100644 --- a/quickshell/Modules/Notifications/Center/NotificationCenterPopout.qml +++ b/quickshell/Modules/Notifications/Center/NotificationCenterPopout.qml @@ -50,7 +50,7 @@ DankPopout { } } - popupWidth: 400 + popupWidth: 400 + Theme.spacingL popupHeight: stablePopupHeight positioning: "" suspendShadowWhileResizing: false diff --git a/quickshell/Modules/Notifications/Popup/NotificationPopup.qml b/quickshell/Modules/Notifications/Popup/NotificationPopup.qml index e3d0d484..43d24f9b 100644 --- a/quickshell/Modules/Notifications/Popup/NotificationPopup.qml +++ b/quickshell/Modules/Notifications/Popup/NotificationPopup.qml @@ -755,7 +755,7 @@ PanelWindow { visible: false width: Math.max(0, backgroundContainer.width - Theme.spacingL - (Theme.spacingL + Theme.notificationHoverRevealMargin) - popupIconSize - Theme.spacingM) text: notificationData ? (notificationData.htmlBody || "") : "" - textFormat: Text.RichText + textFormat: Text.StyledText font.pixelSize: Theme.fontSizeSmall elide: Text.ElideNone horizontalAlignment: Text.AlignLeft @@ -913,7 +913,7 @@ PanelWindow { property bool hasMoreText: truncated text: notificationData ? (notificationData.htmlBody || "") : "" - textFormat: Text.RichText + textFormat: Text.StyledText color: Theme.surfaceVariantText font.pixelSize: Theme.fontSizeSmall width: parent.width