From 8e24ac6b261c7fce4ab72ad2903325405bc10564 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Mon, 25 May 2020 16:00:23 -0300 Subject: [PATCH] appDisplay: Ignore dragging over leeways The leeways are parts of the icon that ignore incoming drag events. This is how IconGrid and IconGridLayout treat it, and this is how the icons should treat themselves too. Make AppIcon ignore dragging over the left and right leeways. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284 --- js/ui/appDisplay.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index eadbe9bb4..6ae3f0eb5 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -2212,24 +2212,37 @@ var AppIcon = GObject.registerClass({ return DND.DragMotionResult.CONTINUE; } - handleDragOver(source) { + _withinLeeways(x) { + return x < IconGrid.LEFT_DIVIDER_LEEWAY || + x > this.width - IconGrid.RIGHT_DIVIDER_LEEWAY; + } + + handleDragOver(source, _actor, x) { if (source == this) return DND.DragMotionResult.NO_DROP; if (!this._canAccept(source)) return DND.DragMotionResult.CONTINUE; + if (this._withinLeeways(x)) { + this._setHoveringByDnd(false); + return DND.DragMotionResult.CONTINUE; + } + this._setHoveringByDnd(true); return DND.DragMotionResult.MOVE_DROP; } - acceptDrop(source) { + acceptDrop(source, _actor, x) { this._setHoveringByDnd(false); if (!this._canAccept(source)) return false; + if (this._withinLeeways(x)) + return false; + let view = _getViewFromIcon(this); let apps = [this.id, source.id];