Changeset 111243 in webkit


Ignore:
Timestamp:
Mar 19, 2012 2:05:07 PM (12 years ago)
Author:
eae@chromium.org
Message:

Correct usage of LayoutUnits in page code in preparation for turning on subpixel layout
https://bugs.webkit.org/show_bug.cgi?id=81538

Reviewed by Eric Seidel.

Fix usage of LayoutUnits and conversions between types in page code.

No new tests.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::innerHeight):
(WebCore::DOMWindow::innerWidth):
Explicitly cast long to int. InspectorInstrumentation requires a long and
FractionalLayoutUnit has no constructor that takes long.

  • page/EventHandler.cpp:

(WebCore::EventHandler::sendContextMenuEventForKey):
Pixel snap overflow rect as selection rects are integer based.

  • page/FrameView.cpp:

(WebCore::FrameView::scrollContentsFastPath):
Pixel snap repaint rects when computing update rect as all scrolling is
done on integer bounds.

  • page/GestureTapHighlighter.cpp:

Change rects vector to IntRect as addFocusRingRects operates on IntRects.

  • page/Page.cpp:

(WebCore::Page::addRelevantRepaintedObject):
(WebCore::Page::addRelevantUnpaintedObject):
Change paint methods to take a LayoutRect paint rect.

  • page/SpatialNavigation.cpp:

(WebCore::distanceDataForNode):
Change distance calculation to use floats instead of converting to float
at the end.

