[gnome-shell/gbsneto/custom-icon-positions: 30/35] appDisplay: Only handle DnD when mapped
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/gbsneto/custom-icon-positions: 30/35] appDisplay: Only handle DnD when mapped
- Date: Mon, 20 Jul 2020 16:15:19 +0000 (UTC)
commit 16a18f2ae758dfc42769bbe13fd2e24786148425
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Wed Jun 24 14:56:32 2020 -0300
appDisplay: Only handle DnD when mapped
Now that the DnD code is shared between AppDisplay and
FolderView, we hit an unexpected problem: FolderView is
handling drag events even when the folder dialog is hidden.
As a side effect, this spams the journal with warnings.
Only handle drag events when mapped. On unmap, disable
the view's drag monitor, and disconnect from all drag
events.
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284
js/ui/appDisplay.js | 64 +++++++++++++++++++++++++++++++----------------------
1 file changed, 37 insertions(+), 27 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 709f2552ad..6b65c1436a 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -197,39 +197,16 @@ var BaseAppView = GObject.registerClass({
this._delayedMoveId = 0;
this._targetDropPosition = null;
- this._dragBeginId =
- Main.overview.connect('item-drag-begin', this._onDragBegin.bind(this));
- this._dragEndId =
- Main.overview.connect('item-drag-end', this._onDragEnd.bind(this));
- this._dragCancelledId =
- Main.overview.connect('item-drag-cancelled', this._onDragCancelled.bind(this));
+ this._dragBeginId = 0;
+ this._dragEndId = 0;
+ this._dragCancelledId = 0;
this.connect('destroy', this._onDestroy.bind(this));
}
_onDestroy() {
this._removeDelayedMove();
-
- if (this._dragBeginId > 0) {
- Main.overview.disconnect(this._dragBeginId);
- this._dragBeginId = 0;
- }
-
- if (this._dragEndId > 0) {
- Main.overview.disconnect(this._dragEndId);
- this._dragEndId = 0;
- }
-
- if (this._dragCancelledId > 0) {
- Main.overview.disconnect(this._dragCancelledId);
- this._dragCancelledId = 0;
- }
-
- if (this._dragMonitor) {
- DND.removeDragMonitor(this._dragMonitor);
- this._dragMonitor = null;
- }
-
+ this._disconnectDnD();
}
_createGrid() {
@@ -316,6 +293,37 @@ var BaseAppView = GObject.registerClass({
});
}
+ _connectDnD() {
+ this._dragBeginId =
+ Main.overview.connect('item-drag-begin', this._onDragBegin.bind(this));
+ this._dragEndId =
+ Main.overview.connect('item-drag-end', this._onDragEnd.bind(this));
+ this._dragCancelledId =
+ Main.overview.connect('item-drag-cancelled', this._onDragCancelled.bind(this));
+ }
+
+ _disconnectDnD() {
+ if (this._dragBeginId > 0) {
+ Main.overview.disconnect(this._dragBeginId);
+ this._dragBeginId = 0;
+ }
+
+ if (this._dragEndId > 0) {
+ Main.overview.disconnect(this._dragEndId);
+ this._dragEndId = 0;
+ }
+
+ if (this._dragCancelledId > 0) {
+ Main.overview.disconnect(this._dragCancelledId);
+ this._dragCancelledId = 0;
+ }
+
+ if (this._dragMonitor) {
+ DND.removeDragMonitor(this._dragMonitor);
+ this._dragMonitor = null;
+ }
+ }
+
_maybeMoveItem(dragEvent) {
const [success, x, y] =
this._grid.transform_stage_point(dragEvent.x, dragEvent.y);
@@ -726,12 +734,14 @@ var BaseAppView = GObject.registerClass({
vfunc_map() {
this._swipeTracker.enabled = true;
+ this._connectDnD();
super.vfunc_map();
}
vfunc_unmap() {
this._swipeTracker.enabled = false;
this._clearAnimateLater();
+ this._disconnectDnD();
super.vfunc_unmap();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]