dnd: Immediately start drag done by pointer devices
Unlike touch screens, pointer devices (e.g. cursor, touchpad) are basically never used to switch app grid pages, which is the main use case for the drag threshold. This point was recently raised as design feedback. Immediately start drags when using pointer devices. See https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3802#note_1124701 Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4287 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1866>
This commit is contained in:
parent
e89c6179af
commit
5339b1e6a2
@ -508,9 +508,14 @@ var _Draggable = class _Draggable {
|
|||||||
if (!currentDraggable &&
|
if (!currentDraggable &&
|
||||||
(Math.abs(stageX - this._dragStartX) > threshold ||
|
(Math.abs(stageX - this._dragStartX) > threshold ||
|
||||||
Math.abs(stageY - this._dragStartY) > threshold)) {
|
Math.abs(stageY - this._dragStartY) > threshold)) {
|
||||||
|
const deviceType = event.get_source_device().get_device_type();
|
||||||
|
const isPointerOrTouchpad =
|
||||||
|
deviceType === Clutter.InputDeviceType.POINTER_DEVICE ||
|
||||||
|
deviceType === Clutter.InputDeviceType.TOUCHPAD_DEVICE;
|
||||||
const ellapsedTime = event.get_time() - this._dragStartTime;
|
const ellapsedTime = event.get_time() - this._dragStartTime;
|
||||||
|
|
||||||
if (ellapsedTime > this._dragTimeoutThreshold) {
|
// Pointer devices (e.g. mouse) start the drag immediately
|
||||||
|
if (isPointerOrTouchpad || ellapsedTime > this._dragTimeoutThreshold) {
|
||||||
this.startDrag(stageX, stageY, event.get_time(), this._touchSequence, event.get_device());
|
this.startDrag(stageX, stageY, event.get_time(), this._touchSequence, event.get_device());
|
||||||
this._updateDragPosition(event);
|
this._updateDragPosition(event);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user