• 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: Interesting NSPathControl Behavior
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Interesting NSPathControl Behavior


  • Subject: Re: Interesting NSPathControl Behavior
  • From: Corbin Dunn <email@hidden>
  • Date: Fri, 02 May 2008 11:40:15 -0700


On May 1, 2008, at 6:47 PM, Mike Rossetti wrote:
So I've discovered an interesting behavior in NSPathControl and am wondering if it warrants a Radar.

I'm building up my own presentation of the file path to be shown in the NSPathControl. Specifically, if the file for which the path is being presented is in some standard location then I'm abbreviating the path. As a simple example, if the file is in ~/Documents/ FIle.txt then instead of:

	Users > User A > Documents > File.txt

I will show:

	Documents > File.txt

The approach I'm taking is to pass a payload (an NSArray) to my customization of NSPathControl's setObjectValue. In setObjectValue I compose a string ("/Documents/File.txt") that I pass on to [super setObjectValue:], which sets up the NSPathComponentCells just fine. Then I iterate over the pathComponentCells calling each one's setURL. (And in this example that would be 'file://localhost/Users/ User A/Documents/' for the first cell, and 'file://localhost/Users/ User A/Documents/File.txt' for the second cell.)

Doing this in a forward direction gives the following cell URLs:

	0. file://localhost/Users/User A/Documents/File.txt
	1. NSPathCell://localhost/Documents/File.txt

Say what?

Interestingly, if I do this in a reverse direction I get the _proper_ cell URLs:

	0. file://localhost/Users/User A/Documents/
	1. file://localhost/Users/User A/Documents/File.txt

If this is a bug, I'll be happy to write up a small test app to present the problem.

This isn't a bug. If you pass a given string to NSPathCell, it doesn't know if it is a file path. Since it doesn't know it is a file path, it assumes the string represents some arbitrary non-file:// path, and creates the URL with:


result = [[[NSURL alloc] initWithScheme:[self className] host:@"localhost" path:[[self stringValue] stringByExpandingTildeInPath]] autorelease];

This lets it avoid finding icons for things which aren't really paths (even if they "look" like paths).

When filling up each of the pathcomponent cells, it passes along the same scheme, host, etc to it:

NSURL *itemUrl = [[NSURL alloc] initWithScheme:[url scheme] host:(host ? host : @"") path:path];

It is possible that there is an error in there, but I didn't see any when I was looking at the code.

Long story short: use setURL:, or manually manage the path component cells after calling super setObjectValue:

corbin

_______________________________________________

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


References: 
 >Interesting NSPathControl Behavior (From: Mike Rossetti <email@hidden>)

  • Prev by Date: Re: Image reflection in IKImageBrowserView
  • Next by Date: Re: Graphics seen when volume is modified.
  • Previous by thread: Re: Interesting NSPathControl Behavior
  • Next by thread: Re: Calculating file size
  • Index(es):
    • Date
    • Thread