Warning, /frameworks/qqc2-desktop-style/org.kde.desktop/ToolButton.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2017 Marco Martin <mart@kde.org> 0003 SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 0004 SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk> 0005 0006 SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 0007 */ 0008 0009 0010 import QtQuick 0011 import QtQuick.Templates as T 0012 import org.kde.kirigami as Kirigami 0013 import org.kde.qqc2desktopstyle.private as StylePrivate 0014 0015 T.ToolButton { 0016 id: controlRoot 0017 0018 Kirigami.Theme.colorSet: flat ? Kirigami.Theme.Window : Kirigami.Theme.Button 0019 Kirigami.Theme.inherit: flat 0020 0021 implicitWidth: Math.max((text && display !== T.AbstractButton.IconOnly ? 0022 implicitBackgroundWidth : implicitHeight) + leftInset + rightInset, 0023 implicitContentWidth + leftPadding + rightPadding) 0024 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 0025 implicitContentHeight + topPadding + bottomPadding) 0026 0027 hoverEnabled: Qt.styleHints.useHoverEffects 0028 0029 flat: true 0030 Kirigami.MnemonicData.enabled: enabled && visible 0031 Kirigami.MnemonicData.controlType: Kirigami.MnemonicData.SecondaryControl 0032 Kirigami.MnemonicData.label: text 0033 0034 // KF6 TODO: investigate setting this by default 0035 // focusPolicy: Qt.TabFocus 0036 0037 Shortcut { 0038 //in case of explicit & the button manages it by itself 0039 enabled: !(RegExp(/\&[^\&]/).test(controlRoot.text)) 0040 sequence: controlRoot.Kirigami.MnemonicData.sequence 0041 onActivated: controlRoot.clicked() 0042 } 0043 background: StylePrivate.StyleItem { 0044 id: styleitem 0045 control: controlRoot 0046 elementType: "toolbutton" 0047 sunken: controlRoot.down 0048 on: controlRoot.checkable && controlRoot.checked 0049 hover: controlRoot.hovered 0050 text: controlRoot.Kirigami.MnemonicData.mnemonicLabel 0051 hasFocus: controlRoot.visualFocus || (!controlRoot.flat && controlRoot.pressed) || controlRoot.highlighted 0052 flat: controlRoot.flat 0053 0054 // note: keep in sync with DelayButton 0055 readonly property int toolButtonStyle: { 0056 switch (controlRoot.display) { 0057 case T.AbstractButton.IconOnly: return Qt.ToolButtonIconOnly; 0058 case T.AbstractButton.TextOnly: return Qt.ToolButtonTextOnly; 0059 case T.AbstractButton.TextBesideIcon: 0060 case T.AbstractButton.TextUnderIcon: 0061 // TODO KF6: check if this condition is still needed 0062 if (controlRoot.icon.name !== "" || controlRoot.icon.source.toString() !== "") { 0063 // has icon 0064 switch (controlRoot.display) { 0065 case T.AbstractButton.TextBesideIcon: return Qt.ToolButtonTextBesideIcon; 0066 case T.AbstractButton.TextUnderIcon: return Qt.ToolButtonTextUnderIcon; 0067 } 0068 } else { 0069 return Qt.ToolButtonTextOnly; 0070 } 0071 default: return Qt.ToolButtonFollowStyle; 0072 } 0073 } 0074 0075 properties: { 0076 "icon": controlRoot.icon.name !== "" ? controlRoot.icon.name : controlRoot.icon.source, 0077 "iconColor": Qt.colorEqual(controlRoot.icon.color, "transparent") ? Kirigami.Theme.textColor : controlRoot.icon.color, 0078 "iconWidth": controlRoot.icon.width, 0079 "iconHeight": controlRoot.icon.height, 0080 0081 "menu": controlRoot.Accessible.role === Accessible.ButtonMenu, 0082 "toolButtonStyle": toolButtonStyle, 0083 } 0084 } 0085 }