[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

hyatt hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:59:55 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit bf52b2d368221542249d2a627fbbec5fc747ecbe
Author: hyatt <hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Oct 8 01:49:32 2003 +0000

    	Fix for link dragging regression in the titles of links.  More accessibility
    	improvements.
    
            Reviewed by darin
    
            * khtml/khtml_part.cpp:
            (KHTMLPart::text):
            * kwq/KWQAccObject.mm:
            (-[KWQAccObject role]):
            (-[KWQAccObject roleDescription]):
            (-[KWQAccObject helpText]):
            (-[KWQAccObject textUnderElement]):
            (-[KWQAccObject value]):
            (-[KWQAccObject title]):
            (-[KWQAccObject accessibilityIsIgnored]):
            (-[KWQAccObject accessibilityAttributeValue:]):
            * kwq/WebCoreBridge.mm:
            (-[WebCoreBridge elementAtPoint:]):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@5146 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index ef4d6c2..15d6028 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,24 @@
+2003-10-07  David Hyatt  <hyatt at apple.com>
+
+	Fix for link dragging regression in the titles of links.  More accessibility 
+	improvements.
+	
+        Reviewed by darin
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::text):
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject role]):
+        (-[KWQAccObject roleDescription]):
+        (-[KWQAccObject helpText]):
+        (-[KWQAccObject textUnderElement]):
+        (-[KWQAccObject value]):
+        (-[KWQAccObject title]):
+        (-[KWQAccObject accessibilityIsIgnored]):
+        (-[KWQAccObject accessibilityAttributeValue:]):
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge elementAtPoint:]):
+
 2003-10-07  Ken Kocienda  <kocienda at apple.com>
 
         Reviewed by Darin
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index ef4d6c2..15d6028 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,24 @@
+2003-10-07  David Hyatt  <hyatt at apple.com>
+
+	Fix for link dragging regression in the titles of links.  More accessibility 
+	improvements.
+	
+        Reviewed by darin
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::text):
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject role]):
+        (-[KWQAccObject roleDescription]):
+        (-[KWQAccObject helpText]):
+        (-[KWQAccObject textUnderElement]):
+        (-[KWQAccObject value]):
+        (-[KWQAccObject title]):
+        (-[KWQAccObject accessibilityIsIgnored]):
+        (-[KWQAccObject accessibilityAttributeValue:]):
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge elementAtPoint:]):
+
 2003-10-07  Ken Kocienda  <kocienda at apple.com>
 
         Reviewed by Darin
diff --git a/WebCore/khtml/khtml_part.cpp b/WebCore/khtml/khtml_part.cpp
index 2457cdf..ce0ecd2 100644
--- a/WebCore/khtml/khtml_part.cpp
+++ b/WebCore/khtml/khtml_part.cpp
@@ -2229,7 +2229,20 @@ QString KHTMLPart::text(const DOM::Range &r) const
   bool hasNewLine = true;
   bool addedSpace = true;
   QString text;
