reimplement closetab context menu

This commit is contained in:
sawka 2024-06-24 17:50:06 -07:00
parent 997940949a
commit b2e12e4171
2 changed files with 12 additions and 3 deletions

View file

@ -2,6 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
import { Button } from "@/element/button";
import { ContextMenuModel } from "@/store/contextmenu";
import * as services from "@/store/services";
import * as WOS from "@/store/wos";
import { clsx } from "clsx";
@ -16,7 +17,7 @@ interface TabProps {
isBeforeActive: boolean;
isDragging: boolean;
onSelect: () => void;
onClose: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
onClose: (event: React.MouseEvent<HTMLButtonElement, MouseEvent> | null) => void;
onDragStart: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
onLoaded: () => void;
}
@ -106,12 +107,20 @@ const Tab = forwardRef<HTMLDivElement, TabProps>(
event.stopPropagation();
};
function handleContextMenu(e: React.MouseEvent<HTMLDivElement, MouseEvent>) {
e.preventDefault();
let menu: ContextMenuItem[] = [];
menu.push({ label: "Close Tab", click: () => onClose(null) });
ContextMenuModel.showContextMenu(menu, e);
}
return (
<div
ref={ref}
className={clsx("tab", { active, isDragging, "before-active": isBeforeActive })}
onMouseDown={onDragStart}
onClick={onSelect}
onContextMenu={handleContextMenu}
data-tab-id={id}
>
{isFirst && <div className="vertical-line first" />}

View file

@ -447,8 +447,8 @@ const TabBar = ({ workspace }: TabBarProps) => {
}, 30);
};
const handleCloseTab = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>, tabId: string) => {
event.stopPropagation();
const handleCloseTab = (event: React.MouseEvent<HTMLButtonElement, MouseEvent> | null, tabId: string) => {
event?.stopPropagation();
services.WindowService.CloseTab(tabId);
deleteLayoutStateAtomForTab(tabId);
};