Changeset 150011 in webkit


Ignore:
Timestamp:
May 13, 2013 7:55:38 AM (11 years ago)
Author:
akling@apple.com
Message:

REGRESSION(r149287): FoldingText only shows me half of my text.
<http://webkit.org/b/115956>
<rdar://problem/13831099>

Reviewed by Antti Koivisto.

Check if the FrameView geometry changed post-layout, and send a resize event if needed.
This brings us closer to the original resize event behavior, with the exception that
setFrameRect() still fires an event right away if possible. This means we are still
guarded from FOUC's but frames that layout via [WebHTMLView layoutToMinimumPageWidth]
also get resize events like they used to.

No new tests, because I don't know how to test this.

  • page/FrameView.h:
  • page/FrameView.cpp:

(WebCore::FrameView::setFrameRect):
(WebCore::FrameView::performPostLayoutTasks):
(WebCore::FrameView::sendResizeEventIfNeeded):

Factor out the resize event logic from setFrameRect() so we can call it from both
there and performPostLayoutTasks(). sendResizeEventIfNeeded() only sends an event
if view geometry or zoom factor has changed since last time it was called.

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r150010 r150011  
     12013-05-13  Andreas Kling  <akling@apple.com>
     2
     3        REGRESSION(r149287): FoldingText only shows me half of my text.
     4        <http://webkit.org/b/115956>
     5        <rdar://problem/13831099>
     6
     7        Reviewed by Antti Koivisto.
     8
     9        Check if the FrameView geometry changed post-layout, and send a resize event if needed.
     10        This brings us closer to the original resize event behavior, with the exception that
     11        setFrameRect() still fires an event right away if possible. This means we are still
     12        guarded from FOUC's but frames that layout via [WebHTMLView layoutToMinimumPageWidth]
     13        also get resize events like they used to.
     14
     15        No new tests, because I don't know how to test this.
     16
     17        * page/FrameView.h:
     18        * page/FrameView.cpp:
     19        (WebCore::FrameView::setFrameRect):
     20        (WebCore::FrameView::performPostLayoutTasks):
     21        (WebCore::FrameView::sendResizeEventIfNeeded):
     22
     23            Factor out the resize event logic from setFrameRect() so we can call it from both
     24            there and performPostLayoutTasks(). sendResizeEventIfNeeded() only sends an event
     25            if view geometry or zoom factor has changed since last time it was called.
     26
    1272013-05-13  Antti Koivisto  <antti@apple.com>
    228
  • trunk/Source/WebCore/page/FrameView.cpp

    r149980 r150011  
    486486    }
    487487
    488     if (renderView && !renderView->printing()) {
    489         IntSize currentSize;
    490         if (useFixedLayout() && !fixedLayoutSize().isEmpty() && delegatesScrolling())
    491             currentSize = fixedLayoutSize();
    492         else
    493             currentSize = visibleContentRect(IncludeScrollbars).size();
    494         float currentZoomFactor = renderView->style()->zoom();
    495         bool resized = !m_firstLayout && (currentSize != m_lastViewportSize || currentZoomFactor != m_lastZoomFactor);
    496         m_lastViewportSize = currentSize;
    497         m_lastZoomFactor = currentZoomFactor;
    498         if (resized)
    499             dispatchResizeEvent();
    500     }
    501 
     488    sendResizeEventIfNeeded();
    502489}
    503490
     
    27832770
    27842771    m_actionScheduler->resume();
    2785 }
    2786 
    2787 void FrameView::dispatchResizeEvent()
     2772
     2773    sendResizeEventIfNeeded();
     2774}
     2775
     2776void FrameView::sendResizeEventIfNeeded()
    27882777{
    27892778    ASSERT(m_frame);
    27902779
     2780    RenderView* renderView = this->renderView();
     2781    if (!renderView || renderView->printing())
     2782        return;
     2783
    27912784    Page* page = m_frame->page();
     2785    IntSize currentSize;
     2786    if (useFixedLayout() && !fixedLayoutSize().isEmpty() && delegatesScrolling())
     2787        currentSize = fixedLayoutSize();
     2788    else
     2789        currentSize = visibleContentRect(IncludeScrollbars).size();
     2790
     2791    float currentZoomFactor = renderView->style()->zoom();
     2792    bool shouldSendResizeEvent = !m_firstLayout && (currentSize != m_lastViewportSize || currentZoomFactor != m_lastZoomFactor);
     2793
     2794    m_lastViewportSize = currentSize;
     2795    m_lastZoomFactor = currentZoomFactor;
     2796
     2797    if (!shouldSendResizeEvent)
     2798        return;
     2799
    27922800    bool isMainFrame = page && page->mainFrame() == m_frame;
    27932801    bool canSendResizeEventSynchronously = isMainFrame && !isInLayout();
  • trunk/Source/WebCore/page/FrameView.h

    r149317 r150011  
    496496    virtual void willRemoveScrollbar(Scrollbar*, ScrollbarOrientation) OVERRIDE;
    497497
    498     void dispatchResizeEvent();
     498    void sendResizeEventIfNeeded();
    499499
    500500    void updateScrollableAreaSet();
Note: See TracChangeset for help on using the changeset viewer.