Re: NSFontPanel for a modal window
Re: NSFontPanel for a modal window
- Subject: Re: NSFontPanel for a modal window
- From: Kurt Sutter <email@hidden>
- Date: Mon, 15 Jun 2015 08:44:50 +0200
Yes, you are right. The actual showing of the font panel occurs by calling
NSFontManager* shrdFontMgr = [NSFontManager sharedFontManager];
[shrdFontMgr orderFrontFontPanel:textView];
This shows the font panel, but does not make it active. When I click into a new font of that font panel the changeFont: message of my text view is not called.
However, if I subsequently call
NSFontPanel* fontPanel = [NSFontPanel sharedFontPanel];
[fontPanel makeKeyWindow];
The font panel becomes key window, and clicking a new font then invokes the changeFont: message.
As to Jack Brindle’s comment (thanks for that):
> As the docs say for runModalForWindow: the app is only getting events for that window. Everything see is ignored. Presumably this is the heart of the problem, although I wonder how the font window is being displayed if it cannot get events itself, assuming it is actually running inside your app.
>
> Take a look at the runModalSession: type of handling modal windows. This allows other things to happen while your modal window is up. This might be what you need to get the fontWindow to respond properly. I know we do something similar for modal windows, but don’t remember just what that is at present. I’ll try to remember to look tomorrow, but I hope you have the solution before then.
>
I have also tried runModalSesssion before, but just using a runModalSesssion loop instead of a call to runModalForWindow: does not change anything, the issue remains, and I have not found any way to make the font panel more responsive in that loop.
I am getting the impression that NSFontPanel has some basic issues when being run with a modal window.
Best
Kurt
> On 14 Jun 2015, at 23:52, Graham Cox <email@hidden> wrote:
>
>
>> On 14 Jun 2015, at 2:30 pm, Kurt Sutter <email@hidden> wrote:
>>
>> It does not help — the panel i actually already in front when it appears, and calling -orderFront: does not help. It only works when it is the key window.
>
>
> OK, it’s time to show your code.
>
> What’s odd is that you say your font panel is visible (or becomes visible) when you invoke [NSFontPanel sharedFontPanel]. If that’s what you’re saying, then it’s incorrect - just obtaining the shared font panel doesn’t normally make it visible or frontmost. So something else is going on.
>
> —Graham
>
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden