Re: Cocoa window messages in app being ported from Carbon
Re: Cocoa window messages in app being ported from Carbon
- Subject: Re: Cocoa window messages in app being ported from Carbon
- From: Uli Kusterer via Cocoa-dev <email@hidden>
- Date: Sat, 10 Aug 2019 11:16:41 +0200
> On 10. Aug 2019, at 08:24, Kurt Bigler via Cocoa-dev
> <email@hidden> wrote:
> As part of a process of porting an app from Carbon to Cocoa I'm needing to
> have Carbon and Cocoa windows present at the same time. The Carbon event
> loop is therefore still in place.
The Cocoa event handling code uses CarbonEvents under the hood. AFAIR, you can
switch to the Cocoa event loop right away, and Carbon windows will just keep
working.
> I've just started implementing the Cocoa windows. The NSView subclasses
> involved are receiving drawRect: messages but are not receiving mouseDown:.
>
> Incidentally Cocoa menus and modal dialogs are already working, so that is a
> sign that Cocoa events are to some degree alive and well.
Modal Cocoa dialogs run their own Cocoa event loop, that's why they work 🙂
It's also the most tested part of Carbon/Cocoa mixing, as that's what Apple
used for NSOpenPanel & Co. Cocoa menus are Carbon menus under the hood as well,
NeXT had no Mac-style menu bar (they had windows containing the deprecated
NSMenuView), so that was based on the Carbon code from the start. There's even
a private _NSGetCarbonMenu() call that Apple uses internally to get at the
MenuRef backing an NSMenu.
Just be aware that there are various small bugs and issues that make it
impractical to ship an application that mixes modeless Carbon and Cocoa
windows, mainly to do with window activation/ordering and application
activation/ordering. What works (since that is what AppKit used itself) is
modal Cocoa windows in an otherwise Carbon app. HICocoaView worked for some
views, but not for all of them. Modeless windows will randomly re-order,
sometimes causing the current modal window to end up behind another window and
blocking the user from interacting with it.
So this mixing is an ideal approach for slowly porting, but will not get you
anything shippable until your UI is fully Carbon.
Cheers,
-- Uli Kusterer
_______________________________________________
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