diff --git a/src/renderer/root/components/AuthenticatedLayout/Tab/Tab.js b/src/renderer/root/components/AuthenticatedLayout/Tab/Tab.js index 477623332..ce26e20fb 100644 --- a/src/renderer/root/components/AuthenticatedLayout/Tab/Tab.js +++ b/src/renderer/root/components/AuthenticatedLayout/Tab/Tab.js @@ -18,7 +18,8 @@ export default class Tab extends React.PureComponent { icon: string, loading: bool, onClick: func, - onClose: func + onClose: func, + onMouseUp: func }; static defaultProps = { @@ -27,7 +28,8 @@ export default class Tab extends React.PureComponent { icon: null, loading: false, onClick: noop, - onClose: noop + onClose: noop, + onMouseUp: noop }; state = { @@ -45,7 +47,7 @@ export default class Tab extends React.PureComponent { } render() { - const { className, active, title, onClick } = this.props; + const { className, active, title, onClick, onMouseUp } = this.props; const { width, show } = this.state; return ( @@ -55,6 +57,7 @@ export default class Tab extends React.PureComponent { role="button" tabIndex={0} onClick={onClick} + onMouseUp={onMouseUp} > {this.renderIcon()} {title} diff --git a/src/renderer/root/components/AuthenticatedLayout/Tabs/Tabs.js b/src/renderer/root/components/AuthenticatedLayout/Tabs/Tabs.js index 7154be168..ab87a7bd4 100644 --- a/src/renderer/root/components/AuthenticatedLayout/Tabs/Tabs.js +++ b/src/renderer/root/components/AuthenticatedLayout/Tabs/Tabs.js @@ -67,10 +67,18 @@ export default class Tabs extends React.PureComponent { active={sessionId === this.props.activeSessionId} onClick={this.handleClick(sessionId)} onClose={this.handleClose(sessionId)} + onMouseUp={(e) => this.handleMouseUp(sessionId, e)} /> ); }; + handleMouseUp = (sessionId, event) => { + // Handle close tab using middle mouse click + if (event.button === 1) { + this.props.onClose(sessionId); + } + }; + handleClick = (sessionId) => { return () => { this.props.setActiveTab(sessionId);