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 }