-  DOM::Node n = r.startContainer();
+  DOM::Node startNode = r.startContainer();
+  DOM::Node endNode = r.endContainer();
+  int startOffset = r.startOffset();
+  int endOffset = r.endOffset();
+  if (!startNode.isNull() && startNode.nodeType() == DOM::Node::ELEMENT_NODE) {
+      startOffset = -1;
+      startNode = !startNode.childNodes().isNull() ? startNode.childNodes().item(r.startOffset()) : Node();
+  }
+  if (!endNode.isNull() && endNode.nodeType() == DOM::Node::ELEMENT_NODE) {
+      endOffset = -1;
+      endNode = !endNode.childNodes().isNull() ? endNode.childNodes().item(r.endOffset()-1) : Node();
+  }
+
+  DOM::Node n = startNode;
   while(!n.isNull()) {
       if(n.nodeType() == DOM::Node::TEXT_NODE) {
           if (hasNewLine) {
@@ -2237,8 +2250,8 @@ QString KHTMLPart::text(const DOM::Range &r) const
               hasNewLine = false;
           }
           QString str = n.nodeValue().string();
-          int start = (n == r.startContainer()) ? r.startOffset() : -1;
-          int end = (n == r.endContainer()) ? r.endOffset() : -1;
+          int start = (n == startNode) ? startOffset : -1;
+          int end = (n == endNode) ? endOffset : -1;
           RenderObject* renderer = n.handle()->renderer();
           if (renderer && renderer->isText()) {
               if (renderer->style()->whiteSpace() == khtml::PRE) {
@@ -2324,7 +2337,7 @@ QString KHTMLPart::text(const DOM::Range &r) const
             break;
         }
       }
-      if(n == r.endContainer()) break;
+      if(n == endNode) break;
       DOM::Node next = n.firstChild();
       if(next.isNull()) next = n.nextSibling();
       while( next.isNull() && !n.parentNode().isNull() ) {
diff --git a/WebCore/kwq/KWQAccObject.mm b/WebCore/kwq/KWQAccObject.mm
index ce86223..fc7502a 100644
--- a/WebCore/kwq/KWQAccObject.mm
+++ b/WebCore/kwq/KWQAccObject.mm
@@ -33,6 +33,7 @@
 #import "dom_string.h"
 #import "dom2_range.h"
 #import "htmlattrs.h"
+#import "htmltags.h"
 #import "khtmlview.h"
 #import "khtml_part.h"
 #import "render_canvas.h"
@@ -191,12 +192,13 @@ using khtml::RenderWidget;
 
     if (m_renderer->element() && m_renderer->element()->hasAnchor())
         return NSAccessibilityButtonRole;
+    if (m_renderer->element() && m_renderer->element()->isHTMLElement() &&
+        Node(m_renderer->element()).elementId() == ID_BUTTON)
+        return NSAccessibilityButtonRole;
     if (m_renderer->isText())
         return NSAccessibilityStaticTextRole;
     if (m_renderer->isImage())
-        return NSAccessibilityImageRole;
-    if (m_renderer->isListMarker()) // FIXME: Can be an image/bullet or can be text.
-        return NSAccessibilityStaticTextRole;
+       return NSAccessibilityButtonRole;
     if (m_renderer->isCanvas())
         return NSAccessibilityGroupRole;
     if (m_renderer->isTable() || m_renderer->isTableCell())
@@ -210,43 +212,84 @@ using khtml::RenderWidget;
     if (!m_renderer)
         return nil;
 
-    if (m_renderer->element() && m_renderer->element()->isHTMLElement()) {
-        QString title = static_cast<ElementImpl*>(m_renderer->element())->getAttribute(ATTR_TITLE).string();
-        if (!title.isEmpty())
-            return title.getNSString();
+    return UI_STRING("Testing role description", "not real yet");
+}
+
+-(NSString*)helpText
+{
+    if (!m_renderer)
+        return nil;
+
+    for (RenderObject* curr = m_renderer; curr; curr = curr->parent()) {
+        if (curr->element() && curr->element()->isHTMLElement()) {
+            QString title = static_cast<ElementImpl*>(curr->element())->getAttribute(ATTR_TITLE).string();
+            if (!title.isEmpty())
+                return title.getNSString();
+        }
     }
 
-    return UI_STRING("Testing role description", "not real yet");
+    return nil;
 }
 
--(NSString*)value
+-(NSString*)textUnderElement
 {
     if (!m_renderer)
         return nil;
 
-    if (m_renderer->isText()) {
-        NodeImpl *e = m_renderer->element();
-        DocumentImpl *d = m_renderer->document();
-        if (e && d) {
-            KHTMLView *v = d->view();
-            if (v) {
-                KHTMLPart *p = v->part();
-                if (p) {
-                    Range r(p->document());
+    NodeImpl* e = m_renderer->element();
+    DocumentImpl* d = m_renderer->document();
+    if (e && d) {
+        KHTMLView* v = d->view();
+        if (v) {
+            KHTMLPart* p = v->part();
+            if (p) {
+                Range r(p->document());
+                if (m_renderer->isText()) {
                     r.setStartBefore(e);
                     r.setEndAfter(e);
                     return p->text(r).getNSString();
                 }
+                if (e->firstChild()) {
+                    r.setStartBefore(e->firstChild());
+                    r.setEndAfter(e->lastChild());
+                    return p->text(r).getNSString();
+                }
             }
         }
     }
+
+    return nil;
+}
+
+-(NSString*)value
+{
+    if (!m_renderer)
+        return nil;
+
+    if (m_renderer->isText())
+        return [self textUnderElement];
     
     return UI_STRING("Value not implemented yet.", "not real yet");
 }
 
 -(NSString*)title
 {
-    return UI_STRING("Title not implemented yet.", "not real yet");
+    if (!m_renderer)
+        return nil;
+
+    if (m_renderer->isImage()) {
+        if (m_renderer->element() && m_renderer->element()->isHTMLElement()) {
+            QString alt = static_cast<ElementImpl*>(m_renderer->element())->getAttribute(ATTR_ALT).string();
+            return !alt.isEmpty() ? alt.getNSString() : nil;
+        }
+    }
+    else if (m_renderer->element() && m_renderer->element()->isHTMLElement() &&
+             Node(m_renderer->element()).elementId() == ID_BUTTON)
+        return [self textUnderElement];
+    else if (m_renderer->element() && m_renderer->element()->hasAnchor())
+        return [self textUnderElement];
+
+    return nil;
 }
 
 -(NSValue*)position
@@ -263,12 +306,14 @@ using khtml::RenderWidget;
 {
     if (!m_renderer || m_renderer->style()->visibility() != khtml::VISIBLE)
         return YES;
-    
+
     if (m_renderer->element() && m_renderer->element()->hasAnchor())
         return NO;
     
     return (!m_renderer->isCanvas() && !m_renderer->isTable() && !m_renderer->isTableCell() &&
-            !m_renderer->isImage() && !m_renderer->isText() && !m_renderer->isListMarker());
+            !m_renderer->isImage() && !m_renderer->isText() &&
+            !(m_renderer->element() && m_renderer->element()->isHTMLElement() &&
+              Node(m_renderer->element()).elementId() == ID_BUTTON));
 }
 
 - (NSArray *)accessibilityAttributeNames
@@ -329,8 +374,8 @@ using khtml::RenderWidget;
         return [self value];
 
     if ([attributeName isEqualToString: NSAccessibilityHelpAttribute])
-        return @"Help";
-
+        return [self helpText];
+    
     if ([attributeName isEqualToString: NSAccessibilityFocusedAttribute])
         return [NSNumber numberWithBool: (m_renderer->element() && m_renderer->document()->focusNode() == m_renderer->element())];
 
diff --git a/WebCore/kwq/WebCoreBridge.mm b/WebCore/kwq/WebCoreBridge.mm
index 785e93a..a0a17d6 100644
--- a/WebCore/kwq/WebCoreBridge.mm
+++ b/WebCore/kwq/WebCoreBridge.mm
@@ -722,12 +722,14 @@ static HTMLFormElementImpl *formElementFromDOMElement(id <WebDOMElement>element)
         
         DOMString link = e->getAttribute(ATTR_HREF);
         if (!link.isNull()) {
-            Range r(_part->document());
-            r.setStartBefore(e->firstChild());
-            r.setEndAfter(e->lastChild());
-            QString t = _part->text(r);
-            if (!t.isEmpty()) {
-                [element setObject:t.getNSString() forKey:WebCoreElementLinkLabelKey];
+            if (e->firstChild()) {
+                Range r(_part->document());
+                r.setStartBefore(e->firstChild());
+                r.setEndAfter(e->lastChild());
+                QString t = _part->text(r);
+                if (!t.isEmpty()) {
+                    [element setObject:t.getNSString() forKey:WebCoreElementLinkLabelKey];
+                }
             }
             [element setObject:_part->xmlDocImpl()->completeURL(link.string()).getNSString() forKey:WebCoreElementLinkURLKey];
         }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list