@@ -95,7 +95,11 @@ - (BOOL)isSelected:(JNIEnv *)env
95
95
return NO ;
96
96
}
97
97
98
- return isChildSelected (env, ((CommonComponentAccessibility *)[self parent ])->fAccessible , fIndex, fComponent);
98
+ CommonComponentAccessibility* parent = [self typeSafeParent ];
99
+ if (parent != nil ) {
100
+ return isChildSelected (env, parent->fAccessible , fIndex, fComponent);
101
+ }
102
+ return NO ;
99
103
}
100
104
101
105
- (BOOL )isSelectable : (JNIEnv *)env
@@ -708,6 +712,15 @@ - (id)parent
708
712
return fParent;
709
713
}
710
714
715
+ - (CommonComponentAccessibility *)typeSafeParent
716
+ {
717
+ id parent = [self parent ];
718
+ if ([parent isKindOfClass: [CommonComponentAccessibility class ]]) {
719
+ return (CommonComponentAccessibility*)parent;
720
+ }
721
+ return nil ;
722
+ }
723
+
711
724
- (NSString *)javaRole
712
725
{
713
726
if (fJavaRole == nil ) {
@@ -824,11 +837,13 @@ - (NSAccessibilityRole)accessibilityRole
824
837
if (fNSRole == nil ) {
825
838
NSString *javaRole = [self javaRole ];
826
839
fNSRole = [sRoles objectForKey: javaRole];
840
+ CommonComponentAccessibility* parent = [self typeSafeParent ];
827
841
// The sRoles NSMutableDictionary maps popupmenu to Mac's popup button.
828
842
// JComboBox behavior currently relies on this. However this is not the
829
843
// proper mapping for a JPopupMenu so fix that.
830
844
if ( [javaRole isEqualToString: @" popupmenu" ] &&
831
- ![[[self parent ] javaRole ] isEqualToString: @" combobox" ] ) {
845
+ parent != nil &&
846
+ ![[parent javaRole ] isEqualToString: @" combobox" ] ) {
832
847
fNSRole = NSAccessibilityMenuRole ;
833
848
}
834
849
if (fNSRole == nil ) {
@@ -1025,8 +1040,9 @@ - (id)accessibilityValue
1025
1040
// This may change when later fixing issues which currently
1026
1041
// exist for combo boxes, but for now the following is only
1027
1042
// for JPopupMenus, not for combobox menus.
1028
- id parent = [self parent ];
1043
+ id parent = [self typeSafeParent ];
1029
1044
if ( [[self javaRole ] isEqualToString: @" popupmenu" ] &&
1045
+ parent != nil &&
1030
1046
![[parent javaRole ] isEqualToString: @" combobox" ] ) {
1031
1047
NSArray *children =
1032
1048
[CommonComponentAccessibility childrenOfParent: self
0 commit comments