fix(tabs): single-click reuses the active tab window-locally (#1348)#1394
Merged
Conversation
97e41c3 to
cdf6c8c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #1348.
Problem
The first table click replaced the current tab, but once a second tab existed, every later click opened a new tab instead of replacing the active one.
Root cause
The replace-vs-new-tab decision was made outside the focused window.
openPreviewTabscanned every window of the connection for a preview flag and replaced whichever window held it, stealing focus to a different window. That window-level preview flag was a second source of truth that drifted out of sync withQueryTab.isPreview. With preview tabs off there was no reuse path at all, so every click spawned a tab.Fix
Single-click is now window-local, with
QueryTab.isPreviewas the only source of truth:enablePreviewTabsonly decides whether the resulting tab is a preview.This matches the macOS convention (single-click opens in place, double-click opens) and the Xcode/VS Code one-temporary-tab model. Pinned and working tabs are protected; double-click opens a table in its own permanent tab.
Removed the cross-window preview lookup (
WindowLifecycleMonitor.previewWindow/setPreview/Entry.isPreview) and deletedopenPreviewTab.Tests
SidebarNavigationResultTestsfor the new.skip/.reuseActiveTab/.openNewTabcontract.OpenTableTabTests: window-local reuse (preview on, and a blank query tab), pinned-tab protection, promotion, and double-click opening a permanent tab.swiftlint --strictclean.