Long-press an event block in the week or day timeline and drag it to another
time or day column; drag a chip in the month grid onto another date. The drop
runs through the edit screen's own write path, so recurring writes, reminders
and guests behave the same as a save.
Two provider traps the drag had to close:
- RRULE is written verbatim while DTSTART moves, so dragging a
FREQ=WEEKLY;BYDAY=MO occurrence to a Wednesday under "all events" left a
Wednesday anchor under a Monday rule and the series stayed put.
realignRecurrence re-derives BYDAY/BYMONTHDAY/BYMONTH, and refuses rules one
moved occurrence can't resolve (BYDAY=MO,WE, 2TH, BYSETPOS) — those may only
move the single occurrence.
- Nothing below the UI refuses a write, so allowsEventMove gates the gesture.
Not isEventTarget: a managed contact-mirror event is editable but must never
move.
The pickup is hand-rolled rather than detectDragGesturesAfterLongPress: during
the 500ms hold the block consumes nothing, so the scroll and page swipe claim at
touch slop and kill the press, and the stock detector also cancels as soon as the
finger leaves a block that may only be 10dp tall. Ours holds with a 6dp tolerance
and never cancels on leaving bounds.
Agenda is out of scope (list rows, no positioned blocks), as is
resize-by-edge-drag. Month drags don't auto-scroll or page yet.