Add ESC key support to close fullscreen editor

Implemented an ESC key handler to allow users to close the fullscreen editor mode using the Escape key. Updated the editor button tooltip and the shortcuts documentation to reflect this new shortcut.
This commit is contained in:
Dariusz L
2025-07-27 21:39:18 +02:00
parent 19d1f9aa52
commit 9e4e618955
4 changed files with 35 additions and 2 deletions

View File

@@ -742,6 +742,8 @@ async function createCanvasWidget(node, widget, app) {
isEditorOpen = false; isEditorOpen = false;
openEditorBtn.textContent = "⛶"; openEditorBtn.textContent = "⛶";
openEditorBtn.title = "Open in Editor"; openEditorBtn.title = "Open in Editor";
// Remove ESC key listener when editor closes
document.removeEventListener('keydown', handleEscKey);
setTimeout(() => { setTimeout(() => {
canvas.render(); canvas.render();
if (node.onResize) { if (node.onResize) {
@@ -749,6 +751,15 @@ async function createCanvasWidget(node, widget, app) {
} }
}, 0); }, 0);
}; };
// ESC key handler for closing fullscreen editor
const handleEscKey = (e) => {
if (e.key === 'Escape' && isEditorOpen) {
e.preventDefault();
e.stopPropagation();
closeEditor();
log.info("Fullscreen editor closed via ESC key");
}
};
openEditorBtn.onclick = () => { openEditorBtn.onclick = () => {
if (isEditorOpen) { if (isEditorOpen) {
closeEditor(); closeEditor();
@@ -766,7 +777,9 @@ async function createCanvasWidget(node, widget, app) {
document.body.appendChild(backdrop); document.body.appendChild(backdrop);
isEditorOpen = true; isEditorOpen = true;
openEditorBtn.textContent = "X"; openEditorBtn.textContent = "X";
openEditorBtn.title = "Close Editor"; openEditorBtn.title = "Close Editor (ESC)";
// Add ESC key listener when editor opens
document.addEventListener('keydown', handleEscKey);
setTimeout(() => { setTimeout(() => {
canvas.render(); canvas.render();
if (node.onResize) { if (node.onResize) {

View File

@@ -4,7 +4,9 @@
<tr><td><kbd>Mouse Wheel</kbd></td><td>Zoom view in/out</td></tr> <tr><td><kbd>Mouse Wheel</kbd></td><td>Zoom view in/out</td></tr>
<tr><td><kbd>Shift + Click (background)</kbd></td><td>Start resizing canvas area</td></tr> <tr><td><kbd>Shift + Click (background)</kbd></td><td>Start resizing canvas area</td></tr>
<tr><td><kbd>Shift + Ctrl + Click</kbd></td><td>Start moving entire canvas</td></tr> <tr><td><kbd>Shift + Ctrl + Click</kbd></td><td>Start moving entire canvas</td></tr>
<tr><td><kbd>Shift + S + Left Click</kbd></td><td>Draw custom shape for output area</td></tr>
<tr><td><kbd>Single Click (background)</kbd></td><td>Deselect all layers</td></tr> <tr><td><kbd>Single Click (background)</kbd></td><td>Deselect all layers</td></tr>
<tr><td><kbd>Esc</kbd></td><td>Close fullscreen editor mode</td></tr>
</table> </table>
<h4>Clipboard & I/O</h4> <h4>Clipboard & I/O</h4>

View File

@@ -799,6 +799,9 @@ async function createCanvasWidget(node: ComfyNode, widget: any, app: ComfyApp):
openEditorBtn.textContent = "⛶"; openEditorBtn.textContent = "⛶";
openEditorBtn.title = "Open in Editor"; openEditorBtn.title = "Open in Editor";
// Remove ESC key listener when editor closes
document.removeEventListener('keydown', handleEscKey);
setTimeout(() => { setTimeout(() => {
canvas.render(); canvas.render();
if (node.onResize) { if (node.onResize) {
@@ -807,6 +810,16 @@ async function createCanvasWidget(node: ComfyNode, widget: any, app: ComfyApp):
}, 0); }, 0);
}; };
// ESC key handler for closing fullscreen editor
const handleEscKey = (e: KeyboardEvent) => {
if (e.key === 'Escape' && isEditorOpen) {
e.preventDefault();
e.stopPropagation();
closeEditor();
log.info("Fullscreen editor closed via ESC key");
}
};
openEditorBtn.onclick = () => { openEditorBtn.onclick = () => {
if (isEditorOpen) { if (isEditorOpen) {
closeEditor(); closeEditor();
@@ -828,7 +841,10 @@ async function createCanvasWidget(node: ComfyNode, widget: any, app: ComfyApp):
isEditorOpen = true; isEditorOpen = true;
openEditorBtn.textContent = "X"; openEditorBtn.textContent = "X";
openEditorBtn.title = "Close Editor"; openEditorBtn.title = "Close Editor (ESC)";
// Add ESC key listener when editor opens
document.addEventListener('keydown', handleEscKey);
setTimeout(() => { setTimeout(() => {
canvas.render(); canvas.render();

View File

@@ -4,7 +4,9 @@
<tr><td><kbd>Mouse Wheel</kbd></td><td>Zoom view in/out</td></tr> <tr><td><kbd>Mouse Wheel</kbd></td><td>Zoom view in/out</td></tr>
<tr><td><kbd>Shift + Click (background)</kbd></td><td>Start resizing canvas area</td></tr> <tr><td><kbd>Shift + Click (background)</kbd></td><td>Start resizing canvas area</td></tr>
<tr><td><kbd>Shift + Ctrl + Click</kbd></td><td>Start moving entire canvas</td></tr> <tr><td><kbd>Shift + Ctrl + Click</kbd></td><td>Start moving entire canvas</td></tr>
<tr><td><kbd>Shift + S + Left Click</kbd></td><td>Draw custom shape for output area</td></tr>
<tr><td><kbd>Single Click (background)</kbd></td><td>Deselect all layers</td></tr> <tr><td><kbd>Single Click (background)</kbd></td><td>Deselect all layers</td></tr>
<tr><td><kbd>Esc</kbd></td><td>Close fullscreen editor mode</td></tr>
</table> </table>
<h4>Clipboard & I/O</h4> <h4>Clipboard & I/O</h4>