diff options
Diffstat (limited to 'WebCore/rendering/RenderView.cpp')
-rw-r--r-- | WebCore/rendering/RenderView.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/WebCore/rendering/RenderView.cpp b/WebCore/rendering/RenderView.cpp index 232dd5d..449c15c 100644 --- a/WebCore/rendering/RenderView.cpp +++ b/WebCore/rendering/RenderView.cpp @@ -456,13 +456,15 @@ void RenderView::setSelection(RenderObject* start, int startPos, RenderObject* e if ((os->canBeSelectionLeaf() || os == m_selectionStart || os == m_selectionEnd) && os->selectionState() != SelectionNone) { // Blocks are responsible for painting line gaps and margin gaps. They must be examined as well. oldSelectedObjects.set(os, new RenderSelectionInfo(os, true)); - RenderBlock* cb = os->containingBlock(); - while (cb && !cb->isRenderView()) { - RenderBlockSelectionInfo* blockInfo = oldSelectedBlocks.get(cb); - if (blockInfo) - break; - oldSelectedBlocks.set(cb, new RenderBlockSelectionInfo(cb)); - cb = cb->containingBlock(); + if (blockRepaintMode == RepaintNewXOROld) { + RenderBlock* cb = os->containingBlock(); + while (cb && !cb->isRenderView()) { + RenderBlockSelectionInfo* blockInfo = oldSelectedBlocks.get(cb); + if (blockInfo) + break; + oldSelectedBlocks.set(cb, new RenderBlockSelectionInfo(cb)); + cb = cb->containingBlock(); + } } } @@ -565,8 +567,7 @@ void RenderView::setSelection(RenderObject* start, int startPos, RenderObject* e RenderBlockSelectionInfo* newInfo = newSelectedBlocks.get(block); RenderBlockSelectionInfo* oldInfo = i->second; if (!newInfo || oldInfo->rects() != newInfo->rects() || oldInfo->state() != newInfo->state()) { - if (blockRepaintMode == RepaintNewXOROld) - oldInfo->repaint(); + oldInfo->repaint(); if (newInfo) { newInfo->repaint(); newSelectedBlocks.remove(block); |