Warning, /plasma/qqc2-breeze-style/style/qtquickcontrols/Button.qml is written in an unsupported language. File is not indexed.
0001 /* SPDX-FileCopyrightText: 2020 Noah Davis <noahadvs@gmail.com>
0002 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0003 */
0004
0005 import QtQuick
0006 import QtQuick.Templates as T
0007 import org.kde.kirigami as Kirigami
0008
0009 import org.kde.breeze.impl as Impl
0010
0011 T.Button {
0012 id: control
0013
0014 implicitWidth: {
0015 let contentAndPaddingWidth = implicitContentWidth + leftPadding + rightPadding;
0016 const minimumTextButtonWidth = Kirigami.Units.iconSizes.sizeForLabels * 5;
0017
0018 // To match qqc2-desktop-style behavior, we enforce a minimum width for Buttons that have text
0019 if (text !== "") {
0020 contentAndPaddingWidth = Math.max(contentAndPaddingWidth, minimumTextButtonWidth);
0021 }
0022
0023 Math.max(implicitBackgroundWidth + leftInset + rightInset,
0024 contentAndPaddingWidth,
0025 implicitIndicatorWidth + leftPadding + rightPadding)
0026 }
0027 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
0028 implicitContentHeight + topPadding + bottomPadding,
0029 implicitIndicatorHeight + topPadding + bottomPadding)
0030
0031 flat: false
0032
0033 // // palette: Kirigami.Theme.palette
0034
0035 hoverEnabled: Qt.styleHints.useHoverEffects
0036
0037 Kirigami.Theme.colorSet: /*control.highlighted ? Kirigami.Theme.Selection :*/ Kirigami.Theme.Button
0038 Kirigami.Theme.inherit: false//control.flat && !control.down && !control.checked
0039 // Absolutely terrible HACK:
0040 // For some reason, ActionToolBar overrides the colorSet and inherit attached properties
0041 Component.onCompleted: {
0042 Kirigami.Theme.colorSet = Kirigami.Theme.Button/*Qt.binding(() => control.highlighted ? Kirigami.Theme.Selection : Kirigami.Theme.Button)*/
0043 Kirigami.Theme.inherit = false//Qt.binding(() => control.flat && !(control.down || control.checked))
0044 }
0045
0046 padding: Kirigami.Units.largeSpacing
0047 leftPadding: {
0048 if ((!contentItem.hasIcon && contentItem.textBesideIcon) // False if contentItem has been replaced
0049 || display == T.AbstractButton.TextOnly
0050 || display == T.AbstractButton.TextUnderIcon) {
0051 return Impl.Units.largeHorizontalPadding;
0052 }
0053 return control.horizontalPadding;
0054 }
0055 rightPadding: {
0056 if (contentItem.hasLabel && display != T.AbstractButton.IconOnly) { // False if contentItem has been replaced
0057 return Impl.Units.largeHorizontalPadding;
0058 }
0059 return control.horizontalPadding;
0060 }
0061
0062 spacing: Kirigami.Units.mediumSpacing
0063
0064 icon.width: Kirigami.Units.iconSizes.sizeForLabels
0065 icon.height: Kirigami.Units.iconSizes.sizeForLabels
0066
0067 Kirigami.MnemonicData.enabled: control.enabled && control.visible
0068 Kirigami.MnemonicData.controlType: Kirigami.MnemonicData.ActionElement
0069 Kirigami.MnemonicData.label: control.display !== T.Button.IconOnly ? control.text : ""
0070 Shortcut {
0071 //in case of explicit & the button manages it by itself
0072 enabled: !(RegExp(/\&[^\&]/).test(control.text))
0073 sequence: control.Kirigami.MnemonicData.sequence
0074 onActivated: control.clicked()
0075 }
0076
0077 contentItem: Impl.IconLabelContent {
0078 control: control
0079 text: control.Kirigami.MnemonicData.richTextLabel
0080 }
0081
0082 background: Impl.ButtonBackground {
0083 control: control
0084 }
0085 }