Merge "Making folders work in RTL (issue 8569879)" into jb-mr2-dev
diff --git a/res/layout-land/search_bar.xml b/res/layout-land/search_bar.xml
index af1670b..8cdee94 100644
--- a/res/layout-land/search_bar.xml
+++ b/res/layout-land/search_bar.xml
@@ -25,6 +25,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentTop="true"
+        android:scaleType="center"
         android:src="@drawable/ic_home_search_normal_holo"
         android:adjustViewBounds="true"
         android:onClick="onClickSearchButton"
@@ -39,6 +40,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentBottom="true"
+        android:scaleType="center"
         android:src="@drawable/ic_home_voice_search_holo"
         android:adjustViewBounds="true"
         android:onClick="onClickVoiceButton"
diff --git a/res/layout-port/search_bar.xml b/res/layout-port/search_bar.xml
index 7cf79b8..62bdb22 100644
--- a/res/layout-port/search_bar.xml
+++ b/res/layout-port/search_bar.xml
@@ -41,6 +41,7 @@
             android:id="@+id/search_button"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
+            android:scaleType="fitStart"
             android:src="@drawable/ic_home_search_normal_holo"
             android:adjustViewBounds="true" />
     </com.android.launcher2.HolographicLinearLayout>
@@ -65,6 +66,7 @@
             android:id="@+id/voice_button"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
+            android:scaleType="fitEnd"
             android:src="@drawable/ic_home_voice_search_holo"
             android:adjustViewBounds="true" />
     </com.android.launcher2.HolographicLinearLayout>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index e82f618..3fe53d2 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -56,7 +56,7 @@
     <dimen name="app_icon_padding_top">8dp</dimen>
 
 <!-- QSB -->
-    <dimen name="toolbar_button_vertical_padding">0dip</dimen>
+    <dimen name="toolbar_button_vertical_padding">4dip</dimen>
     <dimen name="toolbar_button_horizontal_padding">12dip</dimen>
     <!-- External toolbar icon size (for bounds) -->
     <dimen name="toolbar_external_icon_width">36dp</dimen>
diff --git a/src/com/android/launcher2/DragLayer.java b/src/com/android/launcher2/DragLayer.java
index a819cb7..fccc1a6 100644
--- a/src/com/android/launcher2/DragLayer.java
+++ b/src/com/android/launcher2/DragLayer.java
@@ -34,6 +34,7 @@
 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 @@
     }
 
     @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 9f97442..b20e3a5 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -2287,6 +2287,11 @@
         }
         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 @@
             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) {