Changeset 57110 in webkit


Ignore:
Timestamp:
Apr 5, 2010 6:45:31 PM (14 years ago)
Author:
mrowe@apple.com
Message:

Roll out r56989 as it introduced crashes in Mail.
<http://webkit.org/b/37115> / <rdar://problem/7829331>

Reviewed by Adele Peterson.

  • dom/Position.cpp:

(WebCore::Position::isCandidate):

  • dom/PositionIterator.cpp:

(WebCore::PositionIterator::isCandidate):

Location:
trunk/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r57109 r57110  
     12010-04-05  Mark Rowe  <mrowe@apple.com>
     2
     3        Reviewed by Adele Peterson.
     4
     5        Roll out r56989 as it introduced crashes in Mail.
     6        <http://webkit.org/b/37115> / <rdar://problem/7829331>
     7
     8        * dom/Position.cpp:
     9        (WebCore::Position::isCandidate):
     10        * dom/PositionIterator.cpp:
     11        (WebCore::PositionIterator::isCandidate):
     12
    1132010-04-05  Darin Adler  <darin@apple.com>
    214
  • trunk/WebCore/dom/Position.cpp

    r57037 r57110  
    726726bool Position::isCandidate() const
    727727{
    728     return PositionIterator(*this).isCandidate();
     728    if (isNull())
     729        return false;
     730       
     731    RenderObject *renderer = node()->renderer();
     732    if (!renderer)
     733        return false;
     734   
     735    if (renderer->style()->visibility() != VISIBLE)
     736        return false;
     737
     738    if (renderer->isBR())
     739        return m_offset == 0 && !nodeIsUserSelectNone(node()->parent());
     740
     741    if (renderer->isText())
     742        return inRenderedText() && !nodeIsUserSelectNone(node());
     743
     744    if (isTableElement(node()) || editingIgnoresContent(node()))
     745        return (atFirstEditingPositionForNode() || atLastEditingPositionForNode()) && !nodeIsUserSelectNone(node()->parent());
     746
     747    if (m_anchorNode->hasTagName(htmlTag))
     748        return false;
     749       
     750    if (renderer->isBlockFlow()) {
     751        if (toRenderBlock(renderer)->height() || m_anchorNode->hasTagName(bodyTag)) {
     752            if (!Position::hasRenderedNonAnonymousDescendantsWithHeight(renderer))
     753                return atFirstEditingPositionForNode() && !Position::nodeIsUserSelectNone(node());
     754            return m_anchorNode->isContentEditable() && !Position::nodeIsUserSelectNone(node()) && atEditingBoundary();
     755        }
     756    } else
     757        return m_anchorNode->isContentEditable() && !Position::nodeIsUserSelectNone(node()) && atEditingBoundary();
     758
     759    return false;
    729760}
    730761
  • trunk/WebCore/dom/PositionIterator.cpp

    r56989 r57110  
    163163            return m_anchorNode->isContentEditable() && !Position::nodeIsUserSelectNone(m_anchorNode) && Position(*this).atEditingBoundary();
    164164        }
    165     } else
    166         return m_anchorNode->isContentEditable() && !Position::nodeIsUserSelectNone(m_anchorNode) && Position(*this).atEditingBoundary();
     165    }
    167166
    168167    return false;
Note: See TracChangeset for help on using the changeset viewer.