Changeset 154945 in webkit


Ignore:
Timestamp:
Sep 1, 2013 12:12:31 PM (11 years ago)
Author:
Darin Adler
Message:

HitTestResult should have innerNonSharedElement
https://bugs.webkit.org/show_bug.cgi?id=120579

Reviewed by Andreas Kling.

  • editing/Editor.cpp:

(WebCore::Editor::copyImage): Call HitTestResult member function version of
innerNonSharedElement instead of a local function that does it.

  • page/Chrome.cpp:

(WebCore::Chrome::setToolTip): Use innerNonSharedElement instead of getting
the node and checking if it's an input element. Also added some missing braces.

  • page/EventHandler.cpp:

(WebCore::EventHandler::selectClosestWordFromHitTestResult): Use targetNode for
local variables instead of innerNode to match the HitTestResult function name.
(WebCore::EventHandler::selectClosestWordOrLinkFromMouseEvent): Ditto.
(WebCore::EventHandler::handleMousePressEventTripleClick): Ditto.
(WebCore::EventHandler::handleMousePressEventSingleClick): Ditto.
(WebCore::EventHandler::handleMousePressEvent): Ditto.

  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::innerElement): Rewrote so there there is no loop.
(WebCore::HitTestResult::innerNonSharedElement): Ditto.

  • rendering/HitTestResult.h: Added innerNonSharedElement. Generally speaking,

