Thanks for the reply.
I don't think you're supposed to read clickedRow in -tableView:selectionIndexesForProposedSelection:. Unless something has changed in macOS 27 the documentation for clickedRow states:
This is true, but in testing, clickedRow does work both in an override of selectRowIndexes(_:byExtendingSelection:) and in the delegate tableView(_:selectionIndexesForProposedSelection:). Also, Apple's own sample code for DragNDropOutlineView, which is linked to in the documentation for clickedRow, demonstrates using clickedRow in tableView(_:shouldSelectRow:), which was the older version of tableView(_:selectionIndexesForProposedSelection:). So if Apple's sample code uses it this way, I figure it should be fine.
You should be able to pick up a click change by setting the table view's target-action instead of trying to do it in the delegate methods
I mentioned in my original post that using an action in this case unfortunately isn't a good solution. I need to load content in response to a selection change, and an action won't be fired when the selection is changed in ways other than clicking (it won't be fired when you use keyboard navigation, for instance, as you note). And since the selection-did-change delegate method is called before the action is called, I can't implement both, either, because the selection-did-change method would load content in the main editor before I could check in the action that it should load in the other editor. So content would wrongly get loaded in both, or I'd have to revert content in the main editor when the action was clicked, which would not be pretty.
The only way for this to work is for me to know if the selection changed (in selection-did-change) because of both a mouse click and an Option press - something that has worked for years.
Fortunately, like I say, clickedIndex does seem to work for this - at the moment, at least. (The ideal solution would just be for Apple to make clickedIndex valid during selection-did-change calls.)
I'm a bit worried that these AppKit changes might break a bunch of stuff. Hope not. I guess touch screen Macs are coming soon.
That's my assumption for why these changes are being made too. It's odd that such sweeping changes were barely mentioned at WWDC, getting only a brief mention in the AppKit video and a tech note, since these changes require quite a lot of work in custom controls, tables and text views, and have broken behaviour that has worked for years. (For instance, in NSTextView, selectedRange now only updates after menuForEvent: and its delegate method are called, rather than before, breaking custom context menus in text views. Hopefully that's a bug, though - I've reported it as such.)