Changeset 19400 in webkit
- Timestamp:
- Feb 5, 2007, 3:21:15 AM (18 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 1 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r19399 r19400 1 2007-02-04 Eric Seidel <eric@webkit.org> 2 3 Reviewed by darin. 4 5 Fix hand cursor on link hover for SVG 6 Fix status text on link hover for SVG 7 Fix tooltips on link hover for SVG 8 Fix link dragging for SVG 9 http://bugs.webkit.org/show_bug.cgi?id=12575 10 11 Test: added manual-tests/svg-links.svg 12 13 * dom/Document.cpp: 14 (WebCore::Document::prepareMouseEvent): 15 * dom/Element.cpp: 16 (WebCore::Element::title): 17 * dom/Element.h: 18 * html/HTMLElement.cpp: 19 (WebCore::HTMLElement::setId): 20 (WebCore::HTMLElement::title): 21 (WebCore::HTMLElement::setTitle): 22 (WebCore::HTMLElement::setLang): 23 * html/HTMLElement.h: 24 * ksvg2/svg/SVGAElement.cpp: 25 (WebCore::SVGAElement::title): 26 (WebCore::SVGAElement::parseMappedAttribute): 27 (WebCore::SVGAElement::defaultEventHandler): 28 * ksvg2/svg/SVGAElement.h: 29 * ksvg2/svg/SVGTitleElement.cpp: 30 * ksvg2/svg/SVGTitleElement.h: 31 * manual-tests/svg-links.svg: Added. 32 * rendering/HitTestResult.cpp: 33 (WebCore::HitTestResult::title): 34 (WebCore::HitTestResult::absoluteImageURL): 35 (WebCore::HitTestResult::absoluteLinkURL): 36 (WebCore::HitTestResult::isLiveLink): 37 (WebCore::HitTestResult::titleDisplayString): 38 1 39 2007-02-04 Alexey Proskuryakov <ap@webkit.org> 2 40 -
trunk/WebCore/dom/Document.cpp
r19302 r19400 1717 1717 updateRendering(); 1718 1718 1719 bool isOverLink = result.URLElement() && !result.URLElement()->getAttribute(hrefAttr).isNull();1719 bool isOverLink = result.URLElement() && result.URLElement()->isLink(); 1720 1720 return MouseEventWithHitTestResults(event, result.innerNode(), result.localPoint(), result.scrollbar(), isOverLink); 1721 1721 } -
trunk/WebCore/dom/Element.cpp
r19100 r19400 948 948 String Element::title() const 949 949 { 950 return getAttribute(titleAttr);951 } 952 953 } 950 return String(); 951 } 952 953 } -
trunk/WebCore/dom/Element.h
r18233 r19400 174 174 String outerText() const; 175 175 176 String title() const;176 virtual String title() const; 177 177 178 178 protected: -
trunk/WebCore/html/HTMLElement.cpp
r19027 r19400 610 610 } 611 611 612 void HTMLElement::setId(const String &value)612 void HTMLElement::setId(const String& value) 613 613 { 614 614 setAttribute(idAttr, value); 615 615 } 616 616 617 void HTMLElement::setTitle(const String &value) 617 String HTMLElement::title() const 618 { 619 return getAttribute(titleAttr); 620 } 621 622 void HTMLElement::setTitle(const String& value) 618 623 { 619 624 setAttribute(titleAttr, value); … … 625 630 } 626 631 627 void HTMLElement::setLang(const String &value)632 void HTMLElement::setLang(const String& value) 628 633 { 629 634 setAttribute(langAttr, value); -
trunk/WebCore/html/HTMLElement.h
r18874 r19400 55 55 String id() const; 56 56 void setId(const String&); 57 virtual String title() const; 57 58 void setTitle(const String&); 58 59 String lang() const; -
trunk/WebCore/ksvg2/svg/SVGAElement.cpp
r18268 r19400 36 36 #include "ResourceRequest.h" 37 37 #include "SVGNames.h" 38 #include "XLinkNames.h" 38 39 #include "csshelper.h" 39 40 … … 53 54 } 54 55 56 String SVGAElement::title() const 57 { 58 return getAttribute(XLinkNames::titleAttr); 59 } 60 55 61 ANIMATED_PROPERTY_DEFINITIONS(SVGAElement, String, String, string, Target, target, SVGNames::targetAttr.localName(), m_target) 56 62 57 void SVGAElement::parseMappedAttribute(MappedAttribute *attr)63 void SVGAElement::parseMappedAttribute(MappedAttribute* attr) 58 64 { 59 const AtomicString& value(attr->value()); 60 if (attr->name() == SVGNames::targetAttr) { 61 setTargetBaseValue(value); 62 } else { 65 if (attr->name() == SVGNames::targetAttr) 66 setTargetBaseValue(attr->value()); 67 else { 63 68 if (SVGURIReference::parseMappedAttribute(attr)) { 64 m_isLink = attr->value() != 0; 69 bool wasLink = m_isLink; 70 m_isLink = !attr->isNull(); 71 if (wasLink != m_isLink) 72 setChanged(); 65 73 return; 66 74 } … … 80 88 } 81 89 82 void SVGAElement::defaultEventHandler(Event *evt)90 void SVGAElement::defaultEventHandler(Event* evt) 83 91 { 84 92 // TODO : should use CLICK instead 85 93 if ((evt->type() == EventNames::mouseupEvent && m_isLink)) { 86 MouseEvent *e = static_cast<MouseEvent*>(evt);94 MouseEvent* e = static_cast<MouseEvent*>(evt); 87 95 88 96 if (e && e->button() == 2) { -
trunk/WebCore/ksvg2/svg/SVGAElement.h
r18874 r19400 43 43 virtual ~SVGAElement(); 44 44 45 // 'SVGAElement' functions46 45 virtual bool isValid() const { return SVGTests::isValid(); } 46 47 virtual String title() const; 47 48 48 49 virtual void parseMappedAttribute(MappedAttribute *attr); -
trunk/WebCore/ksvg2/svg/SVGTitleElement.cpp
r17027 r19400 34 34 } 35 35 36 String SVGTitleElement::title() const37 {38 return textContent();39 }40 41 36 void SVGTitleElement::insertedIntoDocument() 42 37 { -
trunk/WebCore/ksvg2/svg/SVGTitleElement.h
r18874 r19400 36 36 SVGTitleElement(const QualifiedName&, Document*); 37 37 38 String title() const;39 40 38 virtual void insertedIntoDocument(); 41 39 virtual void removedFromDocument(); -
trunk/WebCore/rendering/HitTestResult.cpp
r19039 r19400 39 39 #include "SelectionController.h" 40 40 41 #ifdef SVG_SUPPORT 42 #include "SVGNames.h" 43 #include "XLinkNames.h" 44 #endif 45 41 46 namespace WebCore { 42 47 … … 146 151 // For <area> tags in image maps, walk the tree for the <area>, not the <img> using it. 147 152 for (Node* titleNode = m_innerNode.get(); titleNode; titleNode = titleNode->parentNode()) { 148 if (titleNode->isHTMLElement()) { 149 HTMLElement* titleHTMLNode = static_cast<HTMLElement*>(titleNode); 150 String title = titleHTMLNode->title(); 153 if (titleNode->isElementNode()) { 154 String title = static_cast<Element*>(titleNode)->title(); 151 155 if (!title.isEmpty()) 152 156 return title; … … 216 220 return KURL(); 217 221 218 String name;222 AtomicString urlString; 219 223 if (m_innerNonSharedNode->hasTagName(imgTag) || m_innerNonSharedNode->hasTagName(inputTag)) 220 name = "src"; 224 urlString = static_cast<Element*>(m_innerNonSharedNode.get())->getAttribute(srcAttr); 225 #ifdef SVG_SUPPORT 226 else if (m_innerNonSharedNode->hasTagName(SVGNames::imageTag)) 227 urlString = static_cast<Element*>(m_innerNonSharedNode.get())->getAttribute(XLinkNames::hrefAttr); 228 #endif 221 229 else if (m_innerNonSharedNode->hasTagName(objectTag)) 222 name = "data";230 urlString = static_cast<Element*>(m_innerNonSharedNode.get())->getAttribute(dataAttr); 223 231 else 224 232 return KURL(); 225 233 226 return KURL(m_innerNonSharedNode->document()->completeURL(parseURL( 227 static_cast<Element*>(m_innerNonSharedNode.get())->getAttribute(name)).deprecatedString())); 234 return KURL(m_innerNonSharedNode->document()->completeURL(parseURL(urlString).deprecatedString())); 228 235 } 229 236 … … 233 240 return KURL(); 234 241 235 if (!(m_innerURLElement->hasTagName(aTag) || m_innerURLElement->hasTagName(areaTag) 236 || m_innerURLElement->hasTagName(linkTag))) 237 return KURL(); 238 239 return KURL(m_innerURLElement->document()->completeURL(parseURL( 240 static_cast<Element*>(m_innerURLElement.get())->getAttribute("href")).deprecatedString())); 242 AtomicString urlString; 243 if (m_innerURLElement->hasTagName(aTag) || m_innerURLElement->hasTagName(areaTag) || m_innerURLElement->hasTagName(linkTag)) 244 urlString = m_innerURLElement->getAttribute(hrefAttr); 245 #ifdef SVG_SUPPORT 246 else if (m_innerURLElement->hasTagName(SVGNames::aTag)) 247 urlString = m_innerURLElement->getAttribute(XLinkNames::hrefAttr); 248 #endif 249 else 250 return KURL(); 251 252 return KURL(m_innerURLElement->document()->completeURL(parseURL(urlString).deprecatedString())); 241 253 } 242 254 … … 246 258 return false; 247 259 248 if (!m_innerURLElement->hasTagName(aTag)) 249 return false; 250 251 return static_cast<HTMLAnchorElement*>(m_innerURLElement.get())->isLiveLink(); 260 if (m_innerURLElement->hasTagName(aTag)) 261 return static_cast<HTMLAnchorElement*>(m_innerURLElement.get())->isLiveLink(); 262 #ifdef SVG_SUPPORT 263 if (m_innerURLElement->hasTagName(SVGNames::aTag)) 264 return m_innerURLElement->isLink(); 265 #endif 266 267 return false; 252 268 } 253 269 254 270 String HitTestResult::titleDisplayString() const 255 271 { 256 if (!(m_innerURLElement && m_innerURLElement->isHTMLElement())) 257 return String(); 258 259 HTMLElement* element = static_cast<HTMLElement*>(m_innerURLElement.get()); 260 return displayString(element->title(), element); 272 if (!m_innerURLElement) 273 return String(); 274 275 return displayString(m_innerURLElement->title(), m_innerURLElement.get()); 261 276 } 262 277
Note:
See TracChangeset
for help on using the changeset viewer.