summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2012-05-22 15:19:14 -0700
committerSvetoslav Ganov <svetoslavganov@google.com>2012-05-22 16:17:53 -0700
commit55d225d50e68b3ea629c45a53d6744b52e335134 (patch)
treefccd9ea6327a2c36434b3326eea225c5f143c832
parenta4ac83cc3b285780328a052a2d42646c1abf3d13 (diff)
downloadandroid_packages_apps_Trebuchet-55d225d50e68b3ea629c45a53d6744b52e335134.tar.gz
android_packages_apps_Trebuchet-55d225d50e68b3ea629c45a53d6744b52e335134.tar.bz2
android_packages_apps_Trebuchet-55d225d50e68b3ea629c45a53d6744b52e335134.zip
Cling allows touch explore and accessibility focus search behind it.
1. Touch exploration is performed through hover events and the cling has to consume them to prevent touch exploring content behind it to achieve modal window like behavior. 2. Since the cling should behave as a modal window, the accessibility focus search should not returning items behind the cling, so the focus search should use the cling as its root. bug:6538549 Change-Id: I8545b6ae3ac85a363cc371e1a608d55b9abd5de8
-rw-r--r--src/com/android/launcher2/Cling.java33
-rw-r--r--src/com/android/launcher2/Launcher.java1
2 files changed, 34 insertions, 0 deletions
diff --git a/src/com/android/launcher2/Cling.java b/src/com/android/launcher2/Cling.java
index d61b9883a..5cde0b447 100644
--- a/src/com/android/launcher2/Cling.java
+++ b/src/com/android/launcher2/Cling.java
@@ -28,6 +28,10 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
+import android.view.FocusFinder;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.accessibility.AccessibilityManager;
import android.widget.FrameLayout;
import com.android.launcher.R;
@@ -130,6 +134,35 @@ public class Cling extends FrameLayout {
}
@Override
+ public View findViewToTakeAccessibilityFocusFromHover(View child, View descendant) {
+ if (descendant.includeForAccessibility()) {
+ return descendant;
+ }
+ return null;
+ }
+
+ @Override
+ public View focusSearch(int direction) {
+ return this.focusSearch(null, direction);
+ }
+
+ @Override
+ public View focusSearch(View focused, int direction) {
+ return FocusFinder.getInstance().findNextFocus(this, focused, direction);
+ }
+
+ @Override
+ public boolean onHoverEvent(MotionEvent event) {
+ return (mDrawIdentifier.equals(WORKSPACE_PORTRAIT)
+ || mDrawIdentifier.equals(WORKSPACE_LANDSCAPE)
+ || mDrawIdentifier.equals(WORKSPACE_LARGE)
+ || mDrawIdentifier.equals(ALLAPPS_PORTRAIT)
+ || mDrawIdentifier.equals(ALLAPPS_LANDSCAPE)
+ || mDrawIdentifier.equals(ALLAPPS_LARGE)
+ || mDrawIdentifier.equals(WORKSPACE_CUSTOM));
+ }
+
+ @Override
public boolean onTouchEvent(android.view.MotionEvent event) {
if (mDrawIdentifier.equals(WORKSPACE_PORTRAIT) ||
mDrawIdentifier.equals(WORKSPACE_LANDSCAPE) ||
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index e6c25cbdc..87ca4c7c9 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -3466,6 +3466,7 @@ public final class Launcher extends Activity
cling.init(this, positionData);
cling.setVisibility(View.VISIBLE);
cling.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ cling.requestAccessibilityFocus();
if (animate) {
cling.buildLayer();
cling.setAlpha(0f);