mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-05-06 08:26:45 -03:00
fix: commit dragged strength through options.setValue at drag end
During drag, handleStrengthDrag is called with updateWidget=false, which mutates widgetValue in-place via parseLoraValue's direct array reference, bypassing widget.value setter and options.setValue entirely. endDrag only called renderFunction for a DOM refresh, but never flushed the mutation through options.setValue. Any external observer that wraps options.setValue (e.g. ComfyUI Mirror Panel's bidirectional sync) would therefore never see the dragged value and would treat the widget as unchanged. Fix: replace the explicit renderFunction call with widget.value = widget.value. This flushes the in-place mutation through the setter (options.setValue), which re-renders the DOM internally AND notifies all setValue wrappers. Also fire widget.callback for parity with the updateWidget=true path in handleStrengthDrag. Applies the same fix to initHeaderDrag (proportional all-LoRA header drag).
This commit is contained in:
@@ -232,9 +232,13 @@ export function initDrag(
|
||||
onDragEnd();
|
||||
}
|
||||
|
||||
// Now do the re-render after drag is complete
|
||||
if (renderFunction) {
|
||||
renderFunction(widget.value, widget);
|
||||
// Commit final value through options.setValue so external observers are notified.
|
||||
// During drag, handleStrengthDrag mutates widgetValue in-place (updateWidget=false),
|
||||
// bypassing widget.value setter and options.setValue entirely. This assignment
|
||||
// flushes the in-place mutation through the setter so any setValue wrappers fire.
|
||||
widget.value = widget.value;
|
||||
if (typeof widget.callback === 'function') {
|
||||
widget.callback(widget.value);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -349,11 +353,15 @@ export function initHeaderDrag(headerEl, widget, renderFunction) {
|
||||
document.body.classList.remove('lm-lora-strength-dragging');
|
||||
|
||||
// Only re-render if we actually dragged
|
||||
if (wasDragging && renderFunction) {
|
||||
renderFunction(widget.value, widget);
|
||||
if (wasDragging) {
|
||||
// Commit final value through options.setValue so external observers are notified.
|
||||
widget.value = widget.value;
|
||||
if (typeof widget.callback === 'function') {
|
||||
widget.callback(widget.value);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Handle pointer up to end dragging
|
||||
headerEl.addEventListener('pointerup', endDrag);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user