Refresh menu item is disabled on macOS #302

Open
opened 2022-12-11 08:25:20 +00:00 by saagarjha · 5 comments

Picture:
image

I'm on the main timeline page so presumably it should work here?

Picture: ![image](/attachments/fb4a657f-0871-4fc8-99a9-442c4dd67093) I'm on the main timeline page so presumably it should work here?
shadowfacts added the
bug
label 2022-12-11 17:54:06 +00:00
Owner

I think the issue is that SplitNavigationController fucks up the responder chain. When it jumps from the secondary nav controller to the root nav controller, it needs to go as far in as possible rather than starting from the inner VC's view but I'm not sure if there's public API for that.

I think the issue is that `SplitNavigationController` fucks up the responder chain. When it jumps from the secondary nav controller to the root nav controller, it needs to go as far in as possible rather than [starting from the inner VC's view](https://git.shadowfacts.net/shadowfacts/Tusker/src/branch/develop/Tusker/Screens/Utilities/SplitNavigationController.swift#L286) but I'm not sure if there's public API for that.
Author

I looked into this and found that the problem appears to be that the timeline view never gets focus or added to the responder chain. The focus would keep going to the page view controller content view, and its internal scroll view, and not the embedded view controller. After a bunch of reversing I did a search and found that UIPageViewController apparently doesn't support focusable content. Oops.

I have a hack locally that fixes this by swizzling -[_UIQueuingScrollView canBecomeFocused] and -[_UIPageViewControllerContentView canBecomeFocused] to return NO, which allows interaction into the detail controller and then TimelineViewController is possible to put in the responder chain. But this is probably not something you'd want to ship.

I looked into this and found that the problem appears to be that the timeline view never gets focus or added to the responder chain. The focus would keep going to the page view controller content view, and its internal scroll view, and not the embedded view controller. [After a bunch of reversing I did a search and found that `UIPageViewController` apparently doesn't support focusable content.](https://developer.apple.com/forums/thread/19302?answerId=61010022#61010022) Oops. I have a hack locally that fixes this by swizzling `-[_UIQueuingScrollView canBecomeFocused]` and `-[_UIPageViewControllerContentView canBecomeFocused]` to return `NO`, which allows interaction into the detail controller and then `TimelineViewController` is possible to put in the responder chain. But this is probably not something you'd want to ship.
Owner

I've had a feedback open about that for years; I didn't realize it was also interfering with keyboard shortcuts.

I have a half written UIPageViewController replacement, I guess it's time to finish it.

I've had a feedback open about that for years; I didn't realize it was also interfering with keyboard shortcuts. I have a half written UIPageViewController replacement, I guess it's time to finish it.
Owner

Moved away from UIPageViewController (e4f3735c9f), the issue now is that whenever focus (and thus the first responder) moves to the sidebar, the key commands for the main VC are inaccessible.

Moved away from UIPageViewController (e4f3735c9f5f3506d9b229ce1c5d51f4fd3c64a8), the issue now is that whenever focus (and thus the first responder) moves to the sidebar, the key commands for the main VC are inaccessible.
Owner

The latest build (66) has a couple workarounds for this, so keyboard shortcuts should be usable again.

The latest build (66) has a couple workarounds for this, so keyboard shortcuts should be usable again.
Sign in to join this conversation.
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: shadowfacts/Tusker#302
No description provided.