| 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 611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 622 { | 622 { |
| 623 if (!object) | 623 if (!object) |
| 624 return 0; | 624 return 0; |
| 625 | 625 |
| 626 RenderObject* child = object->childAt(offset); | 626 RenderObject* child = object->childAt(offset); |
| 627 return child ? child : object->nextInPreOrderAfterChildren(); | 627 return child ? child : object->nextInPreOrderAfterChildren(); |
| 628 } | 628 } |
| 629 | 629 |
| 630 IntRect RenderView::selectionBounds(bool clipToVisibleContent) const | 630 IntRect RenderView::selectionBounds(bool clipToVisibleContent) const |
| 631 { | 631 { |
| 632 document().updateStyleIfNeeded(); | |
| 633 | |
| 634 typedef HashMap<RenderObject*, OwnPtr<RenderSelectionInfo> > SelectionMap; | 632 typedef HashMap<RenderObject*, OwnPtr<RenderSelectionInfo> > SelectionMap; |
| 635 SelectionMap selectedObjects; | 633 SelectionMap selectedObjects; |
| 636 | 634 |
| 637 RenderObject* os = m_selectionStart; | 635 RenderObject* os = m_selectionStart; |
| 638 RenderObject* stop = rendererAfterPosition(m_selectionEnd, m_selectionEndPos
); | 636 RenderObject* stop = rendererAfterPosition(m_selectionEnd, m_selectionEndPos
); |
| 639 while (os && os != stop) { | 637 while (os && os != stop) { |
| 640 if ((os->canBeSelectionLeaf() || os == m_selectionStart || os == m_selec
tionEnd) && os->selectionState() != SelectionNone) { | 638 if ((os->canBeSelectionLeaf() || os == m_selectionStart || os == m_selec
tionEnd) && os->selectionState() != SelectionNone) { |
| 641 // Blocks are responsible for painting line gaps and margin gaps. Th
ey must be examined as well. | 639 // Blocks are responsible for painting line gaps and margin gaps. Th
ey must be examined as well. |
| 642 selectedObjects.set(os, adoptPtr(new RenderSelectionInfo(os, clipToV
isibleContent))); | 640 selectedObjects.set(os, adoptPtr(new RenderSelectionInfo(os, clipToV
isibleContent))); |
| 643 RenderBlock* cb = os->containingBlock(); | 641 RenderBlock* cb = os->containingBlock(); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 664 FloatQuad absQuad = repaintContainer->localToAbsoluteQuad(FloatRect(
currRect)); | 662 FloatQuad absQuad = repaintContainer->localToAbsoluteQuad(FloatRect(
currRect)); |
| 665 currRect = absQuad.enclosingBoundingBox(); | 663 currRect = absQuad.enclosingBoundingBox(); |
| 666 } | 664 } |
| 667 selRect.unite(currRect); | 665 selRect.unite(currRect); |
| 668 } | 666 } |
| 669 return pixelSnappedIntRect(selRect); | 667 return pixelSnappedIntRect(selRect); |
| 670 } | 668 } |
| 671 | 669 |
| 672 void RenderView::repaintSelection() const | 670 void RenderView::repaintSelection() const |
| 673 { | 671 { |
| 674 document().updateStyleIfNeeded(); | |
| 675 | |
| 676 HashSet<RenderBlock*> processedBlocks; | 672 HashSet<RenderBlock*> processedBlocks; |
| 677 | 673 |
| 678 RenderObject* end = rendererAfterPosition(m_selectionEnd, m_selectionEndPos)
; | 674 RenderObject* end = rendererAfterPosition(m_selectionEnd, m_selectionEndPos)
; |
| 679 for (RenderObject* o = m_selectionStart; o && o != end; o = o->nextInPreOrde
r()) { | 675 for (RenderObject* o = m_selectionStart; o && o != end; o = o->nextInPreOrde
r()) { |
| 680 if (!o->canBeSelectionLeaf() && o != m_selectionStart && o != m_selectio
nEnd) | 676 if (!o->canBeSelectionLeaf() && o != m_selectionStart && o != m_selectio
nEnd) |
| 681 continue; | 677 continue; |
| 682 if (o->selectionState() == SelectionNone) | 678 if (o->selectionState() == SelectionNone) |
| 683 continue; | 679 continue; |
| 684 | 680 |
| 685 RenderSelectionInfo(o, true).repaint(); | 681 RenderSelectionInfo(o, true).repaint(); |
| (...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1231 #endif | 1227 #endif |
| 1232 | 1228 |
| 1233 if (layoutState) | 1229 if (layoutState) |
| 1234 layoutState->m_isPaginated = m_fragmenting; | 1230 layoutState->m_isPaginated = m_fragmenting; |
| 1235 | 1231 |
| 1236 if (m_flowThreadState != RenderObject::NotInsideFlowThread) | 1232 if (m_flowThreadState != RenderObject::NotInsideFlowThread) |
| 1237 m_root->setFlowThreadStateIncludingDescendants(m_flowThreadState); | 1233 m_root->setFlowThreadStateIncludingDescendants(m_flowThreadState); |
| 1238 } | 1234 } |
| 1239 | 1235 |
| 1240 } // namespace WebCore | 1236 } // namespace WebCore |
| OLD | NEW |