fix(app): keep pull requests in the explorer pane
Pull request auto-placement was using the current location of Changes as a proxy for pane ownership. Keep the registered explorer pane authoritative so moving Changes cannot redirect automatically discovered pull requests.
This commit is contained in:
@@ -423,7 +423,7 @@ describe("workspace-layout-store actions", () => {
|
|||||||
expect(findPaneContainingTab(layout.root, "pull_request")?.id).toBe(explorerPaneId);
|
expect(findPaneContainingTab(layout.root, "pull_request")?.id).toBe(explorerPaneId);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("places an auto-added pull request in the pane containing Changes", () => {
|
it("keeps an auto-added pull request in the explorer pane when Changes is elsewhere", () => {
|
||||||
const workspaceKey = createWorkspaceKey();
|
const workspaceKey = createWorkspaceKey();
|
||||||
const store = workspaceLayoutStore.getState();
|
const store = workspaceLayoutStore.getState();
|
||||||
store.openTabFocused(workspaceKey, { kind: "working_diff" });
|
store.openTabFocused(workspaceKey, { kind: "working_diff" });
|
||||||
@@ -439,7 +439,7 @@ describe("workspace-layout-store actions", () => {
|
|||||||
|
|
||||||
const layout = workspaceLayoutStore.getState().layoutByWorkspace[workspaceKey];
|
const layout = workspaceLayoutStore.getState().layoutByWorkspace[workspaceKey];
|
||||||
expect(findPaneContainingTab(layout.root, "working_diff")?.id).toBe("main");
|
expect(findPaneContainingTab(layout.root, "working_diff")?.id).toBe("main");
|
||||||
expect(findPaneContainingTab(layout.root, "pull_request")?.id).toBe("main");
|
expect(findPaneContainingTab(layout.root, "pull_request")?.id).toBe(explorerPaneId);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("opens assistant files in an ensured explorer pane and reveals it on the next open", () => {
|
it("opens assistant files in an ensured explorer pane and reveals it on the next open", () => {
|
||||||
|
|||||||
@@ -521,17 +521,10 @@ export function createWorkspaceLayoutStore(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const layout = getWorkspaceLayout(state.layoutByWorkspace, normalizedWorkspaceKey);
|
const layout = getWorkspaceLayout(state.layoutByWorkspace, normalizedWorkspaceKey);
|
||||||
const workingDiffTab = collectAllTabs(layout.root).find(
|
|
||||||
(tab) => tab.target.kind === "working_diff",
|
|
||||||
);
|
|
||||||
const workingDiffPane = workingDiffTab
|
|
||||||
? findPaneContainingTab(layout.root, workingDiffTab.tabId)
|
|
||||||
: null;
|
|
||||||
const explorerPaneId = state.explorerPaneIdByWorkspace[normalizedWorkspaceKey] ?? null;
|
const explorerPaneId = state.explorerPaneIdByWorkspace[normalizedWorkspaceKey] ?? null;
|
||||||
const explorerPane = findPaneById(layout.root, explorerPaneId);
|
const explorerPane = findPaneById(layout.root, explorerPaneId);
|
||||||
const placementPane = workingDiffPane ?? explorerPane;
|
const placementLayout = explorerPane
|
||||||
const placementLayout = placementPane
|
? (focusPaneInLayout({ layout, paneId: explorerPane.id }) ?? layout)
|
||||||
? (focusPaneInLayout({ layout, paneId: placementPane.id }) ?? layout)
|
|
||||||
: layout;
|
: layout;
|
||||||
const result = openTabInLayoutFocused({
|
const result = openTabInLayoutFocused({
|
||||||
layout: placementLayout,
|
layout: placementLayout,
|
||||||
|
|||||||
Reference in New Issue
Block a user