summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJon Miranda <jonmiranda@google.com>2019-07-02 14:35:11 -0700
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-07-18 04:10:15 +0000
commit0473dcee070b9ea827d32bfd998a0c7cc19a0312 (patch)
tree465c69a388bbfa340cdcab5a08bf7576dde666d4 /src
parent6a2718b24144d53908ff5f9e565a3c642762bbd7 (diff)
downloadandroid_packages_apps_Trebuchet-0473dcee070b9ea827d32bfd998a0c7cc19a0312.tar.gz
android_packages_apps_Trebuchet-0473dcee070b9ea827d32bfd998a0c7cc19a0312.tar.bz2
android_packages_apps_Trebuchet-0473dcee070b9ea827d32bfd998a0c7cc19a0312.zip
Fix bug where icon is no present during app close animation.
* WindowTransformSwipeHandler closes all AbstractFloatingViews, including ListenerView, which results in FloatingIconView getting removed. * In IconLoadResult.onIconLoaded, we remove the check for isIconLoaded since its not needed. This was also causing a race condition since isIconLoaded is not set to true until after we tell onIconLoaded to run. * In BaseDragLayer, we have a delay before checking if the view is open and then closing the floating view if true. This caused issues since we reycle the view. Now we check if the view is open before running the delay to call close. Bug: 136044361 Change-Id: I7442a589a62c3cdf90b70d146e0ecf3e4300ddf7 (cherry picked from commit 826cdcd32fa91afe932c8c07be1a4e92a6f73301) (cherry picked from commit bc2782647803d2a8942311f917d66a91bdc24d8d)
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/views/BaseDragLayer.java10
-rw-r--r--src/com/android/launcher3/views/FloatingIconView.java10
2 files changed, 9 insertions, 11 deletions
diff --git a/src/com/android/launcher3/views/BaseDragLayer.java b/src/com/android/launcher3/views/BaseDragLayer.java
index c1ba78050..15f272470 100644
--- a/src/com/android/launcher3/views/BaseDragLayer.java
+++ b/src/com/android/launcher3/views/BaseDragLayer.java
@@ -221,12 +221,10 @@ public abstract class BaseDragLayer<T extends Context & ActivityContext>
if (child instanceof AbstractFloatingView) {
// Handles the case where the view is removed without being properly closed.
// This can happen if something goes wrong during a state change/transition.
- postDelayed(() -> {
- AbstractFloatingView floatingView = (AbstractFloatingView) child;
- if (floatingView.isOpen()) {
- floatingView.close(false);
- }
- }, SINGLE_FRAME_MS);
+ AbstractFloatingView floatingView = (AbstractFloatingView) child;
+ if (floatingView.isOpen()) {
+ postDelayed(() -> floatingView.close(false), SINGLE_FRAME_MS);
+ }
}
}
diff --git a/src/com/android/launcher3/views/FloatingIconView.java b/src/com/android/launcher3/views/FloatingIconView.java
index b6c4fedac..ab4b576bf 100644
--- a/src/com/android/launcher3/views/FloatingIconView.java
+++ b/src/com/android/launcher3/views/FloatingIconView.java
@@ -574,17 +574,17 @@ public class FloatingIconView extends View implements
if (cancellationSignal.isCanceled()) {
return;
}
- if (mIconLoadResult.isIconLoaded) {
- setIcon(originalView, mIconLoadResult.drawable, mIconLoadResult.badge,
- mIconLoadResult.iconOffset);
- }
+
+ setIcon(originalView, mIconLoadResult.drawable, mIconLoadResult.badge,
+ mIconLoadResult.iconOffset);
+
// Delay swapping views until the icon is loaded to prevent a flash.
setVisibility(VISIBLE);
originalView.setVisibility(INVISIBLE);
};
+ mLoadIconSignal = cancellationSignal;
}
}
- mLoadIconSignal = cancellationSignal;
}
private void setBackgroundDrawableBounds(float scale) {