mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 03:08:19 +00:00
Merge "Fixing multiwindow drag operation during with rotation." into ub-launcher3-dorval
This commit is contained in:
committed by
Android (Google) Code Review
commit
1188b89dc4
@@ -49,7 +49,6 @@ import android.os.AsyncTask;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Parcelable;
|
||||
import android.os.Process;
|
||||
import android.os.StrictMode;
|
||||
import android.os.SystemClock;
|
||||
@@ -444,6 +443,11 @@ public class Launcher extends BaseActivity
|
||||
mSharedPrefs.registerOnSharedPreferenceChangeListener(mRotationPrefChangeHandler);
|
||||
}
|
||||
|
||||
if (PinItemDragListener.handleDragRequest(this, getIntent())) {
|
||||
// Temporarily enable the rotation
|
||||
mRotationEnabled = true;
|
||||
}
|
||||
|
||||
// On large interfaces, or on devices that a user has specifically enabled screen rotation,
|
||||
// we want the screen to auto-rotate based on the current orientation
|
||||
setOrientation();
|
||||
@@ -1769,15 +1773,8 @@ public class Launcher extends BaseActivity
|
||||
if (mLauncherCallbacks != null) {
|
||||
mLauncherCallbacks.onHomeIntent();
|
||||
}
|
||||
|
||||
Parcelable dragExtra = intent
|
||||
.getParcelableExtra(PinItemDragListener.EXTRA_PIN_ITEM_DRAG_LISTENER);
|
||||
if (dragExtra instanceof PinItemDragListener) {
|
||||
PinItemDragListener dragListener = (PinItemDragListener) dragExtra;
|
||||
dragListener.setLauncher(this);
|
||||
mDragLayer.setOnDragListener(dragListener);
|
||||
}
|
||||
}
|
||||
PinItemDragListener.handleDragRequest(this, intent);
|
||||
|
||||
if (mLauncherCallbacks != null) {
|
||||
mLauncherCallbacks.onNewIntent(intent);
|
||||
@@ -4099,22 +4096,16 @@ public class Launcher extends BaseActivity
|
||||
return ((Launcher) ((ContextWrapper) context).getBaseContext());
|
||||
}
|
||||
|
||||
private class RotationPrefChangeHandler implements OnSharedPreferenceChangeListener, Runnable {
|
||||
private class RotationPrefChangeHandler implements OnSharedPreferenceChangeListener {
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(
|
||||
SharedPreferences sharedPreferences, String key) {
|
||||
if (Utilities.ALLOW_ROTATION_PREFERENCE_KEY.equals(key)) {
|
||||
mRotationEnabled = Utilities.isAllowRotationPrefEnabled(getApplicationContext());
|
||||
if (!waitUntilResume(this, true)) {
|
||||
run();
|
||||
}
|
||||
// Finish this instance of the activity. When the activity is recreated,
|
||||
// it will initialize the rotation preference again.
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
setOrientation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import android.appwidget.AppWidgetManager;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipDescription;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.PointF;
|
||||
@@ -47,6 +48,7 @@ import com.android.launcher3.Launcher;
|
||||
import com.android.launcher3.LauncherAppState;
|
||||
import com.android.launcher3.LauncherAppWidgetProviderInfo;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.compat.AppWidgetManagerCompat;
|
||||
import com.android.launcher3.compat.PinItemRequestCompat;
|
||||
import com.android.launcher3.model.WidgetItem;
|
||||
@@ -148,6 +150,16 @@ public class AddItemActivity extends BaseActivity implements OnLongClickListener
|
||||
.setPackage(getPackageName())
|
||||
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
.putExtra(PinItemDragListener.EXTRA_PIN_ITEM_DRAG_LISTENER, listener);
|
||||
|
||||
if (!getResources().getBoolean(R.bool.allow_rotation) &&
|
||||
!Utilities.isAllowRotationPrefEnabled(this) &&
|
||||
(getResources().getConfiguration().orientation ==
|
||||
Configuration.ORIENTATION_LANDSCAPE && !isInMultiWindowMode())) {
|
||||
// If we are starting the drag in landscape even though home is locked in portrait,
|
||||
// restart the home activity to temporarily allow rotation.
|
||||
homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
}
|
||||
|
||||
startActivity(homeIntent,
|
||||
ActivityOptions.makeCustomAnimation(this, 0, android.R.anim.fade_out).toBundle());
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user