forked from Shinonome/dots-hyprland
hefty: bar: refactor content hover effect
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
import qs.modules.common as C
|
||||
import qs.modules.common.functions as F
|
||||
import qs.modules.common.widgets as W
|
||||
import ".."
|
||||
|
||||
W.ButtonMouseArea {
|
||||
id: root
|
||||
|
||||
required property bool vertical
|
||||
required property bool atBottom
|
||||
required property bool showPopup
|
||||
|
||||
property var layoutParent: F.ObjectUtils.findParentWithProperty(root, "startSide")
|
||||
property real layoutParentTopLeftRadius: layoutParent.topLeftRadius
|
||||
property real layoutParentTopRightRadius: layoutParent.topRightRadius
|
||||
property real layoutParentBottomLeftRadius: layoutParent.bottomLeftRadius
|
||||
property real layoutParentBottomRightRadius: layoutParent.bottomRightRadius
|
||||
|
||||
readonly property real barThickness: vertical ? C.Appearance.sizes.verticalBarWidth : C.Appearance.sizes.barHeight
|
||||
required property real contentImplicitWidth
|
||||
required property real contentImplicitHeight
|
||||
property real parentRadiusToPaddingRatio: 0.3
|
||||
implicitWidth: vertical ? barThickness : (contentImplicitWidth + (layoutParentTopLeftRadius + layoutParentBottomRightRadius) * parentRadiusToPaddingRatio)
|
||||
implicitHeight: !vertical ? barThickness : (contentImplicitHeight + (layoutParentTopLeftRadius + layoutParentBottomRightRadius) * parentRadiusToPaddingRatio)
|
||||
Layout.alignment: vertical ? Qt.AlignHCenter : Qt.AlignVCenter
|
||||
Layout.fillWidth: vertical
|
||||
Layout.fillHeight: !vertical
|
||||
|
||||
W.StateOverlay {
|
||||
id: hoverOverlay
|
||||
anchors.fill: parent
|
||||
property real parentMargins: 4
|
||||
property real ownMargins: 2
|
||||
property real edgeMargins: parentMargins + ownMargins
|
||||
property real sideMargins: -2
|
||||
anchors {
|
||||
leftMargin: root.vertical ? edgeMargins : sideMargins
|
||||
rightMargin: root.vertical ? edgeMargins : sideMargins
|
||||
topMargin: root.vertical ? sideMargins : edgeMargins
|
||||
bottomMargin: root.vertical ? sideMargins : edgeMargins
|
||||
}
|
||||
topLeftRadius: root.layoutParentTopLeftRadius - ownMargins
|
||||
topRightRadius: root.layoutParentTopRightRadius - ownMargins
|
||||
bottomLeftRadius: root.layoutParentBottomLeftRadius - ownMargins
|
||||
bottomRightRadius: root.layoutParentBottomRightRadius - ownMargins
|
||||
|
||||
hover: root.containsMouse
|
||||
press: root.containsPress
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user