[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