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 }