diff options
author | Winson Chung <winsonc@google.com> | 2013-04-12 15:10:52 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2013-04-12 15:15:07 -0700 |
commit | 83ca480941b3dd635b62347008fc8d7859d82002 (patch) | |
tree | c1b0c07eb89b290334d64b758a316b6719b50fad /src/com/android | |
parent | b68e03a83cfc8e59c0c93d070c5e3cc13cc2996b (diff) | |
download | android_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/com/android')
-rw-r--r-- | src/com/android/launcher2/DragLayer.java | 26 | ||||
-rw-r--r-- | src/com/android/launcher2/Launcher.java | 9 |
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) { |