diff options
Diffstat (limited to 'src/com/android/launcher3/dragndrop/PinItemDragListener.java')
-rw-r--r-- | src/com/android/launcher3/dragndrop/PinItemDragListener.java | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/com/android/launcher3/dragndrop/PinItemDragListener.java b/src/com/android/launcher3/dragndrop/PinItemDragListener.java index dfc65660e..4b402f4ac 100644 --- a/src/com/android/launcher3/dragndrop/PinItemDragListener.java +++ b/src/com/android/launcher3/dragndrop/PinItemDragListener.java @@ -18,6 +18,7 @@ package com.android.launcher3.dragndrop; import android.appwidget.AppWidgetManager; import android.content.ClipDescription; +import android.content.Intent; import android.graphics.Point; import android.graphics.Rect; import android.os.Bundle; @@ -245,6 +246,13 @@ public class PinItemDragListener } private void postCleanup() { + if (mLauncher != null) { + // Remove any drag params from the launcher intent since the drag operation is complete. + Intent newIntent = new Intent(mLauncher.getIntent()); + newIntent.removeExtra(EXTRA_PIN_ITEM_DRAG_LISTENER); + mLauncher.setIntent(newIntent); + } + new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { @@ -268,6 +276,21 @@ public class PinItemDragListener return null; } + public static boolean handleDragRequest(Launcher launcher, Intent intent) { + if (intent == null || !Intent.ACTION_MAIN.equals(intent.getAction())) { + return false; + } + Parcelable dragExtra = intent.getParcelableExtra(EXTRA_PIN_ITEM_DRAG_LISTENER); + if (dragExtra instanceof PinItemDragListener) { + PinItemDragListener dragListener = (PinItemDragListener) dragExtra; + dragListener.setLauncher(launcher); + + launcher.getDragLayer().setOnDragListener(dragListener); + return true; + } + return false; + } + public static final Parcelable.Creator<PinItemDragListener> CREATOR = new Parcelable.Creator<PinItemDragListener>() { public PinItemDragListener createFromParcel(Parcel source) { |