⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 181617 in webkit


Ignore:
Timestamp:
Mar 16, 2015, 10:30:46 PM (11 years ago)
Author:
Simon Fraser
Message:

Update the debug overlays after layout
https://bugs.webkit.org/show_bug.cgi?id=142768

Reviewed by Zalan Bujtas.

The debug overlays need to be updated after layout, in case elements with wheel event handlers
moved around.

DebugPageOverlays::didLayout() is cheap if there are no overlays.

Call DebugPageOverlays::didLayout() for all frames, not just the main frame, since subframes can contribute
to the main frame's event handler region.

  • page/DebugPageOverlays.cpp:

(WebCore::DebugPageOverlays::regionChanged):

  • page/DebugPageOverlays.h:

(WebCore::DebugPageOverlays::didLayout):
(WebCore::DebugPageOverlays::didChangeEventHandlers):

  • page/FrameView.cpp:

(WebCore::FrameView::layout):

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r181616 r181617  
     12015-03-16  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Update the debug overlays after layout
     4        https://bugs.webkit.org/show_bug.cgi?id=142768
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        The debug overlays need to be updated after layout, in case elements with wheel event handlers
     9        moved around.
     10       
     11        DebugPageOverlays::didLayout() is cheap if there are no overlays.
     12       
     13        Call DebugPageOverlays::didLayout() for all frames, not just the main frame, since subframes can contribute
     14        to the main frame's event handler region.
     15
     16        * page/DebugPageOverlays.cpp:
     17        (WebCore::DebugPageOverlays::regionChanged):
     18        * page/DebugPageOverlays.h:
     19        (WebCore::DebugPageOverlays::didLayout):
     20        (WebCore::DebugPageOverlays::didChangeEventHandlers):
     21        * page/FrameView.cpp:
     22        (WebCore::FrameView::layout):
     23
    1242015-03-16  Jon Lee  <jonlee@apple.com>
    225
  • trunk/Source/WebCore/page/DebugPageOverlays.cpp

    r179409 r181617  
    263263}
    264264
    265 void DebugPageOverlays::regionChanged(MainFrame& frame, RegionType regionType)
    266 {
    267     if (RegionOverlay* visualizer = regionOverlayForFrame(frame, regionType))
     265void DebugPageOverlays::regionChanged(Frame& frame, RegionType regionType)
     266{
     267    if (RegionOverlay* visualizer = regionOverlayForFrame(frame.mainFrame(), regionType))
    268268        visualizer->recomputeRegion();
    269269}
  • trunk/Source/WebCore/page/DebugPageOverlays.h

    r179409 r181617  
    2727#define DebugPageOverlays_h
    2828
     29#include "Frame.h"
    2930#include "Settings.h"
    3031#include <wtf/HashMap.h>
     
    4647    static const unsigned NumberOfRegionTypes = NonFastScrollableRegion + 1;
    4748
    48     static void didLayout(MainFrame&);
     49    static void didLayout(Frame&);
     50    static void didChangeEventHandlers(Frame&);
     51
    4952    WEBCORE_EXPORT static void settingsChanged(MainFrame&);
    5053
     
    5558    void hideRegionOverlay(MainFrame&, RegionType);
    5659
    57     void regionChanged(MainFrame&, RegionType);
     60    void regionChanged(Frame&, RegionType);
    5861
    5962    bool hasOverlaysForFrame(MainFrame& frame) const
     
    8285}
    8386
    84 inline void DebugPageOverlays::didLayout(MainFrame& frame)
     87inline void DebugPageOverlays::didLayout(Frame& frame)
    8588{
    86     FAST_RETURN_IF_NO_OVERLAYS(frame);
     89    FAST_RETURN_IF_NO_OVERLAYS(frame.mainFrame());
     90
     91    sharedDebugOverlays->regionChanged(frame, RegionType::WheelEventHandlers);
     92    sharedDebugOverlays->regionChanged(frame, RegionType::NonFastScrollableRegion);
     93}
     94
     95inline void DebugPageOverlays::didChangeEventHandlers(Frame& frame)
     96{
     97    FAST_RETURN_IF_NO_OVERLAYS(frame.mainFrame());
    8798
    8899    sharedDebugOverlays->regionChanged(frame, RegionType::WheelEventHandlers);
  • trunk/Source/WebCore/page/FrameView.cpp

    r181587 r181617  
    14051405
    14061406    InspectorInstrumentation::didLayout(cookie, root);
    1407     if (frame().isMainFrame())
    1408         DebugPageOverlays::didLayout(frame().mainFrame());
     1407    DebugPageOverlays::didLayout(frame());
    14091408
    14101409    --m_nestedLayoutCount;
Note: See TracChangeset for help on using the changeset viewer.