commit b65f3d0eee765000421795ed0639b423392c49ec
parent cac8cc24ee7417123ed44393f30da8de54cb1cc7
Author: Jacob R. Edwards <jacob@jacobedwards.org>
Date: Mon, 14 Oct 2024 11:44:24 -0700
Combine all key handlers into one
Diffstat:
1 file changed, 19 insertions(+), 27 deletions(-)
diff --git a/files/floorplans/floorplan/main.js b/files/floorplans/floorplan/main.js
@@ -36,7 +36,7 @@ const modes = {
pointerdown: [selectionHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
pointermove: [precisePointHandler, furnitureHandler],
pointerup: [precisePointHandler, precisePointMapHandler, furnitureHandler],
- keydown: [controlKeyHandler, zoomKeysHandler, undoRedoHandler],
+ keydown: [keyHandler],
dblclick: [precisePointMapHandler, furnitureHandler],
select: selectHandler
}
@@ -434,22 +434,29 @@ function selectionHandler(event, editor) {
escape()
}
-function controlKeyHandler(ev, editor) {
- if (ev.type === "keydown" && ev.key === "Escape") {
+function keyHandler(ev, editor) {
+ if (ev.key === "Escape") {
escape()
- }
-}
-
-function zoomKeysHandler(event, editor) {
- if (event.key === "+") {
+ } else if (ev.key === "+") {
editor.draw.zoom(editor.draw.zoom() * 1.25)
- } else if (event.key === "-" || event.key === "_") {
+ editor.updateGrid()
+ } else if (ev.key === "-" || ev.key === "_") {
editor.draw.zoom(editor.draw.zoom() / 1.25)
+ editor.updateGrid()
} else {
- return
+ if (!event.ctrlKey) {
+ return
+ }
+ if (event.key === "z") {
+ editor.undo()
+ } else if (event.key === "y") {
+ editor.redo()
+ } else {
+ return
+ }
}
- editor.updateGrid()
- handled(event)
+
+ handled(ev)
}
function radioMenu(editor, key, values, initial, options) {
@@ -517,21 +524,6 @@ function radioInputs(key, values, initial) {
return radios
}
-// keydown
-function undoRedoHandler(event, editor) {
- if (!event.ctrlKey) {
- return
- }
- if (event.key === "z") {
- editor.undo()
- } else if (event.key === "y") {
- editor.redo()
- } else {
- return
- }
- handled(event)
-}
-
// pointerdown, pointermove, pointerup
function precisePointHandler(event, editor, state) {
const init = function() {