summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
index 77e15172bd..5193e8c680 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Accessibility/gtk/org/eclipse/swt/accessibility/AccessibleObject.java
@@ -705,6 +705,24 @@ class AccessibleObject {
if (DEBUG) print ("-->atkObject_ref_child: " + index + " of: " + atkObject);
AccessibleObject object = getAccessibleObject (atkObject);
if (object != null && object.id == ACC.CHILDID_SELF) {
+ Accessible accessible = object.accessible;
+ Vector listeners = accessible.accessibleControlListeners;
+ int length = listeners.size();
+ if (length > 0) {
+ AccessibleControlEvent event = new AccessibleControlEvent(accessible);
+ event.childID = ACC.CHILDID_CHILD_AT_INDEX;
+ event.detail = (int)/*64*/index;
+ for (int i = 0; i < length; i++) {
+ AccessibleControlListener listener = (AccessibleControlListener) listeners.elementAt(i);
+ listener.getChild(event);
+ }
+ if (event.accessible != null) {
+ AccessibleObject accObject = event.accessible.getAccessibleObject();
+ if (accObject != null) {
+ return OS.g_object_ref (accObject.handle);
+ }
+ }
+ }
object.updateChildren ();
AccessibleObject accObject = object.getChildByIndex ((int)/*64*/index);
if (accObject != null) {