commit dd13774c6e390d90c45e07894f642689a25db2ec
parent 9e4c9737ea25f3552b3efaf6a6076a950f94a65a
Author: Jacob R. Edwards <jacob@jacobedwards.org>
Date: Fri, 18 Oct 2024 20:51:11 -0700
Allow box selection with shift key in edit mode
While this only works on devices which you can press the shift key
on with a pointerdown event, it's still available to those devices
using the other method. For devices where you can do this, it's
incredibly nice.
Diffstat:
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/files/floorplans/floorplan/main.js b/files/floorplans/floorplan/main.js
@@ -35,10 +35,10 @@ const modes = {
points: true,
handlers: {
contextmenu: preventDefaultHandler,
- pointerdown: [singlePointerHandler, selectionHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
- pointermove: [singlePointerHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
- pointerup: [singlePointerHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
- pointercancel: [singlePointerHandler, selectionHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
+ pointerdown: [singlePointerHandler, selectionHandler, selectionBoxHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
+ pointermove: [singlePointerHandler, selectionBoxHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
+ pointerup: [singlePointerHandler, selectionBoxHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
+ pointercancel: [singlePointerHandler, selectionBoxHandler, precisePointHandler, precisePointMapHandler, furnitureHandler],
keydown: [keyHandler],
select: selectHandler,
reselect: selectHandler
@@ -588,7 +588,8 @@ function selectionBoxHandler(ev, editor, state) {
if (ev.type === "pointermove") {
return true
}
- return !primaryPointer(ev)
+ let p = primaryPointer(ev)
+ return state.shiftStart ? p : !p
} else {
return primaryPointer(ev)
}
@@ -599,6 +600,10 @@ function selectionBoxHandler(ev, editor, state) {
return
}
+ if (ev.type === "pointerdown" && ev.shiftKey) {
+ state.shiftStart = true
+ }
+
if (ev.type === "pointerdown" && useEv(ev)) {
handled(ev)
let p = editor.draw.point(ev.clientX, ev.clientY)