From 12bc7ea50cac018d06ae1144b155304f386e3207 Mon Sep 17 00:00:00 2001 From: Wu Wayne Date: Wed, 9 Nov 2022 11:22:22 +0800 Subject: [PATCH] On macOS, remove `doCommandBySelector` in view --- .changes/responder.md | 6 +++++ src/platform_impl/macos/view.rs | 44 --------------------------------- 2 files changed, 6 insertions(+), 44 deletions(-) create mode 100644 .changes/responder.md diff --git a/.changes/responder.md b/.changes/responder.md new file mode 100644 index 000000000..8f9314adb --- /dev/null +++ b/.changes/responder.md @@ -0,0 +1,6 @@ +--- +"tao": patch +--- + +On macOS, remove `doCommandBySelector` in view since this will block the key event to responder chain. + diff --git a/src/platform_impl/macos/view.rs b/src/platform_impl/macos/view.rs index e821cebca..7727c415f 100644 --- a/src/platform_impl/macos/view.rs +++ b/src/platform_impl/macos/view.rs @@ -205,10 +205,6 @@ lazy_static! { sel!(firstRectForCharacterRange:actualRange:), first_rect_for_character_range as extern "C" fn(&Object, Sel, NSRange, *mut c_void) -> NSRect, ); - decl.add_method( - sel!(doCommandBySelector:), - do_command_by_selector as extern "C" fn(&Object, Sel, Sel), - ); decl.add_method( sel!(keyDown:), key_down as extern "C" fn(&mut Object, Sel, id), @@ -573,46 +569,6 @@ extern "C" fn insert_text(this: &Object, _sel: Sel, string: id, _replacement_ran trace!("Completed `insertText`"); } -extern "C" fn do_command_by_selector(_this: &Object, _sel: Sel, _command: Sel) { - trace!("Triggered `doCommandBySelector`"); - // TODO: (Artur) all these inputs seem to trigger a key event with the correct text - // content so this is not needed anymore, it seems. - - // Basically, we're sent this message whenever a keyboard event that doesn't generate a "human readable" character - // happens, i.e. newlines, tabs, and Ctrl+C. - - // unsafe { - // let state_ptr: *mut c_void = *this.get_ivar("taoState"); - // let state = &mut *(state_ptr as *mut ViewState); - - // let mut events = VecDeque::with_capacity(1); - // if command == sel!(insertNewline:) { - // // The `else` condition would emit the same character, but I'm keeping this here both... - // // 1) as a reminder for how `doCommandBySelector` works - // // 2) to make our use of carriage return explicit - // events.push_back(EventWrapper::StaticEvent(Event::WindowEvent { - // window_id: WindowId(get_window_id(state.ns_window)), - // event: WindowEvent::ReceivedCharacter('\r'), - // })); - // } else { - // let raw_characters = state.raw_characters.take(); - // if let Some(raw_characters) = raw_characters { - // for character in raw_characters - // .chars() - // .filter(|c| !is_corporate_character(*c)) - // { - // events.push_back(EventWrapper::StaticEvent(Event::WindowEvent { - // window_id: WindowId(get_window_id(state.ns_window)), - // event: WindowEvent::ReceivedCharacter(character), - // })); - // } - // } - // }; - // AppState::queue_events(events); - // } - trace!("Completed `doCommandBySelector`"); -} - // Get characters // fn get_characters(event: id, ignore_modifiers: bool) -> String { // unsafe {