ported some quickshell stuff from rivendell-hyprdots

This commit is contained in:
Tomas Rivera
2026-03-10 16:22:35 +01:00
parent 4b442dd121
commit b9e3f35abe
80 changed files with 4462 additions and 9 deletions
@@ -0,0 +1,92 @@
import QtQuick
import Quickshell
Item {
id: root
required property var tooltip
required property Item owner
property bool isMenu: false
property list<QtObject> grabWindows
property bool hoverable: isMenu
property bool animateSize: true
property bool show: false
property bool preloadBackground: root.visible
property real targetRelativeY: owner.height / 2
property real hangTime: isMenu ? 0 : 200
signal close
readonly property alias contentItem: contentItem
default property alias data: contentItem.data
property Component backgroundComponent: null
onShowChanged: {
console.log(this);
if (show)
tooltip.setItem(this);
else
tooltip.removeItem(this);
}
property bool targetVisible: false
property real targetOpacity: 0
opacity: root.targetOpacity * (tooltip.scaleMul == 0 ? 0 : (1.0 / tooltip.scaleMul))
Behavior on targetOpacity {
id: opacityAnimation
SmoothedAnimation {
velocity: 5
}
}
function snapOpacity(opacity: real) {
opacityAnimation.enabled = false;
targetOpacity = opacity;
opacityAnimation.enabled = true;
}
onTargetVisibleChanged: {
if (targetVisible) {
visible = true;
targetOpacity = 1;
} else {
close();
targetOpacity = 0;
}
}
onTargetOpacityChanged: {
if (!targetVisible && targetOpacity == 0) {
visible = false;
this.parent = null;
if (tooltip)
tooltip.onHidden(this);
}
}
anchors.fill: parent
visible: false
//clip: true
implicitHeight: contentItem.implicitHeight + contentItem.anchors.leftMargin + contentItem.anchors.rightMargin
implicitWidth: contentItem.implicitWidth + contentItem.anchors.leftMargin + contentItem.anchors.rightMargin
readonly property Item item: contentItem
Loader {
anchors.fill: parent
active: root.backgroundComponent && (root.visible || root.preloadBackground)
asynchronous: !root.visible && root.preloadBackground
sourceComponent: root.backgroundComponent
}
Item {
id: contentItem
anchors.fill: parent
anchors.margins: 5
implicitHeight: children[0].implicitHeight
implicitWidth: children[0].implicitWidth
}
}