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
@ -375,8 +375,9 @@ var _Draggable = class _Draggable {
|
|||||||
|
|
||||||
this._dragActorSource = undefined;
|
this._dragActorSource = undefined;
|
||||||
this._dragOrigParent = this.actor.get_parent();
|
this._dragOrigParent = this.actor.get_parent();
|
||||||
this._dragOrigX = this._dragActor.x;
|
this._dragActorHadFixedPos = this._dragActor.fixed_position_set;
|
||||||
this._dragOrigY = this._dragActor.y;
|
this._dragOrigX = this._dragActor.allocation.x1;
|
||||||
|
this._dragOrigY = this._dragActor.allocation.y1;
|
||||||
this._dragOrigScale = this._dragActor.scale_x;
|
this._dragOrigScale = this._dragActor.scale_x;
|
||||||
|
|
||||||
// Set the actor's scale such that it will keep the same
|
// 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);
|
Main.uiGroup.remove_child(this._dragActor);
|
||||||
this._dragOrigParent.add_actor(this._dragActor);
|
this._dragOrigParent.add_actor(this._dragActor);
|
||||||
dragActor.set_scale(this._dragOrigScale, this._dragOrigScale);
|
dragActor.set_scale(this._dragOrigScale, this._dragOrigScale);
|
||||||
|
if (this._dragActorHadFixedPos)
|
||||||
dragActor.set_position(this._dragOrigX, this._dragOrigY);
|
dragActor.set_position(this._dragOrigX, this._dragOrigY);
|
||||||
|
else
|
||||||
|
dragActor.fixed_position_set = false;
|
||||||
} else {
|
} else {
|
||||||
dragActor.destroy();
|
dragActor.destroy();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user