Allow creating events with ranged selections on touchscreens, using longpress + multitouch and visual selection range indication
Updated scope/problem statement on version 43+ by @jfft:
On touchscreens, it is currently impossible to do a "ranged selection" to create a multi-day or multi-hours event. In the current GTK4 version of GNOME Calendar, touching and dragging empty cells with a touchscreen (not a mouse) causes the view to scroll, which makes a lot of sense.
While not strictly necessary (even Google Calendar doesn't implement ranged selections on Android!) as users can use the event editing dialog to set the durations, it would be neat to implement "if we can".
For this feature to be feasible, we would need the UX/implementation to not conflict with the ability to scroll/pan in the future infinite scroll views (see #603) and the current behavior (#183 (closed)), nor the ability to "grab" and move events on touchscreens using long presses (issue #854).
I thought of two possible approaches from a gestures standpoint:
- "Doubletap-and-drag": @carlosg told me that this is not implemented in GTK, and that it is generally a bad approach to take in terms of touch UX
- Relying on multitouch: instead of dragging at all, require the user to do a long press in an empty cell area (not onto an existing event, as that would be #854), and simultaneously use a second finger to "tap" and set the other end of the range. If the device doesn't support multitouch, well, tough luck, users can always use the full event editor dialog.
Then, once a range is active, GNOME Calendar could highlight it with the standard selection color, show the event creation popover, and any event created from that range would then take that range into account.
Original (outdated) description on version 42 by @azmeuk:
Selection on touchscreens is functional: users can press a start date, swipe, and release their finger on the end date. Then the selected period appears colored.
However, until they released their finger, users have no idea of what is going on, as there is no visual indication of the ongoing selection.
I suggest painting the selected period from the moment a finger presses the screen (and not when it releases).