forked from Shinonome/dots-hyprland
48 lines
1.6 KiB
QML
48 lines
1.6 KiB
QML
import "root:/modules/common"
|
|
import "root:/modules/common/widgets"
|
|
import "root:/modules/common/functions/color_utils.js" as ColorUtils
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
|
|
/**
|
|
* A container that supports GroupButton children for bounciness.
|
|
* See https://m3.material.io/components/button-groups/overview
|
|
*/
|
|
Rectangle {
|
|
id: root
|
|
default property alias content: rowLayout.data
|
|
property real spacing: 5
|
|
property real padding: 0
|
|
property int clickIndex: rowLayout.clickIndex
|
|
|
|
property real contentWidth: {
|
|
let total = 0;
|
|
for (let i = 0; i < rowLayout.children.length; ++i) {
|
|
const child = rowLayout.children[i];
|
|
total += child.baseWidth ?? child.implicitWidth ?? child.width;
|
|
}
|
|
return total + rowLayout.spacing * (rowLayout.children.length - 1);
|
|
}
|
|
|
|
topLeftRadius: rowLayout.children.length > 0 ? (rowLayout.children[0].radius + padding) :
|
|
Appearance?.rounding?.small
|
|
bottomLeftRadius: topLeftRadius
|
|
topRightRadius: rowLayout.children.length > 0 ? (rowLayout.children[rowLayout.children.length - 1].radius + padding) :
|
|
Appearance?.rounding?.small
|
|
bottomRightRadius: topRightRadius
|
|
|
|
color: "transparent"
|
|
width: root.contentWidth + padding * 2
|
|
implicitHeight: rowLayout.implicitHeight + padding * 2
|
|
implicitWidth: root.contentWidth + padding * 2
|
|
|
|
children: [RowLayout {
|
|
id: rowLayout
|
|
anchors.fill: parent
|
|
anchors.margins: root.padding
|
|
spacing: root.spacing
|
|
property int clickIndex: -1
|
|
}]
|
|
}
|