we'd like to avoid using Node unless there is some real need.

Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r154944 r154945  
     12013-09-01  Darin Adler  <darin@apple.com>
     2
     3        HitTestResult should have innerNonSharedElement
     4        https://bugs.webkit.org/show_bug.cgi?id=120579
     5
     6        Reviewed by Andreas Kling.
     7
     8        * editing/Editor.cpp:
     9        (WebCore::Editor::copyImage): Call HitTestResult member function version of
     10        innerNonSharedElement instead of a local function that does it.
     11
     12        * page/Chrome.cpp:
     13        (WebCore::Chrome::setToolTip): Use innerNonSharedElement instead of getting
     14        the node and checking if it's an input element. Also added some missing braces.
     15
     16        * page/EventHandler.cpp:
     17        (WebCore::EventHandler::selectClosestWordFromHitTestResult): Use targetNode for
     18        local variables instead of innerNode to match the HitTestResult function name.
     19        (WebCore::EventHandler::selectClosestWordOrLinkFromMouseEvent): Ditto.
     20        (WebCore::EventHandler::handleMousePressEventTripleClick): Ditto.
     21        (WebCore::EventHandler::handleMousePressEventSingleClick): Ditto.
     22        (WebCore::EventHandler::handleMousePressEvent): Ditto.
     23
     24        * rendering/HitTestResult.cpp:
     25        (WebCore::HitTestResult::innerElement): Rewrote so there there is no loop.
     26        (WebCore::HitTestResult::innerNonSharedElement): Ditto.
     27
     28        * rendering/HitTestResult.h: Added innerNonSharedElement. Generally speaking,
     29        we'd like to avoid using Node unless there is some real need.
     30
    1312013-09-01  Xabier Rodriguez Calvar  <calvaris@igalia.com>
    232
  • trunk/Source/WebCore/editing/Editor.cpp

    r154939 r154945  
    11721172}
    11731173
    1174 // FIXME: Should this be a member function of HitTestResult?
    1175 static Element* innerNonSharedElement(const HitTestResult& result)
    1176 {
    1177     Node* node = result.innerNonSharedNode();
    1178     if (!node)
    1179         return 0;
    1180     if (node->isElementNode())
    1181         return toElement(node);
    1182     return node->parentElement();
    1183 }
    1184 
    11851174void Editor::copyImage(const HitTestResult& result)
    11861175{
    1187     Element* element = innerNonSharedElement(result);
     1176    Element* element = result.innerNonSharedElement();
    11881177    if (!element)
    11891178        return;
  • trunk/Source/WebCore/page/Chrome.cpp

    r154877 r154945  
    403403    // Next priority is a toolTip from a URL beneath the mouse (if preference is set to show those).
    404404    if (toolTip.isEmpty() && m_page->settings().showsURLsInToolTips()) {
    405         if (Node* node = result.innerNonSharedNode()) {
     405        if (Element* element = result.innerNonSharedElement()) {
    406406            // Get tooltip representing form action, if relevant
    407             if (isHTMLInputElement(node)) {
    408                 HTMLInputElement* input = toHTMLInputElement(node);
    409                 if (input->isSubmitButton())
     407            if (isHTMLInputElement(element)) {
     408                HTMLInputElement* input = toHTMLInputElement(element);
     409                if (input->isSubmitButton()) {
    410410                    if (HTMLFormElement* form = input->form()) {
    411411                        toolTip = form->action();
     
    415415                            toolTipDirection = LTR;
    416416                    }
     417                }
    417418            }
    418419        }
     
    436437    // Lastly, for <input type="file"> that allow multiple files, we'll consider a tooltip for the selected filenames
    437438    if (toolTip.isEmpty()) {
    438         if (Node* node = result.innerNonSharedNode()) {
    439             if (isHTMLInputElement(node)) {
    440                 HTMLInputElement* input = toHTMLInputElement(node);
    441                 toolTip = input->defaultToolTip();
     439        if (Element* element = result.innerNonSharedElement()) {
     440            if (isHTMLInputElement(element)) {
     441                toolTip = toHTMLInputElement(element)->defaultToolTip();
    442442
    443443                // FIXME: We should obtain text direction of tooltip from
  • trunk/Source/WebCore/page/EventHandler.cpp

    r154877 r154945  
    486486void EventHandler::selectClosestWordFromHitTestResult(const HitTestResult& result, AppendTrailingWhitespace appendTrailingWhitespace)
    487487{
    488     Node* innerNode = result.targetNode();
     488    Node* targetNode = result.targetNode();
    489489    VisibleSelection newSelection;
    490490
    491     if (innerNode && innerNode->renderer()) {
    492         VisiblePosition pos(innerNode->renderer()->positionForPoint(result.localPoint()));
     491    if (targetNode && targetNode->renderer()) {
     492        VisiblePosition pos(targetNode->renderer()->positionForPoint(result.localPoint()));
    493493        if (pos.isNotNull()) {
    494494            newSelection = VisibleSelection(pos);
     
    499499            newSelection.appendTrailingWhitespace();
    500500
    501         updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelectionToRespectUserSelectAll(innerNode, newSelection), WordGranularity);
     501        updateSelectionForMouseDownDispatchingSelectStart(targetNode, expandSelectionToRespectUserSelectAll(targetNode, newSelection), WordGranularity);
    502502    }
    503503}
     
    516516        return selectClosestWordFromMouseEvent(result);
    517517
    518     Node* innerNode = result.targetNode();
    519 
    520     if (innerNode && innerNode->renderer() && m_mouseDownMayStartSelect) {
     518    Node* targetNode = result.targetNode();
     519
     520    if (targetNode && targetNode->renderer() && m_mouseDownMayStartSelect) {
    521521        VisibleSelection newSelection;
    522522        Element* URLElement = result.hitTestResult().URLElement();
    523         VisiblePosition pos(innerNode->renderer()->positionForPoint(result.localPoint()));
     523        VisiblePosition pos(targetNode->renderer()->positionForPoint(result.localPoint()));
    524524        if (pos.isNotNull() && pos.deepEquivalent().deprecatedNode()->isDescendantOf(URLElement))
    525525            newSelection = VisibleSelection::selectionFromContentsOfNode(URLElement);
    526526
    527         updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelectionToRespectUserSelectAll(innerNode, newSelection), WordGranularity);
     527        updateSelectionForMouseDownDispatchingSelectStart(targetNode, expandSelectionToRespectUserSelectAll(targetNode, newSelection), WordGranularity);
    528528    }
    529529}
     
    552552        return false;
    553553   
    554     Node* innerNode = event.targetNode();
    555     if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect))
     554    Node* targetNode = event.targetNode();
     555    if (!(targetNode && targetNode->renderer() && m_mouseDownMayStartSelect))
    556556        return false;
    557557
    558558    VisibleSelection newSelection;
    559     VisiblePosition pos(innerNode->renderer()->positionForPoint(event.localPoint()));
     559    VisiblePosition pos(targetNode->renderer()->positionForPoint(event.localPoint()));
    560560    if (pos.isNotNull()) {
    561561        newSelection = VisibleSelection(pos);
     
    563563    }
    564564
    565     return updateSelectionForMouseDownDispatchingSelectStart(innerNode, expandSelectionToRespectUserSelectAll(innerNode, newSelection), ParagraphGranularity);
     565    return updateSelectionForMouseDownDispatchingSelectStart(targetNode, expandSelectionToRespectUserSelectAll(targetNode, newSelection), ParagraphGranularity);
    566566}
    567567
     
    575575{
    576576    m_frame->document()->updateLayoutIgnorePendingStylesheets();
    577     Node* innerNode = event.targetNode();
    578     if (!(innerNode && innerNode->renderer() && m_mouseDownMayStartSelect))
     577    Node* targetNode = event.targetNode();
     578    if (!(targetNode && targetNode->renderer() && m_mouseDownMayStartSelect))
    579579        return false;
    580580
     
    592592    }
    593593
    594     VisiblePosition visiblePos(innerNode->renderer()->positionForPoint(event.localPoint()));
     594    VisiblePosition visiblePos(targetNode->renderer()->positionForPoint(event.localPoint()));
    595595    if (visiblePos.isNull())
    596         visiblePos = VisiblePosition(firstPositionInOrBeforeNode(innerNode), DOWNSTREAM);
     596        visiblePos = VisiblePosition(firstPositionInOrBeforeNode(targetNode), DOWNSTREAM);
    597597    Position pos = visiblePos.deepEquivalent();
    598598
     
    601601
    602602    if (extendSelection && newSelection.isCaretOrRange()) {
    603         VisibleSelection selectionInUserSelectAll = expandSelectionToRespectUserSelectAll(innerNode, VisibleSelection(pos));
     603        VisibleSelection selectionInUserSelectAll = expandSelectionToRespectUserSelectAll(targetNode, VisibleSelection(pos));
    604604        if (selectionInUserSelectAll.isRange()) {
    605605            if (comparePositions(selectionInUserSelectAll.start(), newSelection.start()) < 0)
     
    628628        }
    629629    } else
    630         newSelection = expandSelectionToRespectUserSelectAll(innerNode, visiblePos);
    631 
    632     bool handled = updateSelectionForMouseDownDispatchingSelectStart(innerNode, newSelection, granularity);
     630        newSelection = expandSelectionToRespectUserSelectAll(targetNode, visiblePos);
     631
     632    bool handled = updateSelectionForMouseDownDispatchingSelectStart(targetNode, newSelection, granularity);
    633633
    634634    if (event.event().button() == MiddleButton) {
     
    697697        focusDocumentView();
    698698
    699     Node* innerNode = event.targetNode();
    700 
    701     m_mousePressNode = innerNode;
     699    m_mousePressNode = event.targetNode();
    702700#if ENABLE(DRAG_SUPPORT)
    703701    m_dragStartPos = event.event().position();
  • trunk/Source/WebCore/rendering/HitTestResult.cpp

    r154877 r154945  
    691691Element* HitTestResult::innerElement() const
    692692{
    693     for (Node* node = m_innerNode.get(); node; node = node->parentNode()) {
    694         if (node->isElementNode())
    695             return toElement(node);
    696     }
    697 
    698     return 0;
     693    Node* node = m_innerNode.get();
     694    if (!node)
     695        return 0;
     696    if (node->isElementNode())
     697        return toElement(node);
     698    return node->parentElement();
     699}
     700
     701Element* HitTestResult::innerNonSharedElement() const
     702{
     703    Node* node = m_innerNonSharedNode.get();
     704    if (!node)
     705        return 0;
     706    if (node->isElementNode())
     707        return toElement(node);
     708    return node->parentElement();
    699709}
    700710
  • trunk/Source/WebCore/rendering/HitTestResult.h

    r151512 r154945  
    6363    Element* innerElement() const;
    6464    Node* innerNonSharedNode() const { return m_innerNonSharedNode.get(); }
     65    Element* innerNonSharedElement() const;
    6566    Element* URLElement() const { return m_innerURLElement.get(); }
    6667    Scrollbar* scrollbar() const { return m_scrollbar.get(); }
Note: See TracChangeset for help on using the changeset viewer.