| | |
| | | const handleContextMenu = (event, tab) => { |
| | | event.preventDefault(); |
| | | event.stopPropagation(); |
| | | setContextMenu( |
| | | contextMenu === null |
| | | ? { |
| | | mouseX: event.clientX + 2, |
| | | mouseY: event.clientY - 6, |
| | | } |
| | | : null |
| | | ); |
| | | if (!tab) return; |
| | | const tabObj = tabs.find(t => t.path === tab.path || isSameResource(t.path, tab.path)); |
| | | if (!tabObj) return; |
| | | const hasItems = tabObj.closable || |
| | | canCloseLeftForTab(tab.path) || |
| | | canCloseRightForTab(tab.path) || |
| | | canCloseOthersForTab(tab.path); |
| | | if (!hasItems) return; |
| | | setContextMenu({ |
| | | mouseX: event.clientX + 2, |
| | | mouseY: event.clientY - 6, |
| | | }); |
| | | setContextMenuTab(tab); |
| | | }; |
| | | |
| | |
| | | ? { top: contextMenu.mouseY, left: contextMenu.mouseX } |
| | | : undefined |
| | | } |
| | | disableScrollLock |
| | | ModalProps={{ disablePortal: true }} |
| | | PaperProps={{ |
| | | sx: { |
| | | minWidth: 120, |
| | |
| | | sx: { py: 0 }, |
| | | }} |
| | | > |
| | | {/* 关闭当前标签 |
| | | {contextMenuTab && contextMenuTab.closable && ( |
| | | <MenuItem |
| | | onClick={handleCloseCurrentTab} |
| | |
| | | {t('ra.action.close', '关闭当前标签')} |
| | | </MenuItem> |
| | | )} |
| | | */} |
| | | {contextMenuTab && canCloseLeftForTab(contextMenuTab.path) && ( |
| | | <MenuItem |
| | | onClick={handleCloseLeftTabs} |