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

Commit 14d6771a authored by Jon Miranda's avatar Jon Miranda
Browse files

Clear all DragView in onSaveInstanceState

Multiple users reports view getting stuck on screen. This CL
clears all DragView when user leaves launcher.

Root cause still undetermined, but happens enough that it warrants
a temp fix.

Bug: 162636845
Test: manual
Change-Id: I532b5274a1308c53f67c23c5c8ca07f2b7f9802c
parent ed05712f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1632,6 +1632,8 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
        AbstractFloatingView.closeOpenViews(this, false, TYPE_ALL & ~TYPE_REBIND_SAFE);
        finishAutoCancelActionMode();

        DragView.removeAllViews(this);

        if (mPendingRequestArgs != null) {
            outState.putParcelable(RUNTIME_STATE_PENDING_REQUEST_ARGS, mPendingRequestArgs);
        }
+15 −0
Original line number Diff line number Diff line
@@ -565,4 +565,19 @@ public abstract class DragView<T extends Context & ActivityContext> extends Fram
        iv.setImageDrawable(drawable);
        return iv;
    }

    /**
     * Removes any stray DragView from the DragLayer.
     */
    public static void removeAllViews(ActivityContext activity) {
        BaseDragLayer dragLayer = activity.getDragLayer();
        // Iterate in reverse order. DragView is added later to the dragLayer,
        // and will be one of the last views.
        for (int i = dragLayer.getChildCount() - 1; i >= 0; i--) {
            View child = dragLayer.getChildAt(i);
            if (child instanceof DragView) {
                dragLayer.removeView(child);
            }
        }
    }
}