Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. |
| 4 * | 4 * |
| 5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
| 6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
| 7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
| 8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
| 9 * | 9 * |
| 10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
| (...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 621 { | 621 { |
| 622 if (!object) | 622 if (!object) |
| 623 return 0; | 623 return 0; |
| 624 | 624 |
| 625 RenderObject* child = object->childAt(offset); | 625 RenderObject* child = object->childAt(offset); |
| 626 return child ? child : object->nextInPreOrderAfterChildren(); | 626 return child ? child : object->nextInPreOrderAfterChildren(); |
| 627 } | 627 } |
| 628 | 628 |
| 629 IntRect RenderView::selectionBounds(bool clipToVisibleContent) const | 629 IntRect RenderView::selectionBounds(bool clipToVisibleContent) const |
| 630 { | 630 { |
| 631 document().updateStyleIfNeeded(); | |
|
eseidel
2013/09/27 23:04:27
Should these be ASSERT(!document->needsStylin())
| |
| 632 | |
| 633 typedef HashMap<RenderObject*, OwnPtr<RenderSelectionInfo> > SelectionMap; | 631 typedef HashMap<RenderObject*, OwnPtr<RenderSelectionInfo> > SelectionMap; |
| 634 SelectionMap selectedObjects; | 632 SelectionMap selectedObjects; |
| 635 | 633 |
| 636 RenderObject* os = m_selectionStart; | 634 RenderObject* os = m_selectionStart; |
| 637 RenderObject* stop = rendererAfterPosition(m_selectionEnd, m_selectionEndPos ); | 635 RenderObject* stop = rendererAfterPosition(m_selectionEnd, m_selectionEndPos ); |
| 638 while (os && os != stop) { | 636 while (os && os != stop) { |
| 639 if ((os->canBeSelectionLeaf() || os == m_selectionStart || os == m_selec tionEnd) && os->selectionState() != SelectionNone) { | 637 if ((os->canBeSelectionLeaf() || os == m_selectionStart || os == m_selec tionEnd) && os->selectionState() != SelectionNone) { |
| 640 // Blocks are responsible for painting line gaps and margin gaps. Th ey must be examined as well. | 638 // Blocks are responsible for painting line gaps and margin gaps. Th ey must be examined as well. |
| 641 selectedObjects.set(os, adoptPtr(new RenderSelectionInfo(os, clipToV isibleContent))); | 639 selectedObjects.set(os, adoptPtr(new RenderSelectionInfo(os, clipToV isibleContent))); |
| 642 RenderBlock* cb = os->containingBlock(); | 640 RenderBlock* cb = os->containingBlock(); |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 663 FloatQuad absQuad = repaintContainer->localToAbsoluteQuad(FloatRect( currRect)); | 661 FloatQuad absQuad = repaintContainer->localToAbsoluteQuad(FloatRect( currRect)); |
| 664 currRect = absQuad.enclosingBoundingBox(); | 662 currRect = absQuad.enclosingBoundingBox(); |
| 665 } | 663 } |
| 666 selRect.unite(currRect); | 664 selRect.unite(currRect); |
| 667 } | 665 } |
| 668 return pixelSnappedIntRect(selRect); | 666 return pixelSnappedIntRect(selRect); |
| 669 } | 667 } |
| 670 | 668 |
| 671 void RenderView::repaintSelection() const | 669 void RenderView::repaintSelection() const |
| 672 { | 670 { |
| 673 document().updateStyleIfNeeded(); | |
| 674 | |
| 675 HashSet<RenderBlock*> processedBlocks; | 671 HashSet<RenderBlock*> processedBlocks; |
| 676 | 672 |
| 677 RenderObject* end = rendererAfterPosition(m_selectionEnd, m_selectionEndPos) ; | 673 RenderObject* end = rendererAfterPosition(m_selectionEnd, m_selectionEndPos) ; |
| 678 for (RenderObject* o = m_selectionStart; o && o != end; o = o->nextInPreOrde r()) { | 674 for (RenderObject* o = m_selectionStart; o && o != end; o = o->nextInPreOrde r()) { |
| 679 if (!o->canBeSelectionLeaf() && o != m_selectionStart && o != m_selectio nEnd) | 675 if (!o->canBeSelectionLeaf() && o != m_selectionStart && o != m_selectio nEnd) |
| 680 continue; | 676 continue; |
| 681 if (o->selectionState() == SelectionNone) | 677 if (o->selectionState() == SelectionNone) |
| 682 continue; | 678 continue; |
| 683 | 679 |
| 684 RenderSelectionInfo(o, true).repaint(); | 680 RenderSelectionInfo(o, true).repaint(); |
| (...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1234 #endif | 1230 #endif |
| 1235 | 1231 |
| 1236 if (layoutState) | 1232 if (layoutState) |
| 1237 layoutState->m_isPaginated = m_fragmenting; | 1233 layoutState->m_isPaginated = m_fragmenting; |
| 1238 | 1234 |
| 1239 if (m_flowThreadState != RenderObject::NotInsideFlowThread) | 1235 if (m_flowThreadState != RenderObject::NotInsideFlowThread) |
| 1240 m_root->setFlowThreadStateIncludingDescendants(m_flowThreadState); | 1236 m_root->setFlowThreadStateIncludingDescendants(m_flowThreadState); |
| 1241 } | 1237 } |
| 1242 | 1238 |
| 1243 } // namespace WebCore | 1239 } // namespace WebCore |
| OLD | NEW |