mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-04 17:38:10 +00:00
Made fixes to the bugs.
This commit is contained in:
1 parent
d742c61390
commit
44c0dfd920
3 files changed
+17
-14
No files matched your search
@@ -158,7 +158,7 @@ export const Mirai = ({
|
||||
strokeWidth: brushSize / stage.scaleX(),
|
||||
draggable: true,
|
||||
};
|
||||
|
||||
store.selectNode(null);
|
||||
store.addLineNode(newLineNode);
|
||||
setCurrentLineId(lineId);
|
||||
setIsDrawing(true);
|
||||
@@ -386,13 +386,11 @@ export const Mirai = ({
|
||||
const handleNodeMouseLeave = (e: Konva.KonvaEventObject<MouseEvent>) => {
|
||||
const container = e.target.getStage()?.container();
|
||||
if (!container) return;
|
||||
const defaultCursor = activeTool === 'draw'
|
||||
? 'crosshair'
|
||||
: activeTool === 'eraser'
|
||||
? 'cell'
|
||||
: activeTool === 'select'
|
||||
? 'grab'
|
||||
: 'default';
|
||||
const defaultCursor = activeTool === 'draw' || activeTool === 'eraser'
|
||||
? 'none'
|
||||
: activeTool === 'select'
|
||||
? 'grab'
|
||||
: 'default';
|
||||
container.style.cursor = defaultCursor;
|
||||
};
|
||||
|
||||
@@ -467,17 +465,21 @@ export const Mirai = ({
|
||||
const renderNode = (node: Node | LineNode) => {
|
||||
// Node Callbacks
|
||||
const handleNodeMouseDown = (e: Konva.KonvaEventObject<MouseEvent | TouchEvent>, nodeId: string) => {
|
||||
// Don't select nodes when draw or erase tools are active
|
||||
if (activeTool === 'draw' || activeTool === 'eraser') {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if Ctrl/Cmd key is pressed
|
||||
const isMultiSelect = e.evt.ctrlKey || e.evt.metaKey;
|
||||
|
||||
// If clicking directly on the stage, clear selection
|
||||
if (e.target === e.target.getStage()) {
|
||||
|
||||
store.selectNode(null);
|
||||
return;
|
||||
}
|
||||
|
||||
store.selectNode(nodeId,isMultiSelect);
|
||||
store.selectNode(nodeId, isMultiSelect);
|
||||
};
|
||||
|
||||
const handleNodeDragStart = (e: Konva.KonvaEventObject<DragEvent>, nodeId:string) => {
|
||||
|
||||
@@ -239,6 +239,7 @@ export const useSceneStore = create<SceneState>((set, get) => ({
|
||||
draggable: true
|
||||
});
|
||||
get().addNode(node);
|
||||
get().setActiveTool('select'); // Switch to select tool after creating
|
||||
},
|
||||
|
||||
createCircle: (x: number, y: number, radius = 50, fill = '#f0f0f0') => {
|
||||
@@ -255,6 +256,7 @@ export const useSceneStore = create<SceneState>((set, get) => ({
|
||||
draggable: true
|
||||
});
|
||||
get().addNode(node);
|
||||
get().setActiveTool('select'); // Switch to select tool after creating
|
||||
},
|
||||
|
||||
createTriangle: (x: number, y: number, width = 100, height = 100, fill = '#d0d0d0') => {
|
||||
@@ -271,6 +273,7 @@ export const useSceneStore = create<SceneState>((set, get) => ({
|
||||
draggable: true
|
||||
});
|
||||
get().addNode(node);
|
||||
get().setActiveTool('select'); // Switch to select tool after creating
|
||||
},
|
||||
|
||||
// History management
|
||||
|
||||
@@ -62,11 +62,11 @@ const SideToolbar: React.FC<SideToolbarProps> = ({
|
||||
onGenerateImage,
|
||||
onUploadImage,
|
||||
onDelete,
|
||||
activeToolId,
|
||||
className = "",
|
||||
}) => {
|
||||
/* ------------------------------------------------ state ---------- */
|
||||
const [open, setOpen] = useState<string | null>(null);
|
||||
const [selected, setSel] = useState<string>("select");
|
||||
|
||||
const [brushSize, setBrushSize] = useState(16);
|
||||
const [brushHsva, setBrushHsva] = useState<HsvaColor>({ h:120,s:100,v:100,a:1 });
|
||||
@@ -310,7 +310,7 @@ const SideToolbar: React.FC<SideToolbarProps> = ({
|
||||
}
|
||||
|
||||
const { id, icon, onClick, popout, label } = tool;
|
||||
const active = id === selected;
|
||||
const active = id === activeToolId;
|
||||
const btnStyle = active ? "bg-zinc-600 text-white" : "hover:bg-zinc-800 text-zinc-100";
|
||||
|
||||
return (
|
||||
@@ -321,7 +321,6 @@ const SideToolbar: React.FC<SideToolbarProps> = ({
|
||||
<button
|
||||
onClick={() => {
|
||||
onClick?.();
|
||||
setSel(id);
|
||||
setOpen(open === id ? null : id);
|
||||
}}
|
||||
className={`${baseBtn} ${btnStyle}`}
|
||||
@@ -332,7 +331,6 @@ const SideToolbar: React.FC<SideToolbarProps> = ({
|
||||
<button
|
||||
onClick={() => {
|
||||
onClick?.();
|
||||
setSel(id);
|
||||
}}
|
||||
className={`${baseBtn} ${btnStyle}`}
|
||||
>
|
||||
|
||||
Reference in new issue
Block a user