| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2008, 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2004, 2008, 2009, 2010 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 { | 111 { |
| 112 } | 112 } |
| 113 | 113 |
| 114 template <> | 114 template <> |
| 115 VisiblePosition FrameSelection::originalBase<EditingStrategy>() const | 115 VisiblePosition FrameSelection::originalBase<EditingStrategy>() const |
| 116 { | 116 { |
| 117 return m_originalBase; | 117 return m_originalBase; |
| 118 } | 118 } |
| 119 | 119 |
| 120 template <> | 120 template <> |
| 121 VisiblePositionInComposedTree FrameSelection::originalBase<EditingInComposedTree
Strategy>() const | 121 VisiblePositionInFlatTree FrameSelection::originalBase<EditingInFlatTreeStrategy
>() const |
| 122 { | 122 { |
| 123 return m_originalBaseInComposedTree; | 123 return m_originalBaseInFlatTree; |
| 124 } | 124 } |
| 125 | 125 |
| 126 // TODO(yosin): To avoid undefined symbols in clang, we explicitly | 126 // TODO(yosin): To avoid undefined symbols in clang, we explicitly |
| 127 // have specialized version of |FrameSelection::visibleSelection<Strategy>| | 127 // have specialized version of |FrameSelection::visibleSelection<Strategy>| |
| 128 // before |FrameSelection::selection()| which refers this. | 128 // before |FrameSelection::selection()| which refers this. |
| 129 template <> | 129 template <> |
| 130 const VisibleSelection& FrameSelection::visibleSelection<EditingStrategy>() cons
t | 130 const VisibleSelection& FrameSelection::visibleSelection<EditingStrategy>() cons
t |
| 131 { | 131 { |
| 132 return m_selectionEditor->visibleSelection<EditingStrategy>(); | 132 return m_selectionEditor->visibleSelection<EditingStrategy>(); |
| 133 } | 133 } |
| 134 | 134 |
| 135 template <> | 135 template <> |
| 136 const VisibleSelectionInComposedTree& FrameSelection::visibleSelection<EditingIn
ComposedTreeStrategy>() const | 136 const VisibleSelectionInFlatTree& FrameSelection::visibleSelection<EditingInFlat
TreeStrategy>() const |
| 137 { | 137 { |
| 138 return m_selectionEditor->visibleSelection<EditingInComposedTreeStrategy>(); | 138 return m_selectionEditor->visibleSelection<EditingInFlatTreeStrategy>(); |
| 139 } | 139 } |
| 140 | 140 |
| 141 Element* FrameSelection::rootEditableElementOrDocumentElement() const | 141 Element* FrameSelection::rootEditableElementOrDocumentElement() const |
| 142 { | 142 { |
| 143 Element* selectionRoot = selection().rootEditableElement(); | 143 Element* selectionRoot = selection().rootEditableElement(); |
| 144 return selectionRoot ? selectionRoot : m_frame->document()->documentElement(
); | 144 return selectionRoot ? selectionRoot : m_frame->document()->documentElement(
); |
| 145 } | 145 } |
| 146 | 146 |
| 147 ContainerNode* FrameSelection::rootEditableElementOrTreeScopeRootNode() const | 147 ContainerNode* FrameSelection::rootEditableElementOrTreeScopeRootNode() const |
| 148 { | 148 { |
| 149 Element* selectionRoot = selection().rootEditableElement(); | 149 Element* selectionRoot = selection().rootEditableElement(); |
| 150 if (selectionRoot) | 150 if (selectionRoot) |
| 151 return selectionRoot; | 151 return selectionRoot; |
| 152 | 152 |
| 153 Node* node = selection().base().computeContainerNode(); | 153 Node* node = selection().base().computeContainerNode(); |
| 154 return node ? &node->treeScope().rootNode() : 0; | 154 return node ? &node->treeScope().rootNode() : 0; |
| 155 } | 155 } |
| 156 | 156 |
| 157 const VisibleSelection& FrameSelection::selection() const | 157 const VisibleSelection& FrameSelection::selection() const |
| 158 { | 158 { |
| 159 return visibleSelection<EditingStrategy>(); | 159 return visibleSelection<EditingStrategy>(); |
| 160 } | 160 } |
| 161 | 161 |
| 162 const VisibleSelectionInComposedTree& FrameSelection::selectionInComposedTree()
const | 162 const VisibleSelectionInFlatTree& FrameSelection::selectionInFlatTree() const |
| 163 { | 163 { |
| 164 return visibleSelection<EditingInComposedTreeStrategy>(); | 164 return visibleSelection<EditingInFlatTreeStrategy>(); |
| 165 } | 165 } |
| 166 | 166 |
| 167 void FrameSelection::moveTo(const VisiblePosition &pos, EUserTriggered userTrigg
ered, CursorAlignOnScroll align) | 167 void FrameSelection::moveTo(const VisiblePosition &pos, EUserTriggered userTrigg
ered, CursorAlignOnScroll align) |
| 168 { | 168 { |
| 169 SetSelectionOptions options = CloseTyping | ClearTypingStyle | userTriggered
; | 169 SetSelectionOptions options = CloseTyping | ClearTypingStyle | userTriggered
; |
| 170 setSelection(VisibleSelection(pos, pos, selection().isDirectional()), option
s, align); | 170 setSelection(VisibleSelection(pos, pos, selection().isDirectional()), option
s, align); |
| 171 } | 171 } |
| 172 | 172 |
| 173 void FrameSelection::moveTo(const VisiblePosition &base, const VisiblePosition &
extent, EUserTriggered userTriggered) | 173 void FrameSelection::moveTo(const VisiblePosition &base, const VisiblePosition &
extent, EUserTriggered userTriggered) |
| 174 { | 174 { |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 return; | 252 return; |
| 253 | 253 |
| 254 setSelection(newSelection, granularity); | 254 setSelection(newSelection, granularity); |
| 255 } | 255 } |
| 256 | 256 |
| 257 void FrameSelection::setNonDirectionalSelectionIfNeeded(const VisibleSelection&
passedNewSelection, TextGranularity granularity, EndPointsAdjustmentMode endpoin
tsAdjustmentMode) | 257 void FrameSelection::setNonDirectionalSelectionIfNeeded(const VisibleSelection&
passedNewSelection, TextGranularity granularity, EndPointsAdjustmentMode endpoin
tsAdjustmentMode) |
| 258 { | 258 { |
| 259 setNonDirectionalSelectionIfNeededAlgorithm<EditingStrategy>(passedNewSelect
ion, granularity, endpointsAdjustmentMode); | 259 setNonDirectionalSelectionIfNeededAlgorithm<EditingStrategy>(passedNewSelect
ion, granularity, endpointsAdjustmentMode); |
| 260 } | 260 } |
| 261 | 261 |
| 262 void FrameSelection::setNonDirectionalSelectionIfNeeded(const VisibleSelectionIn
ComposedTree& passedNewSelection, TextGranularity granularity, EndPointsAdjustme
ntMode endpointsAdjustmentMode) | 262 void FrameSelection::setNonDirectionalSelectionIfNeeded(const VisibleSelectionIn
FlatTree& passedNewSelection, TextGranularity granularity, EndPointsAdjustmentMo
de endpointsAdjustmentMode) |
| 263 { | 263 { |
| 264 setNonDirectionalSelectionIfNeededAlgorithm<EditingInComposedTreeStrategy>(p
assedNewSelection, granularity, endpointsAdjustmentMode); | 264 setNonDirectionalSelectionIfNeededAlgorithm<EditingInFlatTreeStrategy>(passe
dNewSelection, granularity, endpointsAdjustmentMode); |
| 265 } | 265 } |
| 266 | 266 |
| 267 template <typename Strategy> | 267 template <typename Strategy> |
| 268 void FrameSelection::setSelectionAlgorithm(const VisibleSelectionTemplate<Strate
gy>& newSelection, SetSelectionOptions options, CursorAlignOnScroll align, TextG
ranularity granularity) | 268 void FrameSelection::setSelectionAlgorithm(const VisibleSelectionTemplate<Strate
gy>& newSelection, SetSelectionOptions options, CursorAlignOnScroll align, TextG
ranularity granularity) |
| 269 { | 269 { |
| 270 if (m_granularityStrategy && (options & FrameSelection::DoNotClearStrategy)
== 0) | 270 if (m_granularityStrategy && (options & FrameSelection::DoNotClearStrategy)
== 0) |
| 271 m_granularityStrategy->Clear(); | 271 m_granularityStrategy->Clear(); |
| 272 bool closeTyping = options & CloseTyping; | 272 bool closeTyping = options & CloseTyping; |
| 273 bool shouldClearTypingStyle = options & ClearTypingStyle; | 273 bool shouldClearTypingStyle = options & ClearTypingStyle; |
| 274 EUserTriggered userTriggered = selectionOptionsToUserTriggered(options); | 274 EUserTriggered userTriggered = selectionOptionsToUserTriggered(options); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 updateAppearance(); | 337 updateAppearance(); |
| 338 } | 338 } |
| 339 | 339 |
| 340 // Always clear the x position used for vertical arrow navigation. | 340 // Always clear the x position used for vertical arrow navigation. |
| 341 // It will be restored by the vertical arrow navigation code if necessary. | 341 // It will be restored by the vertical arrow navigation code if necessary. |
| 342 m_selectionEditor->resetXPosForVerticalArrowNavigation(); | 342 m_selectionEditor->resetXPosForVerticalArrowNavigation(); |
| 343 RefPtrWillBeRawPtr<LocalFrame> protector(m_frame.get()); | 343 RefPtrWillBeRawPtr<LocalFrame> protector(m_frame.get()); |
| 344 // This may dispatch a synchronous focus-related events. | 344 // This may dispatch a synchronous focus-related events. |
| 345 selectFrameElementInParentIfFullySelected(); | 345 selectFrameElementInParentIfFullySelected(); |
| 346 notifyLayoutObjectOfSelectionChange(userTriggered); | 346 notifyLayoutObjectOfSelectionChange(userTriggered); |
| 347 // If the selections are same in the DOM tree but not in the composed tree, | 347 // If the selections are same in the DOM tree but not in the flat tree, |
| 348 // don't fire events. For example, if the selection crosses shadow tree | 348 // don't fire events. For example, if the selection crosses shadow tree |
| 349 // boundary, selection for the DOM tree is shrunk while that for the | 349 // boundary, selection for the DOM tree is shrunk while that for the |
| 350 // composed tree is not. Additionally, this case occurs in some edge cases. | 350 // flat tree is not. Additionally, this case occurs in some edge cases. |
| 351 // See also: editing/pasteboard/4076267-3.html | 351 // See also: editing/pasteboard/4076267-3.html |
| 352 if (oldSelection == m_selectionEditor->visibleSelection<Strategy>()) { | 352 if (oldSelection == m_selectionEditor->visibleSelection<Strategy>()) { |
| 353 m_frame->inputMethodController().cancelCompositionIfSelectionIsInvalid()
; | 353 m_frame->inputMethodController().cancelCompositionIfSelectionIsInvalid()
; |
| 354 return; | 354 return; |
| 355 } | 355 } |
| 356 m_frame->editor().respondToChangedSelection(oldSelectionInDOMTree, options); | 356 m_frame->editor().respondToChangedSelection(oldSelectionInDOMTree, options); |
| 357 if (userTriggered == UserTriggered) { | 357 if (userTriggered == UserTriggered) { |
| 358 ScrollAlignment alignment; | 358 ScrollAlignment alignment; |
| 359 | 359 |
| 360 if (m_frame->editor().behavior().shouldCenterAlignWhenSelectionIsReveale
d()) | 360 if (m_frame->editor().behavior().shouldCenterAlignWhenSelectionIsReveale
d()) |
| 361 alignment = (align == CursorAlignOnScroll::Always) ? ScrollAlignment
::alignCenterAlways : ScrollAlignment::alignCenterIfNeeded; | 361 alignment = (align == CursorAlignOnScroll::Always) ? ScrollAlignment
::alignCenterAlways : ScrollAlignment::alignCenterIfNeeded; |
| 362 else | 362 else |
| 363 alignment = (align == CursorAlignOnScroll::Always) ? ScrollAlignment
::alignTopAlways : ScrollAlignment::alignToEdgeIfNeeded; | 363 alignment = (align == CursorAlignOnScroll::Always) ? ScrollAlignment
::alignTopAlways : ScrollAlignment::alignToEdgeIfNeeded; |
| 364 | 364 |
| 365 revealSelection(alignment, RevealExtent); | 365 revealSelection(alignment, RevealExtent); |
| 366 } | 366 } |
| 367 | 367 |
| 368 notifyAccessibilityForSelectionChange(); | 368 notifyAccessibilityForSelectionChange(); |
| 369 notifyCompositorForSelectionChange(); | 369 notifyCompositorForSelectionChange(); |
| 370 notifyEventHandlerForSelectionChange(); | 370 notifyEventHandlerForSelectionChange(); |
| 371 m_frame->localDOMWindow()->enqueueDocumentEvent(Event::create(EventTypeNames
::selectionchange)); | 371 m_frame->localDOMWindow()->enqueueDocumentEvent(Event::create(EventTypeNames
::selectionchange)); |
| 372 } | 372 } |
| 373 | 373 |
| 374 void FrameSelection::setSelection(const VisibleSelection& newSelection, SetSelec
tionOptions options, CursorAlignOnScroll align, TextGranularity granularity) | 374 void FrameSelection::setSelection(const VisibleSelection& newSelection, SetSelec
tionOptions options, CursorAlignOnScroll align, TextGranularity granularity) |
| 375 { | 375 { |
| 376 setSelectionAlgorithm<EditingStrategy>(newSelection, options, align, granula
rity); | 376 setSelectionAlgorithm<EditingStrategy>(newSelection, options, align, granula
rity); |
| 377 } | 377 } |
| 378 | 378 |
| 379 void FrameSelection::setSelection(const VisibleSelectionInComposedTree& newSelec
tion, SetSelectionOptions options, CursorAlignOnScroll align, TextGranularity gr
anularity) | 379 void FrameSelection::setSelection(const VisibleSelectionInFlatTree& newSelection
, SetSelectionOptions options, CursorAlignOnScroll align, TextGranularity granul
arity) |
| 380 { | 380 { |
| 381 setSelectionAlgorithm<EditingInComposedTreeStrategy>(newSelection, options,
align, granularity); | 381 setSelectionAlgorithm<EditingInFlatTreeStrategy>(newSelection, options, alig
n, granularity); |
| 382 } | 382 } |
| 383 | 383 |
| 384 static bool removingNodeRemovesPosition(Node& node, const Position& position) | 384 static bool removingNodeRemovesPosition(Node& node, const Position& position) |
| 385 { | 385 { |
| 386 if (!position.anchorNode()) | 386 if (!position.anchorNode()) |
| 387 return false; | 387 return false; |
| 388 | 388 |
| 389 if (position.anchorNode() == node) | 389 if (position.anchorNode() == node) |
| 390 return true; | 390 return true; |
| 391 | 391 |
| (...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 759 return false; | 759 return false; |
| 760 | 760 |
| 761 const PositionTemplate<Strategy> start = visibleStart.deepEquivalent(); | 761 const PositionTemplate<Strategy> start = visibleStart.deepEquivalent(); |
| 762 const PositionTemplate<Strategy> end = visibleEnd.deepEquivalent(); | 762 const PositionTemplate<Strategy> end = visibleEnd.deepEquivalent(); |
| 763 const PositionTemplate<Strategy> pos = visiblePos.deepEquivalent(); | 763 const PositionTemplate<Strategy> pos = visiblePos.deepEquivalent(); |
| 764 return start.compareTo(pos) <= 0 && pos.compareTo(end) <= 0; | 764 return start.compareTo(pos) <= 0 && pos.compareTo(end) <= 0; |
| 765 } | 765 } |
| 766 | 766 |
| 767 bool FrameSelection::contains(const LayoutPoint& point) | 767 bool FrameSelection::contains(const LayoutPoint& point) |
| 768 { | 768 { |
| 769 if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled()) | 769 if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled()) |
| 770 return containsAlgorithm<EditingInComposedTreeStrategy>(point); | 770 return containsAlgorithm<EditingInFlatTreeStrategy>(point); |
| 771 return containsAlgorithm<EditingStrategy>(point); | 771 return containsAlgorithm<EditingStrategy>(point); |
| 772 } | 772 } |
| 773 | 773 |
| 774 // Workaround for the fact that it's hard to delete a frame. | 774 // Workaround for the fact that it's hard to delete a frame. |
| 775 // Call this after doing user-triggered selections to make it easy to delete the
frame you entirely selected. | 775 // Call this after doing user-triggered selections to make it easy to delete the
frame you entirely selected. |
| 776 // Can't do this implicitly as part of every setSelection call because in some c
ontexts it might not be good | 776 // Can't do this implicitly as part of every setSelection call because in some c
ontexts it might not be good |
| 777 // for the focus to move to another frame. So instead we call it from places whe
re we are selecting with the | 777 // for the focus to move to another frame. So instead we call it from places whe
re we are selecting with the |
| 778 // mouse or the keyboard after setting the selection. | 778 // mouse or the keyboard after setting the selection. |
| 779 void FrameSelection::selectFrameElementInParentIfFullySelected() | 779 void FrameSelection::selectFrameElementInParentIfFullySelected() |
| 780 { | 780 { |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1125 String extractSelectedTextAlgorithm(const FrameSelection& selection, TextIterato
rBehavior behavior) | 1125 String extractSelectedTextAlgorithm(const FrameSelection& selection, TextIterato
rBehavior behavior) |
| 1126 { | 1126 { |
| 1127 const VisibleSelectionTemplate<Strategy> visibleSelection = selection.visibl
eSelection<Strategy>(); | 1127 const VisibleSelectionTemplate<Strategy> visibleSelection = selection.visibl
eSelection<Strategy>(); |
| 1128 const EphemeralRangeTemplate<Strategy> range = visibleSelection.toNormalized
EphemeralRange(); | 1128 const EphemeralRangeTemplate<Strategy> range = visibleSelection.toNormalized
EphemeralRange(); |
| 1129 // We remove '\0' characters because they are not visibly rendered to the us
er. | 1129 // We remove '\0' characters because they are not visibly rendered to the us
er. |
| 1130 return plainText(range, behavior).replace(0, ""); | 1130 return plainText(range, behavior).replace(0, ""); |
| 1131 } | 1131 } |
| 1132 | 1132 |
| 1133 static String extractSelectedText(const FrameSelection& selection, TextIteratorB
ehavior behavior) | 1133 static String extractSelectedText(const FrameSelection& selection, TextIteratorB
ehavior behavior) |
| 1134 { | 1134 { |
| 1135 if (RuntimeEnabledFeatures::selectionForComposedTreeEnabled()) | 1135 if (RuntimeEnabledFeatures::selectionForFlatTreeEnabled()) |
| 1136 return extractSelectedTextAlgorithm<EditingInComposedTreeStrategy>(selec
tion, behavior); | 1136 return extractSelectedTextAlgorithm<EditingInFlatTreeStrategy>(selection
, behavior); |
| 1137 return extractSelectedTextAlgorithm<EditingStrategy>(selection, behavior); | 1137 return extractSelectedTextAlgorithm<EditingStrategy>(selection, behavior); |
| 1138 } | 1138 } |
| 1139 | 1139 |
| 1140 template <typename Strategy> | 1140 template <typename Strategy> |
| 1141 static String extractSelectedHTMLAlgorithm(const FrameSelection& selection) | 1141 static String extractSelectedHTMLAlgorithm(const FrameSelection& selection) |
| 1142 { | 1142 { |
| 1143 const VisibleSelectionTemplate<Strategy> visibleSelection = selection.visibl
eSelection<Strategy>(); | 1143 const VisibleSelectionTemplate<Strategy> visibleSelection = selection.visibl
eSelection<Strategy>(); |
| 1144 const EphemeralRangeTemplate<Strategy> range = visibleSelection.toNormalized
EphemeralRange(); | 1144 const EphemeralRangeTemplate<Strategy> range = visibleSelection.toNormalized
EphemeralRange(); |
| 1145 return createMarkup(range.startPosition(), range.endPosition(), AnnotateForI
nterchange, ConvertBlocksToInlines::NotConvert, ResolveNonLocalURLs); | 1145 return createMarkup(range.startPosition(), range.endPosition(), AnnotateForI
nterchange, ConvertBlocksToInlines::NotConvert, ResolveNonLocalURLs); |
| 1146 } | 1146 } |
| 1147 | 1147 |
| 1148 String FrameSelection::selectedHTMLForClipboard() const | 1148 String FrameSelection::selectedHTMLForClipboard() const |
| 1149 { | 1149 { |
| 1150 if (!RuntimeEnabledFeatures::selectionForComposedTreeEnabled()) | 1150 if (!RuntimeEnabledFeatures::selectionForFlatTreeEnabled()) |
| 1151 return extractSelectedHTMLAlgorithm<EditingStrategy>(*this); | 1151 return extractSelectedHTMLAlgorithm<EditingStrategy>(*this); |
| 1152 return extractSelectedHTMLAlgorithm<EditingInComposedTreeStrategy>(*this); | 1152 return extractSelectedHTMLAlgorithm<EditingInFlatTreeStrategy>(*this); |
| 1153 } | 1153 } |
| 1154 | 1154 |
| 1155 String FrameSelection::selectedText(TextIteratorBehavior behavior) const | 1155 String FrameSelection::selectedText(TextIteratorBehavior behavior) const |
| 1156 { | 1156 { |
| 1157 return extractSelectedText(*this, behavior); | 1157 return extractSelectedText(*this, behavior); |
| 1158 } | 1158 } |
| 1159 | 1159 |
| 1160 String FrameSelection::selectedTextForClipboard() const | 1160 String FrameSelection::selectedTextForClipboard() const |
| 1161 { | 1161 { |
| 1162 if (m_frame->settings() && m_frame->settings()->selectionIncludesAltImageTex
t()) | 1162 if (m_frame->settings() && m_frame->settings()->selectionIncludesAltImageTex
t()) |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1320 } | 1320 } |
| 1321 | 1321 |
| 1322 #endif | 1322 #endif |
| 1323 | 1323 |
| 1324 DEFINE_TRACE(FrameSelection) | 1324 DEFINE_TRACE(FrameSelection) |
| 1325 { | 1325 { |
| 1326 visitor->trace(m_frame); | 1326 visitor->trace(m_frame); |
| 1327 visitor->trace(m_pendingSelection); | 1327 visitor->trace(m_pendingSelection); |
| 1328 visitor->trace(m_selectionEditor); | 1328 visitor->trace(m_selectionEditor); |
| 1329 visitor->trace(m_originalBase); | 1329 visitor->trace(m_originalBase); |
| 1330 visitor->trace(m_originalBaseInComposedTree); | 1330 visitor->trace(m_originalBaseInFlatTree); |
| 1331 visitor->trace(m_previousCaretNode); | 1331 visitor->trace(m_previousCaretNode); |
| 1332 visitor->trace(m_typingStyle); | 1332 visitor->trace(m_typingStyle); |
| 1333 } | 1333 } |
| 1334 | 1334 |
| 1335 void FrameSelection::setCaretRectNeedsUpdate() | 1335 void FrameSelection::setCaretRectNeedsUpdate() |
| 1336 { | 1336 { |
| 1337 if (m_caretRectDirty) | 1337 if (m_caretRectDirty) |
| 1338 return; | 1338 return; |
| 1339 m_caretRectDirty = true; | 1339 m_caretRectDirty = true; |
| 1340 | 1340 |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1425 | 1425 |
| 1426 void showTree(const blink::FrameSelection* sel) | 1426 void showTree(const blink::FrameSelection* sel) |
| 1427 { | 1427 { |
| 1428 if (sel) | 1428 if (sel) |
| 1429 sel->showTreeForThis(); | 1429 sel->showTreeForThis(); |
| 1430 else | 1430 else |
| 1431 fprintf(stderr, "Cannot showTree for (nil) FrameSelection.\n"); | 1431 fprintf(stderr, "Cannot showTree for (nil) FrameSelection.\n"); |
| 1432 } | 1432 } |
| 1433 | 1433 |
| 1434 #endif | 1434 #endif |
| OLD | NEW |