diff --git a/src/input/keyboard/mod.rs b/src/input/keyboard/mod.rs index a3f35cf..5ebeded 100644 --- a/src/input/keyboard/mod.rs +++ b/src/input/keyboard/mod.rs @@ -45,6 +45,8 @@ impl KeyboardHandler for AppData ) { let focus = self.focus_for_surface( surface ).unwrap_or( SurfaceFocus::Main ); + let _ = surface; + eprintln!( "ltk: wl_keyboard.enter focus={:?}", focus ); self.keyboard_focus = focus; self.surface_mut( focus ).request_redraw(); if let Some( ref mut a ) = self.a11y { a.set_window_focus( true ); } @@ -59,6 +61,7 @@ impl KeyboardHandler for AppData _serial: u32, ) { + eprintln!( "ltk: wl_keyboard.leave" ); self.stop_key_repeat(); self.keyboard_focus = SurfaceFocus::Main; if let Some( ref mut a ) = self.a11y { a.set_window_focus( false ); } @@ -73,6 +76,7 @@ impl KeyboardHandler for AppData event: KeyEvent, ) { + eprintln!( "ltk: press_key keysym={:?} focus={:?}", event.keysym, self.keyboard_focus ); let focus = self.keyboard_focus; // Raw observer hook (e.g. forwarding to an embedded WPE view). // Fires before the focus-aware dispatch. diff --git a/src/input/keyboard/text_keys.rs b/src/input/keyboard/text_keys.rs index b7254a2..05cde38 100644 --- a/src/input/keyboard/text_keys.rs +++ b/src/input/keyboard/text_keys.rs @@ -54,6 +54,7 @@ impl AppData self.handle_text_insert( focus, "\n" ); } else { let target = focused.or( self.surface( focus ).hovered_idx ); + let mut handled = false; if let Some( idx ) = target { let msg = find_handlers( &self.surface( focus ).widget_rects, idx ) @@ -61,10 +62,15 @@ impl AppData if let Some( m ) = msg { self.pending_msgs.push( m ); + handled = true; } - } else if let Some( msg ) = self.app.on_key_with_modifiers( event.keysym, self.ctrl_pressed, self.shift_pressed ) + } + if !handled { - self.pending_msgs.push( msg ); + if let Some( msg ) = self.app.on_key_with_modifiers( event.keysym, self.ctrl_pressed, self.shift_pressed ) + { + self.pending_msgs.push( msg ); + } } } }