Index: Source/core/editing/FrameSelection.h |
diff --git a/Source/core/editing/FrameSelection.h b/Source/core/editing/FrameSelection.h |
index ebffebe35f6ffa60f3aa7b1f63c8f5b722ede3d2..419c2d1c78af4163f18074b64fbefe8b265db8bd 100644 |
--- a/Source/core/editing/FrameSelection.h |
+++ b/Source/core/editing/FrameSelection.h |
@@ -89,6 +89,10 @@ public: |
NonDirectional, |
Directional |
}; |
+ enum ResetCaretBlinkOption { |
+ None, |
+ ResetCaretBlink |
+ }; |
Element* rootEditableElement() const { return m_selection.rootEditableElement(); } |
Element* rootEditableElementOrDocumentElement() const; |
@@ -139,13 +143,8 @@ public: |
// Return the renderer that is responsible for painting the caret (in the selection start node) |
RenderBlock* caretRenderer() const; |
- // Caret rect local to the caret's renderer |
- LayoutRect localCaretRect(); |
- LayoutRect localCaretRectWithoutUpdateForTesting() const { return CaretBase::localCaretRectWithoutUpdate(); } |
- |
// Bounds of (possibly transformed) caret in absolute coords |
IntRect absoluteCaretBounds(); |
- void setCaretRectNeedsUpdate() { CaretBase::setCaretRectNeedsUpdate(); } |
void didChangeFocus(); |
void willBeModified(EAlteration, SelectionDirection); |
@@ -168,8 +167,11 @@ public: |
void didMergeTextNodes(const Text& oldNode, unsigned offset); |
void didSplitTextNode(const Text& oldNode); |
+ void updateAppearance(ResetCaretBlinkOption = None); |
void setCaretVisible(bool caretIsVisible) { setCaretVisibility(caretIsVisible ? Visible : Hidden); } |
- bool recomputeCaretRect(); |
+ bool isCaretBoundsDirty() const { return m_caretRectDirty; } |
+ void setCaretRectNeedsUpdate(); |
+ void scheduleVisualUpdate() const; |
void invalidateCaretRect(); |
void paintCaret(GraphicsContext*, const LayoutPoint&, const LayoutRect& clipRect); |
@@ -183,9 +185,6 @@ public: |
bool isFocusedAndActive() const; |
void pageActivationChanged(); |
- // Painting. |
- void updateAppearance(); |
- |
void updateSecureKeyboardEntryIfActive(); |
#ifndef NDEBUG |
@@ -280,13 +279,13 @@ private: |
RefPtrWillBeMember<Range> m_logicalRange; |
RefPtrWillBeMember<Node> m_previousCaretNode; // The last node which painted the caret. Retained for clearing the old caret when it moves. |
+ LayoutRect m_previousCaretRect; |
RefPtrWillBeMember<EditingStyle> m_typingStyle; |
Timer<FrameSelection> m_caretBlinkTimer; |
- // The painted bounds of the caret in absolute coordinates |
- IntRect m_absCaretBounds; |
- bool m_absCaretBoundsDirty : 1; |
+ |
+ bool m_caretRectDirty : 1; |
bool m_caretPaint : 1; |
bool m_isCaretBlinkingSuspended : 1; |
bool m_focused : 1; |