summaryrefslogtreecommitdiffstats
path: root/src/android/jar
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/jar')
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java24
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/QtNative.java36
-rw-r--r--src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java23
3 files changed, 78 insertions, 5 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java
index 35d86611c6..3785eb4011 100644
--- a/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt/android/QtActivityDelegate.java
@@ -159,6 +159,8 @@ public class QtActivityDelegate
private CursorHandle m_rightSelectionHandle;
private EditPopupMenu m_editPopupMenu;
+ private QtAccessibilityDelegate m_accessibilityDelegate = null;
+
public void setSystemUiVisibility(int systemUiVisibility)
{
@@ -876,10 +878,30 @@ public class QtActivityDelegate
m_splashScreen.startAnimation(fadeOut);
}
+ public void notifyAccessibilityLocationChange()
+ {
+ if (m_accessibilityDelegate == null)
+ return;
+ m_accessibilityDelegate.notifyLocationChange();
+ }
+
+ public void notifyObjectHide(int viewId)
+ {
+ if (m_accessibilityDelegate == null)
+ return;
+ m_accessibilityDelegate.notifyObjectHide(viewId);
+ }
+
+ public void notifyObjectFocus(int viewId)
+ {
+ if (m_accessibilityDelegate == null)
+ return;
+ m_accessibilityDelegate.notifyObjectFocus(viewId);
+ }
public void initializeAccessibility()
{
- new QtAccessibilityDelegate(m_activity, m_layout, this);
+ m_accessibilityDelegate = new QtAccessibilityDelegate(m_activity, m_layout, this);
}
public void onWindowFocusChanged(boolean hasFocus) {
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtNative.java b/src/android/jar/src/org/qtproject/qt/android/QtNative.java
index bd11b255f5..001e6a7970 100644
--- a/src/android/jar/src/org/qtproject/qt/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt/android/QtNative.java
@@ -934,6 +934,42 @@ public class QtNative
});
}
+ private static void notifyAccessibilityLocationChange()
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ if (m_activityDelegate != null) {
+ m_activityDelegate.notifyAccessibilityLocationChange();
+ }
+ }
+ });
+ }
+
+ private static void notifyObjectHide(final int viewId)
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ if (m_activityDelegate != null) {
+ m_activityDelegate.notifyObjectHide(viewId);
+ }
+ }
+ });
+ }
+
+ private static void notifyObjectFocus(final int viewId)
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ if (m_activityDelegate != null) {
+ m_activityDelegate.notifyObjectFocus(viewId);
+ }
+ }
+ });
+ }
+
private static void registerClipboardManager()
{
if (m_service == null || m_activity != null) { // Avoid freezing if only service
diff --git a/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java b/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java
index 1591a5b52e..57b43bc279 100644
--- a/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt/android/accessibility/QtAccessibilityDelegate.java
@@ -191,6 +191,23 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate
return true;
}
+ public void notifyLocationChange()
+ {
+ invalidateVirtualViewId(m_focusedVirtualViewId);
+ }
+
+ public void notifyObjectHide(int viewId)
+ {
+ invalidateVirtualViewId(viewId);
+ }
+
+ public void notifyObjectFocus(int viewId)
+ {
+ m_view.invalidate();
+ sendEventForVirtualViewId(viewId,
+ AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
+ }
+
public boolean sendEventForVirtualViewId(int virtualViewId, int eventType)
{
if ((virtualViewId == INVALID_ID) || !m_manager.isEnabled()) {
@@ -211,7 +228,8 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate
public void invalidateVirtualViewId(int virtualViewId)
{
- sendEventForVirtualViewId(virtualViewId, AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
+ if (virtualViewId != INVALID_ID)
+ sendEventForVirtualViewId(virtualViewId, AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
}
private void setHoveredVirtualViewId(int virtualViewId)
@@ -336,9 +354,6 @@ public class QtAccessibilityDelegate extends View.AccessibilityDelegate
node.addAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);
}
- int[] ids = QtNativeAccessibility.childIdListForAccessibleObject(virtualViewId);
- for (int i = 0; i < ids.length; ++i)
- node.addChild(m_view, ids[i]);
return node;
}