Merge "CheckBoxPreferences do not fire accessibility events" into honeycomb-mr1
diff --git a/core/java/android/preference/CheckBoxPreference.java b/core/java/android/preference/CheckBoxPreference.java
index f16a7e4..2bf6c7b 100644
--- a/core/java/android/preference/CheckBoxPreference.java
+++ b/core/java/android/preference/CheckBoxPreference.java
@@ -24,8 +24,10 @@
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.View;
+import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
+import android.widget.CheckBox;
import android.widget.Checkable;
import android.widget.TextView;
@@ -90,8 +92,16 @@
checkboxView.isEnabled()) {
mSendAccessibilityEventViewClickedType = false;
- int eventType = AccessibilityEvent.TYPE_VIEW_CLICKED;
- checkboxView.sendAccessibilityEventUnchecked(AccessibilityEvent.obtain(eventType));
+ // we send an event on behalf of the check box because in onBind the latter
+ // is detached from its parent and such views do not send accessibility events
+ AccessibilityEvent event = AccessibilityEvent.obtain(
+ AccessibilityEvent.TYPE_VIEW_CLICKED);
+ event.setClassName(checkboxView.getClass().getName());
+ event.setPackageName(getContext().getPackageName());
+ event.setEnabled(checkboxView.isEnabled());
+ event.setContentDescription(checkboxView.getContentDescription());
+ event.setChecked(((Checkable) checkboxView).isChecked());
+ mAccessibilityManager.sendAccessibilityEvent(event);
}
}