ahkohd/tauri-macos-spotlight-example

Can not Display Input Method Editor in Window

zhouyangtingwen opened this issue ยท 17 comments

Hello, thank you very much for your project, which has helped me a lot, but I have a question to ask you.
When I try to type in < INPUT >, my input method editor cannot be displayed on the window.

11361686389133_ pic
Just like Raycast.

image
Input Method Editor works well on your window, but it cannot be displayed

Looking forward to hearing from you, Many thanks๐Ÿ™.

I'm afraid I don't understand you. Can you provide a screen recording and elaborate more on the problem?

Excuse me, can this problem be solved?

ahkohd commented

Apologies for my delayed response. I wasn't aware of this macOS feature. Could you kindly guide me on how to set it up? I'm eager to troubleshoot the issue. My hunch is that the Panel window level may be higher than that of the Input Method Editor.

Thank you very much. I solved the problem of input method.
But now there is another question: Does the window support corner radius?
Look forward to your reply. Thank you very much.
@ahkohd

ahkohd commented

You can add the implementation below here:

fn set_collection_behaviour(&self, behaviour: NSWindowCollectionBehavior) {

The implementation should roughly look like this:

  fn set_corner_radius(&self, radius: f64) {
        let content_view: id = unsafe { msg_send![self, contentView] };
        let _: () = unsafe  { msg_send![content_view, wantsLayer] };
        let layer: id = unsafe { msg_send![content_view, layer] };
        let _: () = unsafe { msg_send![layer, setCornerRadius: radius] };
    }

the usage:

panel.set_corner_radius(12.0);
ahkohd commented

@zhouyangtingwen Will you close this issue? Please explain how to fix this issue so others can learn.

@ahkohd Thank you very much๐Ÿ™๐Ÿ™. I will.๐Ÿ‘Œ

Before I finish this question, may I ask you one last question?
Now, when the focus leaves the NSPanel window, the NSPanel window will be hidden.
How to prevent the NSPanel from being hidden when the focus leaves the NSPanel window? @ahkohd

How to prevent the NSPanel from being hidden when the focus leaves the NSPanel window?

Did you ever figure out how to accomplish that? I'm wondering how to listen for windowWillClose or something similar, in order to update a different part of an app when the user clicks outside of the NSPanel window. Do you know of a good way to accomplish that @ahkohd ?

ahkohd commented

Before I finish this question, may I ask you one last question? Now, when the focus leaves the NSPanel window, the NSPanel window will be hidden. How to prevent the NSPanel from being hidden when the focus leaves the NSPanel window? @ahkohd

#9 (comment)

ahkohd commented

How to prevent the NSPanel from being hidden when the focus leaves the NSPanel window?

Did you ever figure out how to accomplish that? I'm wondering how to listen for windowWillClose or something similar, in order to update a different part of an app when the user clicks outside of the NSPanel window. Do you know of a good way to accomplish that @ahkohd ?

You should probably use the Tauri plugin I created., use it to listen to the window_did_resign event, which fires when the window resigns.

let app_handle: tauri::AppHandle = ....

let delegate = panel_delegate!(MyPanelDelegate {
  window_did_become_key,
  window_did_resign_key
});

// Listen to when a delegate is called
delegate.set_listener(Box::new(move |delegate_name: String| {
    println!("{} was called!", delegate_name);
   // See, https://developer.apple.com/documentation/appkit/nswindowdelegate?language=objc
   // for an exhaustive list of delegate events. 
   // emit an event to your window
   if delegate_name == "window_did_resign" {
      app_handle.get_window("some_window").emit("event_name", ());
   }
}));
ahkohd commented

@zhouyangtingwen can we close this issue?

@zhouyangtingwen can we close this issue?

Sure

image Input Method Editor works well on your window, but it cannot be displayed

Hello, have you solved this problem? How did you solve it?