feat: Add reset position icon and update UI manager.

This commit is contained in:
AEmotionStudio
2026-01-03 03:50:57 -08:00
parent 3d051a400b
commit 44423cd6bd
6 changed files with 58 additions and 2 deletions
+24
View File
@@ -221,6 +221,7 @@ export class UIManager {
<button class="control-btn visibility-btn" title="Toggle Panel Visibility (I)" data-action="toggle-panel">${Icons.eye}</button>
<button class="control-btn glass-btn" title="Toggle Glass Preview (G)" data-action="toggle-glass">${Icons.magnifyGlass}</button>
<button class="control-btn drag-glass-btn" title="Move Glass Position" data-action="drag-glass">${Icons.move}</button>
<button class="control-btn reset-glass-btn" title="Reset Glass Position (O)" data-action="reset-glass">${Icons.reset}</button>
<button class="control-btn popout-btn" title="Open in New Tab (Shift+P)" data-action="popout">${Icons.externalLink}</button>
`;
@@ -329,6 +330,23 @@ export class UIManager {
}
}
break;
case 'reset-glass':
// Reset glass offsets
const rglass = (window as any).comfyUIMagnifyGlass;
if (rglass) {
rglass.resetOffsets();
Logger.debug("Reset glass position via hover controls");
// Disable drag mode if active
if (rglass.state && rglass.state.isDragModeEnabled) {
rglass.state.isDragModeEnabled = false;
if (rglass.ui && rglass.ui.setDragMode) {
rglass.ui.setDragMode(false);
}
this.updateControlStates();
}
}
break;
}
});
@@ -422,6 +440,12 @@ export class UIManager {
// Only show drag button when glass is visible (even if panel is hidden)
dragGlassBtn.style.display = isGlassVisible ? 'flex' : 'none';
}
const resetGlassBtn = this.elements.controls.querySelector('[data-action="reset-glass"]') as HTMLButtonElement;
if (resetGlassBtn) {
// Only show reset button when glass is visible (moves with drag/popout buttons)
resetGlassBtn.style.display = isGlassVisible ? 'flex' : 'none';
}
}
/**
+7
View File
@@ -99,6 +99,13 @@ export const Icons = {
<polyline points="19 9 22 12 19 15"/>
<line x1="2" y1="12" x2="22" y2="12"/>
<line x1="12" y1="2" x2="12" y2="22"/>
<line x1="12" y1="2" x2="12" y2="22"/>
</svg>`,
// Reset icon - reset position
reset: `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/>
<path d="M3 3v5h5"/>
</svg>`
};
+19
View File
@@ -133,6 +133,7 @@ class UIManager {
<button class="control-btn visibility-btn" title="Toggle Panel Visibility (I)" data-action="toggle-panel">${Icons.eye}</button>
<button class="control-btn glass-btn" title="Toggle Glass Preview (G)" data-action="toggle-glass">${Icons.magnifyGlass}</button>
<button class="control-btn drag-glass-btn" title="Move Glass Position" data-action="drag-glass">${Icons.move}</button>
<button class="control-btn reset-glass-btn" title="Reset Glass Position (O)" data-action="reset-glass">${Icons.reset}</button>
<button class="control-btn popout-btn" title="Open in New Tab (Shift+P)" data-action="popout">${Icons.externalLink}</button>
`;
document.body.appendChild(this.elements.controls);
@@ -217,6 +218,20 @@ class UIManager {
}
}
break;
case "reset-glass":
const rglass = window.comfyUIMagnifyGlass;
if (rglass) {
rglass.resetOffsets();
Logger.debug("Reset glass position via hover controls");
if (rglass.state && rglass.state.isDragModeEnabled) {
rglass.state.isDragModeEnabled = false;
if (rglass.ui && rglass.ui.setDragMode) {
rglass.ui.setDragMode(false);
}
this.updateControlStates();
}
}
break;
}
});
const controlsPosition = String(this.stateManager.state.settings["🔍MagnifyGlass.ControlsPosition"] || "top-right");
@@ -289,6 +304,10 @@ class UIManager {
dragGlassBtn.title = isDragMode ? "Cancel Move Mode" : "Move Glass Position";
dragGlassBtn.style.display = isGlassVisible ? "flex" : "none";
}
const resetGlassBtn = this.elements.controls.querySelector('[data-action="reset-glass"]');
if (resetGlassBtn) {
resetGlassBtn.style.display = isGlassVisible ? "flex" : "none";
}
}
/**
* Update controls layout based on position setting.
File diff suppressed because one or more lines are too long
+6
View File
@@ -72,6 +72,12 @@ const Icons = {
<polyline points="19 9 22 12 19 15"/>
<line x1="2" y1="12" x2="22" y2="12"/>
<line x1="12" y1="2" x2="12" y2="22"/>
<line x1="12" y1="2" x2="12" y2="22"/>
</svg>`,
// Reset icon - reset position
reset: `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/>
<path d="M3 3v5h5"/>
</svg>`
};
export {
File diff suppressed because one or more lines are too long