@@ -56,7 +56,7 @@ impl ObjectImpl for TapHoldInner {
56
56
fn signals ( ) -> & ' static [ Signal ] {
57
57
static SIGNALS : Lazy < Vec < Signal > > = Lazy :: new ( || {
58
58
vec ! [ Signal :: builder(
59
- "selected " ,
59
+ "select " ,
60
60
& [ Keycode :: static_type( ) . into( ) ] ,
61
61
glib:: Type :: UNIT . into( ) ,
62
62
)
@@ -177,18 +177,17 @@ impl TapHold {
177
177
match self . inner ( ) . hold . get ( ) {
178
178
Hold :: Mods ( mods) => {
179
179
if !mods. is_empty ( ) {
180
- self . emit_by_name :: < ( ) > ( "selected " , & [ & Keycode :: MT ( mods, keycode. to_string ( ) ) ] ) ;
180
+ self . emit_by_name :: < ( ) > ( "select " , & [ & Keycode :: MT ( mods, keycode. to_string ( ) ) ] ) ;
181
181
}
182
182
}
183
183
Hold :: Layer ( layer) => {
184
- self . emit_by_name :: < ( ) > ( "selected " , & [ & Keycode :: LT ( layer, keycode. to_string ( ) ) ] ) ;
184
+ self . emit_by_name :: < ( ) > ( "select " , & [ & Keycode :: LT ( layer, keycode. to_string ( ) ) ] ) ;
185
185
}
186
186
}
187
187
}
188
188
189
- // XXX naming vs set_selected
190
- pub fn connect_selected < F : Fn ( Keycode ) + ' static > ( & self , cb : F ) -> glib:: SignalHandlerId {
191
- self . connect_local ( "selected" , false , move |values| {
189
+ pub fn connect_select < F : Fn ( Keycode ) + ' static > ( & self , cb : F ) -> glib:: SignalHandlerId {
190
+ self . connect_local ( "select" , false , move |values| {
192
191
cb ( values[ 1 ] . get :: < Keycode > ( ) . unwrap ( ) ) ;
193
192
None
194
193
} )
@@ -206,10 +205,7 @@ impl TapHold {
206
205
Default :: default ( )
207
206
} ;
208
207
209
- // TODO how to deal with internal state?
210
-
211
208
for i in self . inner ( ) . mod_buttons . iter ( ) {
212
- // XXX left vs right
213
209
let mod_ = Mods :: from_mod_str ( i. name ( ) ) . unwrap ( ) ;
214
210
i. set_selected (
215
211
mods. contains ( mod_) && ( mods. contains ( Mods :: RIGHT ) == mod_. contains ( Mods :: RIGHT ) ) ,
@@ -220,14 +216,21 @@ impl TapHold {
220
216
i. set_selected ( Some ( n as u8 ) == layer) ;
221
217
}
222
218
223
- if let Some ( keycode) = keycode {
219
+ if let Some ( keycode) = keycode. clone ( ) {
224
220
self . inner ( )
225
221
. picker_group_box
226
222
. set_selected ( vec ! [ Keycode :: Basic ( Mods :: empty( ) , keycode) ] ) ;
227
223
} else {
228
224
self . inner ( ) . picker_group_box . set_selected ( Vec :: new ( ) ) ;
229
225
}
230
226
227
+ self . inner ( ) . hold . set ( if let Some ( layer) = layer {
228
+ Hold :: Layer ( layer)
229
+ } else {
230
+ Hold :: Mods ( mods)
231
+ } ) ;
232
+ * self . inner ( ) . keycode . borrow_mut ( ) = keycode;
233
+
231
234
self . invalidate_sensitivity ( ) ;
232
235
}
233
236
0 commit comments