summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2013-04-12 15:10:52 -0700
committerWinson Chung <winsonc@google.com>2013-04-12 15:15:07 -0700
commit83ca480941b3dd635b62347008fc8d7859d82002 (patch)
treec1b0c07eb89b290334d64b758a316b6719b50fad /src
parentb68e03a83cfc8e59c0c93d070c5e3cc13cc2996b (diff)
downloadandroid_packages_apps_Trebuchet-83ca480941b3dd635b62347008fc8d7859d82002.tar.gz
android_packages_apps_Trebuchet-83ca480941b3dd635b62347008fc8d7859d82002.tar.bz2
android_packages_apps_Trebuchet-83ca480941b3dd635b62347008fc8d7859d82002.zip
Fixing issue where accessibility was reporting items behind an open folder. (Bug 8331717)
Change-Id: Ibaec4144ee911c6d784737cf56a4fc8a1dad2886
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher2/DragLayer.java26
-rw-r--r--src/com/android/launcher2/Launcher.java9
2 files changed, 35 insertions, 0 deletions
diff --git a/src/com/android/launcher2/DragLayer.java b/src/com/android/launcher2/DragLayer.java
index a819cb7a6..fccc1a604 100644
--- a/src/com/android/launcher2/DragLayer.java
+++ b/src/com/android/launcher2/DragLayer.java
@@ -34,6 +34,7 @@ import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
+import android.view.accessibility.AccessibilityNodeInfo;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.Interpolator;
import android.widget.FrameLayout;
@@ -222,6 +223,31 @@ public class DragLayer extends FrameLayout implements ViewGroup.OnHierarchyChang
}
@Override
+ public boolean onRequestSendAccessibilityEvent(View child, AccessibilityEvent event) {
+ Folder currentFolder = mLauncher.getWorkspace().getOpenFolder();
+ if (currentFolder != null) {
+ if (child == currentFolder) {
+ return super.onRequestSendAccessibilityEvent(child, event);
+ }
+ // Skip propagating onRequestSendAccessibilityEvent all for other children
+ // when a folder is open
+ return false;
+ }
+ return super.onRequestSendAccessibilityEvent(child, event);
+ }
+
+ @Override
+ public void addChildrenForAccessibility(ArrayList<View> childrenForAccessibility) {
+ Folder currentFolder = mLauncher.getWorkspace().getOpenFolder();
+ if (currentFolder != null) {
+ // Only add the folder as a child for accessibility when it is open
+ childrenForAccessibility.add(currentFolder);
+ } else {
+ super.addChildrenForAccessibility(childrenForAccessibility);
+ }
+ }
+
+ @Override
public boolean onHoverEvent(MotionEvent ev) {
// If we've received this, we've already done the necessary handling
// in onInterceptHoverEvent. Return true to consume the event.
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index b2c36ee07..2bc51d386 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -2287,6 +2287,11 @@ public final class Launcher extends Activity
}
folder.animateOpen();
growAndFadeOutFolderIcon(folderIcon);
+
+ // Notify the accessibility manager that this folder "window" has appeared and occluded
+ // the workspace items
+ folder.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
+ getDragLayer().sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
}
public void closeFolder() {
@@ -2311,6 +2316,10 @@ public final class Launcher extends Activity
shrinkAndFadeInFolderIcon(fi);
}
folder.animateClosed();
+
+ // Notify the accessibility manager that this folder "window" has disappeard and no
+ // longer occludeds the workspace items
+ getDragLayer().sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
}
public boolean onLongClick(View v) {