Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can not Display Input Method Editor in Window #8

Closed
zhouyangtingwen opened this issue Jun 10, 2023 · 17 comments
Closed

Can not Display Input Method Editor in Window #8

zhouyangtingwen opened this issue Jun 10, 2023 · 17 comments
Labels

Comments

@zhouyangtingwen
Copy link

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.

@zhouyangtingwen
Copy link
Author

11361686389133_ pic
Just like Raycast.

@zhouyangtingwen
Copy link
Author

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

@zhouyangtingwen
Copy link
Author

Looking forward to hearing from you, Many thanks🙏.

@ahkohd
Copy link
Owner

ahkohd commented Jun 10, 2023

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

@zhouyangtingwen
Copy link
Author

Excuse me, can this problem be solved?

@ahkohd
Copy link
Owner

ahkohd commented Jun 22, 2023

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.

@zhouyangtingwen
Copy link
Author

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
Copy link
Owner

ahkohd commented Jul 1, 2023

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
Copy link
Owner

ahkohd commented Jul 1, 2023

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

@zhouyangtingwen
Copy link
Author

@ahkohd Thank you very much🙏🙏. I will.👌

@zhouyangtingwen
Copy link
Author

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

@trymbill
Copy link

trymbill commented Aug 4, 2023

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
Copy link
Owner

ahkohd commented Aug 10, 2023

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
Copy link
Owner

ahkohd commented Aug 10, 2023

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
Copy link
Owner

ahkohd commented Aug 13, 2023

@zhouyangtingwen can we close this issue?

@zhouyangtingwen
Copy link
Author

@zhouyangtingwen can we close this issue?

Sure

@wangqiaobook
Copy link

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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants