Friday, July 3, 2026

Finder’s Elite Eliding

Marcin Wichary:

But I also want to show things that Finder does well, and this might be something no one does nearly as thoughtfully: text truncation.

[…]

Finder position the tooltip exactly atop the existing text. I think this is really clever: it avoids overlapping other useful information, and makes it faster to reorient yourself.

[…]

Lastly, Finder only shows the tooltip when it’s needed.

Previously:

12 Comments RSS · Twitter · Mastodon


These style of tooltips are actually provided by NSTableView for any app that uses it. All that's required is implementing the -tableView:shouldShowCellExpansionForTableColumn:row: delegate method, and you'll get this behavior for free on all your text fields (plus there's APIs to implement it for custom cell views as well).


Yea. These behaviors are not exclusive to Finder. Any AppKit app can do all this, easily.

But don’t worry Apple is working hard fucking everything up so it won’t be long before native apps suck just as much. Thanks Schaef


I was about to say what Brian said. It's completely possible that zero lines of code are needed beyond the minimum necessary to just hook up the framework's smarts.

This is why it's so concerning that SwiftUI, as a framework, has so little smarts. Using the old NeXT metaphor about starting your building at the 10th floor wth a good framework, you largely start in the third underground parking garage.


It also used to be that pop up buttons would line the appropriate menu item exactly on top of the button label. This was accurate to the pixel. But like any attention to detail at the clown company, this has been broken for many years. It used to be broken but just a few pixels, now if it even lines up in the general vicinity of the label, we should be happy.


The whole post is pretty funny. It’s as if Marcin has just discovered the positives of a well thought out UI framework. And since native (AppKit) Mac apps are so rare these days, you can see what he’s comparing it to: Catalyst, SwiftUI and web crap. I fear that this is also the state over at Apple’s design and engineering. They don’t even know what exists or existed, let alone how to implement it just the same or better. It shows. No attention to detail in Catalyst. Even less attention to detail in SwiftUI. The clowns making Electron shovelware don’t event care and never have.


This behavior may be a standard feature in AppKit _now_, but I believe it originated in Mac OS Finder ca. 8.x.


@Sören

Playing around in InfiniteMac, and you are right. It did exist in classic Mac OS. Funnily enough, it's not the behavior in NEXTStep at all.


Thoughtful design is why I liked the Mac. I like posts that highlight user experience details much more than "#BUZZWORD_TECH is the silver bullet!!" bs of the week.

@Leo Agree, much is being erased by Leetcoders rewriting with #BUZZWORD and "Mobile-first" designers. MVP mindset also ruins a lot of apps.


I swear my app used to do this too... but now it doesn't...

It seems `tableView:shouldShowCellExpansionForTableColumn:row:` is kinda-deprecated, the header says "View Based TableView: This method is not called or used."

I keep all my nightly builds on my NAS, so went back in history and indeed when I switched to NSView-based TableViews, I lost this feature.

Seems this feature is called "expansion tool tips" and it talked about in NSCell.h.

I wonder how I can get it back with NSView-based TableViews...


@bob I think you can just turn on allowsExpansionToolTips for your views.


@bob Just setting allowsExpansionTooltip to YES on the NSTextField you use inside your table view rows should do it. Seems to be working fine in my app. I don't think I'm doing anything else.

NSTextField inherits this from NSControl and there is this beautiful checkbox to turn it on in Interface Builder!

From NSControl.h :
/* Gets and sets the ability for expansion tool tips to be shown or not. Expansion tooltips are automatically shown when the cell can not show the full content. This is controlled by the NSCell API expansionFrameWithFrame:inView: and is drawn by drawWithExpansionFrame:inView:. The default value is NO.
This value is encoded along with the control. In general, it is recommended to turn this on for NSTextFields in a View Based NSTableView.
*/
@property BOOL allowsExpansionToolTips API_AVAILABLE(macos(10.8));


Thanks both!

>In general, it is recommended to turn this on for NSTextFields in a View Based NSTableView.

Funny/shame that adding a fresh new NSTableView in IB does *not* enable that option by default. :( I have a lot of tables to update now!

Leave a Comment