summaryrefslogtreecommitdiff
path: root/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Widgets/DankTooltip.qml
diff options
context:
space:
mode:
authornippy <you@example.com>2026-04-18 13:49:56 +0200
committernippy <you@example.com>2026-04-18 13:49:56 +0200
commit5d94c0a7d44a2255b81815a52a7056a94a39842d (patch)
tree759bdea9645c6a62f9e1e4c001f7d81cccd120d2 /raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Widgets/DankTooltip.qml
parente79cdf210b267f21a186255ce1a4d50029439d54 (diff)
downloadRaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.tar.gz
RaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.zip
update Raveos themes
Diffstat (limited to 'raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Widgets/DankTooltip.qml')
-rw-r--r--raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Widgets/DankTooltip.qml92
1 files changed, 92 insertions, 0 deletions
diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Widgets/DankTooltip.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Widgets/DankTooltip.qml
new file mode 100644
index 0000000..0e57de9
--- /dev/null
+++ b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Widgets/DankTooltip.qml
@@ -0,0 +1,92 @@
+import QtQuick
+import Quickshell
+import Quickshell.Wayland
+import qs.Common
+
+PanelWindow {
+ id: root
+
+ WlrLayershell.namespace: "dms:tooltip"
+
+ property string text: ""
+ property real targetX: 0
+ property real targetY: 0
+ property var targetScreen: null
+ property bool alignLeft: false
+ property bool alignRight: false
+
+ function show(text, x, y, screen, leftAlign, rightAlign) {
+ root.text = text;
+ if (screen) {
+ targetScreen = screen;
+ const screenX = screen.x || 0;
+ targetX = x - screenX;
+ } else {
+ targetScreen = null;
+ targetX = x;
+ }
+ targetY = y;
+ alignLeft = leftAlign ?? false;
+ alignRight = rightAlign ?? false;
+ visible = true;
+ }
+
+ function hide() {
+ visible = false;
+ }
+
+ screen: targetScreen
+ implicitWidth: Math.min(300, Math.max(120, textContent.implicitWidth + Theme.spacingM * 2))
+ implicitHeight: textContent.implicitHeight + Theme.spacingS * 2
+ color: "transparent"
+ visible: false
+ WlrLayershell.layer: WlrLayershell.Overlay
+ WlrLayershell.exclusiveZone: -1
+
+ anchors {
+ top: true
+ left: true
+ }
+
+ margins {
+ left: {
+ const screenWidth = targetScreen?.width ?? Screen.width
+ if (alignLeft) {
+ return Math.round(Math.max(Theme.spacingS, Math.min(screenWidth - implicitWidth - Theme.spacingS, targetX)))
+ } else if (alignRight) {
+ return Math.round(Math.max(Theme.spacingS, Math.min(screenWidth - implicitWidth - Theme.spacingS, targetX - implicitWidth)))
+ } else {
+ return Math.round(Math.max(Theme.spacingS, Math.min(screenWidth - implicitWidth - Theme.spacingS, targetX - implicitWidth / 2)))
+ }
+ }
+ top: {
+ const screenHeight = targetScreen?.height ?? Screen.height
+ if (alignLeft || alignRight) {
+ return Math.round(Math.max(Theme.spacingS, Math.min(screenHeight - implicitHeight - Theme.spacingS, targetY - implicitHeight / 2)))
+ } else {
+ return Math.round(Math.max(Theme.spacingS, Math.min(screenHeight - implicitHeight - Theme.spacingS, targetY)))
+ }
+ }
+ }
+
+ Rectangle {
+ anchors.fill: parent
+ color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency)
+ radius: Theme.cornerRadius
+ border.width: 1
+ border.color: Theme.outlineMedium
+
+ Text {
+ id: textContent
+
+ anchors.centerIn: parent
+ text: root.text
+ font.pixelSize: Theme.fontSizeSmall
+ color: Theme.surfaceText
+ wrapMode: Text.NoWrap
+ maximumLineCount: 1
+ elide: Text.ElideRight
+ width: Math.min(implicitWidth, 300 - Theme.spacingM * 2)
+ }
+ }
+}