mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-20 09:59:09 +02:00
LCL-CustomDrawn-Cocoa: Adds VoiceOver speaking of labels and fixes a crash in voiceover combined with TNotebook
git-svn-id: trunk@38112 -
This commit is contained in:
parent
53298ddd96
commit
cc0deae393
@ -1040,11 +1040,11 @@ begin
|
|||||||
begin
|
begin
|
||||||
lHandle := TCDWinControl(TWinControl(LCLControl).Handle);
|
lHandle := TCDWinControl(TWinControl(LCLControl).Handle);
|
||||||
LCLBaseControl := lHandle;
|
LCLBaseControl := lHandle;
|
||||||
|
if lHandle <> nil then
|
||||||
|
LCLInjectedControl := lHandle.CDControl
|
||||||
|
else
|
||||||
|
LCLInjectedControl := nil;
|
||||||
end;
|
end;
|
||||||
if LCLBaseControl = nil then Exit;
|
|
||||||
|
|
||||||
if LCLInjectedControl = nil then
|
|
||||||
LCLInjectedControl := lHandle.CDControl;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCocoaAccessibleObject.accessibilityAttributeNames: NSArray;
|
function TCocoaAccessibleObject.accessibilityAttributeNames: NSArray;
|
||||||
@ -1057,33 +1057,29 @@ begin
|
|||||||
{$endif}
|
{$endif}
|
||||||
lResult := NSMutableArray.array_();
|
lResult := NSMutableArray.array_();
|
||||||
|
|
||||||
|
// Basic elements which all roles have
|
||||||
|
lResult.addObject(NSAccessibilityDescriptionAttribute);
|
||||||
|
lResult.addObject(NSAccessibilityEnabledAttribute);
|
||||||
|
lResult.addObject(NSAccessibilityFocusedAttribute);
|
||||||
|
lResult.addObject(NSAccessibilityParentAttribute);
|
||||||
|
lResult.addObject(NSAccessibilityPositionAttribute);
|
||||||
|
lResult.addObject(NSAccessibilityRoleAttribute);
|
||||||
|
lResult.addObject(NSAccessibilitySizeAttribute);
|
||||||
|
lResult.addObject(NSAccessibilityTitleAttribute);
|
||||||
|
lResult.addObject(NSAccessibilityTopLevelUIElementAttribute);
|
||||||
|
lResult.addObject(NSAccessibilityWindowAttribute);
|
||||||
|
|
||||||
lCocoaRole := TCocoaCustomControl.LazRoleToCocoaRole(LCLAcc.AccessibleRole);
|
lCocoaRole := TCocoaCustomControl.LazRoleToCocoaRole(LCLAcc.AccessibleRole);
|
||||||
if lCocoaRole.isEqualToString(NSAccessibilityButtonRole) then
|
if lCocoaRole.isEqualToString(NSAccessibilityButtonRole) then
|
||||||
begin
|
begin
|
||||||
lResult.addObject(NSAccessibilityDescriptionAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityEnabledAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityFocusedAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityParentAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityPositionAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityRoleAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityRoleDescriptionAttribute);
|
lResult.addObject(NSAccessibilityRoleDescriptionAttribute);
|
||||||
lResult.addObject(NSAccessibilitySizeAttribute);
|
end
|
||||||
lResult.addObject(NSAccessibilityTitleAttribute);
|
else if lCocoaRole.isEqualToString(NSAccessibilityStaticTextRole) then
|
||||||
lResult.addObject(NSAccessibilityTopLevelUIElementAttribute);
|
begin
|
||||||
lResult.addObject(NSAccessibilityWindowAttribute);
|
lResult.addObject(NSAccessibilityValueAttribute);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
lResult.addObject(NSAccessibilityDescriptionAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityEnabledAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityFocusedAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityParentAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityPositionAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityRoleAttribute);
|
|
||||||
lResult.addObject(NSAccessibilitySizeAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityTitleAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityTopLevelUIElementAttribute);
|
|
||||||
lResult.addObject(NSAccessibilityWindowAttribute);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// This one we use to put LCL object and class names to help debugging =)
|
// This one we use to put LCL object and class names to help debugging =)
|
||||||
@ -1104,6 +1100,7 @@ var
|
|||||||
lNSSize: NSSize;
|
lNSSize: NSSize;
|
||||||
lPoint: TPoint;
|
lPoint: TPoint;
|
||||||
lNSPoint: NSPoint;
|
lNSPoint: NSPoint;
|
||||||
|
lBool: Boolean;
|
||||||
//
|
//
|
||||||
i: Integer;
|
i: Integer;
|
||||||
lChildAcc: TLazAccessibleObject;
|
lChildAcc: TLazAccessibleObject;
|
||||||
@ -1142,7 +1139,7 @@ begin
|
|||||||
//
|
//
|
||||||
else if attribute.isEqualToString(NSAccessibilityValueAttribute) then
|
else if attribute.isEqualToString(NSAccessibilityValueAttribute) then
|
||||||
begin
|
begin
|
||||||
//Result := NSStringUtf8(LCLControl.Caption);
|
Result := NSStringUtf8(LCLControl.Caption);
|
||||||
end
|
end
|
||||||
{else if attribute = NSAccessibilityMinValueAttribute: NSString; cvar; external;
|
{else if attribute = NSAccessibilityMinValueAttribute: NSString; cvar; external;
|
||||||
NSAccessibilityMaxValueAttribute: NSString; cvar; external;}
|
NSAccessibilityMaxValueAttribute: NSString; cvar; external;}
|
||||||
@ -1160,10 +1157,10 @@ begin
|
|||||||
begin
|
begin
|
||||||
if LCLControl is TWinControl then
|
if LCLControl is TWinControl then
|
||||||
begin
|
begin
|
||||||
if LCLInjectedControl <> nil then
|
lBool := TWinControl(LCLControl).Focused;
|
||||||
Result := NSNumber.numberWithBool(LCLInjectedControl.Focused)
|
if (not lBool) and (LCLInjectedControl <> nil) then
|
||||||
else
|
lBool := LCLInjectedControl.Focused;
|
||||||
Result := NSNumber.numberWithBool(TWinControl(LCLControl).Focused)
|
Result := NSNumber.numberWithBool(lBool);
|
||||||
end
|
end
|
||||||
else Result := NSNumber.numberWithBool(False);
|
else Result := NSNumber.numberWithBool(False);
|
||||||
end
|
end
|
||||||
|
@ -175,6 +175,7 @@ begin
|
|||||||
Result := HWND(TCocoaAccessibleObject.alloc.init);
|
Result := HWND(TCocoaAccessibleObject.alloc.init);
|
||||||
TCocoaAccessibleObject(Result).LCLAcc := AObject;
|
TCocoaAccessibleObject(Result).LCLAcc := AObject;
|
||||||
TCocoaAccessibleObject(Result).LCLControl := AObject.OwnerControl;
|
TCocoaAccessibleObject(Result).LCLControl := AObject.OwnerControl;
|
||||||
|
TCocoaAccessibleObject(Result).LCLInjectedControl := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
class procedure TCDWSLazAccessibleObject.DestroyHandle(
|
class procedure TCDWSLazAccessibleObject.DestroyHandle(
|
||||||
|
Loading…
Reference in New Issue
Block a user