Reviewed by Ken.
authorharrison <harrison@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 24 Feb 2005 22:17:27 +0000 (22:17 +0000)
committerharrison <harrison@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 24 Feb 2005 22:17:27 +0000 (22:17 +0000)
        <rdar://problem/3990849> AX: textMarkerRange for an AXUIElement within an AXWebArea

        * kwq/KWQAccObject.mm:
        (-[KWQAccObject textMarkerRange]):
        (-[KWQAccObject accessibilityParameterizedAttributeNames]):
        (-[KWQAccObject doAXTextMarkerRangeForUIElement:]):
        (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
        Added AXTextMarkerRangeForUIElement, or you can send textMarkerRange to the UIElement itself.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8683 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/kwq/KWQAccObject.mm

index e1177eb238334a22a79a484ff93845423b4d0e61..fd7e494b4dd65d06dbb8e41d39d90962b61744b4 100644 (file)
@@ -1,3 +1,16 @@
+2005-02-24  David Harrison  <harrison@apple.com>
+
+        Reviewed by Ken.
+        
+        <rdar://problem/3990849> AX: textMarkerRange for an AXUIElement within an AXWebArea
+
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject textMarkerRange]):
+        (-[KWQAccObject accessibilityParameterizedAttributeNames]):
+        (-[KWQAccObject doAXTextMarkerRangeForUIElement:]):
+        (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
+        Added AXTextMarkerRangeForUIElement, or you can send textMarkerRange to the UIElement itself.
+
 2005-02-24  David Harrison  <harrison@apple.com>
 
         Reviewed by Vicki.
index 90db387b419932eba9dd116aced8af22a005f583..e41fae3ee98b0579453a6a856aa7b8fd491a110a 100644 (file)
@@ -800,6 +800,16 @@ static QRect boundingBoxRect(RenderObject* obj)
     AXTextMarkerRef endTextMarker   = [self textMarkerForVisiblePosition: endPosition];
     return [self textMarkerRangeFromMarkers: startTextMarker andEndMarker:endTextMarker];
 }
+
+- (AXTextMarkerRangeRef)textMarkerRange
+{
+    if (!m_renderer)
+        return nil;
+        
+    AXTextMarkerRef startTextMarker = [self textMarkerForVisiblePosition: VisiblePosition(m_renderer->element(), m_renderer->caretMinOffset(), khtml::VP_DEFAULT_AFFINITY)];
+    AXTextMarkerRef endTextMarker   = [self textMarkerForVisiblePosition: VisiblePosition(m_renderer->element(), m_renderer->caretMaxRenderedOffset(), khtml::VP_DEFAULT_AFFINITY)];
+    return [self textMarkerRangeFromMarkers: startTextMarker andEndMarker:endTextMarker];
+}
 #endif
 
 - (DocumentImpl *)topDocument
@@ -958,6 +968,7 @@ static QRect boundingBoxRect(RenderObject* obj)
     if (paramAttributes == nil) {
         paramAttributes = [[NSArray alloc] initWithObjects:
             @"AXUIElementForTextMarker",
+            @"AXTextMarkerRangeForUIElement",
             kAXLineForTextMarkerParameterizedAttribute,
             kAXTextMarkerRangeForLineParameterizedAttribute,
             kAXStringForTextMarkerRangeParameterizedAttribute,
@@ -1002,6 +1013,11 @@ static QRect boundingBoxRect(RenderObject* obj)
     return obj->document()->getAccObjectCache()->accObject(obj);
 }
 
+- (id)doAXTextMarkerRangeForUIElement: (id) uiElement
+{
+    return (id)[uiElement textMarkerRange];
+}
+
 - (id)doAXLineForTextMarker: (AXTextMarkerRef) textMarker
 {
     unsigned int    lineCount = 0;
@@ -1655,6 +1671,7 @@ static void AXAttributedStringAppendReplaced (NSMutableAttributedString *attrStr
     AXValueRef              value = nil;
     NSNumber *              number = nil;
     NSArray *               array = nil;
+    KWQAccObject *          uiElement = nil;
     CGPoint                 point;
     CGSize                  size;
     CGRect                  rect;
@@ -1674,6 +1691,9 @@ static void AXAttributedStringAppendReplaced (NSMutableAttributedString *attrStr
     else if (CFGetTypeID(parameter) == AXTextMarkerRangeGetTypeID())
         textMarkerRange = (AXTextMarkerRangeRef) parameter;
 
+    else if ([parameter isKindOfClass:[KWQAccObject self]])
+        uiElement = (KWQAccObject *) parameter;
+
     else if ([parameter isKindOfClass:[NSNumber self]])
         number = parameter;
 
@@ -1707,6 +1727,9 @@ static void AXAttributedStringAppendReplaced (NSMutableAttributedString *attrStr
     if ([attribute isEqualToString: @"AXUIElementForTextMarker"])
         return [self doAXUIElementForTextMarker: textMarker];
 
+    if ([attribute isEqualToString: @"AXTextMarkerRangeForUIElement"])
+        return [self doAXTextMarkerRangeForUIElement: uiElement];
+
     if ([attribute isEqualToString: (NSString *) kAXLineForTextMarkerParameterizedAttribute])
         return [self doAXLineForTextMarker: textMarker];