Changeset 89263 in webkit
- Timestamp:
- Jun 20, 2011 11:28:48 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r89261 r89263 1 2011-06-20 Ryosuke Niwa <rniwa@webkit.org> 2 3 Reviewed by Ojan Vafai. 4 5 FrameSelection::modify should take verticalDisplacement instead of verticalDistance 6 https://bugs.webkit.org/show_bug.cgi?id=62932 7 8 Added new VerticalDirection enum to the argument list of FrameSelection::modify that takes 9 verticalDistance. Also changed the type of verticalDistance from int to unsigned int 10 to accidentally pass a negative distance in the future. 11 12 * editing/EditorCommand.cpp: 13 (WebCore::verticalScrollDistance): Returns unsigned int instead of int. 14 (WebCore::executeMovePageDown): Calls FrameSelection::modify. 15 (WebCore::executeMovePageDownAndModifySelection): Ditto. 16 (WebCore::executeMovePageUp): Ditto. 17 (WebCore::executeMovePageUpAndModifySelection): Ditto. 18 * editing/FrameSelection.cpp: 19 (WebCore::FrameSelection::modify): Takes VerticalDirection as an argument. 20 * editing/FrameSelection.h: 21 1 22 2011-06-20 Anders Carlsson <andersca@apple.com> 2 23 -
trunk/Source/WebCore/editing/EditorCommand.cpp
r86325 r89263 246 246 } 247 247 248 static intverticalScrollDistance(Frame* frame)248 static unsigned verticalScrollDistance(Frame* frame) 249 249 { 250 250 Node* focusedNode = frame->document()->focusedNode(); … … 259 259 if (!(style->overflowY() == OSCROLL || style->overflowY() == OAUTO || focusedNode->rendererIsEditable())) 260 260 return 0; 261 int height = std::min<int>(toRenderBox(renderer)->clientHeight(), 262 frame->view()->visibleHeight()); 263 return max(max<int>(height * Scrollbar::minFractionToStepWhenPaging(), height - Scrollbar::maxOverlapBetweenPages()), 1); 261 int height = std::min<int>(toRenderBox(renderer)->clientHeight(), frame->view()->visibleHeight()); 262 return static_cast<unsigned>(max(max<int>(height * Scrollbar::minFractionToStepWhenPaging(), height - Scrollbar::maxOverlapBetweenPages()), 1)); 264 263 } 265 264 … … 654 653 static bool executeMovePageDown(Frame* frame, Event*, EditorCommandSource, const String&) 655 654 { 656 intdistance = verticalScrollDistance(frame);655 unsigned distance = verticalScrollDistance(frame); 657 656 if (!distance) 658 657 return false; 659 return frame->selection()->modify(FrameSelection::AlterationMove, distance, true, FrameSelection::AlignCursorOnScrollAlways);658 return frame->selection()->modify(FrameSelection::AlterationMove, distance, FrameSelection::DirectionDown, true, FrameSelection::AlignCursorOnScrollAlways); 660 659 } 661 660 662 661 static bool executeMovePageDownAndModifySelection(Frame* frame, Event*, EditorCommandSource, const String&) 663 662 { 664 intdistance = verticalScrollDistance(frame);663 unsigned distance = verticalScrollDistance(frame); 665 664 if (!distance) 666 665 return false; 667 return frame->selection()->modify(FrameSelection::AlterationExtend, distance, true, FrameSelection::AlignCursorOnScrollAlways);666 return frame->selection()->modify(FrameSelection::AlterationExtend, distance, FrameSelection::DirectionDown, true, FrameSelection::AlignCursorOnScrollAlways); 668 667 } 669 668 670 669 static bool executeMovePageUp(Frame* frame, Event*, EditorCommandSource, const String&) 671 670 { 672 intdistance = verticalScrollDistance(frame);671 unsigned distance = verticalScrollDistance(frame); 673 672 if (!distance) 674 673 return false; 675 return frame->selection()->modify(FrameSelection::AlterationMove, -distance, true, FrameSelection::AlignCursorOnScrollAlways);674 return frame->selection()->modify(FrameSelection::AlterationMove, distance, FrameSelection::DirectionUp, true, FrameSelection::AlignCursorOnScrollAlways); 676 675 } 677 676 678 677 static bool executeMovePageUpAndModifySelection(Frame* frame, Event*, EditorCommandSource, const String&) 679 678 { 680 intdistance = verticalScrollDistance(frame);679 unsigned distance = verticalScrollDistance(frame); 681 680 if (!distance) 682 681 return false; 683 return frame->selection()->modify(FrameSelection::AlterationExtend, -distance, true, FrameSelection::AlignCursorOnScrollAlways);682 return frame->selection()->modify(FrameSelection::AlterationExtend, distance, FrameSelection::DirectionUp, true, FrameSelection::AlignCursorOnScrollAlways); 684 683 } 685 684 -
trunk/Source/WebCore/editing/FrameSelection.cpp
r89091 r89263 889 889 } 890 890 891 bool FrameSelection::modify(EAlteration alter, int verticalDistance, bool userTriggered, CursorAlignOnScroll align)891 bool FrameSelection::modify(EAlteration alter, unsigned verticalDistance, VerticalDirection direction, bool userTriggered, CursorAlignOnScroll align) 892 892 { 893 893 if (!verticalDistance) … … 898 898 trialFrameSelection.setSelection(m_selection); 899 899 trialFrameSelection.setIsDirectional(m_isDirectional); 900 trialFrameSelection.modify(alter, verticalDistance, false);900 trialFrameSelection.modify(alter, verticalDistance, direction, false); 901 901 902 902 bool change = shouldChangeSelection(trialFrameSelection.selection()); … … 905 905 } 906 906 907 bool up = verticalDistance < 0; 908 if (up) 909 verticalDistance = -verticalDistance; 910 911 willBeModified(alter, up ? DirectionBackward : DirectionForward); 907 willBeModified(alter, direction == DirectionUp ? DirectionBackward : DirectionForward); 912 908 913 909 VisiblePosition pos; … … 915 911 switch (alter) { 916 912 case AlterationMove: 917 pos = VisiblePosition( up ? m_selection.start() : m_selection.end(), m_selection.affinity());918 xPos = lineDirectionPointForBlockDirectionNavigation( up ? START : END);919 m_selection.setAffinity( up ? UPSTREAM : DOWNSTREAM);913 pos = VisiblePosition(direction == DirectionUp ? m_selection.start() : m_selection.end(), m_selection.affinity()); 914 xPos = lineDirectionPointForBlockDirectionNavigation(direction == DirectionUp ? START : END); 915 m_selection.setAffinity(direction == DirectionUp ? UPSTREAM : DOWNSTREAM); 920 916 break; 921 917 case AlterationExtend: … … 929 925 if (!absoluteCaretY(pos, startY)) 930 926 return false; 931 if ( up)927 if (direction == DirectionUp) 932 928 startY = -startY; 933 929 int lastY = startY; … … 936 932 VisiblePosition next; 937 933 for (VisiblePosition p = pos; ; p = next) { 938 next = ( up ? previousLinePosition : nextLinePosition)(p, xPos);934 next = (direction == DirectionUp ? previousLinePosition : nextLinePosition)(p, xPos); 939 935 if (next.isNull() || next == p) 940 936 break; … … 942 938 if (!absoluteCaretY(next, nextY)) 943 939 break; 944 if ( up)940 if (direction == DirectionUp) 945 941 nextY = -nextY; 946 if (nextY - startY > verticalDistance)942 if (nextY - startY > static_cast<int>(verticalDistance)) 947 943 break; 948 944 if (nextY >= lastY) { -
trunk/Source/WebCore/editing/FrameSelection.h
r89091 r89263 147 147 148 148 bool modify(EAlteration, SelectionDirection, TextGranularity, bool userTriggered = false); 149 bool modify(EAlteration, int verticalDistance, bool userTriggered = false, CursorAlignOnScroll = AlignCursorOnScrollIfNeeded); 149 enum VerticalDirection { DirectionUp, DirectionDown }; 150 bool modify(EAlteration, unsigned verticalDistance, VerticalDirection, bool userTriggered = false, CursorAlignOnScroll = AlignCursorOnScrollIfNeeded); 150 151 TextGranularity granularity() const { return m_granularity; } 151 152
Note: See TracChangeset
for help on using the changeset viewer.