Changeset 89263 in webkit


Ignore:
Timestamp:
Jun 20, 2011 11:28:48 AM (13 years ago)
Author:
rniwa@webkit.org
Message:

2011-06-20 Ryosuke Niwa <rniwa@webkit.org>

Reviewed by Ojan Vafai.

FrameSelection::modify should take verticalDisplacement instead of verticalDistance
https://bugs.webkit.org/show_bug.cgi?id=62932

Added new VerticalDirection enum to the argument list of FrameSelection::modify that takes
verticalDistance. Also changed the type of verticalDistance from int to unsigned int
to accidentally pass a negative distance in the future.

  • editing/EditorCommand.cpp: (WebCore::verticalScrollDistance): Returns unsigned int instead of int. (WebCore::executeMovePageDown): Calls FrameSelection::modify. (WebCore::executeMovePageDownAndModifySelection): Ditto. (WebCore::executeMovePageUp): Ditto. (WebCore::executeMovePageUpAndModifySelection): Ditto.
  • editing/FrameSelection.cpp: (WebCore::FrameSelection::modify): Takes VerticalDirection as an argument.
  • editing/FrameSelection.h:
Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r89261 r89263  
     12011-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
    1222011-06-20  Anders Carlsson  <andersca@apple.com>
    223
  • trunk/Source/WebCore/editing/EditorCommand.cpp

    r86325 r89263  
    246246}
    247247
    248 static int verticalScrollDistance(Frame* frame)
     248static unsigned verticalScrollDistance(Frame* frame)
    249249{
    250250    Node* focusedNode = frame->document()->focusedNode();
     
    259259    if (!(style->overflowY() == OSCROLL || style->overflowY() == OAUTO || focusedNode->rendererIsEditable()))
    260260        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));
    264263}
    265264
     
    654653static bool executeMovePageDown(Frame* frame, Event*, EditorCommandSource, const String&)
    655654{
    656     int distance = verticalScrollDistance(frame);
     655    unsigned distance = verticalScrollDistance(frame);
    657656    if (!distance)
    658657        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);
    660659}
    661660
    662661static bool executeMovePageDownAndModifySelection(Frame* frame, Event*, EditorCommandSource, const String&)
    663662{
    664     int distance = verticalScrollDistance(frame);
     663    unsigned distance = verticalScrollDistance(frame);
    665664    if (!distance)
    666665        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);
    668667}
    669668
    670669static bool executeMovePageUp(Frame* frame, Event*, EditorCommandSource, const String&)
    671670{
    672     int distance = verticalScrollDistance(frame);
     671    unsigned distance = verticalScrollDistance(frame);
    673672    if (!distance)
    674673        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);
    676675}
    677676
    678677static bool executeMovePageUpAndModifySelection(Frame* frame, Event*, EditorCommandSource, const String&)
    679678{
    680     int distance = verticalScrollDistance(frame);
     679    unsigned distance = verticalScrollDistance(frame);
    681680    if (!distance)
    682681        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);
    684683}
    685684
  • trunk/Source/WebCore/editing/FrameSelection.cpp

    r89091 r89263  
    889889}
    890890
    891 bool FrameSelection::modify(EAlteration alter, int verticalDistance, bool userTriggered, CursorAlignOnScroll align)
     891bool FrameSelection::modify(EAlteration alter, unsigned verticalDistance, VerticalDirection direction, bool userTriggered, CursorAlignOnScroll align)
    892892{
    893893    if (!verticalDistance)
     
    898898        trialFrameSelection.setSelection(m_selection);
    899899        trialFrameSelection.setIsDirectional(m_isDirectional);
    900         trialFrameSelection.modify(alter, verticalDistance, false);
     900        trialFrameSelection.modify(alter, verticalDistance, direction, false);
    901901
    902902        bool change = shouldChangeSelection(trialFrameSelection.selection());
     
    905905    }
    906906
    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);
    912908
    913909    VisiblePosition pos;
     
    915911    switch (alter) {
    916912    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);
    920916        break;
    921917    case AlterationExtend:
     
    929925    if (!absoluteCaretY(pos, startY))
    930926        return false;
    931     if (up)
     927    if (direction == DirectionUp)
    932928        startY = -startY;
    933929    int lastY = startY;
     
    936932    VisiblePosition next;
    937933    for (VisiblePosition p = pos; ; p = next) {
    938         next = (up ? previousLinePosition : nextLinePosition)(p, xPos);
     934        next = (direction == DirectionUp ? previousLinePosition : nextLinePosition)(p, xPos);
    939935        if (next.isNull() || next == p)
    940936            break;
     
    942938        if (!absoluteCaretY(next, nextY))
    943939            break;
    944         if (up)
     940        if (direction == DirectionUp)
    945941            nextY = -nextY;
    946         if (nextY - startY > verticalDistance)
     942        if (nextY - startY > static_cast<int>(verticalDistance))
    947943            break;
    948944        if (nextY >= lastY) {
  • trunk/Source/WebCore/editing/FrameSelection.h

    r89091 r89263  
    147147
    148148    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);
    150151    TextGranularity granularity() const { return m_granularity; }
    151152
Note: See TracChangeset for help on using the changeset viewer.