www.spaceplanner.app

Web client to the spaceplanner API
git clone git://jacobedwards.org/www.spaceplanner.app
Log | Files | Refs

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:
Mfiles/floorplans/floorplan/main.js | 15++++++++++-----
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)