// Copyright Mirage authors & contributors // SPDX-License-Identifier: LGPL-3.0-or-later import QtQuick 2.12 import QtQuick.Controls 2.12 import QtQuick.Layouts 1.12 ToolTip { id: toolTip property bool instant: false property alias label: label property alias backgroundColor: background.color function instantShow(timeout=-1) { if (visible) return instant = true timeout === -1 ? open() : show(text, timeout) instant = false } delay: instant ? 0 : theme.controls.toolTip.delay padding: background.border.width background: Rectangle { id: background color: theme.controls.toolTip.background border.color: theme.controls.toolTip.border border.width: theme.controls.toolTip.borderWidth } contentItem: HRowLayout { HLabel { id: label color: theme.controls.toolTip.text text: toolTip.text wrapMode: HLabel.Wrap leftPadding: theme.spacing / 1.5 rightPadding: leftPadding topPadding: theme.spacing / 2 bottomPadding: topPadding Layout.maximumWidth: Math.min( window.width / 1.25, theme.fontSize.normal * 0.5 * 75, ) } } enter: Transition { HNumberAnimation { property: "opacity"; from: 0.0; to: 1.0 } } exit: Transition { HNumberAnimation { property: "opacity"; to: 0.0 } } TapHandler { onTapped: toolTip.hide() } HoverHandler { onHoveredChanged: if (! hovered) toolTip.hide() } HoverHandler { target: mainUI enabled: toolTip.visible onHoveredChanged: if (toolTip.visible && ! hovered) toolTip.hide() } }