Skip to content

Commit ce2a2dd

Browse files
authored
Add link release searchbox trigger mode (#356)
1 parent d6c3046 commit ce2a2dd

File tree

4 files changed

+45
-10
lines changed

4 files changed

+45
-10
lines changed

src/components/searchbox/NodeSearchBoxPopover.vue

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,17 @@
2222

2323
<script setup lang="ts">
2424
import { app } from '@/scripts/app'
25-
import { onMounted, onUnmounted, reactive, ref } from 'vue'
25+
import { computed, onMounted, onUnmounted, reactive, ref } from 'vue'
2626
import NodeSearchBox from './NodeSearchBox.vue'
2727
import Dialog from 'primevue/dialog'
2828
import { LiteGraphCanvasEvent, ConnectingLink } from '@comfyorg/litegraph'
2929
import { FilterAndValue } from '@/services/nodeSearchService'
3030
import { ComfyNodeDefImpl, useNodeDefStore } from '@/stores/nodeDefStore'
3131
import { ConnectingLinkImpl } from '@/types/litegraphTypes'
32-
import { LiteGraph } from '@comfyorg/litegraph'
32+
import { useSettingStore } from '@/stores/settingStore'
33+
import { LinkReleaseTriggerMode } from '@/types/searchBoxTypes'
34+
35+
const settingStore = useSettingStore()
3336
3437
interface LiteGraphPointerEvent extends Event {
3538
canvasX: number
@@ -83,7 +86,24 @@ const addNode = (nodeDef: ComfyNodeDefImpl) => {
8386
}, 100)
8487
}
8588
89+
const linkReleaseTriggerMode = computed<LinkReleaseTriggerMode>(() => {
90+
return settingStore.get<LinkReleaseTriggerMode>(
91+
'Comfy.NodeSearchBoxImpl.LinkReleaseTrigger'
92+
)
93+
})
94+
8695
const canvasEventHandler = (e: LiteGraphCanvasEvent) => {
96+
const shiftPressed = (e.detail.originalEvent as KeyboardEvent).shiftKey
97+
98+
if (
99+
(linkReleaseTriggerMode.value === LinkReleaseTriggerMode.HOLD_SHIFT &&
100+
!shiftPressed) ||
101+
(linkReleaseTriggerMode.value === LinkReleaseTriggerMode.NOT_HOLD_SHIFT &&
102+
shiftPressed)
103+
) {
104+
return
105+
}
106+
87107
if (e.detail.subType === 'empty-release') {
88108
const context = e.detail.linkReleaseContext
89109
if (context.links.length === 0) {

src/scripts/ui.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -424,14 +424,6 @@ export class ComfyUI {
424424
defaultValue: 0
425425
})
426426

427-
this.settings.addSetting({
428-
id: 'Comfy.NodeSearchBoxImpl',
429-
name: 'Node Search box implementation',
430-
type: 'combo',
431-
options: ['default', 'litegraph (legacy)'],
432-
defaultValue: 'default'
433-
})
434-
435427
this.settings.addSetting({
436428
id: 'Comfy.EnableTooltips',
437429
name: 'Enable Tooltips',

src/stores/settingStore.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import { app } from '@/scripts/app'
1111
import { ComfySettingsDialog } from '@/scripts/ui/settings'
12+
import { LinkReleaseTriggerMode } from '@/types/searchBoxTypes'
1213
import { SettingParams } from '@/types/settingTypes'
1314
import { buildTree } from '@/utils/treeUtil'
1415
import { defineStore } from 'pinia'
@@ -63,6 +64,23 @@ export const useSettingStore = defineStore('setting', {
6364
type: 'boolean',
6465
defaultValue: true
6566
})
67+
68+
app.ui.settings.addSetting({
69+
id: 'Comfy.NodeSearchBoxImpl',
70+
name: 'Node Search box implementation',
71+
type: 'combo',
72+
options: ['default', 'litegraph (legacy)'],
73+
defaultValue: 'default'
74+
})
75+
76+
app.ui.settings.addSetting({
77+
id: 'Comfy.NodeSearchBoxImpl.LinkReleaseTrigger',
78+
name: 'Trigger on link release',
79+
tooltip: 'Only applies to the default implementation',
80+
type: 'combo',
81+
options: Object.values(LinkReleaseTriggerMode),
82+
defaultValue: LinkReleaseTriggerMode.ALWAYS
83+
})
6684
},
6785

6886
set(key: string, value: any) {

src/types/searchBoxTypes.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export enum LinkReleaseTriggerMode {
2+
ALWAYS = 'always',
3+
HOLD_SHIFT = 'hold shift',
4+
NOT_HOLD_SHIFT = 'NOT hold shift'
5+
}

0 commit comments

Comments
 (0)