Optimizing open shortcuts container lookep
findviewById does a DFS, inseat only looking at the first level children
Change-Id: Idc028a56648ca026c6022425e3a6e7453fa91986
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 73cd800..0571787 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -3128,7 +3128,15 @@
* @return The open shortcuts container, or null if there is none
*/
public DeepShortcutsContainer getOpenShortcutsContainer() {
- return (DeepShortcutsContainer) mDragLayer.findViewById(R.id.deep_shortcuts_container);
+ // Iterate in reverse order. Shortcuts container is added later to the dragLayer,
+ // and will be one of the last views.
+ for (int i = mDragLayer.getChildCount() - 1; i >= 0; i--) {
+ View child = mDragLayer.getChildAt(i);
+ if (child instanceof DeepShortcutsContainer) {
+ return (DeepShortcutsContainer) child;
+ }
+ }
+ return null;
}
@Override
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 75d4a8d..7d7324d 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -532,8 +532,9 @@
*/
public Folder getOpenFolder() {
DragLayer dragLayer = mLauncher.getDragLayer();
- int count = dragLayer.getChildCount();
- for (int i = 0; i < count; i++) {
+ // Iterate in reverse order. Folder 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 Folder) {
Folder folder = (Folder) child;