fix decision first-click + editor reveal via retained reader nav
Two reveal-on-open bugs: Decisions opened only on the second click (T-196): the detail view subscribed in didChangeDependencies, which runs after the tab is revealed, so the broadcast 'selection' that triggered the reveal was already gone. Hoist the back/forward history out of per-view State into a retained per-reader ReaderNav (kernel ChangeNotifier in a ReaderNavRegistry, D-81). The nav records selections, emits 'load' (the single channel readers display from), and survives mount/unmount — the reader grabs nav.current on mount, so the first selection lands. Both the markdown and decisions readers move to this model; the per-view ReaderHistoryMixin and the markdown post-frame forward hack are gone. The editor pane never opened (T-197): EditorExtension contributed a workspace tab but nothing activated it on editor.open. Add an activate() that reveals the tab on editor.opened / editor.active-changed; the view's hydrate() pulls the active buffer on mount. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -50,9 +50,10 @@ Future<void> pumpView(WidgetTester tester, KernelFixture f) async {
|
||||
await pumpAsync(tester);
|
||||
}
|
||||
|
||||
/// Trigger a file load via the 'load' channel (mirrors the extension bridge).
|
||||
/// Open a file through the retained nav (the history source); its 'load'
|
||||
/// emit makes the mounted viewer display it (T-196).
|
||||
Future<void> loadFile(WidgetTester tester, KernelFixture f, String path) async {
|
||||
f.services.messages.publish('builtin.markdown', 'load', {'path': path});
|
||||
f.services.readerNav.navFor('builtin.markdown', dataKey: 'path').open(path);
|
||||
await pumpAsync(tester);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user