dnd: Don't override fixed position if actor had no fixed position before
Properly handle drag actors which are not allocated using a fixed position and disable the fixed position we were using to move the actor around before we reparent it again to its original parent. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1310
This commit is contained in:
parent
0db41a3773
commit
b2eeda9b46
10
js/ui/dnd.js
10
js/ui/dnd.js
@ -375,8 +375,9 @@ var _Draggable = class _Draggable {
|
||||
|
||||
this._dragActorSource = undefined;
|
||||
this._dragOrigParent = this.actor.get_parent();
|
||||
this._dragOrigX = this._dragActor.x;
|
||||
this._dragOrigY = this._dragActor.y;
|
||||
this._dragActorHadFixedPos = this._dragActor.fixed_position_set;
|
||||
this._dragOrigX = this._dragActor.allocation.x1;
|
||||
this._dragOrigY = this._dragActor.allocation.y1;
|
||||
this._dragOrigScale = this._dragActor.scale_x;
|
||||
|
||||
// Set the actor's scale such that it will keep the same
|
||||
@ -718,7 +719,10 @@ var _Draggable = class _Draggable {
|
||||
Main.uiGroup.remove_child(this._dragActor);
|
||||
this._dragOrigParent.add_actor(this._dragActor);
|
||||
dragActor.set_scale(this._dragOrigScale, this._dragOrigScale);
|
||||
dragActor.set_position(this._dragOrigX, this._dragOrigY);
|
||||
if (this._dragActorHadFixedPos)
|
||||
dragActor.set_position(this._dragOrigX, this._dragOrigY);
|
||||
else
|
||||
dragActor.fixed_position_set = false;
|
||||
} else {
|
||||
dragActor.destroy();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user