changeset 14420:cb3a5b83571c

8249278: Revert JDK-8226253 which breaks the spec of AccessibleState.SHOWING for JList Reviewed-by: prr, serb
author arapte
date Thu, 16 Jul 2020 06:35:01 +0530
parents 4424a1214fee
children 1bb0d5a206fe
files src/share/classes/javax/swing/JList.java src/windows/classes/com/sun/java/accessibility/AccessBridge.java
diffstat 2 files changed, 12 insertions(+), 84 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/javax/swing/JList.java	Wed Apr 22 15:00:50 2015 +0400
+++ b/src/share/classes/javax/swing/JList.java	Thu Jul 16 06:35:01 2020 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -3308,7 +3308,6 @@
                 }
 
                 s.add(AccessibleState.SELECTABLE);
-                s.add(AccessibleState.VISIBLE);
                 if (parent.isFocusOwner()
                     && (indexInParent == parent.getLeadSelectionIndex())) {
                     s.add(AccessibleState.ACTIVE);
@@ -3321,6 +3320,11 @@
                 } else if (s.contains(AccessibleState.SHOWING)) {
                     s.remove(AccessibleState.SHOWING);
                 }
+                if (this.isVisible()) {
+                    s.add(AccessibleState.VISIBLE);
+                } else if (s.contains(AccessibleState.VISIBLE)) {
+                    s.remove(AccessibleState.VISIBLE);
+                }
                 s.add(AccessibleState.TRANSIENT); // cell-rendered
                 return s;
             }
--- a/src/windows/classes/com/sun/java/accessibility/AccessBridge.java	Wed Apr 22 15:00:50 2015 +0400
+++ b/src/windows/classes/com/sun/java/accessibility/AccessBridge.java	Thu Jul 16 06:35:01 2020 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1550,38 +1550,6 @@
         return null;
     }
 
-    private int getNonVisibleChildrenCountTillIndex(AccessibleContext parentAC, int index) {
-        if (parentAC != null && index >= 0 && index < parentAC.getAccessibleChildrenCount()) {
-            int nonVisibleChildrenCount = 0;
-            for (int i = 0; i <= index; i++) {
-                if (!parentAC.getAccessibleChild(i).getAccessibleContext().getAccessibleStateSet().contains(AccessibleState.VISIBLE)) {
-                    nonVisibleChildrenCount++;
-                }
-            }
-            return nonVisibleChildrenCount;
-        }
-        return 0;
-    }
-
-    private Accessible getVisibleChildAtIndex(AccessibleContext parentAC, int index) {
-        if (parentAC != null && index >= 0 && index < parentAC.getAccessibleChildrenCount()) {
-            int visibleIndex = -1;
-            int childrenCount = parentAC.getAccessibleChildrenCount();
-            for (int i = 0; i <= childrenCount; i++) {
-                Accessible child = parentAC.getAccessibleChild(i);
-                if (child != null) {
-                    AccessibleContext ac = child.getAccessibleContext();
-                    if (ac != null && ac.getAccessibleStateSet().contains(AccessibleState.VISIBLE)) {
-                        visibleIndex++;
-                    }
-                    if (visibleIndex == index) {
-                        return child;
-                    }
-                }
-            }
-        }
-        return null;
-    }
     /**
      * returns the AccessibleParent from an AccessibleContext
      */
@@ -1612,12 +1580,7 @@
         return InvocationUtils.invokeAndWait(new Callable<Integer>() {
             @Override
             public Integer call() throws Exception {
-                int indexInParent = ac.getAccessibleIndexInParent();
-                Accessible parent = ac.getAccessibleParent();
-                if (parent != null) {
-                    indexInParent -= getNonVisibleChildrenCountTillIndex(parent.getAccessibleContext(), indexInParent);
-                }
-                return indexInParent;
+                return ac.getAccessibleIndexInParent();
             }
         }, ac);
     }
@@ -1631,8 +1594,7 @@
         return InvocationUtils.invokeAndWait(new Callable<Integer>() {
             @Override
             public Integer call() throws Exception {
-                int childrenCount = ac.getAccessibleChildrenCount();
-                return childrenCount - getNonVisibleChildrenCountTillIndex(ac, childrenCount - 1);
+                return ac.getAccessibleChildrenCount();
             }
         }, ac);
     }
@@ -1668,7 +1630,7 @@
             return InvocationUtils.invokeAndWait(new Callable<AccessibleContext>() {
                 @Override
                 public AccessibleContext call() throws Exception {
-                    Accessible a = getVisibleChildAtIndex(ac, index);
+                    Accessible a = ac.getAccessibleChild(index);
                     if (a != null) {
                         return a.getAccessibleContext();
                     }
@@ -3653,11 +3615,7 @@
                         AccessibleRelation[] relations = ars.toArray();
                         if (relations != null && i >= 0 && i < relations.length) {
                             Object[] targets = relations[i].getTarget();
-                            if (targets != null) {
-                                int targetCount = targets.length -
-                                        getNonVisibleTargetCountTillIndex(targets, targets.length - 1);
-                                return targetCount;
-                            }
+                            return targets.length;
                         }
                     }
                 }
@@ -3683,7 +3641,7 @@
                         if (relations != null && i >= 0 && i < relations.length) {
                             Object[] targets = relations[i].getTarget();
                             if (targets != null && j >= 0 & j < targets.length) {
-                                Object o = getVisibleTargetAtIndex(targets, j);
+                                Object o = targets[j];
                                 if (o instanceof Accessible) {
                                     return ((Accessible) o).getAccessibleContext();
                                 }
@@ -3696,40 +3654,6 @@
         }, ac);
     }
 
-    private Object getVisibleTargetAtIndex(Object[] targets, int index) {
-        if (index >= 0 && index < targets.length) {
-            int visibleTargetIndex = -1;
-            for (int i = 0; i < targets.length; i++) {
-                if (targets[i] instanceof Accessible) {
-                    AccessibleContext ac = ((Accessible) targets[i]).getAccessibleContext();
-                    if (ac != null && ac.getAccessibleStateSet().contains(AccessibleState.VISIBLE)) {
-                        visibleTargetIndex++;
-                    }
-                    if (visibleTargetIndex == index) {
-                        return targets[i];
-                    }
-                }
-            }
-        }
-        return null;
-    }
-
-    private int getNonVisibleTargetCountTillIndex(Object[] targets, int index) {
-        if (index >= 0 && index < targets.length) {
-            int nonVisibleTargetsCount = 0;
-            for (int i = 0; i <= index; i++) {
-                if (targets[i] instanceof Accessible) {
-                    AccessibleContext ac = ((Accessible) targets[i]).getAccessibleContext();
-                    if (ac != null && !ac.getAccessibleStateSet().contains(AccessibleState.VISIBLE)) {
-                        nonVisibleTargetsCount++;
-                    }
-                }
-            }
-            return nonVisibleTargetsCount;
-        }
-        return 0;
-    }
-
     // ========= AccessibleHypertext =========
 
     private Map<AccessibleHypertext, AccessibleContext> hyperTextContextMap = new WeakHashMap<>();