@@ -58,7 +58,8 @@ PanelWindow {
58
58
59
59
component TopButton: WrapperMouseArea {
60
60
id: buttonMouse
61
- property alias image: image .source
61
+ required property string icon
62
+ required property string fallbackText
62
63
property bool red: false
63
64
64
65
hoverEnabled: true
@@ -95,7 +96,20 @@ PanelWindow {
95
96
Behavior on color { ColorAnimation { duration: 100 } }
96
97
Behavior on border .color { ColorAnimation { duration: 100 } }
97
98
98
- IconImage { id: image; implicitSize: 22 }
99
+ IconImage {
100
+ id: image
101
+ source: Quickshell .iconPath (buttonMouse .icon , true )
102
+ implicitSize: 22
103
+ visible: source != " "
104
+ }
105
+
106
+ Text {
107
+ id: fallback
108
+ text: buttonMouse .fallbackText
109
+ color: buttonMouse .red ? " white" : palette .active .buttonText
110
+ }
111
+
112
+ child: image .visible ? image : fallback
99
113
}
100
114
}
101
115
@@ -130,7 +144,8 @@ PanelWindow {
130
144
TopButton {
131
145
id: copyButton
132
146
visible: root .failed
133
- image: Quickshell .iconPath (" edit-copy" )
147
+ icon: " edit-copy"
148
+ fallbackText: " Copy"
134
149
onClicked: {
135
150
Quickshell .clipboardText = root .errorString ;
136
151
copyTooltip .showAction ();
@@ -146,7 +161,8 @@ PanelWindow {
146
161
}
147
162
148
163
TopButton {
149
- image: Quickshell .iconPath (" window-close" )
164
+ icon: " window-close"
165
+ fallbackText: " Close"
150
166
red: true
151
167
onClicked: {
152
168
fadeOutAnim .stop ()
@@ -216,7 +232,8 @@ PanelWindow {
216
232
IconImage {
217
233
Layout .fillHeight : true
218
234
implicitWidth: height
219
- source: Quickshell .iconPath (" edit-copy" )
235
+ source: Quickshell .iconPath (" edit-copy" , true )
236
+ visible: source != " "
220
237
}
221
238
}
222
239
}
0 commit comments