From: Tony Wickham Date: Thu, 11 Feb 2016 00:18:15 +0000 (-0800) Subject: Clears the widget resize frame when a directional key is pressed. X-Git-Tag: android-x86-7.1-r1~166^2~29^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=71255bb04fd2af3f27364f1545edc2eec27d27ce;p=android-x86%2Fpackages-apps-Launcher3.git Clears the widget resize frame when a directional key is pressed. Also gives focus to the corresponding widget host view in this case. Bug: 27130066 Change-Id: I0a564aa7c509450cd1b9cf259c0a009c68ce3e3b --- diff --git a/src/com/android/launcher3/AppWidgetResizeFrame.java b/src/com/android/launcher3/AppWidgetResizeFrame.java index d86853608..6b7ff886c 100644 --- a/src/com/android/launcher3/AppWidgetResizeFrame.java +++ b/src/com/android/launcher3/AppWidgetResizeFrame.java @@ -11,12 +11,15 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Rect; import android.view.Gravity; +import android.view.KeyEvent; +import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import com.android.launcher3.accessibility.DragViewStateAnnouncer; +import com.android.launcher3.util.FocusLogic; -public class AppWidgetResizeFrame extends FrameLayout { +public class AppWidgetResizeFrame extends FrameLayout implements View.OnKeyListener { private static final int SNAP_DURATION = 150; private static final float DIMMED_HANDLE_ALPHA = 0f; private static final float RESIZE_THRESHOLD = 0.66f; @@ -143,6 +146,8 @@ public class AppWidgetResizeFrame extends FrameLayout { // cells (same if not resized, or different) will be marked as occupied when the resize // frame is dismissed. mCellLayout.markCellsAsUnoccupiedForView(mWidgetView); + + setOnKeyListener(this); } public boolean beginResizeIfPointInRegion(int x, int y) { @@ -474,5 +479,19 @@ public class AppWidgetResizeFrame extends FrameLayout { set.setDuration(SNAP_DURATION); set.start(); } + + setFocusableInTouchMode(true); + requestFocus(); + } + + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) { + // Clear the frame and give focus to the widget host view when a directional key is pressed. + if (FocusLogic.shouldConsume(keyCode)) { + mDragLayer.clearAllResizeFrames(); + mWidgetView.requestFocus(); + return true; + } + return false; } }