@@ -11,6 +11,7 @@ use backend::{DaemonBoard, Hs, Mode};
11
11
#[ derive( Default ) ]
12
12
pub struct BacklightInner {
13
13
board : DerefCell < DaemonBoard > ,
14
+ disable_color_button : DerefCell < gtk:: Button > ,
14
15
keyboard_color : DerefCell < KeyboardColor > ,
15
16
color_row : DerefCell < gtk:: ListBoxRow > ,
16
17
brightness_scale : DerefCell < gtk:: Scale > ,
@@ -109,10 +110,22 @@ impl ObjectImpl for BacklightInner {
109
110
}
110
111
}
111
112
113
+ let disable_color_button = cascade ! {
114
+ gtk:: Button :: with_label( "Disable" ) ;
115
+ ..connect_clicked( clone!( @weak obj => move |_| obj. disable_color_clicked( ) ) ) ;
116
+ } ;
117
+
112
118
let mode_row = row ( "Layer Color Pattern:" , & mode_combobox) ;
113
119
let speed_row = row ( "Layer Animation Speed:" , & speed_scale) ;
114
120
let saturation_row = row ( "Layer Saturation:" , & saturation_scale) ;
115
- let color_row = row ( "Layer Color:" , & keyboard_color) ;
121
+ let color_row = row (
122
+ "Layer Color:" ,
123
+ & cascade ! {
124
+ gtk:: Box :: new( gtk:: Orientation :: Horizontal , 8 ) ;
125
+ ..add( & disable_color_button) ;
126
+ ..add( & keyboard_color) ;
127
+ } ,
128
+ ) ;
116
129
117
130
cascade ! {
118
131
obj;
@@ -127,6 +140,7 @@ impl ObjectImpl for BacklightInner {
127
140
} ) ;
128
141
} ;
129
142
143
+ self . disable_color_button . set ( disable_color_button) ;
130
144
self . keyboard_color . set ( keyboard_color) ;
131
145
self . color_row . set ( color_row) ;
132
146
self . brightness_scale . set ( brightness_scale) ;
@@ -279,6 +293,9 @@ impl Backlight {
279
293
. keyboard_color
280
294
. set_index ( KeyboardColorIndex :: Layer ( self . inner ( ) . layer . get ( ) ) ) ;
281
295
}
296
+ self . inner ( )
297
+ . disable_color_button
298
+ . set_visible ( self . mode ( ) . is_per_key ( ) ) ;
282
299
self . invalidate_filter ( ) ;
283
300
284
301
if self . inner ( ) . do_not_set . get ( ) {
@@ -339,6 +356,18 @@ impl Backlight {
339
356
self . inner ( )
340
357
. keyboard_color
341
358
. set_sensitive ( !selected. is_empty ( ) ) ;
359
+ self . inner ( )
360
+ . disable_color_button
361
+ . set_sensitive ( !selected. is_empty ( ) ) ;
362
+ }
363
+
364
+ fn disable_color_clicked ( & self ) {
365
+ let keys = self . board ( ) . keys ( ) ;
366
+ for i in self . inner ( ) . selected . borrow ( ) . iter ( ) {
367
+ if let Err ( err) = keys[ * i] . set_color ( None ) {
368
+ error ! ( "Failed to disable key: {}" , err) ;
369
+ }
370
+ }
342
371
}
343
372
344
373
fn led_save ( & self ) {
0 commit comments