Give glyph notifications with bodies the large icon slot
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
8147489f1d
commit
e96163c075
@@ -53,8 +53,8 @@ function glyphFromHints(hints) {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
function shouldRenderCompactGlyph(glyph, iconSource) {
|
function shouldRenderCompactGlyph(glyph, iconSource, singleLineToast) {
|
||||||
return String(glyph || "").length > 0 && String(iconSource || "").length === 0
|
return String(glyph || "").length > 0 && String(iconSource || "").length === 0 && !!singleLineToast
|
||||||
}
|
}
|
||||||
|
|
||||||
function snapshotOf(notification, timestamp) {
|
function snapshotOf(notification, timestamp) {
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ BorderSurface {
|
|||||||
// The `check` flag avoids Qt's missing-texture placeholder for unknown names.
|
// The `check` flag avoids Qt's missing-texture placeholder for unknown names.
|
||||||
readonly property string smallIconSource: image.length > 0 ? image : iconSource(appIcon)
|
readonly property string smallIconSource: image.length > 0 ? image : iconSource(appIcon)
|
||||||
readonly property bool hasGlyph: glyph.length > 0
|
readonly property bool hasGlyph: glyph.length > 0
|
||||||
readonly property bool compactGlyph: NotificationLogic.shouldRenderCompactGlyph(glyph, smallIconSource)
|
readonly property bool compactGlyph: NotificationLogic.shouldRenderCompactGlyph(glyph, smallIconSource, singleLineToast)
|
||||||
readonly property bool hasSmallIcon: smallIconSource.length > 0
|
readonly property bool hasSmallIcon: smallIconSource.length > 0
|
||||||
readonly property bool summaryStartsWithGlyph: NotificationLogic.summaryStartsWithGlyph(summary)
|
readonly property bool summaryStartsWithGlyph: NotificationLogic.summaryStartsWithGlyph(summary)
|
||||||
readonly property bool singleLineToast: sanitizedBody.length === 0
|
readonly property bool singleLineToast: sanitizedBody.length === 0
|
||||||
@@ -109,7 +109,7 @@ BorderSurface {
|
|||||||
// Hide the slot when the icon failed to resolve (themed-icon name
|
// Hide the slot when the icon failed to resolve (themed-icon name
|
||||||
// not in the user's icon theme) AND we don't have a glyph fallback
|
// not in the user's icon theme) AND we don't have a glyph fallback
|
||||||
// — prevents rendering Qt's pink broken-image placeholder.
|
// — prevents rendering Qt's pink broken-image placeholder.
|
||||||
visible: !root.collapseRedundantIcon && !root.compactGlyph && root.hasSmallIcon && (root.hasGlyph || smallIconImage.status !== Image.Error)
|
visible: !root.collapseRedundantIcon && !root.compactGlyph && (root.hasSmallIcon || root.hasGlyph) && (root.hasGlyph || smallIconImage.status !== Image.Error)
|
||||||
|
|
||||||
Image {
|
Image {
|
||||||
id: smallIconImage
|
id: smallIconImage
|
||||||
@@ -131,7 +131,7 @@ BorderSurface {
|
|||||||
text: root.glyph
|
text: root.glyph
|
||||||
color: Color.notifications.text
|
color: Color.notifications.text
|
||||||
font.family: root.fontFamily
|
font.family: root.fontFamily
|
||||||
font.pixelSize: Style.font.iconLarge
|
font.pixelSize: Style.font.displayLarge
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,8 +38,9 @@ assertEqual(
|
|||||||
|
|
||||||
assert(notifications.summaryStartsWithGlyph(' Silenced'), 'notifications detect glyph-prefixed summaries')
|
assert(notifications.summaryStartsWithGlyph(' Silenced'), 'notifications detect glyph-prefixed summaries')
|
||||||
assert(!notifications.summaryStartsWithGlyph('Normal summary'), 'notifications ignore normal summaries as glyph-prefixed')
|
assert(!notifications.summaryStartsWithGlyph('Normal summary'), 'notifications ignore normal summaries as glyph-prefixed')
|
||||||
assert(notifications.shouldRenderCompactGlyph('K', ''), 'notifications render glyph-only hints compactly')
|
assert(notifications.shouldRenderCompactGlyph('K', '', true), 'notifications render glyph-only single-line toasts compactly')
|
||||||
assert(!notifications.shouldRenderCompactGlyph('K', 'file:///tmp/image.png'), 'notifications keep image-backed glyph hints in the icon slot')
|
assert(!notifications.shouldRenderCompactGlyph('K', '', false), 'notifications give glyph hints with bodies the large icon slot')
|
||||||
|
assert(!notifications.shouldRenderCompactGlyph('K', 'file:///tmp/image.png', true), 'notifications keep image-backed glyph hints in the icon slot')
|
||||||
|
|
||||||
assert(notifications.shouldBypassDnd({ appName: 'omarchy-action', urgency: 1 }, 2), 'omarchy action toasts bypass DND')
|
assert(notifications.shouldBypassDnd({ appName: 'omarchy-action', urgency: 1 }, 2), 'omarchy action toasts bypass DND')
|
||||||
assert(notifications.shouldBypassDnd({ appName: 'notify-send', urgency: 2 }, 2), 'critical notify-send bypasses DND')
|
assert(notifications.shouldBypassDnd({ appName: 'notify-send', urgency: 2 }, 2), 'critical notify-send bypasses DND')
|
||||||
|
|||||||
Reference in New Issue
Block a user