Files
illogical-impulse/.config/quickshell/modules/common/widgets/StyledToolTip.qml
T
2025-05-03 18:12:06 +02:00

59 lines
1.7 KiB
QML

import "root:/modules/common"
import "root:/modules/common/widgets"
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
ToolTip {
property string content
property bool extraVisibleCondition: true
property bool alternativeVisibleCondition: false
property bool internalVisibleCondition: false
padding: 5
visible: ((extraVisibleCondition && (parent.hovered === undefined || parent?.hovered) && internalVisibleCondition)) || alternativeVisibleCondition
Connections {
target: parent
function onHoveredChanged() {
if (parent.hovered) {
tooltipShowDelay.restart()
} else {
internalVisibleCondition = false
}
}
}
Timer {
id: tooltipShowDelay
interval: 200
repeat: false
running: false
onTriggered: {
internalVisibleCondition = true
}
}
background: Rectangle {
color: Appearance.colors.colTooltip
radius: Appearance.rounding.small
implicitWidth: tooltipTextObject.width + 2 * padding
implicitHeight: tooltipTextObject.height + 2 * padding
Behavior on opacity {
NumberAnimation {
target: opacity
duration: Appearance.animation.elementMoveFast.duration
easing.type: Appearance.animation.elementMoveFast.type
easing.bezierCurve: Appearance.animation.elementMoveFast.bezierCurve
}
}
opacity: visible ? 1 : 0
}
StyledText {
id: tooltipTextObject
text: content
font.pixelSize: Appearance.font.pixelSize.small
color: Appearance.colors.colOnTooltip
wrapMode: Text.Wrap
}
}