• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag
 

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSPageLayout obsolete?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSPageLayout obsolete?


  • Subject: Re: NSPageLayout obsolete?
  • From: Quincey Morris <email@hidden>
  • Date: Tue, 19 Aug 2014 01:17:20 -0700

On Aug 19, 2014, at 00:32 , Daryle Walker <email@hidden> wrote:

> I looked for -runPageLayout: in NSApplication.h, and I couldn’t find it. That’s why I thought this action may be obsolete and unsupported.
>
> However…
>
> There are a lot of methods in the HTML docs for NSApplication. I thought the provided -runPageLayout: was a myth, but it’s actually there! I didn’t see it until the fifth re-read. So this base-class version is official. But why didn’t I see it in the header? (And that time I did use Command-F to help.) In the HTML docs, I usually skip over a method’s listed header, since it’s usually obvious. But looking at it this times shows that the method is in a different header! Sure enough, the method is in that header.

The best way to find methods in the Cocoa headers is to use Command-Shift-O. Guessing which header file you want is an exercise in frustration.

> So, to have an app-global Page Setup command:
>
> 1. Either insert an app-global responder, ahead of the application object, to handle the action. I guess the NSDocument system does this.

I don’t think so. TextEdit is a NSDocument-based application, but Page Setup… isn’t enabled unless a document is open. In that case, the document object is in the responder chain, and so handles the menu item, but there’s nothing “app-global” about it.

> 2. Or replace NSApplication with a subclass that implements:
> 2a. -validateUserInterfaceItem:, which must test for the -runPageLayout: action and allow it. (Pass other actions to super.)

I dunno about this. It’s possible that once upon a time Page Setup… was generally enabled by NSApplication (I don’t remember), but the TextEdit case suggests that it isn’t so now. (I also looked at an old app of my open that happens to have Page Setup on the File menu, and it doesn’t get enabled there either.) The fact that NSApplication has the action method doesn’t imply that NSApplication does anything to enable the menu item.

> 3. Note that you cannot use the application delegate to store the method. The hacks used to consider the delegate a responder don’t include that method and/or the application object goes first and locks out the delegate from providing an override.

This sounds wrong. Keep in mind that two conditions must be satisfied for a menu item to be enabled:

a. There must be an object in the responder chain that implements the associated action method.

b. *That object* must return YES from validateUserInterfaceItem.

You can’t implement the validation in one place and have the implementation somewhere else. If you want to avoid subclassing NSApplication, you could implement Page Setup in the app delegate, but you’d have to do both (a) and (b) — even if (a) just invoked the NSApplication implementation.

_______________________________________________

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


  • Follow-Ups:
    • Re: NSPageLayout obsolete?
      • From: Ken Thomases <email@hidden>
References: 
 >NSPageLayout obsolete? (From: Daryle Walker <email@hidden>)
 >Fwd: NSPageLayout obsolete? (From: SevenBits <email@hidden>)
 >Re: NSPageLayout obsolete? (From: Daryle Walker <email@hidden>)
 >Re: NSPageLayout obsolete? (From: Kyle Sluder <email@hidden>)
 >Re: NSPageLayout obsolete? (From: Daryle Walker <email@hidden>)
 >Re: NSPageLayout obsolete? (From: Daryle Walker <email@hidden>)
 >Re: NSPageLayout obsolete? (From: Kyle Sluder <email@hidden>)
 >Re: NSPageLayout obsolete? (From: Daryle Walker <email@hidden>)

  • Prev by Date: Re: NSPageLayout obsolete?
  • Next by Date: Re: How to convert String.Index to UInt?
  • Previous by thread: Re: NSPageLayout obsolete?
  • Next by thread: Re: NSPageLayout obsolete?
  • Index(es):
    • Date
    • Thread