[webkit-changes] cvs commit: WebCore/khtml/rendering render_form.cpp render_frames.cpp render_frames.h render_layer.cpp render_object.cpp render_object.h render_replaced.cpp render_replaced.h

John sullivan at opensource.apple.com
Tue Oct 18 10:08:19 PDT 2005


sullivan    05/10/18 10:08:19

  Modified:    .        ChangeLog
               khtml    khtmlview.cpp
               khtml/rendering render_form.cpp render_frames.cpp
                        render_frames.h render_layer.cpp render_object.cpp
                        render_object.h render_replaced.cpp
                        render_replaced.h
  Log:
          Reviewed by Dave Hyatt.
          Committed by John Sullivan.
  
          - .5% or so speedup by removing updateWidgetPositions
  
  	Instead, widget sizes are calculated in layout and widget positions are set at
  	paint time, with the same kind of special handling for incremental repaint that
  	RenderImage does.
  
          * khtml/khtmlview.cpp:
          (KHTMLView::layout):
          * khtml/rendering/render_form.cpp:
          (RenderFormElement::layout):
          * khtml/rendering/render_frames.cpp:
          (RenderPartObject::layout):
          * khtml/rendering/render_frames.h:
          * khtml/rendering/render_layer.cpp:
          (khtml::RenderLayer::scrollToOffset):
          * khtml/rendering/render_object.cpp:
          * khtml/rendering/render_object.h:
          * khtml/rendering/render_replaced.cpp:
          (RenderWidget::layout):
          * khtml/rendering/render_replaced.h:
  
  Revision  Changes    Path
  1.249     +26 -0     WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.248
  retrieving revision 1.249
  diff -u -r1.248 -r1.249
  --- ChangeLog	18 Oct 2005 03:15:27 -0000	1.248
  +++ ChangeLog	18 Oct 2005 17:08:15 -0000	1.249
  @@ -1,3 +1,29 @@
  +2005-10-18  Maciej Stachowiak  <mjs at apple.com>
  +
  +        Reviewed by Dave Hyatt.
  +        Committed by John Sullivan.
  +
  +        - .5% or so speedup by removing updateWidgetPositions
  +
  +	Instead, widget sizes are calculated in layout and widget positions are set at
  +	paint time, with the same kind of special handling for incremental repaint that
  +	RenderImage does.
  +
  +        * khtml/khtmlview.cpp:
  +        (KHTMLView::layout):
  +        * khtml/rendering/render_form.cpp:
  +        (RenderFormElement::layout):
  +        * khtml/rendering/render_frames.cpp:
  +        (RenderPartObject::layout):
  +        * khtml/rendering/render_frames.h:
  +        * khtml/rendering/render_layer.cpp:
  +        (khtml::RenderLayer::scrollToOffset):
  +        * khtml/rendering/render_object.cpp:
  +        * khtml/rendering/render_object.h:
  +        * khtml/rendering/render_replaced.cpp:
  +        (RenderWidget::layout):
  +        * khtml/rendering/render_replaced.h:
  +
   2005-10-17  Maciej Stachowiak  <mjs at apple.com>
   
           Reviewed by Geoff.
  
  
  
  1.147     +0 -5      WebCore/khtml/khtmlview.cpp
  
  Index: khtmlview.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/khtmlview.cpp,v
  retrieving revision 1.146
  retrieving revision 1.147
  diff -u -r1.146 -r1.147
  --- khtmlview.cpp	3 Oct 2005 21:12:05 -0000	1.146
  +++ khtmlview.cpp	18 Oct 2005 17:08:16 -0000	1.147
  @@ -699,11 +699,6 @@
       // Now update the positions of all layers.
       layer->updateLayerPositions(d->doFullRepaint);
   
  -#if APPLE_CHANGES
  -    // We update our widget positions right after doing a layout.
  -    root->updateWidgetPositions();
  -#endif
  -    
       if (d->repaintRects && !d->repaintRects->isEmpty()) {
           // FIXME: Could optimize this and have objects removed from this list
           // if they ever do full repaints.
  
  
  
  1.127     +11 -5     WebCore/khtml/rendering/render_form.cpp
  
  Index: render_form.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_form.cpp,v
  retrieving revision 1.126
  retrieving revision 1.127
  diff -u -r1.126 -r1.127
  --- render_form.cpp	6 Oct 2005 00:53:57 -0000	1.126
  +++ render_form.cpp	18 Oct 2005 17:08:17 -0000	1.127
  @@ -165,21 +165,27 @@
   
   void RenderFormElement::layout()
   {
  -    KHTMLAssert( needsLayout() );
  -    KHTMLAssert( minMaxKnown() );
  +    KHTMLAssert(needsLayout());
  +    KHTMLAssert(minMaxKnown());
   
  +    QRect oldBounds;
  +    bool checkForRepaint = checkForRepaintDuringLayout();
  +    if (checkForRepaint)
  +        oldBounds = getAbsoluteRepaintRect();
  +    
       // minimum height
       m_height = 0;
   
       calcWidth();
       calcHeight();
   
  -#if !APPLE_CHANGES
  -    if ( m_widget )
  +    if (m_widget)
           resizeWidget(m_widget,
                        m_width-borderLeft()-borderRight()-paddingLeft()-paddingRight(),
                        m_height-borderLeft()-borderRight()-paddingLeft()-paddingRight());
  -#endif
  +    
  +    if (checkForRepaint)
  +        repaintAfterLayoutIfNeeded(oldBounds, oldBounds);
       
       setNeedsLayout(false);
   }
  
  
  
  1.79      +8 -30     WebCore/khtml/rendering/render_frames.cpp
  
  Index: render_frames.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_frames.cpp,v
  retrieving revision 1.78
  retrieving revision 1.79
  diff -u -r1.78 -r1.79
  --- render_frames.cpp	3 Oct 2005 21:12:39 -0000	1.78
  +++ render_frames.cpp	18 Oct 2005 17:08:17 -0000	1.79
  @@ -868,6 +868,11 @@
       KHTMLAssert( needsLayout() );
       KHTMLAssert( minMaxKnown() );
   
  +    QRect oldBounds;
  +    bool checkForRepaint = checkForRepaintDuringLayout();
  +    if (checkForRepaint)
  +        oldBounds = getAbsoluteRepaintRect();
  +    
   #if !APPLE_CHANGES
       int m_oldwidth = m_width;
       int m_oldheight = m_height;
  @@ -878,6 +883,9 @@
   
       RenderPart::layout();
   
  +    if (checkForRepaint)
  +        repaintAfterLayoutIfNeeded(oldBounds, oldBounds);
  +
       setNeedsLayout(false);
   }
   
  @@ -919,34 +927,4 @@
     }
   }
   
  -#if APPLE_CHANGES
  -// FIXME: This should not be necessary.  Remove this once WebKit knows to properly schedule
  -// layouts using WebCore when objects resize.
  -void RenderPart::updateWidgetPositions()
  -{
  -    if (!m_widget)
  -        return;
  -    
  -    int x, y, width, height;
  -    absolutePosition(x,y);
  -    x += borderLeft() + paddingLeft();
  -    y += borderTop() + paddingTop();
  -    width = m_width - borderLeft() - borderRight() - paddingLeft() - paddingRight();
  -    height = m_height - borderTop() - borderBottom() - paddingTop() - paddingBottom();
  -    QRect newBounds(x,y,width,height);
  -    if (newBounds != m_widget->frameGeometry()) {
  -        // The widget changed positions.  Update the frame geometry.
  -        RenderArena *arena = ref();
  -        element()->ref();
  -        m_widget->setFrameGeometry(newBounds);
  -        element()->deref();
  -        deref(arena);
  -        
  -        QScrollView *view = static_cast<QScrollView *>(m_widget);
  -        if (view && view->inherits("KHTMLView"))
  -            static_cast<KHTMLView*>(view)->layout();
  -    }
  -}
  -#endif
  -
   #include "render_frames.moc"
  
  
  
  1.18      +0 -6      WebCore/khtml/rendering/render_frames.h
  
  Index: render_frames.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_frames.h,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- render_frames.h	3 May 2005 21:34:30 -0000	1.17
  +++ render_frames.h	18 Oct 2005 17:08:17 -0000	1.18
  @@ -100,12 +100,6 @@
   
       virtual void setWidget( QWidget *widget );
   
  -#if APPLE_CHANGES
  -    // FIXME: This should not be necessary.  Remove this once WebKit knows to properly schedule
  -    // layouts using WebCore when objects resize.
  -    void updateWidgetPositions();
  -#endif
  -
       bool hasFallbackContent() const { return m_hasFallbackContent; }
   
   public slots:
  
  
  
  1.112     +0 -3      WebCore/khtml/rendering/render_layer.cpp
  
  Index: render_layer.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_layer.cpp,v
  retrieving revision 1.111
  retrieving revision 1.112
  diff -u -r1.111 -r1.112
  --- render_layer.cpp	18 Oct 2005 00:16:45 -0000	1.111
  +++ render_layer.cpp	18 Oct 2005 17:08:17 -0000	1.112
  @@ -527,9 +527,6 @@
           child->updateLayerPositions(false, false);
       
   #if APPLE_CHANGES
  -    // Move our widgets.
  -    m_object->updateWidgetPositions();
  -    
       // Update dashboard regions, scrolling may change the clip of a
       // particular region.
       RenderCanvas *canvas = renderer()->canvas();
  
  
  
  1.221     +0 -6      WebCore/khtml/rendering/render_object.cpp
  
  Index: render_object.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_object.cpp,v
  retrieving revision 1.220
  retrieving revision 1.221
  diff -u -r1.220 -r1.221
  --- render_object.cpp	18 Oct 2005 03:15:31 -0000	1.220
  +++ render_object.cpp	18 Oct 2005 17:08:17 -0000	1.221
  @@ -2380,12 +2380,6 @@
   }
   
   #if APPLE_CHANGES
  -void RenderObject::updateWidgetPositions()
  -{
  -    for (RenderObject* curr = firstChild(); curr; curr = curr->nextSibling())
  -        curr->updateWidgetPositions();
  -}
  -
   QValueList<DashboardRegionValue> RenderObject::computeDashboardRegions()
   {
       QValueList<DashboardRegionValue> regions;
  
  
  
  1.162     +0 -3      WebCore/khtml/rendering/render_object.h
  
  Index: render_object.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_object.h,v
  retrieving revision 1.161
  retrieving revision 1.162
  diff -u -r1.161 -r1.162
  --- render_object.h	18 Oct 2005 03:15:31 -0000	1.161
  +++ render_object.h	18 Oct 2005 17:08:17 -0000	1.162
  @@ -463,9 +463,6 @@
       virtual int availableHeight() const { return 0; }
   
   #if APPLE_CHANGES
  -    // Called recursively to update the absolute positions of all widgets.
  -    virtual void updateWidgetPositions();
  -    
       QValueList<DashboardRegionValue> RenderObject::computeDashboardRegions();
       void addDashboardRegions (QValueList<DashboardRegionValue>& regions);
       void collectDashboardRegions (QValueList<DashboardRegionValue>& regions);
  
  
  
  1.89      +7 -41     WebCore/khtml/rendering/render_replaced.cpp
  
  Index: render_replaced.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_replaced.cpp,v
  retrieving revision 1.88
  retrieving revision 1.89
  diff -u -r1.88 -r1.89
  --- render_replaced.cpp	6 Oct 2005 00:53:58 -0000	1.88
  +++ render_replaced.cpp	18 Oct 2005 17:08:17 -0000	1.89
  @@ -339,17 +339,16 @@
       m_deleteWidget = deleteWidget;
   }
   
  -void RenderWidget::layout( )
  +void RenderWidget::layout()
   {
  -    KHTMLAssert( needsLayout() );
  -    KHTMLAssert( minMaxKnown() );
  -#if !APPLE_CHANGES
  -    if ( m_widget ) {
  -	resizeWidget( m_widget,
  +    KHTMLAssert(needsLayout());
  +    KHTMLAssert(minMaxKnown());
  +
  +    if (m_widget) {
  +	resizeWidget(m_widget,
   		      m_width-borderLeft()-borderRight()-paddingLeft()-paddingRight(),
  -		      m_height-borderLeft()-borderRight()-paddingLeft()-paddingRight() );
  +		      m_height-borderLeft()-borderRight()-paddingLeft()-paddingRight());
       }
  -#endif
   
       setNeedsLayout(false);
   }
  @@ -542,39 +541,6 @@
           arenaDelete(arena, this);
   }
   
  -#if APPLE_CHANGES
  -void RenderWidget::updateWidgetPositions()
  -{
  -    if (!m_widget)
  -        return;
  -    
  -    int x, y, width, height;
  -    absolutePosition(x,y);
  -    x += borderLeft() + paddingLeft();
  -    y += borderTop() + paddingTop();
  -    width = m_width - borderLeft() - borderRight() - paddingLeft() - paddingRight();
  -    height = m_height - borderTop() - borderBottom() - paddingTop() - paddingBottom();
  -    QRect newBounds(x,y,width,height);
  -    QRect oldBounds(m_widget->frameGeometry());
  -    if (newBounds != oldBounds) {
  -        // The widget changed positions.  Update the frame geometry.
  -        if (checkForRepaintDuringLayout()) {
  -            RenderCanvas* c = canvas();
  -            if (!c->printingMode()) {
  -                c->repaintViewRectangle(oldBounds);
  -                c->repaintViewRectangle(newBounds);
  -            }
  -        }
  -
  -        RenderArena *arena = ref();
  -        element()->ref();
  -        m_widget->setFrameGeometry(newBounds);
  -        element()->deref();
  -        deref(arena);
  -    }
  -}
  -#endif
  -
   void RenderWidget::setSelectionState(SelectionState s) 
   {
       if (m_selectionState != s) {
  
  
  
  1.34      +0 -1      WebCore/khtml/rendering/render_replaced.h
  
  Index: render_replaced.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_replaced.h,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- render_replaced.h	6 Oct 2005 00:53:59 -0000	1.33
  +++ render_replaced.h	18 Oct 2005 17:08:17 -0000	1.34
  @@ -100,7 +100,6 @@
   
   #if APPLE_CHANGES 
       void sendConsumedMouseUp();
  -    virtual void updateWidgetPositions();
   #endif
   
   public slots:
  
  
  



More information about the webkit-changes mailing list