Location:
trunk/Source/WebCore
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r111240 r111243  
     12012-03-19  Emil A Eklund  <eae@chromium.org>
     2
     3        Correct usage of LayoutUnits in page code in preparation for turning on subpixel layout
     4        https://bugs.webkit.org/show_bug.cgi?id=81538
     5
     6        Reviewed by Eric Seidel.
     7
     8        Fix usage of LayoutUnits and conversions between types in page code.
     9
     10        No new tests.
     11
     12        * page/DOMWindow.cpp:
     13        (WebCore::DOMWindow::innerHeight):
     14        (WebCore::DOMWindow::innerWidth):
     15        Explicitly cast long to int. InspectorInstrumentation requires a long and
     16        FractionalLayoutUnit has no constructor that takes long.
     17       
     18        * page/EventHandler.cpp:
     19        (WebCore::EventHandler::sendContextMenuEventForKey):
     20        Pixel snap overflow rect as selection rects are integer based.
     21       
     22        * page/FrameView.cpp:
     23        (WebCore::FrameView::scrollContentsFastPath):
     24        Pixel snap repaint rects when computing update rect as all scrolling is
     25        done on integer bounds.
     26       
     27        * page/GestureTapHighlighter.cpp:
     28        Change rects vector to IntRect as addFocusRingRects operates on IntRects.
     29       
     30        * page/Page.cpp:
     31        (WebCore::Page::addRelevantRepaintedObject):
     32        (WebCore::Page::addRelevantUnpaintedObject):
     33        Change paint methods to take a LayoutRect paint rect.
     34       
     35        * page/SpatialNavigation.cpp:
     36        (WebCore::distanceDataForNode):
     37        Change distance calculation to use floats instead of converting to float
     38        at the end.
     39
    1402012-03-19  David Hyatt  <hyatt@apple.com>
    241
  • trunk/Source/WebCore/page/DOMWindow.cpp

    r111141 r111243  
    11361136    long height = view->visibleContentRect(/* includeScrollbars */ true).height();
    11371137    InspectorInstrumentation::applyScreenHeightOverride(m_frame, &height);
    1138     return view->mapFromLayoutToCSSUnits(height);
     1138    return view->mapFromLayoutToCSSUnits(static_cast<int>(height));
    11391139}
    11401140
     
    11501150    long width = view->visibleContentRect(/* includeScrollbars */ true).width();
    11511151    InspectorInstrumentation::applyScreenWidthOverride(m_frame, &width);
    1152     return view->mapFromLayoutToCSSUnits(width);
     1152    return view->mapFromLayoutToCSSUnits(static_cast<int>(width));
    11531153}
    11541154
  • trunk/Source/WebCore/page/EventHandler.cpp

    r111185 r111243  
    25362536        if (!box)
    25372537            return false;
    2538         IntRect clippedRect = box->absoluteClippedOverflowRect();
     2538        IntRect clippedRect = box->pixelSnappedAbsoluteClippedOverflowRect();
    25392539        location = IntPoint(clippedRect.x(), clippedRect.maxY() - 1);
    25402540    } else {
  • trunk/Source/WebCore/page/FrameView.cpp

    r111139 r111243  
    14571457            continue;
    14581458#endif
    1459         IntRect updateRect = renderBox->layer()->repaintRectIncludingDescendants();
     1459        IntRect updateRect = pixelSnappedIntRect(renderBox->layer()->repaintRectIncludingDescendants());
    14601460        updateRect = contentsToRootView(updateRect);
    14611461        if (!isCompositedContentLayer && clipsRepaints())
  • trunk/Source/WebCore/page/GestureTapHighlighter.cpp

    r108095 r111243  
    139139    Path path;
    140140
    141     Vector<LayoutRect> rects;
     141    Vector<IntRect> rects;
    142142    o->addFocusRingRects(rects, /* acc. offset */ ownerFrameToMainFrameOffset(o));
    143143
  • trunk/Source/WebCore/page/Page.cpp

    r110884 r111243  
    10421042}
    10431043
    1044 void Page::addRelevantRepaintedObject(RenderObject* object, const IntRect& objectPaintRect)
     1044void Page::addRelevantRepaintedObject(RenderObject* object, const LayoutRect& objectPaintRect)
    10451045{
    10461046    if (!isCountingRelevantRepaintedObjects())
     
    10531053    }
    10541054
     1055    IntRect snappedPaintRect = pixelSnappedIntRect(objectPaintRect);
     1056
    10551057    // If this object was previously counted as an unpainted object, remove it from that HashSet
    10561058    // and corresponding Region. FIXME: This doesn't do the right thing if the objects overlap.
    10571059    if (m_relevantUnpaintedRenderObjects.contains(object)) {
    10581060        m_relevantUnpaintedRenderObjects.remove(object);
    1059         m_relevantUnpaintedRegion.subtract(objectPaintRect);
    1060     }
    1061 
    1062     m_relevantPaintedRegion.unite(objectPaintRect);
     1061        m_relevantUnpaintedRegion.subtract(snappedPaintRect);
     1062    }
     1063
     1064    m_relevantPaintedRegion.unite(snappedPaintRect);
    10631065
    10641066    RenderView* view = object->view();
     
    10781080}
    10791081
    1080 void Page::addRelevantUnpaintedObject(RenderObject* object, const IntRect& objectPaintRect)
     1082void Page::addRelevantUnpaintedObject(RenderObject* object, const LayoutRect& objectPaintRect)
    10811083{
    10821084    if (!isCountingRelevantRepaintedObjects())
     
    10901092
    10911093    m_relevantUnpaintedRenderObjects.add(object);
    1092     m_relevantUnpaintedRegion.unite(objectPaintRect);
     1094    m_relevantUnpaintedRegion.unite(pixelSnappedIntRect(objectPaintRect));
    10931095}
    10941096
  • trunk/Source/WebCore/page/Page.h

    r110595 r111243  
    326326        void startCountingRelevantRepaintedObjects();
    327327        void resetRelevantPaintedObjectCounter();
    328         void addRelevantRepaintedObject(RenderObject*, const IntRect& objectPaintRect);
    329         void addRelevantUnpaintedObject(RenderObject*, const IntRect& objectPaintRect);
     328        void addRelevantRepaintedObject(RenderObject*, const LayoutRect& objectPaintRect);
     329        void addRelevantUnpaintedObject(RenderObject*, const LayoutRect& objectPaintRect);
    330330
    331331        void suspendActiveDOMObjectsAndAnimations();
  • trunk/Source/WebCore/page/SpatialNavigation.cpp

    r100059 r111243  
    665665    }
    666666
    667     LayoutUnit x = (entryPoint.x() - exitPoint.x()) * (entryPoint.x() - exitPoint.x());
    668     LayoutUnit y = (entryPoint.y() - exitPoint.y()) * (entryPoint.y() - exitPoint.y());
    669 
    670     float euclidianDistance = sqrt((x + y) * 1.0f);
     667    float x = (entryPoint.x() - exitPoint.x()) * (entryPoint.x() - exitPoint.x());
     668    float y = (entryPoint.y() - exitPoint.y()) * (entryPoint.y() - exitPoint.y());
     669
     670    float euclidianDistance = sqrt(x + y);
    671671
    672672    // Loosely based on http://www.w3.org/TR/WICD/#focus-handling
Note: See TracChangeset for help on using the changeset viewer.