| Index: Source/core/rendering/RenderView.cpp
|
| diff --git a/Source/core/rendering/RenderView.cpp b/Source/core/rendering/RenderView.cpp
|
| index 32d63a0bcfa7130e5b007de7b28550cd4e6f33e5..3063c95ac5e2cc3d290d3f8b2ed9a24d9283a08b 100644
|
| --- a/Source/core/rendering/RenderView.cpp
|
| +++ b/Source/core/rendering/RenderView.cpp
|
| @@ -23,6 +23,7 @@
|
|
|
| #include "core/dom/Document.h"
|
| #include "core/dom/Element.h"
|
| +#include "core/editing/FrameSelection.h"
|
| #include "core/html/HTMLFrameOwnerElement.h"
|
| #include "core/html/HTMLIFrameElement.h"
|
| #include "core/page/Frame.h"
|
| @@ -60,6 +61,7 @@ RenderView::RenderView(Document* document)
|
| , m_firstLazyBlock(0)
|
| , m_renderQuoteHead(0)
|
| , m_renderCounterCount(0)
|
| + , m_selectionWasCaret(false)
|
| {
|
| // init RenderObject attributes
|
| setInline(false);
|
| @@ -670,9 +672,11 @@ void RenderView::setSelection(RenderObject* start, int startPos, RenderObject* e
|
| if ((start && !end) || (end && !start))
|
| return;
|
|
|
| + bool caretChanged = m_selectionWasCaret != view()->frame()->selection()->isCaret();
|
| + m_selectionWasCaret = view()->frame()->selection()->isCaret();
|
| // Just return if the selection hasn't changed.
|
| if (m_selectionStart == start && m_selectionStartPos == startPos &&
|
| - m_selectionEnd == end && m_selectionEndPos == endPos)
|
| + m_selectionEnd == end && m_selectionEndPos == endPos && !caretChanged)
|
| return;
|
|
|
| if ((start && end) && (start->flowThreadContainingBlock() != end->flowThreadContainingBlock()))
|
|
|