OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights
reserved. | 2 * Copyright (C) 2004, 2005, 2006, 2007, 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 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
525 { | 525 { |
526 if (selection->isBaseFirst()) { | 526 if (selection->isBaseFirst()) { |
527 selection->setBase(newStart); | 527 selection->setBase(newStart); |
528 return; | 528 return; |
529 } | 529 } |
530 selection->setExtent(newStart); | 530 selection->setExtent(newStart); |
531 } | 531 } |
532 | 532 |
533 bool SelectionModifier::modify(EAlteration alter, SelectionDirection direction,
TextGranularity granularity) | 533 bool SelectionModifier::modify(EAlteration alter, SelectionDirection direction,
TextGranularity granularity) |
534 { | 534 { |
| 535 // TODO(xiaochengh): The use of updateStyleAndLayoutIgnorePendingStylesheets |
| 536 // needs to be audited. See http://crbug.com/590369 for more details. |
| 537 frame()->document()->updateStyleAndLayoutIgnorePendingStylesheets(); |
| 538 |
| 539 DocumentLifecycle::DisallowTransitionScope disallowTransition(frame()->docum
ent()->lifecycle()); |
| 540 |
535 willBeModified(alter, direction); | 541 willBeModified(alter, direction); |
536 | 542 |
537 bool wasRange = m_selection.isRange(); | 543 bool wasRange = m_selection.isRange(); |
538 VisiblePosition originalStartPosition = m_selection.visibleStart(); | 544 VisiblePosition originalStartPosition = m_selection.visibleStart(); |
539 VisiblePosition position; | 545 VisiblePosition position; |
540 switch (direction) { | 546 switch (direction) { |
541 case DirectionRight: | 547 case DirectionRight: |
542 if (alter == FrameSelection::AlterationMove) | 548 if (alter == FrameSelection::AlterationMove) |
543 position = modifyMovingRight(granularity); | 549 position = modifyMovingRight(granularity); |
544 else | 550 else |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
629 return false; | 635 return false; |
630 y = rect.y() + rect.height() / 2; | 636 y = rect.y() + rect.height() / 2; |
631 return true; | 637 return true; |
632 } | 638 } |
633 | 639 |
634 bool SelectionModifier::modifyWithPageGranularity(EAlteration alter, unsigned ve
rticalDistance, VerticalDirection direction) | 640 bool SelectionModifier::modifyWithPageGranularity(EAlteration alter, unsigned ve
rticalDistance, VerticalDirection direction) |
635 { | 641 { |
636 if (!verticalDistance) | 642 if (!verticalDistance) |
637 return false; | 643 return false; |
638 | 644 |
| 645 DCHECK(!frame()->document()->needsLayoutTreeUpdate()); |
| 646 DocumentLifecycle::DisallowTransitionScope disallowTransition(frame()->docum
ent()->lifecycle()); |
| 647 |
639 willBeModified(alter, direction == FrameSelection::DirectionUp ? DirectionBa
ckward : DirectionForward); | 648 willBeModified(alter, direction == FrameSelection::DirectionUp ? DirectionBa
ckward : DirectionForward); |
640 | 649 |
641 VisiblePosition pos; | 650 VisiblePosition pos; |
642 LayoutUnit xPos; | 651 LayoutUnit xPos; |
643 switch (alter) { | 652 switch (alter) { |
644 case FrameSelection::AlterationMove: | 653 case FrameSelection::AlterationMove: |
645 pos = createVisiblePosition(direction == FrameSelection::DirectionUp ? m
_selection.start() : m_selection.end(), m_selection.affinity()); | 654 pos = createVisiblePosition(direction == FrameSelection::DirectionUp ? m
_selection.start() : m_selection.end(), m_selection.affinity()); |
646 xPos = lineDirectionPointForBlockDirectionNavigation(direction == FrameS
election::DirectionUp ? START : END); | 655 xPos = lineDirectionPointForBlockDirectionNavigation(direction == FrameS
election::DirectionUp ? START : END); |
647 m_selection.setAffinity(direction == FrameSelection::DirectionUp ? TextA
ffinity::Upstream : TextAffinity::Downstream); | 656 m_selection.setAffinity(direction == FrameSelection::DirectionUp ? TextA
ffinity::Upstream : TextAffinity::Downstream); |
648 break; | 657 break; |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
762 return x; | 771 return x; |
763 } | 772 } |
764 | 773 |
765 DEFINE_TRACE(SelectionModifier) | 774 DEFINE_TRACE(SelectionModifier) |
766 { | 775 { |
767 visitor->trace(m_frame); | 776 visitor->trace(m_frame); |
768 visitor->trace(m_selection); | 777 visitor->trace(m_selection); |
769 } | 778 } |
770 | 779 |
771 } // namespace blink | 780 } // namespace blink |
OLD | NEW |