From fc1b0b3e53d4a1593ab6850d5bdf141297cdc417 Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Wed, 14 Aug 2024 13:44:22 -0400 Subject: [PATCH] Fix searchbox trigger on non-always link release setting (#426) * Fix searchbox trigger on non-always link release setting * Add browsertest --- browser_tests/ComfyPage.ts | 9 +++++++++ browser_tests/nodeSearchBox.spec.ts | 20 ++++++++++++++++--- .../searchbox/NodeSearchBoxPopover.vue | 18 ++++++++--------- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/browser_tests/ComfyPage.ts b/browser_tests/ComfyPage.ts index 3b666dd393..f8f16071da 100644 --- a/browser_tests/ComfyPage.ts +++ b/browser_tests/ComfyPage.ts @@ -170,6 +170,15 @@ export class ComfyPage { await this.resetView() } + async setSetting(settingId: string, settingValue: any) { + return await this.page.evaluate( + async ({ id, value }) => { + await window['app'].ui.settings.setSettingValueAsync(id, value) + }, + { id: settingId, value: settingValue } + ) + } + async realod() { await this.page.reload({ timeout: 15000 }) await this.setup() diff --git a/browser_tests/nodeSearchBox.spec.ts b/browser_tests/nodeSearchBox.spec.ts index 278fc4b26c..0805d5328f 100644 --- a/browser_tests/nodeSearchBox.spec.ts +++ b/browser_tests/nodeSearchBox.spec.ts @@ -2,9 +2,23 @@ import { expect } from '@playwright/test' import { comfyPageFixture as test } from './ComfyPage' test.describe('Node search box', () => { - test('Can trigger on empty canvas double click', async ({ comfyPage }) => { - await comfyPage.doubleClickCanvas() - await expect(comfyPage.searchBox.input).toHaveCount(1) + test.beforeEach(async ({ comfyPage }) => { + await comfyPage.setSetting( + 'Comfy.NodeSearchBoxImpl.LinkReleaseTrigger', + 'always' + ) + }) + ;['always', 'hold shift', 'NOT hold shift'].forEach((triggerMode) => { + test(`Can trigger on empty canvas double click (${triggerMode})`, async ({ + comfyPage + }) => { + await comfyPage.setSetting( + 'Comfy.NodeSearchBoxImpl.LinkReleaseTrigger', + triggerMode + ) + await comfyPage.doubleClickCanvas() + await expect(comfyPage.searchBox.input).toHaveCount(1) + }) }) test('Can trigger on link release', async ({ comfyPage }) => { diff --git a/src/components/searchbox/NodeSearchBoxPopover.vue b/src/components/searchbox/NodeSearchBoxPopover.vue index 5db20e775a..95187dc6f1 100644 --- a/src/components/searchbox/NodeSearchBoxPopover.vue +++ b/src/components/searchbox/NodeSearchBoxPopover.vue @@ -104,16 +104,16 @@ const linkReleaseTriggerMode = computed(() => { const canvasEventHandler = (e: LiteGraphCanvasEvent) => { const shiftPressed = (e.detail.originalEvent as KeyboardEvent).shiftKey - if ( - (linkReleaseTriggerMode.value === LinkReleaseTriggerMode.HOLD_SHIFT && - !shiftPressed) || - (linkReleaseTriggerMode.value === LinkReleaseTriggerMode.NOT_HOLD_SHIFT && - shiftPressed) - ) { - return - } - if (e.detail.subType === 'empty-release') { + if ( + (linkReleaseTriggerMode.value === LinkReleaseTriggerMode.HOLD_SHIFT && + !shiftPressed) || + (linkReleaseTriggerMode.value === LinkReleaseTriggerMode.NOT_HOLD_SHIFT && + shiftPressed) + ) { + return + } + const context = e.detail.linkReleaseContext if (context.links.length === 0) { console.warn('Empty release with no links! This should never happen')