145
146
return frame->selection()->contains(m_point);
148
String HitTestResult::spellingToolTip() const
149
String HitTestResult::spellingToolTip(TextDirection& dir) const
150
152
// Return the tool tip string associated with this point, if any. Only markers associated with bad grammar
151
153
// currently supply strings, but maybe someday markers associated with misspelled words will also.
152
154
if (!m_innerNonSharedNode)
155
DocumentMarker* marker = m_innerNonSharedNode->document()->markerContainingPoint(m_point, DocumentMarker::Grammar);
157
DocumentMarker* marker = m_innerNonSharedNode->document()->markerContainingPoint(m_point, DocumentMarker::Grammar);
161
if (RenderObject* renderer = m_innerNonSharedNode->renderer())
162
dir = renderer->style()->direction();
159
163
return marker->description;
162
String HitTestResult::title() const
166
String HitTestResult::replacedString() const
168
// Return the replaced string associated with this point, if any. This marker is created when a string is autocorrected,
169
// and is used for generating a contextual menu item that allows it to easily be changed back if desired.
170
if (!m_innerNonSharedNode)
173
DocumentMarker* marker = m_innerNonSharedNode->document()->markerContainingPoint(m_point, DocumentMarker::Replacement);
177
return marker->description;
180
String HitTestResult::title(TextDirection& dir) const
164
183
// Find the title in the nearest enclosing DOM node.
165
184
// For <area> tags in image maps, walk the tree for the <area>, not the <img> using it.
166
185
for (Node* titleNode = m_innerNode.get(); titleNode; titleNode = titleNode->parentNode()) {
167
186
if (titleNode->isElementNode()) {
168
187
String title = static_cast<Element*>(titleNode)->title();
169
if (!title.isEmpty())
188
if (!title.isEmpty()) {
189
if (RenderObject* renderer = titleNode->renderer())
190
dir = renderer->style()->direction();
190
210
if (m_innerNonSharedNode->hasTagName(imgTag)) {
191
211
HTMLImageElement* image = static_cast<HTMLImageElement*>(m_innerNonSharedNode.get());
192
return displayString(image->alt(), m_innerNonSharedNode.get());
212
return displayString(image->getAttribute(altAttr), m_innerNonSharedNode.get());
195
215
if (m_innerNonSharedNode->hasTagName(inputTag)) {
196
216
HTMLInputElement* input = static_cast<HTMLInputElement*>(m_innerNonSharedNode.get());
197
217
return displayString(input->alt(), m_innerNonSharedNode.get());
201
221
if (m_innerNonSharedNode->hasTagName(WMLNames::imgTag)) {
202
222
WMLImageElement* image = static_cast<WMLImageElement*>(m_innerNonSharedNode.get());
257
return m_innerNonSharedNode->document()->completeURL(parseURL(urlString));
277
return m_innerNonSharedNode->document()->completeURL(deprecatedParseURL(urlString));
280
KURL HitTestResult::absoluteMediaURL() const
283
if (!(m_innerNonSharedNode && m_innerNonSharedNode->document()))
286
if (!(m_innerNonSharedNode->renderer() && m_innerNonSharedNode->renderer()->isMedia()))
289
AtomicString urlString;
290
if (m_innerNonSharedNode->hasTagName(HTMLNames::videoTag) || m_innerNonSharedNode->hasTagName(HTMLNames::audioTag)) {
291
HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(m_innerNonSharedNode.get());
292
urlString = mediaElement->currentSrc();
296
return m_innerNonSharedNode->document()->completeURL(deprecatedParseURL(urlString));
260
302
KURL HitTestResult::absoluteLinkURL() const