You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
spaces: the drags, the pinch and the menus a phone could not reach
Four of this app's gestures were mouse-only, and three of them were absent on a
touch screen rather than merely awkward: reordering a block, nesting a page and
moving an issue card are HTML5 drag-and-drop, which never fires from a finger,
and a canvas card's grip listened for mousedown. Nesting a page had no fallback
at all.
New spaces/src/touch.ts. Press-and-hold synthesises the dnd events the existing
handlers already listen for — a real DataTransfer, dragstart on the source,
dragover/dragleave/drop on whatever is under the finger — so every drop rule and
every highlight in editor.ts is reached unchanged, and a fourth draggable thing
gets touch support with no edit there. The canvas grip is replayed as the mouse
stream it already handles. A finger that moves before the hold is scrolling and
nothing is preventDefault-ed, so scrolling is untouched. Holding at the edge of
a scroller drags the view along, because at 390px one of the board's six columns
is on screen.
Also measured on the built shell at 390x800 and fixed:
- The Insert menu laid out 19 items 1000px tall with five below the viewport and
no way to scroll; the More menu lost its last five the same way. Both cap and
scroll now. Not a phone-only bug: the last Insert item was off an 860px laptop
window too.
- The graph could be panned by one finger and never zoomed - wheel was the only
zoom. Two fingers zoom about the point between them; the second finger also
ends the one-finger drag it interrupts.
- A board or wide table that ran out of content handed the rest of a sideways
swipe to the browser's back gesture. Contained.
- "Wide" is 80% of the window, which left a 257px column inside a 390px phone.
It takes the whole width below 850px and is byte-identical above it - measured
at 1400px, 872px before and after.
- The sharing button was 35x29 where every other bar control is 40x40 on a
coarse pointer.
Desktop is untouched by construction: everything added is a touch listener, a
coarse-pointer rule, or a class that only exists during a touch drag. No new
strings, so no catalog work.
0 commit comments