diff --git a/src/components/TabItem.tsx b/src/components/TabItem.tsx index 2cbc6a4..70d5e9b 100644 --- a/src/components/TabItem.tsx +++ b/src/components/TabItem.tsx @@ -102,6 +102,7 @@ export function TabItem(props: TabItemProps) { backgroundColor={backgroundColor()} onMouseUp={(event) => { if (event.button === 0) props.onSelect(); + if (event.button === 1) props.onClose(); }} > @@ -150,7 +151,7 @@ export function TabItem(props: TabItemProps) { flexShrink={0} onMouseUp={(event) => { event.stopPropagation(); - if (event.button !== 0) return; + if (event.button !== 0 && event.button !== 1) return; props.onClose(); }} > diff --git a/src/session-tabs/SessionTabs.spec.tsx b/src/session-tabs/SessionTabs.spec.tsx index e09d791..bf6eaf6 100644 --- a/src/session-tabs/SessionTabs.spec.tsx +++ b/src/session-tabs/SessionTabs.spec.tsx @@ -194,10 +194,15 @@ describe("TabItem interaction", () => { expect(onClose).toHaveBeenCalledOnce(); expect(onSelect).toHaveBeenCalledOnce(); + await setup.mockMouse.click(1, 0, MouseButtons.MIDDLE); + await setup.mockMouse.click(closeX, 0, MouseButtons.MIDDLE); + expect(onClose).toHaveBeenCalledTimes(3); + expect(onSelect).toHaveBeenCalledOnce(); + await setup.mockMouse.click(1, 0, MouseButtons.RIGHT); await setup.mockMouse.click(closeX, 0, MouseButtons.RIGHT); expect(onSelect).toHaveBeenCalledOnce(); - expect(onClose).toHaveBeenCalledOnce(); + expect(onClose).toHaveBeenCalledTimes(3); } finally { setup.renderer.destroy(); }