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

Commit a82a7dc2 authored by Jon Miranda's avatar Jon Miranda
Browse files

Clear all DragView in onResume

- Multiple users reports view getting stuck on screen. This CL
  clears all DragView when user leaves launcher.
- Moved to onResume to not interfere with start up time,
  and also aligned with when we remove AbstractFloatingView.
- Root cause still undetermined, but happens enough that it warrants
  a temp fix.

Bug: 162636845
Test: drag and drop configurable widget
      (widget that gets dropped then opens up a
       configuration activity)
Change-Id: I532b5274a1308c53f67c23c5c8ca07f2b7f9802c
parent 0e2b6220
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1169,6 +1169,7 @@ public class Launcher extends StatefulActivity<LauncherState>
        }

        AbstractFloatingView.closeAllOpenViewsExcept(this, false, TYPE_REBIND_SAFE);
        DragView.removeAllViews(this);
        TraceHelper.INSTANCE.endSection(traceToken);
    }

+15 −0
Original line number Diff line number Diff line
@@ -578,4 +578,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);
            }
        }
    }
}