diff --git a/src/components/maskeditor/BrushSettingsPanel.vue b/src/components/maskeditor/BrushSettingsPanel.vue index 444dc8ceb..7054f1a15 100644 --- a/src/components/maskeditor/BrushSettingsPanel.vue +++ b/src/components/maskeditor/BrushSettingsPanel.vue @@ -1,8 +1,6 @@ diff --git a/src/components/maskeditor/MaskEditorContent.vue b/src/components/maskeditor/MaskEditorContent.vue index 999f81775..a524edfcb 100644 --- a/src/components/maskeditor/MaskEditorContent.vue +++ b/src/components/maskeditor/MaskEditorContent.vue @@ -202,6 +202,7 @@ onBeforeUnmount(() => { } store.canvasHistory.clearStates() + store.resetState() dataStore.reset() }) diff --git a/src/extensions/core/maskeditor.ts b/src/extensions/core/maskeditor.ts index d5bbe5e97..406fdcd7d 100644 --- a/src/extensions/core/maskeditor.ts +++ b/src/extensions/core/maskeditor.ts @@ -37,6 +37,15 @@ function isOpened(): boolean { return useDialogStore().isDialogOpen('global-mask-editor') } +const changeBrushSize = async (sizeChanger: (oldSize: number) => number) => { + if (!isOpened()) return + + const store = useMaskEditorStore() + const oldBrushSize = store.brushSettings.size + const newBrushSize = sizeChanger(oldBrushSize) + store.setBrushSize(newBrushSize) +} + app.registerExtension({ name: 'Comfy.MaskEditor', settings: [ @@ -82,13 +91,24 @@ app.registerExtension({ id: 'Comfy.MaskEditor.BrushSize.Increase', icon: 'pi pi-plus-circle', label: 'Increase Brush Size in MaskEditor', - function: () => changeBrushSize((old) => _.clamp(old + 4, 1, 100)) + function: () => changeBrushSize((old) => _.clamp(old + 2, 1, 250)) }, { id: 'Comfy.MaskEditor.BrushSize.Decrease', icon: 'pi pi-minus-circle', label: 'Decrease Brush Size in MaskEditor', - function: () => changeBrushSize((old) => _.clamp(old - 4, 1, 100)) + function: () => changeBrushSize((old) => _.clamp(old - 2, 1, 250)) + }, + { + id: 'Comfy.MaskEditor.ColorPicker', + icon: 'pi pi-palette', + label: 'Open Color Picker in MaskEditor', + function: () => { + if (!isOpened()) return + + const store = useMaskEditorStore() + store.colorInput?.click() + } } ], init() { @@ -101,12 +121,3 @@ app.registerExtension({ ) } }) - -const changeBrushSize = async (sizeChanger: (oldSize: number) => number) => { - if (!isOpened()) return - - const store = useMaskEditorStore() - const oldBrushSize = store.brushSettings.size - const newBrushSize = sizeChanger(oldBrushSize) - store.setBrushSize(newBrushSize) -} diff --git a/src/stores/maskEditorStore.ts b/src/stores/maskEditorStore.ts index b52edf7be..d2140e845 100644 --- a/src/stores/maskEditorStore.ts +++ b/src/stores/maskEditorStore.ts @@ -73,6 +73,8 @@ export const useMaskEditorStore = defineStore('maskEditor', () => { const tgpuRoot = ref(null) + const colorInput = ref(null) + watch(maskCanvas, (canvas) => { if (canvas) { maskCtx.value = canvas.getContext('2d', { willReadFrequently: true }) @@ -113,7 +115,7 @@ export const useMaskEditorStore = defineStore('maskEditor', () => { }) function setBrushSize(size: number): void { - brushSettings.value.size = _.clamp(size, 1, 500) + brushSettings.value.size = _.clamp(size, 1, 250) } function setBrushOpacity(opacity: number): void { @@ -252,6 +254,8 @@ export const useMaskEditorStore = defineStore('maskEditor', () => { tgpuRoot, + colorInput, + setBrushSize, setBrushOpacity, setBrushHardness,