[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

Maciej mjs at opensource.apple.com
Tue Oct 18 13:45:41 PDT 2005


mjs         05/10/18 13:45:40

  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:
          - back out the last change, it caused a regression with painting of offscreen plugins
  
          * khtml/khtmlview.cpp:
          (KHTMLView::layout):
          * khtml/rendering/render_form.cpp:
          (RenderFormElement::layout):
          * khtml/rendering/render_frames.cpp:
          (RenderPartObject::layout):
          (RenderPart::updateWidgetPositions):
          * khtml/rendering/render_frames.h:
          * khtml/rendering/render_layer.cpp:
          (khtml::RenderLayer::scrollToOffset):
          * khtml/rendering/render_object.cpp:
          (RenderObject::updateWidgetPositions):
          * khtml/rendering/render_object.h:
          * khtml/rendering/render_replaced.cpp:
          (RenderWidget::layout):
          (RenderWidget::updateWidgetPositions):
          * khtml/rendering/render_replaced.h:
  
  Revision  Changes    Path
  1.250     +22 -0     WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.249
  retrieving revision 1.250
  diff -u -r1.249 -r1.250
  --- ChangeLog	18 Oct 2005 17:08:15 -0000	1.249
  +++ ChangeLog	18 Oct 2005 20:45:31 -0000	1.250
  @@ -1,5 +1,27 @@
   2005-10-18  Maciej Stachowiak  <mjs at apple.com>
   
  +        - back out the last change, it caused a regression with painting of offscreen plugins
  +
  +        * khtml/khtmlview.cpp:
  +        (KHTMLView::layout):
  +        * khtml/rendering/render_form.cpp:
  +        (RenderFormElement::layout):
  +        * khtml/rendering/render_frames.cpp:
  +        (RenderPartObject::layout):
  +        (RenderPart::updateWidgetPositions):
  +        * khtml/rendering/render_frames.h:
  +        * khtml/rendering/render_layer.cpp:
  +        (khtml::RenderLayer::scrollToOffset):
  +        * khtml/rendering/render_object.cpp:
  +        (RenderObject::updateWidgetPositions):
  +        * khtml/rendering/render_object.h:
  +        * khtml/rendering/render_replaced.cpp:
  +        (RenderWidget::layout):
  +        (RenderWidget::updateWidgetPositions):
  +        * khtml/rendering/render_replaced.h:
  +
  +2005-10-18  Maciej Stachowiak  <mjs at apple.com>
  +
           Reviewed by Dave Hyatt.
           Committed by John Sullivan.
   
  
  
  
  1.148     +5 -0      WebCore/khtml/khtmlview.cpp
  
  Index: khtmlview.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/khtmlview.cpp,v
  retrieving revision 1.147
  retrieving revision 1.148
  diff -u -r1.147 -r1.148
  --- khtmlview.cpp	18 Oct 2005 17:08:16 -0000	1.147
  +++ khtmlview.cpp	18 Oct 2005 20:45:36 -0000	1.148
  @@ -699,6 +699,11 @@
       // 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.128     +5 -11     WebCore/khtml/rendering/render_form.cpp
  
  Index: render_form.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_form.cpp,v
  retrieving revision 1.127
  retrieving revision 1.128
  diff -u -r1.127 -r1.128
  --- render_form.cpp	18 Oct 2005 17:08:17 -0000	1.127
  +++ render_form.cpp	18 Oct 2005 20:45:37 -0000	1.128
  @@ -165,27 +165,21 @@
   
   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 (m_widget)
  +#if !APPLE_CHANGES
  +    if ( m_widget )
           resizeWidget(m_widget,
                        m_width-borderLeft()-borderRight()-paddingLeft()-paddingRight(),
                        m_height-borderLeft()-borderRight()-paddingLeft()-paddingRight());
  -    
  -    if (checkForRepaint)
  -        repaintAfterLayoutIfNeeded(oldBounds, oldBounds);
  +#endif
       
       setNeedsLayout(false);
   }
  
  
  
  1.80      +30 -8     WebCore/khtml/rendering/render_frames.cpp
  
  Index: render_frames.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_frames.cpp,v
  retrieving revision 1.79
  retrieving revision 1.80
  diff -u -r1.79 -r1.80
  --- render_frames.cpp	18 Oct 2005 17:08:17 -0000	1.79
  +++ render_frames.cpp	18 Oct 2005 20:45:37 -0000	1.80
  @@ -868,11 +868,6 @@
       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;
  @@ -883,9 +878,6 @@
   
       RenderPart::layout();
   
  -    if (checkForRepaint)
  -        repaintAfterLayoutIfNeeded(oldBounds, oldBounds);
  -
       setNeedsLayout(false);
   }
   
  @@ -927,4 +919,34 @@
     }
   }
   
  +#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.19      +6 -0      WebCore/khtml/rendering/render_frames.h
  
  Index: render_frames.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_frames.h,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- render_frames.h	18 Oct 2005 17:08:17 -0000	1.18
  +++ render_frames.h	18 Oct 2005 20:45:37 -0000	1.19
  @@ -100,6 +100,12 @@
   
       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.113     +3 -0      WebCore/khtml/rendering/render_layer.cpp
  
  Index: render_layer.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_layer.cpp,v
  retrieving revision 1.112
  retrieving revision 1.113
  diff -u -r1.112 -r1.113
  --- render_layer.cpp	18 Oct 2005 17:08:17 -0000	1.112
  +++ render_layer.cpp	18 Oct 2005 20:45:37 -0000	1.113
  @@ -527,6 +527,9 @@
           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.222     +6 -0      WebCore/khtml/rendering/render_object.cpp
  
  Index: render_object.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_object.cpp,v
  retrieving revision 1.221
  retrieving revision 1.222
  diff -u -r1.221 -r1.222
  --- render_object.cpp	18 Oct 2005 17:08:17 -0000	1.221
  +++ render_object.cpp	18 Oct 2005 20:45:38 -0000	1.222
  @@ -2380,6 +2380,12 @@
   }
   
   #if APPLE_CHANGES
  +void RenderObject::updateWidgetPositions()
  +{
  +    for (RenderObject* curr = firstChild(); curr; curr = curr->nextSibling())
  +        curr->updateWidgetPositions();
  +}
  +
   QValueList<DashboardRegionValue> RenderObject::computeDashboardRegions()
   {
       QValueList<DashboardRegionValue> regions;
  
  
  
  1.163     +3 -0      WebCore/khtml/rendering/render_object.h
  
  Index: render_object.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_object.h,v
  retrieving revision 1.162
  retrieving revision 1.163
  diff -u -r1.162 -r1.163
  --- render_object.h	18 Oct 2005 17:08:17 -0000	1.162
  +++ render_object.h	18 Oct 2005 20:45:38 -0000	1.163
  @@ -463,6 +463,9 @@
       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.90      +41 -7     WebCore/khtml/rendering/render_replaced.cpp
  
  Index: render_replaced.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_replaced.cpp,v
  retrieving revision 1.89
  retrieving revision 1.90
  diff -u -r1.89 -r1.90
  --- render_replaced.cpp	18 Oct 2005 17:08:17 -0000	1.89
  +++ render_replaced.cpp	18 Oct 2005 20:45:38 -0000	1.90
  @@ -339,16 +339,17 @@
       m_deleteWidget = deleteWidget;
   }
   
  -void RenderWidget::layout()
  +void RenderWidget::layout( )
   {
  -    KHTMLAssert(needsLayout());
  -    KHTMLAssert(minMaxKnown());
  -
  -    if (m_widget) {
  -	resizeWidget(m_widget,
  +    KHTMLAssert( needsLayout() );
  +    KHTMLAssert( minMaxKnown() );
  +#if !APPLE_CHANGES
  +    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);
   }
  @@ -541,6 +542,39 @@
           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.35      +1 -0      WebCore/khtml/rendering/render_replaced.h
  
  Index: render_replaced.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_replaced.h,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- render_replaced.h	18 Oct 2005 17:08:17 -0000	1.34
  +++ render_replaced.h	18 Oct 2005 20:45:38 -0000	1.35
  @@ -100,6 +100,7 @@
   
   #if APPLE_CHANGES 
       void sendConsumedMouseUp();
  +    virtual void updateWidgetPositions();
   #endif
   
   public slots:
  
  
  



More information about the webkit-changes mailing list