Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ab4bd13 authored by chaviw's avatar chaviw
Browse files

Remove layer from previous relative list.

If a layer is getting a new zOrderRelative, it needs to remove itself
from its previous zOrderRelative's list, if it had one.

Test: Open app that opens the ime. Switch to another app that opens the
ime. Relative layers are updated properly.

Change-Id: I54fbfc0f926d39a1630f3b2faed04fbf428b4fe3
parent bf09a05e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1868,6 +1868,10 @@ bool Layer::setRelativeLayer(const sp<IBinder>& relativeToHandle, int32_t z) {
    mCurrentState.modified = true;
    mCurrentState.z = z;

    auto oldZOrderRelativeOf = mCurrentState.zOrderRelativeOf.promote();
    if (oldZOrderRelativeOf != nullptr) {
        oldZOrderRelativeOf->removeZOrderRelative(this);
    }
    mCurrentState.zOrderRelativeOf = relative;
    relative->addZOrderRelative(this);