[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

hyatt hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:40:54 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit aeb6a99bdf2fa417624d1a662d5045550e0d911d
Author: hyatt <hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu May 8 02:19:39 2003 +0000

    	The purpose of this patch is to unify XML and HTML documents' root
    	element handling.  Instead of having a special RenderHTML object
    	for dealing with <html>, root element handling is now done in
    	base classes so that it works with XML documents as well.
    
    	The changes include:
    	  * Rename RenderRoot to RenderCanvas to more accurately
    	    reflect what this RenderObject represents in CSS2.
    	  * Rename root() to canvas()
    	  * Rename isHtml() to isRoot()
    	  * Rename isRoot() to isCanvas().
    	  * Eliminate RenderHTML and fold its functionality into base
    	    classes (RenderBlock and RenderBox).
    	  * isRoot() now means "are you the RenderObject for the root
    	    element".  All isHtml() callers now say isRoot() instead.
    
            Reviewed by gramps
    
            * ForwardingHeaders/rendering/render_canvas.h: Added.
            * ForwardingHeaders/rendering/render_html.h: Removed.
            * ForwardingHeaders/rendering/render_root.h: Removed.
            * WebCore.pbproj/project.pbxproj:
            * khtml/ecma/kjs_dom.cpp:
            * khtml/ecma/kjs_window.cpp:
            * khtml/html/html_baseimpl.cpp:
            (HTMLHtmlElementImpl::id):
            * khtml/html/html_baseimpl.h:
            * khtml/khtmlview.cpp:
            (KHTMLView::layout):
            (KHTMLView::print):
            (KHTMLView::slotPaletteChanged):
            (KHTMLView::paint):
            (KHTMLView::timerEvent):
            * khtml/khtmlview.h:
            * khtml/rendering/render_applet.cpp:
            * khtml/rendering/render_block.cpp:
            * khtml/rendering/render_block.h:
            * khtml/rendering/render_body.cpp:
            * khtml/rendering/render_box.cpp:
            (RenderBox::setStyle):
            (RenderBox::paintRootBoxDecorations):
            (RenderBox::paintBoxDecorations):
            (RenderBox::paintBackgroundExtended):
            (RenderBox::containingBlockWidth):
            (RenderBox::repaint):
            (RenderBox::calcHeight):
            (RenderBox::availableHeight):
            (RenderBox::calcAbsoluteVertical):
            * khtml/rendering/render_box.h:
            * khtml/rendering/render_canvas.cpp: Added.
            (RenderCanvas::RenderCanvas):
            (RenderCanvas::~RenderCanvas):
            (RenderCanvas::calcHeight):
            (RenderCanvas::calcWidth):
            (RenderCanvas::calcMinMaxWidth):
            * khtml/rendering/render_canvas.h: Added.
            * khtml/rendering/render_container.cpp:
            (RenderContainer::removeChildNode):
            * khtml/rendering/render_flow.cpp:
            * khtml/rendering/render_frames.cpp:
            (RenderFrameSet::layout):
            (RenderFrameSet::userResize):
            * khtml/rendering/render_html.cpp: Removed.
            * khtml/rendering/render_html.h: Removed.
            * khtml/rendering/render_image.cpp:
            (RenderImage::paintObject):
            * khtml/rendering/render_layer.cpp:
            (RenderLayer::enclosingPositionedAncestor):
            (RenderLayer::convertToLayerCoords):
            (RenderLayer::constructZTree):
            * khtml/rendering/render_layer.h:
            * khtml/rendering/render_line.cpp:
            * khtml/rendering/render_list.cpp:
            (RenderListMarker::paintObject):
            * khtml/rendering/render_object.cpp:
            (RenderObject::containingBlock):
            (RenderObject::canvas):
            (RenderObject::container):
            (RenderObject::removeFromObjectLists):
            (RenderObject::detach):
            (RenderObject::nodeAtPoint):
            (RenderObject::scheduleRelayout):
            * khtml/rendering/render_object.h:
            * khtml/rendering/render_replaced.cpp:
            * khtml/rendering/render_root.cpp: Removed.
            * khtml/rendering/render_root.h: Removed.
            * khtml/rendering/render_table.cpp:
            (RenderTable::layout):
            * khtml/rendering/render_text.cpp:
            (RenderText::paintObject):
            * khtml/rendering/table_layout.cpp:
            (shouldScaleColumns):
            * khtml/xml/dom_docimpl.cpp:
            (DocumentImpl::attach):
            (DocumentImpl::setSelection):
            (DocumentImpl::clearSelection):
            (DocumentImpl::prepareMouseEvent):
            * khtml/xml/dom_elementimpl.cpp:
            (ElementImpl::createRenderer):
            * khtml/xml/dom_nodeimpl.cpp:
            (NodeImpl::rendererIsNeeded):
            * kwq/KWQKHTMLPart.mm:
            (KWQKHTMLPart::adjustPageHeight):
            (KWQKHTMLPart::forceLayoutForPageWidth):
            (KWQKHTMLPart::selectionRect):
            * kwq/WebCoreBridge.mm:
            (-[WebCoreBridge _setupRootForPrinting:]):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@4305 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 4ef7821..26ee8e5 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,113 @@
+2003-05-06  David Hyatt  <hyatt at apple.com>
+
+	The purpose of this patch is to unify XML and HTML documents' root
+	element handling.  Instead of having a special RenderHTML object
+	for dealing with <html>, root element handling is now done in
+	base classes so that it works with XML documents as well.
+
+	The changes include:
+	  * Rename RenderRoot to RenderCanvas to more accurately
+	    reflect what this RenderObject represents in CSS2.
+	  * Rename root() to canvas()
+	  * Rename isHtml() to isRoot()
+	  * Rename isRoot() to isCanvas().
+	  * Eliminate RenderHTML and fold its functionality into base
+	    classes (RenderBlock and RenderBox).
+	  * isRoot() now means "are you the RenderObject for the root
+	    element".  All isHtml() callers now say isRoot() instead.
+	  
+        Reviewed by gramps
+
+        * ForwardingHeaders/rendering/render_canvas.h: Added.
+        * ForwardingHeaders/rendering/render_html.h: Removed.
+        * ForwardingHeaders/rendering/render_root.h: Removed.
+        * WebCore.pbproj/project.pbxproj:
+        * khtml/ecma/kjs_dom.cpp:
+        * khtml/ecma/kjs_window.cpp:
+        * khtml/html/html_baseimpl.cpp:
+        (HTMLHtmlElementImpl::id):
+        * khtml/html/html_baseimpl.h:
+        * khtml/khtmlview.cpp:
+        (KHTMLView::layout):
+        (KHTMLView::print):
+        (KHTMLView::slotPaletteChanged):
+        (KHTMLView::paint):
+        (KHTMLView::timerEvent):
+        * khtml/khtmlview.h:
+        * khtml/rendering/render_applet.cpp:
+        * khtml/rendering/render_block.cpp:
+        * khtml/rendering/render_block.h:
+        * khtml/rendering/render_body.cpp:
+        * khtml/rendering/render_box.cpp:
+        (RenderBox::setStyle):
+        (RenderBox::paintRootBoxDecorations):
+        (RenderBox::paintBoxDecorations):
+        (RenderBox::paintBackgroundExtended):
+        (RenderBox::containingBlockWidth):
+        (RenderBox::repaint):
+        (RenderBox::calcHeight):
+        (RenderBox::availableHeight):
+        (RenderBox::calcAbsoluteVertical):
+        * khtml/rendering/render_box.h:
+        * khtml/rendering/render_canvas.cpp: Added.
+        (RenderCanvas::RenderCanvas):
+        (RenderCanvas::~RenderCanvas):
+        (RenderCanvas::calcHeight):
+        (RenderCanvas::calcWidth):
+        (RenderCanvas::calcMinMaxWidth):
+        * khtml/rendering/render_canvas.h: Added.
+        * khtml/rendering/render_container.cpp:
+        (RenderContainer::removeChildNode):
+        * khtml/rendering/render_flow.cpp:
+        * khtml/rendering/render_frames.cpp:
+        (RenderFrameSet::layout):
+        (RenderFrameSet::userResize):
+        * khtml/rendering/render_html.cpp: Removed.
+        * khtml/rendering/render_html.h: Removed.
+        * khtml/rendering/render_image.cpp:
+        (RenderImage::paintObject):
+        * khtml/rendering/render_layer.cpp:
+        (RenderLayer::enclosingPositionedAncestor):
+        (RenderLayer::convertToLayerCoords):
+        (RenderLayer::constructZTree):
+        * khtml/rendering/render_layer.h:
+        * khtml/rendering/render_line.cpp:
+        * khtml/rendering/render_list.cpp:
+        (RenderListMarker::paintObject):
+        * khtml/rendering/render_object.cpp:
+        (RenderObject::containingBlock):
+        (RenderObject::canvas):
+        (RenderObject::container):
+        (RenderObject::removeFromObjectLists):
+        (RenderObject::detach):
+        (RenderObject::nodeAtPoint):
+        (RenderObject::scheduleRelayout):
+        * khtml/rendering/render_object.h:
+        * khtml/rendering/render_replaced.cpp:
+        * khtml/rendering/render_root.cpp: Removed.
+        * khtml/rendering/render_root.h: Removed.
+        * khtml/rendering/render_table.cpp:
+        (RenderTable::layout):
+        * khtml/rendering/render_text.cpp:
+        (RenderText::paintObject):
+        * khtml/rendering/table_layout.cpp:
+        (shouldScaleColumns):
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::attach):
+        (DocumentImpl::setSelection):
+        (DocumentImpl::clearSelection):
+        (DocumentImpl::prepareMouseEvent):
+        * khtml/xml/dom_elementimpl.cpp:
+        (ElementImpl::createRenderer):
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::rendererIsNeeded):
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::adjustPageHeight):
+        (KWQKHTMLPart::forceLayoutForPageWidth):
+        (KWQKHTMLPart::selectionRect):
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge _setupRootForPrinting:]):
+
 2003-05-07  Darin Adler  <darin at apple.com>
 
         Reviewed by John.
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 4ef7821..26ee8e5 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,113 @@
+2003-05-06  David Hyatt  <hyatt at apple.com>
+
+	The purpose of this patch is to unify XML and HTML documents' root
+	element handling.  Instead of having a special RenderHTML object
+	for dealing with <html>, root element handling is now done in
+	base classes so that it works with XML documents as well.
+
+	The changes include:
+	  * Rename RenderRoot to RenderCanvas to more accurately
+	    reflect what this RenderObject represents in CSS2.
+	  * Rename root() to canvas()
+	  * Rename isHtml() to isRoot()
+	  * Rename isRoot() to isCanvas().
+	  * Eliminate RenderHTML and fold its functionality into base
+	    classes (RenderBlock and RenderBox).
+	  * isRoot() now means "are you the RenderObject for the root
+	    element".  All isHtml() callers now say isRoot() instead.
+	  
+        Reviewed by gramps
+
+        * ForwardingHeaders/rendering/render_canvas.h: Added.
+        * ForwardingHeaders/rendering/render_html.h: Removed.
+        * ForwardingHeaders/rendering/render_root.h: Removed.
+        * WebCore.pbproj/project.pbxproj:
+        * khtml/ecma/kjs_dom.cpp:
+        * khtml/ecma/kjs_window.cpp:
+        * khtml/html/html_baseimpl.cpp:
+        (HTMLHtmlElementImpl::id):
+        * khtml/html/html_baseimpl.h:
+        * khtml/khtmlview.cpp:
+        (KHTMLView::layout):
+        (KHTMLView::print):
+        (KHTMLView::slotPaletteChanged):
+        (KHTMLView::paint):
+        (KHTMLView::timerEvent):
+        * khtml/khtmlview.h:
+        * khtml/rendering/render_applet.cpp:
+        * khtml/rendering/render_block.cpp:
+        * khtml/rendering/render_block.h:
+        * khtml/rendering/render_body.cpp:
+        * khtml/rendering/render_box.cpp:
+        (RenderBox::setStyle):
+        (RenderBox::paintRootBoxDecorations):
+        (RenderBox::paintBoxDecorations):
+        (RenderBox::paintBackgroundExtended):
+        (RenderBox::containingBlockWidth):
+        (RenderBox::repaint):
+        (RenderBox::calcHeight):
+        (RenderBox::availableHeight):
+        (RenderBox::calcAbsoluteVertical):
+        * khtml/rendering/render_box.h:
+        * khtml/rendering/render_canvas.cpp: Added.
+        (RenderCanvas::RenderCanvas):
+        (RenderCanvas::~RenderCanvas):
+        (RenderCanvas::calcHeight):
+        (RenderCanvas::calcWidth):
+        (RenderCanvas::calcMinMaxWidth):
+        * khtml/rendering/render_canvas.h: Added.
+        * khtml/rendering/render_container.cpp:
+        (RenderContainer::removeChildNode):
+        * khtml/rendering/render_flow.cpp:
+        * khtml/rendering/render_frames.cpp:
+        (RenderFrameSet::layout):
+        (RenderFrameSet::userResize):
+        * khtml/rendering/render_html.cpp: Removed.
+        * khtml/rendering/render_html.h: Removed.
+        * khtml/rendering/render_image.cpp:
+        (RenderImage::paintObject):
+        * khtml/rendering/render_layer.cpp:
+        (RenderLayer::enclosingPositionedAncestor):
+        (RenderLayer::convertToLayerCoords):
+        (RenderLayer::constructZTree):
+        * khtml/rendering/render_layer.h:
+        * khtml/rendering/render_line.cpp:
+        * khtml/rendering/render_list.cpp:
+        (RenderListMarker::paintObject):
+        * khtml/rendering/render_object.cpp:
+        (RenderObject::containingBlock):
+        (RenderObject::canvas):
+        (RenderObject::container):
+        (RenderObject::removeFromObjectLists):
+        (RenderObject::detach):
+        (RenderObject::nodeAtPoint):
+        (RenderObject::scheduleRelayout):
+        * khtml/rendering/render_object.h:
+        * khtml/rendering/render_replaced.cpp:
+        * khtml/rendering/render_root.cpp: Removed.
+        * khtml/rendering/render_root.h: Removed.
+        * khtml/rendering/render_table.cpp:
+        (RenderTable::layout):
+        * khtml/rendering/render_text.cpp:
+        (RenderText::paintObject):
+        * khtml/rendering/table_layout.cpp:
+        (shouldScaleColumns):
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::attach):
+        (DocumentImpl::setSelection):
+        (DocumentImpl::clearSelection):
+        (DocumentImpl::prepareMouseEvent):
+        * khtml/xml/dom_elementimpl.cpp:
+        (ElementImpl::createRenderer):
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::rendererIsNeeded):
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::adjustPageHeight):
+        (KWQKHTMLPart::forceLayoutForPageWidth):
+        (KWQKHTMLPart::selectionRect):
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge _setupRootForPrinting:]):
+
 2003-05-07  Darin Adler  <darin at apple.com>
 
         Reviewed by John.
diff --git a/WebCore/ForwardingHeaders/rendering/render_canvas.h b/WebCore/ForwardingHeaders/rendering/render_canvas.h
new file mode 100644
index 0000000..13554e5
--- /dev/null
+++ b/WebCore/ForwardingHeaders/rendering/render_canvas.h
@@ -0,0 +1 @@
+#include <render_canvas.h>
diff --git a/WebCore/ForwardingHeaders/rendering/render_html.h b/WebCore/ForwardingHeaders/rendering/render_html.h
deleted file mode 100644
index db730cb..0000000
--- a/WebCore/ForwardingHeaders/rendering/render_html.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <render_html.h>
diff --git a/WebCore/ForwardingHeaders/rendering/render_root.h b/WebCore/ForwardingHeaders/rendering/render_root.h
deleted file mode 100644
index 9051d39..0000000
--- a/WebCore/ForwardingHeaders/rendering/render_root.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <render_root.h>
diff --git a/WebCore/WebCore.pbproj/project.pbxproj b/WebCore/WebCore.pbproj/project.pbxproj
index 21d0cc2..ba9bcd0 100644
--- a/WebCore/WebCore.pbproj/project.pbxproj
+++ b/WebCore/WebCore.pbproj/project.pbxproj
@@ -297,7 +297,6 @@
 				F523D2D902DE4438018635CA,
 				F523D2DB02DE4438018635CA,
 				F523D2DE02DE4438018635CA,
-				F523D2E102DE4438018635CA,
 				F523D2E302DE4438018635CA,
 				BC7C965503E9EE7000A80004,
 				F690CFEC031C47F401CA2AC4,
@@ -305,7 +304,6 @@
 				F523D2E502DE4438018635CA,
 				F523D2E702DE4438018635CA,
 				F523D2E902DE4438018635CA,
-				F523D2EC02DE4438018635CA,
 				F523D2EE02DE4438018635CA,
 				F523D2F002DE4438018635CA,
 				F523D2F202DE4438018635CA,
@@ -493,6 +491,7 @@
 				F587870902DE3B8601EA4122,
 				F587871502DE3B8601EA4122,
 				BC7B2AFA0450824100A8000F,
+				BC80A6960468B78100DBCC9C,
 			);
 			isa = PBXHeadersBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -680,12 +679,10 @@
 				F523D2D802DE4438018635CA,
 				F523D2DA02DE4438018635CA,
 				F523D2DD02DE4438018635CA,
-				F523D2E002DE4438018635CA,
 				F523D2E202DE4438018635CA,
 				F523D2E402DE4438018635CA,
 				F523D2E602DE4438018635CA,
 				F523D2E802DE4438018635CA,
-				F523D2EB02DE4438018635CA,
 				F523D2ED02DE4438018635CA,
 				F523D2EF02DE4438018635CA,
 				F523D2F102DE4438018635CA,
@@ -740,6 +737,7 @@
 				BC8F61890405949900A80004,
 				9325AABA041D0E9A00A9CAC5,
 				BC7B2AFB0450824100A8000F,
+				BC80A6950468B78100DBCC9C,
 			);
 			isa = PBXSourcesBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -1595,6 +1593,30 @@
 			settings = {
 			};
 		};
+		BC80A6930468B78100DBCC9C = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = render_canvas.cpp;
+			refType = 4;
+		};
+		BC80A6940468B78100DBCC9C = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = render_canvas.h;
+			refType = 4;
+		};
+		BC80A6950468B78100DBCC9C = {
+			fileRef = BC80A6930468B78100DBCC9C;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		BC80A6960468B78100DBCC9C = {
+			fileRef = BC80A6940468B78100DBCC9C;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
 		BC8F61850405949900A80004 = {
 			fileEncoding = 30;
 			isa = PBXFileReference;
@@ -3994,18 +4016,6 @@
 			path = render_frames.h;
 			refType = 4;
 		};
-		F523D2B502DE4438018635CA = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			path = render_html.cpp;
-			refType = 4;
-		};
-		F523D2B602DE4438018635CA = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			path = render_html.h;
-			refType = 4;
-		};
 		F523D2B702DE4438018635CA = {
 			fileEncoding = 30;
 			isa = PBXFileReference;
@@ -4054,18 +4064,6 @@
 			path = render_replaced.h;
 			refType = 4;
 		};
-		F523D2C002DE4438018635CA = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			path = render_root.cpp;
-			refType = 4;
-		};
-		F523D2C102DE4438018635CA = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			path = render_root.h;
-			refType = 4;
-		};
 		F523D2C202DE4438018635CA = {
 			fileEncoding = 30;
 			isa = PBXFileReference;
@@ -4234,18 +4232,6 @@
 			settings = {
 			};
 		};
-		F523D2E002DE4438018635CA = {
-			fileRef = F523D2B502DE4438018635CA;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		F523D2E102DE4438018635CA = {
-			fileRef = F523D2B602DE4438018635CA;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
 		F523D2E202DE4438018635CA = {
 			fileRef = F523D2B702DE4438018635CA;
 			isa = PBXBuildFile;
@@ -4294,18 +4280,6 @@
 			settings = {
 			};
 		};
-		F523D2EB02DE4438018635CA = {
-			fileRef = F523D2C002DE4438018635CA;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		F523D2EC02DE4438018635CA = {
-			fileRef = F523D2C102DE4438018635CA;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
 		F523D2ED02DE4438018635CA = {
 			fileRef = F523D2C202DE4438018635CA;
 			isa = PBXBuildFile;
@@ -4362,6 +4336,8 @@
 				F523D2A702DE4438018635CA,
 				F523D2AA02DE4438018635CA,
 				F523D2A902DE4438018635CA,
+				BC80A6930468B78100DBCC9C,
+				BC80A6940468B78100DBCC9C,
 				F523D2AC02DE4438018635CA,
 				F523D2AB02DE4438018635CA,
 				F523D2AE02DE4438018635CA,
@@ -4370,8 +4346,6 @@
 				F523D2AF02DE4438018635CA,
 				F523D2B302DE4438018635CA,
 				F523D2B202DE4438018635CA,
-				F523D2B502DE4438018635CA,
-				F523D2B602DE4438018635CA,
 				F523D2B702DE4438018635CA,
 				F523D2B802DE4438018635CA,
 				BC7C965003E9EE7000A80004,
@@ -4386,8 +4360,6 @@
 				F523D2BB02DE4438018635CA,
 				F523D2BE02DE4438018635CA,
 				F523D2BD02DE4438018635CA,
-				F523D2C102DE4438018635CA,
-				F523D2C002DE4438018635CA,
 				F523D2C302DE4438018635CA,
 				F523D2C202DE4438018635CA,
 				F523D2C502DE4438018635CA,
diff --git a/WebCore/khtml/ecma/kjs_dom.cpp b/WebCore/khtml/ecma/kjs_dom.cpp
index b6dfa24..2f3663b 100644
--- a/WebCore/khtml/ecma/kjs_dom.cpp
+++ b/WebCore/khtml/ecma/kjs_dom.cpp
@@ -21,7 +21,7 @@
 
 #include <khtmlview.h>
 #include "xml/dom2_eventsimpl.h"
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 #include "xml/dom_nodeimpl.h"
 #include "xml/dom_docimpl.h"
 #include <kdebug.h>
diff --git a/WebCore/khtml/ecma/kjs_window.cpp b/WebCore/khtml/ecma/kjs_window.cpp
index 85936c3..5d71f90 100644
--- a/WebCore/khtml/ecma/kjs_window.cpp
+++ b/WebCore/khtml/ecma/kjs_window.cpp
@@ -33,7 +33,7 @@
 #include <kconfig.h>
 #include <assert.h>
 #include <qstyle.h>
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 
 #if APPLE_CHANGES
 #include "KWQLogging.h"
diff --git a/WebCore/khtml/html/html_baseimpl.cpp b/WebCore/khtml/html/html_baseimpl.cpp
index 280d174..a2376d6 100644
--- a/WebCore/khtml/html/html_baseimpl.cpp
+++ b/WebCore/khtml/html/html_baseimpl.cpp
@@ -31,7 +31,6 @@
 #include "khtml_part.h"
 
 #include "rendering/render_frames.h"
-#include "rendering/render_html.h"
 #include "rendering/render_body.h"
 #include "css/cssstyleselector.h"
 #include "css/css_stylesheetimpl.h"
@@ -638,23 +637,6 @@ NodeImpl::Id HTMLHtmlElementImpl::id() const
     return ID_HTML;
 }
 
-bool HTMLHtmlElementImpl::rendererIsNeeded(RenderStyle *style)
-{
-    // Ignore display: none.
-    return true;
-}
-
-RenderObject *HTMLHtmlElementImpl::createRenderer(RenderArena *arena, RenderStyle *style)
-{
-    return new (arena) RenderHtml(this);
-}
-
-void HTMLHtmlElementImpl::attach()
-{
-    createRendererIfNeeded();
-    NodeBaseImpl::attach();
-}
-
 // -------------------------------------------------------------------------
 
 HTMLIFrameElementImpl::HTMLIFrameElementImpl(DocumentPtr *doc) : HTMLFrameElementImpl(doc)
diff --git a/WebCore/khtml/html/html_baseimpl.h b/WebCore/khtml/html/html_baseimpl.h
index fcdb349..ef423bb 100644
--- a/WebCore/khtml/html/html_baseimpl.h
+++ b/WebCore/khtml/html/html_baseimpl.h
@@ -185,9 +185,6 @@ public:
     ~HTMLHtmlElementImpl();
 
     virtual Id id() const;
-    virtual void attach();
-    virtual bool rendererIsNeeded(khtml::RenderStyle *);
-    virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *);
 };
 
 
diff --git a/WebCore/khtml/khtmlview.cpp b/WebCore/khtml/khtmlview.cpp
index a99fe32..c4e73f9 100644
--- a/WebCore/khtml/khtmlview.cpp
+++ b/WebCore/khtml/khtmlview.cpp
@@ -32,7 +32,7 @@
 #include "html/html_inlineimpl.h"
 #include "html/html_formimpl.h"
 #include "rendering/render_object.h"
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 #include "rendering/render_style.h"
 #include "rendering/render_replaced.h"
 #include "xml/dom2_eventsimpl.h"
@@ -398,7 +398,7 @@ void KHTMLView::layout()
     if( m_part->xmlDocImpl() ) {
         DOM::DocumentImpl *document = m_part->xmlDocImpl();
 
-        khtml::RenderRoot* root = static_cast<khtml::RenderRoot *>(document->renderer());
+        khtml::RenderCanvas* root = static_cast<khtml::RenderCanvas *>(document->renderer());
         if ( !root ) return;
 
          if (document->isHTMLDocument()) {
@@ -1070,7 +1070,7 @@ QString KHTMLView::mediaType() const
 void KHTMLView::print()
 {
     if(!m_part->xmlDocImpl()) return;
-    khtml::RenderRoot *root = static_cast<khtml::RenderRoot *>(m_part->xmlDocImpl()->renderer());
+    khtml::RenderCanvas *root = static_cast<khtml::RenderCanvas *>(m_part->xmlDocImpl()->renderer());
     if(!root) return;
 
     // this only works on Unix - we assume 72dpi
@@ -1179,7 +1179,7 @@ void KHTMLView::slotPaletteChanged()
     if(!m_part->xmlDocImpl()) return;
     DOM::DocumentImpl *document = m_part->xmlDocImpl();
     if (!document->isHTMLDocument()) return;
-    khtml::RenderRoot *root = static_cast<khtml::RenderRoot *>(document->renderer());
+    khtml::RenderCanvas *root = static_cast<khtml::RenderCanvas *>(document->renderer());
     if(!root) return;
     root->style()->resetPalette();
     NodeImpl *body = static_cast<HTMLDocumentImpl*>(document)->body();
@@ -1191,7 +1191,7 @@ void KHTMLView::slotPaletteChanged()
 void KHTMLView::paint(QPainter *p, const QRect &rc, int yOff, bool *more)
 {
     if(!m_part->xmlDocImpl()) return;
-    khtml::RenderRoot *root = static_cast<khtml::RenderRoot *>(m_part->xmlDocImpl()->renderer());
+    khtml::RenderCanvas *root = static_cast<khtml::RenderCanvas *>(m_part->xmlDocImpl()->renderer());
     if(!root) return;
 
     m_part->xmlDocImpl()->setPaintDevice(p->device());
@@ -1534,7 +1534,7 @@ void KHTMLView::timerEvent ( QTimerEvent *e )
 
     if( m_part->xmlDocImpl() ) {
         DOM::DocumentImpl *document = m_part->xmlDocImpl();
-        khtml::RenderRoot* root = static_cast<khtml::RenderRoot *>(document->renderer());
+        khtml::RenderCanvas* root = static_cast<khtml::RenderCanvas *>(document->renderer());
         if (root){
             // Do not allow a full layout if we had a clip object set.
             if ( root->needsLayout() && !m_layoutObject) {
diff --git a/WebCore/khtml/khtmlview.h b/WebCore/khtml/khtmlview.h
index 54b2e4d..fa1ec62 100644
--- a/WebCore/khtml/khtmlview.h
+++ b/WebCore/khtml/khtmlview.h
@@ -48,7 +48,7 @@ namespace DOM {
 
 namespace khtml {
     class RenderObject;
-    class RenderRoot;
+    class RenderCanvas;
     class RenderStyle;
     class RenderLineEdit;
     class RenderPartObject;
@@ -76,7 +76,7 @@ class KHTMLView : public QScrollView
     friend class DOM::HTMLAnchorElementImpl;
     friend class DOM::DocumentImpl;
     friend class KHTMLPart;
-    friend class khtml::RenderRoot;
+    friend class khtml::RenderCanvas;
     friend class khtml::RenderObject;
     friend class khtml::RenderLineEdit;
     friend class khtml::RenderPartObject;
diff --git a/WebCore/khtml/rendering/render_applet.cpp b/WebCore/khtml/rendering/render_applet.cpp
index 3f49fd3..44be58e 100644
--- a/WebCore/khtml/rendering/render_applet.cpp
+++ b/WebCore/khtml/rendering/render_applet.cpp
@@ -26,7 +26,7 @@
 #include <kdebug.h>
 
 #include "rendering/render_applet.h"
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 #include "xml/dom_docimpl.h"
 #include "khtmlview.h"
 #include "khtml_part.h"
diff --git a/WebCore/khtml/rendering/render_block.cpp b/WebCore/khtml/rendering/render_block.cpp
index 4030bed..680b1fe 100644
--- a/WebCore/khtml/rendering/render_block.cpp
+++ b/WebCore/khtml/rendering/render_block.cpp
@@ -30,7 +30,7 @@
 #include <kdebug.h>
 #include "rendering/render_text.h"
 #include "rendering/render_table.h"
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 #include "xml/dom_nodeimpl.h"
 #include "xml/dom_docimpl.h"
 #include "html/html_formimpl.h"
@@ -242,6 +242,16 @@ void RenderBlock::addChildToFlow(RenderObject* newChild, RenderObject* beforeChi
     
     if ( madeBoxesNonInline )
         removeLeftoverAnonymousBoxes();
+
+    if (newChild->isRoot()) {
+        // Create a layer if we need one.
+        RenderBlock* rootBlock = static_cast<RenderBlock*>(newChild);
+        if (!rootBlock->m_layer) {
+            rootBlock->m_layer = new (renderArena()) RenderLayer(rootBlock);
+            rootBlock->m_layer->insertOnlyThisLayer();
+        }
+        rootBlock->setShouldPaintBackgroundOrBorder(true);
+    }
 }
 
 static void getInlineRun(RenderObject* start, RenderObject* stop,
@@ -530,6 +540,24 @@ void RenderBlock::layoutBlock(bool relayoutChildren)
         m_layer->checkScrollbarsAfterLayout();
     
     setNeedsLayout(false);
+
+    if (isRoot()) {
+        //kdDebug(0) << renderName() << " height = " << m_height << endl;
+        RenderObject *r = canvas();
+        int lp = r ? r->lowestPosition() : lowestPosition();
+
+        // margins of Html element can only be fixed, right?
+        int margins  = style()->marginTop().isFixed() ? style()->marginTop().value : 0;
+        margins += style()->marginBottom().isFixed() ? style()->marginBottom().value : 0;
+
+        if( m_height + margins < lp )
+            m_height = lp - margins;
+
+        m_layer->setHeight(m_height);
+        m_layer->setWidth(m_width);
+
+        //kdDebug(0) << "docHeight = " << m_height << endl;
+    }
 }
 
 void RenderBlock::layoutBlockChildren( bool relayoutChildren )
@@ -566,7 +594,7 @@ void RenderBlock::layoutBlockChildren( bool relayoutChildren )
     // we're positioned, floating, a table cell.
     // For now we only worry about the top border/padding.  We will update the variable's
     // value when it comes time to check against the bottom border/padding.
-    bool canCollapseWithChildren = !isRoot() && !isHtml() && !isPositioned() &&
+    bool canCollapseWithChildren = !isCanvas() && !isRoot() && !isPositioned() &&
         !isFloating() && !isTableCell() && !style()->hidesOverflow();
     bool canCollapseTopWithChildren = canCollapseWithChildren && (m_height == 0);
     
@@ -1041,7 +1069,7 @@ void RenderBlock::paint(QPainter* p, int _x, int _y, int _w, int _h, int _tx, in
     _ty += m_y;
 
     // check if we need to do anything at all...
-    if (!isInlineFlow() && !overhangingContents() && !isRelPositioned() && !isPositioned() )
+    if (!isRoot() && !isInlineFlow() && !overhangingContents() && !isRelPositioned() && !isPositioned() )
     {
         int h = m_overflowHeight;
         int yPos = _ty;
@@ -1637,8 +1665,8 @@ void RenderBlock::addOverHangingFloats( RenderBlock *flow, int xoff, int offset,
     kdDebug( 6040 ) << (void *)this << ": adding overhanging floats xoff=" << xoff << "  offset=" << offset << " child=" << child << endl;
 #endif
 
-    // Prevent floats from being added to the root by <html>.
-    if ( !flow->m_floatingObjects || (child && flow->isHtml()) )
+    // Prevent floats from being added to the canvas by the root element, e.g., <html>.
+    if ( !flow->m_floatingObjects || (child && flow->isRoot()) )
         return;
 
     // we have overhanging floats
@@ -1792,9 +1820,9 @@ bool RenderBlock::nodeAtPoint(NodeInfo& info, int _x, int _y, int _tx, int _ty,
         int sty = _ty + yPos();
         if (style()->hidesOverflow() && m_layer)
             m_layer->subtractScrollOffset(stx, sty);
-        if (isRoot()) {
-            stx += static_cast<RenderRoot*>(this)->view()->contentsX();
-            sty += static_cast<RenderRoot*>(this)->view()->contentsY();
+        if (isCanvas()) {
+            stx += static_cast<RenderCanvas*>(this)->view()->contentsX();
+            sty += static_cast<RenderCanvas*>(this)->view()->contentsY();
         }
         FloatingObject* o;
         QPtrListIterator<FloatingObject> it(*m_floatingObjects);
diff --git a/WebCore/khtml/rendering/render_block.h b/WebCore/khtml/rendering/render_block.h
index 6dcc556..c70ef90 100644
--- a/WebCore/khtml/rendering/render_block.h
+++ b/WebCore/khtml/rendering/render_block.h
@@ -163,8 +163,8 @@ public:
     virtual InlineFlowBox* getFirstLineBox();
     
     // overrides RenderObject
-    virtual bool requiresLayer() { return !isTableCell() &&
-        (isPositioned() || isRelPositioned() || style()->hidesOverflow()); }
+    virtual bool requiresLayer() { return isRoot() || (!isTableCell() &&
+        (isPositioned() || isRelPositioned() || style()->hidesOverflow())); }
     
 #ifndef NDEBUG
     virtual void printTree(int indent=0) const;
diff --git a/WebCore/khtml/rendering/render_body.cpp b/WebCore/khtml/rendering/render_body.cpp
index 8b3738e..40121be 100644
--- a/WebCore/khtml/rendering/render_body.cpp
+++ b/WebCore/khtml/rendering/render_body.cpp
@@ -21,7 +21,7 @@
  *
  */
 #include "render_body.h"
-#include "render_root.h"
+#include "render_canvas.h"
 #include "html/html_baseimpl.h"
 #include "xml/dom_docimpl.h"
 #include "khtmlview.h"
diff --git a/WebCore/khtml/rendering/render_box.cpp b/WebCore/khtml/rendering/render_box.cpp
index 9bc3641..9db60c5 100644
--- a/WebCore/khtml/rendering/render_box.cpp
+++ b/WebCore/khtml/rendering/render_box.cpp
@@ -29,7 +29,7 @@
 
 #include "rendering/render_box.h"
 #include "rendering/render_replaced.h"
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 #include "rendering/render_table.h"
 #include "render_arena.h"
 
@@ -93,7 +93,7 @@ void RenderBox::setStyle(RenderStyle *_style)
             m_layer->insertOnlyThisLayer();
         }
     }
-    else if (m_layer && !isHtml() && !isRoot()) {
+    else if (m_layer && !isRoot() && !isCanvas()) {
         m_layer->removeOnlyThisLayer();
         m_layer = 0;
     }
@@ -176,12 +176,61 @@ void RenderBox::setPixmap(const QPixmap &, const QRect&, CachedImage *image)
         repaint();      //repaint bg when it finished loading
 }
 
+void RenderBox::paintRootBoxDecorations(QPainter *p,int, int _y,
+                                        int, int _h, int _tx, int _ty)
+{
+    //kdDebug( 6040 ) << renderName() << "::paintBoxDecorations()" << _tx << "/" << _ty << endl;
+    QColor c = style()->backgroundColor();
+    CachedImage *bg = style()->backgroundImage();
+
+    if (!c.isValid() && !bg && firstChild()) {
+        if (!c.isValid())
+            c = firstChild()->style()->backgroundColor();
+        if (!bg)
+            bg = firstChild()->style()->backgroundImage();
+    }
+
+    if( !c.isValid() && canvas()->view())
+        c = canvas()->view()->palette().active().color(QColorGroup::Base);
+
+    int w = width();
+    int h = height();
+
+    //    kdDebug(0) << "width = " << w <<endl;
+
+    int rw, rh;
+    if (canvas()->view())
+        rw=canvas()->view()->contentsWidth();
+    else
+        rw=canvas()->width();
+    rh=canvas()->height();
+
+    //    kdDebug(0) << "rw = " << rw <<endl;
+
+    int bx = _tx - marginLeft();
+    int by = _ty - marginTop();
+    int bw = QMAX(w + marginLeft() + marginRight() + borderLeft() + borderRight(), rw);
+    int bh = QMAX(h + marginTop() + marginBottom() + borderTop() + borderBottom(), rh);
+
+    // CSS2 14.2:
+    // " The background of the box generated by the root element covers the entire canvas."
+    // hence, paint the background even in the margin areas (unlike for every other element!)
+    // I just love these little inconsistencies .. :-( (Dirk)
+    int my = QMAX(by,_y);
 
-void RenderBox::paintBoxDecorations(QPainter *p,int, int _y,
-                                    int, int _h, int _tx, int _ty)
+    paintBackground(p, c, bg, my, _h, bx, by, bw, bh);
+
+    if(style()->hasBorder())
+        paintBorder( p, _tx, _ty, w, h, style() );
+}
+
+void RenderBox::paintBoxDecorations(QPainter *p,int _x, int _y,
+                                    int _w, int _h, int _tx, int _ty)
 {
     //kdDebug( 6040 ) << renderName() << "::paintDecorations()" << endl;
-
+    if (isRoot())
+        return paintRootBoxDecorations(p, _x, _y, _w, _h, _tx, _ty);
+    
     int w = width();
     int h = height() + borderTopExtra() + borderBottomExtra();
     _ty -= borderTopExtra();
@@ -217,9 +266,9 @@ void RenderBox::paintBackgroundExtended(QPainter *p, const QColor &c, CachedImag
         // ### might need to add some correct offsets
         // ### use paddingX/Y
 
-        //hacky stuff
+        // for propagation of <body> up to <html>
         RenderStyle* sptr = style();
-        if ( isHtml() && firstChild() && !style()->backgroundImage() )
+        if ((isRoot() && element() && element()->id() == ID_HTML) && firstChild() && !style()->backgroundImage())
             sptr = firstChild()->style();
 
         int sx = 0;
@@ -408,6 +457,9 @@ void RenderBox::close()
 
 short RenderBox::containingBlockWidth() const
 {
+    if (isRoot() && canvas()->view())
+        return canvas()->view()->visibleWidth();
+    
     RenderBlock* cb = containingBlock();
     if ((style()->hidesOverflow() || ((style()->htmlHacks() || isTable()) && style()->flowAroundFloats()))
             && style()->width().isVariable())
@@ -451,6 +503,12 @@ void RenderBox::position(InlineBox* box, int from, int len, bool reverse)
 void RenderBox::repaint(bool immediate)
 {
     //kdDebug( 6040 ) << "repaint!" << endl;
+    if (isRoot()) {
+        RenderObject *cb = containingBlock();
+        if(cb != this)
+            cb->repaint(immediate);
+        return;
+    }
     int ow = style() ? style()->outlineWidth() : 0;
     repaintRectangle(-ow, -ow, overflowWidth(false)+ow*2, overflowHeight(false)+ow*2, immediate);
 }
@@ -716,12 +774,12 @@ void RenderBox::calcHeight()
                     ch = cb->style()->height();
                 }
 
-                if (cb->isRoot()) {
-                    // Don't allow this to affect the root's m_height member variable, since this
-                    // can get called while the root is still laying out its kids.
+                if (cb->isCanvas()) {
+                    // Don't allow this to affect the canvas' m_height member variable, since this
+                    // can get called while the canvas is still laying out its kids.
                     // e.g., <html style="height:100%">etc. -dwh
                     int oldHeight = cb->height();
-                    static_cast<RenderRoot*>(cb)->calcHeight();
+                    static_cast<RenderCanvas*>(cb)->calcHeight();
                     fh = h.width(cb->height()) + borderTop() + paddingTop() + borderBottom() + paddingBottom();
                     cb->setHeight(oldHeight);
                 }
@@ -798,8 +856,8 @@ int RenderBox::availableHeight() const
     if (h.isFixed())
         return h.value;
 
-    if (isRoot())
-        return static_cast<const RenderRoot*>(this)->viewportHeight();
+    if (isCanvas())
+        return static_cast<const RenderCanvas*>(this)->viewportHeight();
 
     // We need to stop here, since we don't want to increase the height of the table
     // artificially.  We're going to rely on this cell getting expanded to some new
@@ -1012,7 +1070,7 @@ void RenderBox::calcAbsoluteVertical()
     if (hl.isFixed())
         ch = hl.value + cb->paddingTop()
              + cb->paddingBottom() + cb->borderTop() + cb->borderBottom();
-    else if (cb->isHtml())
+    else if (cb->isRoot())
         ch = cb->availableHeight();
     else
         ch = cb->height();
diff --git a/WebCore/khtml/rendering/render_box.h b/WebCore/khtml/rendering/render_box.h
index 1ffac9f..2254335 100644
--- a/WebCore/khtml/rendering/render_box.h
+++ b/WebCore/khtml/rendering/render_box.h
@@ -119,6 +119,9 @@ public:
 protected:
     virtual void paintBoxDecorations(QPainter *p,int _x, int _y,
                                      int _w, int _h, int _tx, int _ty);
+    void paintRootBoxDecorations(QPainter *p,int, int _y,
+                                 int, int _h, int _tx, int _ty);
+
     void paintBackground(QPainter *p, const QColor &c, CachedImage *bg, int clipy, int cliph, int _tx, int _ty, int w, int h);
     void outlineBox(QPainter *p, int _tx, int _ty, const char *color = "red");
 
diff --git a/WebCore/khtml/rendering/render_root.cpp b/WebCore/khtml/rendering/render_canvas.cpp
similarity index 88%
rename from WebCore/khtml/rendering/render_root.cpp
rename to WebCore/khtml/rendering/render_canvas.cpp
index afae5ec..564ad41 100644
--- a/WebCore/khtml/rendering/render_root.cpp
+++ b/WebCore/khtml/rendering/render_canvas.cpp
@@ -19,7 +19,7 @@
  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  */
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 #include "render_layer.h"
 #include "xml/dom_docimpl.h"
 
@@ -35,7 +35,7 @@ using namespace khtml;
 //#define BOX_DEBUG
 //#define SPEED_DEBUG
 
-RenderRoot::RenderRoot(DOM::NodeImpl* node, KHTMLView *view)
+RenderCanvas::RenderCanvas(DOM::NodeImpl* node, KHTMLView *view)
     : RenderBlock(node)
 {
     // init RenderObject attributes
@@ -67,11 +67,11 @@ RenderRoot::RenderRoot(DOM::NodeImpl* node, KHTMLView *view)
     m_layer = new (node->getDocument()->renderArena()) RenderLayer(this);
 }
 
-RenderRoot::~RenderRoot()
+RenderCanvas::~RenderCanvas()
 {
 }
 
-void RenderRoot::calcHeight()
+void RenderCanvas::calcHeight()
 {
     if (!m_printingMode && m_view)
     {
@@ -83,7 +83,7 @@ void RenderRoot::calcHeight()
     }
 }
 
-void RenderRoot::calcWidth()
+void RenderCanvas::calcWidth()
 {
     // the width gets set by KHTMLView::print when printing to a printer.
     if(m_printingMode || !m_view)
@@ -107,7 +107,7 @@ void RenderRoot::calcWidth()
         m_marginRight = 0;
 }
 
-void RenderRoot::calcMinMaxWidth()
+void RenderCanvas::calcMinMaxWidth()
 {
     KHTMLAssert( !minMaxKnown() );
 
@@ -120,7 +120,7 @@ void RenderRoot::calcMinMaxWidth()
 
 //#define SPEED_DEBUG
 
-void RenderRoot::layout()
+void RenderCanvas::layout()
 {
     if (m_printingMode)
        m_minWidth = m_width;
@@ -135,12 +135,12 @@ void RenderRoot::layout()
     if ( recalcMinMax() )
 	recalcMinMaxWidths();
 #ifdef SPEED_DEBUG
-    kdDebug() << "RenderRoot::calcMinMax time used=" << qt.elapsed() << endl;
+    kdDebug() << "RenderCanvas::calcMinMax time used=" << qt.elapsed() << endl;
     qt.start();
 #endif
 
 #ifdef SPEED_DEBUG
-    kdDebug() << "RenderRoot::layout time used=" << qt.elapsed() << endl;
+    kdDebug() << "RenderCanvas::layout time used=" << qt.elapsed() << endl;
     qt.start();
 #endif
     if (!m_printingMode) {
@@ -171,7 +171,7 @@ void RenderRoot::layout()
     layoutPositionedObjects( true );
 
 #ifdef SPEED_DEBUG
-    kdDebug() << "RenderRoot::end time used=" << qt.elapsed() << endl;
+    kdDebug() << "RenderCanvas::end time used=" << qt.elapsed() << endl;
 #endif
 
     layer()->setHeight(m_height);
@@ -180,7 +180,7 @@ void RenderRoot::layout()
     setNeedsLayout(false);
 }
 
-bool RenderRoot::absolutePosition(int &xPos, int &yPos, bool f)
+bool RenderCanvas::absolutePosition(int &xPos, int &yPos, bool f)
 {
     if ( f && m_view) {
 	xPos = m_view->contentsX();
@@ -192,17 +192,17 @@ bool RenderRoot::absolutePosition(int &xPos, int &yPos, bool f)
     return true;
 }
 
-void RenderRoot::paint(QPainter *p, int _x, int _y, int _w, int _h, int _tx, int _ty,
+void RenderCanvas::paint(QPainter *p, int _x, int _y, int _w, int _h, int _tx, int _ty,
                        PaintAction paintAction)
 {
     paintObject(p, _x, _y, _w, _h, _tx, _ty, paintAction);
 }
 
-void RenderRoot::paintObject(QPainter *p, int _x, int _y,
+void RenderCanvas::paintObject(QPainter *p, int _x, int _y,
                              int _w, int _h, int _tx, int _ty, PaintAction paintAction)
 {
 #ifdef DEBUG_LAYOUT
-    kdDebug( 6040 ) << renderName() << "(RenderRoot) " << this << " ::paintObject() w/h = (" << width() << "/" << height() << ")" << endl;
+    kdDebug( 6040 ) << renderName() << "(RenderCanvas) " << this << " ::paintObject() w/h = (" << width() << "/" << height() << ")" << endl;
 #endif
     // 1. paint background, borders etc
     if (paintAction == PaintActionElementBackground) {
@@ -235,21 +235,7 @@ void RenderRoot::paintObject(QPainter *p, int _x, int _y,
 
 }
 
-void RenderRoot::paintBoxDecorations(QPainter *p, int x, int y, int w, int h, int tx, int ty)
-{
-    // For now, this function is only used when we don't have an
-    // HTML object inside us, for plain XML for example. Eventually,
-    // we probably want to remove RenderHtml::paintBoxDecorations,
-    // and do all the work here instead.
-
-    if ((firstChild() && firstChild()->isHtml()) || !view()) {
-        return;
-    }
-
-    p->fillRect(x, y, w, h, view()->palette().active().color(QColorGroup::Base));
-}
-
-void RenderRoot::repaintRectangle(int x, int y, int w, int h, bool immediate, bool f)
+void RenderCanvas::repaintRectangle(int x, int y, int w, int h, bool immediate, bool f)
 {
     if (m_printingMode) return;
 //    kdDebug( 6040 ) << "updating views contents (" << x << "/" << y << ") (" << w << "/" << h << ")" << endl;
@@ -269,7 +255,7 @@ void RenderRoot::repaintRectangle(int x, int y, int w, int h, bool immediate, bo
             m_view->scheduleRepaint(x, y, w, h);
 }
 
-void RenderRoot::repaint(bool immediate)
+void RenderCanvas::repaint(bool immediate)
 {
     if (m_view && !m_printingMode) {
         if (immediate) {
@@ -288,7 +274,7 @@ void RenderRoot::repaint(bool immediate)
     }
 }
 
-void RenderRoot::close()
+void RenderCanvas::close()
 {
     setNeedsLayout(true);
     if (m_view) {
@@ -312,13 +298,14 @@ static QRect enclosingPositionedRect (RenderObject *n)
     return rect;
 }
 
-QRect RenderRoot::selectionRect() const
+QRect RenderCanvas::selectionRect() const
 {
     RenderObject *r = m_selectionStart;
     if (!r)
         return QRect();
     
     QRect selectionRect = enclosingPositionedRect(r);
+
     while (r && r != m_selectionEnd)
     {
         RenderObject* n;
@@ -341,15 +328,15 @@ QRect RenderRoot::selectionRect() const
     return selectionRect;
 }
 
-void RenderRoot::setSelection(RenderObject *s, int sp, RenderObject *e, int ep)
+void RenderCanvas::setSelection(RenderObject *s, int sp, RenderObject *e, int ep)
 {
     // Check we got valid renderobjects. www.msnbc.com and clicking around, to find the case where this happened.
     if ( !s || !e )
     {
-        kdWarning(6040) << "RenderRoot::setSelection() called with start=" << s << " end=" << e << endl;
+        kdWarning(6040) << "RenderCanvas::setSelection() called with start=" << s << " end=" << e << endl;
         return;
     }
-    //kdDebug( 6040 ) << "RenderRoot::setSelection(" << s << "," << sp << "," << e << "," << ep << ")" << endl;
+    //kdDebug( 6040 ) << "RenderCanvas::setSelection(" << s << "," << sp << "," << e << "," << ep << ")" << endl;
 
 #if APPLE_CHANGES
     // Cut out early if the selection hasn't changed.
@@ -529,9 +516,9 @@ void RenderRoot::setSelection(RenderObject *s, int sp, RenderObject *e, int ep)
 
 
 #if APPLE_CHANGES
-void RenderRoot::clearSelection(bool doRepaint)
+void RenderCanvas::clearSelection(bool doRepaint)
 #else
-void RenderRoot::clearSelection()
+void RenderCanvas::clearSelection()
 #endif
 {
     // update selection status of all objects between m_selectionStart and m_selectionEnd
@@ -577,13 +564,13 @@ void RenderRoot::clearSelection()
     m_selectionEndPos = -1;
 }
 
-void RenderRoot::selectionStartEnd(int& spos, int& epos)
+void RenderCanvas::selectionStartEnd(int& spos, int& epos)
 {
     spos = m_selectionStartPos;
     epos = m_selectionEndPos;
 }
 
-QRect RenderRoot::viewRect() const
+QRect RenderCanvas::viewRect() const
 {
     if (m_printingMode)
         return QRect(0,0, m_width, m_height);
@@ -595,7 +582,7 @@ QRect RenderRoot::viewRect() const
     else return QRect(0,0,m_rootWidth,m_rootHeight);
 }
 
-int RenderRoot::docHeight() const
+int RenderCanvas::docHeight() const
 {
     int h;
     if (m_printingMode || !m_view)
@@ -620,7 +607,7 @@ int RenderRoot::docHeight() const
     return h;
 }
 
-int RenderRoot::docWidth() const
+int RenderCanvas::docWidth() const
 {
     int w;
     if (m_printingMode || !m_view)
@@ -643,7 +630,7 @@ int RenderRoot::docWidth() const
 #if APPLE_CHANGES
 // The idea here is to take into account what object is moving the pagination point, and
 // thus choose the best place to chop it.
-void RenderRoot::setBestTruncatedAt(int y, RenderObject *forRenderer)
+void RenderCanvas::setBestTruncatedAt(int y, RenderObject *forRenderer)
 {
     // prefer the widest object who tries to move the pagination point
     int width = forRenderer->width();
diff --git a/WebCore/khtml/rendering/render_root.h b/WebCore/khtml/rendering/render_canvas.h
similarity index 90%
rename from WebCore/khtml/rendering/render_root.h
rename to WebCore/khtml/rendering/render_canvas.h
index fa9c0c0..ffb161a 100644
--- a/WebCore/khtml/rendering/render_root.h
+++ b/WebCore/khtml/rendering/render_canvas.h
@@ -19,8 +19,8 @@
  * Boston, MA 02111-1307, USA.
  *
  */
-#ifndef render_root_h
-#define render_root_h
+#ifndef render_canvas_h
+#define render_canvas_h
 
 #include "render_block.h"
 
@@ -29,15 +29,15 @@ class QScrollView;
 
 namespace khtml {
 
-class RenderRoot : public RenderBlock
+class RenderCanvas : public RenderBlock
 {
 public:
-    RenderRoot(DOM::NodeImpl* node, KHTMLView *view);
-    virtual ~RenderRoot();
+    RenderCanvas(DOM::NodeImpl* node, KHTMLView *view);
+    virtual ~RenderCanvas();
 
-    virtual const char *renderName() const { return "RenderRoot"; }
+    virtual const char *renderName() const { return "RenderCanvas"; }
 
-    virtual bool isRoot() const { return true; }
+    virtual bool isCanvas() const { return true; }
 
     virtual void layout();
     virtual void calcWidth();
@@ -57,8 +57,7 @@ public:
                        PaintAction paintAction);
     void paintObject(QPainter *p, int _x, int _y,
                      int _w, int _h, int _tx, int _ty, PaintAction paintAction);
-    virtual void paintBoxDecorations(QPainter *, int x, int y, int w, int h, int tx, int ty);
-
+    
     virtual void setSelection(RenderObject *s, int sp, RenderObject *e, int ep);
     virtual void clearSelection(bool doRepaint=true);
     virtual RenderObject *selectionStart() const { return m_selectionStart; }
diff --git a/WebCore/khtml/rendering/render_container.cpp b/WebCore/khtml/rendering/render_container.cpp
index 76135e5..3aa5012 100644
--- a/WebCore/khtml/rendering/render_container.cpp
+++ b/WebCore/khtml/rendering/render_container.cpp
@@ -29,7 +29,7 @@
 #include "render_table.h"
 #include "render_text.h"
 #include "render_image.h"
-#include "render_root.h"
+#include "render_canvas.h"
 
 #include <kdebug.h>
 #include <assert.h>
@@ -170,8 +170,8 @@ RenderObject* RenderContainer::removeChildNode(RenderObject* oldChild)
         RenderObject *root = oldChild;
         while (root && root->parent())
             root = root->parent();
-        if (root->isRoot()) {
-            static_cast<RenderRoot*>(root)->clearSelection();
+        if (root->isCanvas()) {
+            static_cast<RenderCanvas*>(root)->clearSelection();
         }
     }
 
diff --git a/WebCore/khtml/rendering/render_flow.cpp b/WebCore/khtml/rendering/render_flow.cpp
index 9778742..a983154 100644
--- a/WebCore/khtml/rendering/render_flow.cpp
+++ b/WebCore/khtml/rendering/render_flow.cpp
@@ -30,7 +30,7 @@
 #include "rendering/render_flow.h"
 #include "rendering/render_text.h"
 #include "rendering/render_table.h"
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 #include "xml/dom_nodeimpl.h"
 #include "xml/dom_docimpl.h"
 #include "html/html_formimpl.h"
diff --git a/WebCore/khtml/rendering/render_frames.cpp b/WebCore/khtml/rendering/render_frames.cpp
index 8a9188b..46656ae 100644
--- a/WebCore/khtml/rendering/render_frames.cpp
+++ b/WebCore/khtml/rendering/render_frames.cpp
@@ -25,7 +25,7 @@
 //#define DEBUG_LAYOUT
 
 #include "rendering/render_frames.h"
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 #include "html/html_baseimpl.h"
 #include "html/html_objectimpl.h"
 #include "html/htmltokenizer.h"
@@ -102,7 +102,7 @@ void RenderFrameSet::layout( )
     KHTMLAssert( minMaxKnown() );
 
     if ( !parent()->isFrameSet() ) {
-        KHTMLView* view = root()->view();
+        KHTMLView* view = canvas()->view();
         m_width = view->visibleWidth();
         m_height = view->visibleHeight();
     }
@@ -403,7 +403,7 @@ bool RenderFrameSet::userResize( MouseEventImpl *evt )
             m_oldpos = -1;
         }
         else
-            root()->view()->viewport()->setCursor(cursor);
+            canvas()->view()->viewport()->setCursor(cursor);
         
     }
     
@@ -439,13 +439,13 @@ bool RenderFrameSet::userResize( MouseEventImpl *evt )
     
     else if (m_resizing || evt->id() == EventImpl::MOUSEUP_EVENT) {
 #if APPLE_CHANGES
-        KHTMLView *v = root()->view();
+        KHTMLView *v = canvas()->view();
         QPainter paint;
         
         v->disableFlushDrawing();
         v->lockDrawingFocus();
 #else
-        QPainter paint( root()->view() );
+        QPainter paint( canvas()->view() );
 #endif
         paint.setPen( Qt::gray );
         paint.setBrush( Qt::gray );
diff --git a/WebCore/khtml/rendering/render_html.cpp b/WebCore/khtml/rendering/render_html.cpp
deleted file mode 100644
index 7737abc..0000000
--- a/WebCore/khtml/rendering/render_html.cpp
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * This file is part of the html renderer for KDE.
- *
- * Copyright (C) 2000 Lars Knoll (knoll at kde.org)
- * Copyright (C) 2003 Apple Computer, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- */
-#include "rendering/render_html.h"
-#include "rendering/render_root.h"
-#include "html/html_elementimpl.h"
-#include "xml/dom_docimpl.h"
-
-#include "khtmlview.h"
-
-#include <kdebug.h>
-
-using namespace khtml;
-
-RenderHtml::RenderHtml(DOM::HTMLElementImpl* node)
-    : RenderBlock(node)
-{
-    m_layer = new (node->getDocument()->renderArena()) RenderLayer(this);
-}
-
-RenderHtml::~RenderHtml()
-{
-}
-
-void RenderHtml::setStyle(RenderStyle *style)
-{
-    if (style->display() != NONE) {
-        style->setDisplay(BLOCK); // Don't allow RenderHTML to be inline.
-    }
-    RenderBlock::setStyle(style);
-    setShouldPaintBackgroundOrBorder(true);
-}
-
-void RenderHtml::paint(QPainter *p, int _x, int _y, int _w, int _h, int _tx, int _ty,
-                       PaintAction paintAction)
-{
-    _tx += m_x;
-    _ty += m_y;
-
-    //kdDebug(0) << "html:paint " << _tx << "/" << _ty << endl;
-    paintObject(p, _x, _y, _w, _h, _tx, _ty, paintAction);
-}
-
-void RenderHtml::paintBoxDecorations(QPainter *p,int, int _y,
-                                     int, int _h, int _tx, int _ty)
-{
-    //kdDebug( 6040 ) << renderName() << "::paintBoxDecorations()" << _tx << "/" << _ty << endl;
-
-    QColor c = style()->backgroundColor();
-    CachedImage *bg = style()->backgroundImage();
-
-    if (!c.isValid() && !bg && firstChild()) {
-        if (!c.isValid())
-            c = firstChild()->style()->backgroundColor();
-        if (!bg)
-            bg = firstChild()->style()->backgroundImage();
-    }
-    
-    if( !c.isValid() && root()->view())
-        c = root()->view()->palette().active().color(QColorGroup::Base);
-
-    int w = width();
-    int h = height();
-
-//    kdDebug(0) << "width = " << w <<endl;
-
-    int rw, rh;
-    if (root()->view())
-        rw=root()->view()->contentsWidth();
-    else
-        rw=root()->width();
-    rh=root()->height();
-    
-//    kdDebug(0) << "rw = " << rw <<endl;
-
-    int bx = _tx - marginLeft();
-    int by = _ty - marginTop();
-    int bw = QMAX(w + marginLeft() + marginRight() + borderLeft() + borderRight(), rw);
-    int bh = QMAX(h + marginTop() + marginBottom() + borderTop() + borderBottom(), rh);
-
-    // CSS2 14.2:
-    // " The background of the box generated by the root element covers the entire canvas."
-    // hence, paint the background even in the margin areas (unlike for every other element!)
-    // I just love these little inconsistencies .. :-( (Dirk)
-    int my = QMAX(by,_y);
-
-    paintBackground(p, c, bg, my, _h, bx, by, bw, bh);
-
-    if(style()->hasBorder())
-        paintBorder( p, _tx, _ty, w, h, style() );
-}
-
-void RenderHtml::repaint(bool immediate)
-{
-    RenderObject *cb = containingBlock();
-    if(cb != this)
-        cb->repaint(immediate);
-}
-
-void RenderHtml::layout()
-{
-    RenderBlock::layout();
-
-    //kdDebug(0) << renderName() << " height = " << m_height << endl;
-    RenderObject *r = root();
-    int lp = r ? r->lowestPosition() : lowestPosition();
-    
-    // margins of Html element can only be fixed, right?
-    int margins  = style()->marginTop().isFixed() ? style()->marginTop().value : 0;
-        margins += style()->marginBottom().isFixed() ? style()->marginBottom().value : 0;
-
-    if( m_height + margins < lp )
-	m_height = lp - margins;
-
-    layer()->setHeight(m_height);
-    layer()->setWidth(m_width);
-    
-    //kdDebug(0) << "docHeight = " << m_height << endl;
-}
-
-short RenderHtml::containingBlockWidth() const
-{
-    if (root()->view())
-        return root()->view()->visibleWidth();
-    else
-        return RenderBlock::containingBlockWidth();
-}
diff --git a/WebCore/khtml/rendering/render_html.h b/WebCore/khtml/rendering/render_html.h
deleted file mode 100644
index 29be999..0000000
--- a/WebCore/khtml/rendering/render_html.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * This file is part of the html renderer for KDE.
- *
- * Copyright (C) 2000 Lars Knoll (knoll at kde.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- */
-#ifndef RENDER_HTML
-#define RENDER_HTML
-
-#include "render_block.h"
-
-namespace DOM {
-
-    class HTMLElementImpl;
-}
-
-class QScrollView;
-
-namespace khtml {
-
-    class RenderHtml : public RenderBlock
-    {
-    public:
-	RenderHtml(DOM::HTMLElementImpl* node);
-	virtual ~RenderHtml();
-
-	virtual const char *renderName() const { return "RenderHtml"; }
-
-	virtual bool isHtml() const { return true; }
-	virtual void setStyle(RenderStyle *style);
-	virtual void paint(QPainter *, int x, int y, int w, int h, int tx, int ty, PaintAction paintAction);
-	virtual void repaint(bool immediate=false);
-	virtual void layout();
-    virtual short containingBlockWidth() const;
-    protected:
-	virtual void paintBoxDecorations(QPainter *p,int _x, int _y,
-					 int _w, int _h, int _tx, int _ty);
-    private:
-        QScrollView* m_view;
-    };
-};
-#endif
diff --git a/WebCore/khtml/rendering/render_image.cpp b/WebCore/khtml/rendering/render_image.cpp
index df447b0..a04c28b 100644
--- a/WebCore/khtml/rendering/render_image.cpp
+++ b/WebCore/khtml/rendering/render_image.cpp
@@ -25,7 +25,7 @@
 //#define DEBUG_LAYOUT
 
 #include "render_image.h"
-#include "render_root.h"
+#include "render_canvas.h"
 
 #include <qdrawutil.h>
 #include <qpainter.h>
@@ -199,7 +199,7 @@ void RenderImage::paintObject(QPainter *p, int /*_x*/, int /*_y*/, int /*_w*/, i
     int leftPad = paddingLeft();
     int topPad = paddingTop();
 
-    if (khtml::printpainter && !root()->printImages())
+    if (khtml::printpainter && !canvas()->printImages())
         return;
 
     //kdDebug( 6040 ) << "    contents (" << contentWidth << "/" << contentHeight << ") border=" << borderLeft() << " padding=" << paddingLeft() << endl;
diff --git a/WebCore/khtml/rendering/render_layer.cpp b/WebCore/khtml/rendering/render_layer.cpp
index 45626a1..c1c86d2 100644
--- a/WebCore/khtml/rendering/render_layer.cpp
+++ b/WebCore/khtml/rendering/render_layer.cpp
@@ -137,7 +137,7 @@ RenderLayer*
 RenderLayer::enclosingPositionedAncestor()
 {
     RenderLayer* curr = parent();
-    for ( ; curr && !curr->m_object->isRoot() && !curr->m_object->isHtml() &&
+    for ( ; curr && !curr->m_object->isCanvas() && !curr->m_object->isRoot() &&
          !curr->m_object->isPositioned() && !curr->m_object->isRelPositioned();
          curr = curr->parent());
          
@@ -257,7 +257,7 @@ RenderLayer::convertToLayerCoords(RenderLayer* ancestorLayer, int& x, int& y)
         
     if (m_object->style()->position() == FIXED) {
         // Add in the offset of the view.  We can obtain this by calling
-        // absolutePosition() on the RenderRoot.
+        // absolutePosition() on the RenderCanvas.
         int xOff, yOff;
         m_object->absolutePosition(xOff, yOff, true);
         x += xOff;
@@ -838,7 +838,7 @@ RenderLayer::constructZTree(QRect overflowClipRect, QRect posClipRect,
     // block elements, since inline non-replaced elements have a width of 0 (and
     // thus the layer does too).  We also exclude the root from this test, since
     // the HTML can be much taller than the root (because of scrolling).
-    if (renderer()->isRoot() || renderer()->isHtml() || renderer()->isBody() ||
+    if (renderer()->isCanvas() || renderer()->isRoot() || renderer()->isBody() ||
         renderer()->hasOverhangingFloats() || 
         (renderer()->isInline() && !renderer()->isReplaced()) ||
         (eventProcessing && damageRect.contains(xMousePos,yMousePos)) ||
diff --git a/WebCore/khtml/rendering/render_layer.h b/WebCore/khtml/rendering/render_layer.h
index 74b604d..fa2db5e 100644
--- a/WebCore/khtml/rendering/render_layer.h
+++ b/WebCore/khtml/rendering/render_layer.h
@@ -56,7 +56,7 @@ namespace khtml {
     class RenderStyle;
     class RenderTable;
     class CachedObject;
-    class RenderRoot;
+    class RenderCanvas;
     class RenderText;
     class RenderFrameSet;
     class RenderObject;
diff --git a/WebCore/khtml/rendering/render_line.cpp b/WebCore/khtml/rendering/render_line.cpp
index 553fbca..76791e4 100644
--- a/WebCore/khtml/rendering/render_line.cpp
+++ b/WebCore/khtml/rendering/render_line.cpp
@@ -28,7 +28,6 @@
 #include "rendering/render_flow.h"
 #include "rendering/render_text.h"
 #include "rendering/render_table.h"
-#include "rendering/render_root.h"
 #include "xml/dom_nodeimpl.h"
 #include "xml/dom_docimpl.h"
 #include "html/html_formimpl.h"
diff --git a/WebCore/khtml/rendering/render_list.cpp b/WebCore/khtml/rendering/render_list.cpp
index 2d874fa..8ba6d8d 100644
--- a/WebCore/khtml/rendering/render_list.cpp
+++ b/WebCore/khtml/rendering/render_list.cpp
@@ -23,7 +23,7 @@
  */
 
 #include "render_list.h"
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 
 #include "xml/dom_docimpl.h"
 #include "misc/htmltags.h"
@@ -392,7 +392,7 @@ void RenderListMarker::paintObject(QPainter *p, int, int _y,
         }
         if (_ty + m_height + paddingBottom() + borderBottom() >= _y+_h)
         {
-            RenderRoot *rootObj = root();
+            RenderCanvas *rootObj = canvas();
             if (_ty < rootObj->truncatedAt())
 #if APPLE_CHANGES
                 rootObj->setBestTruncatedAt(_ty, this);
diff --git a/WebCore/khtml/rendering/render_object.cpp b/WebCore/khtml/rendering/render_object.cpp
index b17c01d..5682f2e 100644
--- a/WebCore/khtml/rendering/render_object.cpp
+++ b/WebCore/khtml/rendering/render_object.cpp
@@ -26,7 +26,7 @@
 #include "rendering/render_object.h"
 #include "rendering/render_table.h"
 #include "rendering/render_list.h"
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 #include "xml/dom_elementimpl.h"
 #include "xml/dom_docimpl.h"
 #include "misc/htmlhashes.h"
@@ -424,17 +424,17 @@ RenderBlock* RenderObject::containingBlock() const
 {
     if(isTableCell())
         return static_cast<const RenderTableCell *>(this)->table();
-    if (isRoot())
+    if (isCanvas())
         return (RenderBlock*)this;
     
     RenderObject *o = parent();
     if (m_style->position() == FIXED) {
-        while ( o && !o->isRoot() )
+        while ( o && !o->isCanvas() )
             o = o->parent();
     }
     else if (m_style->position() == ABSOLUTE) {
         while (o && (o->style()->position() == STATIC || (o->isInline() && !o->isReplaced()))
-               && !o->isHtml() && !o->isRoot())
+               && !o->isRoot() && !o->isCanvas())
             o = o->parent();
     } else {
         while (o && ((o->isInline() && !o->isReplaced()) || o->isTableRow() || o->isTableSection()
@@ -1090,13 +1090,13 @@ int RenderObject::paddingRight() const
     return w;
 }
 
-RenderRoot* RenderObject::root() const
+RenderCanvas* RenderObject::canvas() const
 {
     RenderObject* o = const_cast<RenderObject*>( this );
     while ( o->parent() ) o = o->parent();
 
-    KHTMLAssert( o->isRoot() );
-    return static_cast<RenderRoot*>( o );
+    KHTMLAssert( o->isCanvas() );
+    return static_cast<RenderCanvas*>( o );
 }
 
 RenderObject *RenderObject::container() const
@@ -1105,8 +1105,8 @@ RenderObject *RenderObject::container() const
     RenderObject *o = 0;
     if( pos == FIXED ) {
         // container() can be called on an object that is not in the
-        // tree yet.  We don't call root() since it will assert if it
-        // can't get back to the root.  Instead we just walk as high up
+        // tree yet.  We don't call canvas() since it will assert if it
+        // can't get back to the canvas.  Instead we just walk as high up
         // as we can.  If we're in the tree, we'll get the root.  If we
         // aren't we'll get the root of our little subtree (most likely
         // we'll just return 0).
@@ -1118,7 +1118,7 @@ RenderObject *RenderObject::container() const
         // we may not have one if we're part of an uninstalled subtree.  We'll
         // climb as high as we can though.
         o = parent();
-        while (o && o->style()->position() == STATIC && !o->isHtml() && !o->isRoot())
+        while (o && o->style()->position() == STATIC && !o->isRoot() && !o->isCanvas())
             o = o->parent();
     }
     else
@@ -1141,7 +1141,7 @@ void RenderObject::removeFromObjectLists()
     if (isFloating()) {
         RenderBlock* outermostBlock = containingBlock();
         for (RenderBlock* p = outermostBlock;
-             p && !p->isRoot() && p->containsFloat(this) && !p->isFloatingOrPositioned();
+             p && !p->isCanvas() && p->containsFloat(this) && !p->isFloatingOrPositioned();
              outermostBlock = p, p = p->containingBlock());
         if (outermostBlock)
             outermostBlock->markAllDescendantsWithFloatsForLayout(this);
@@ -1175,7 +1175,7 @@ void RenderObject::detach(RenderArena* renderArena)
     // If we're an overflow:hidden object that currently needs layout, we need
     // to make sure the view isn't holding on to us.
     if (needsLayout() && style()->hidesOverflow()) {
-        RenderRoot* r = root();
+        RenderCanvas* r = canvas();
         if (r && r->view()->layoutObject() == this)
             r->view()->unscheduleRelayout();
     }
@@ -1291,7 +1291,7 @@ bool RenderObject::nodeAtPoint(NodeInfo& info, int _x, int _y, int _tx, int _ty,
     int ty = _ty + yPos();
 
     QRect boundsRect(tx, ty, width(), height());
-    inside |= (style()->visibility() != HIDDEN && boundsRect.contains(_x, _y)) || isBody() || isHtml();
+    inside |= (style()->visibility() != HIDDEN && boundsRect.contains(_x, _y)) || isBody() || isRoot();
     bool inOverflowRect = inside;
     if (!inOverflowRect) {
         QRect overflowRect(tx, ty, overflowWidth(false), overflowHeight(false));
@@ -1301,7 +1301,7 @@ bool RenderObject::nodeAtPoint(NodeInfo& info, int _x, int _y, int _tx, int _ty,
     // ### table should have its own, more performant method
     if ((!isRenderBlock() ||
          !static_cast<RenderBlock*>(this)->isPointInScrollbar(_x, _y, _tx, _ty)) &&
-        (overhangingContents() || inOverflowRect || isInline() || isRoot() ||
+        (overhangingContents() || inOverflowRect || isInline() || isCanvas() ||
          isTableRow() || isTableSection() || inside || mouseInside() ||
          (childrenInline() && firstChild() && firstChild()->isCompact()))) {
         int stx = _tx + xPos();
@@ -1498,8 +1498,8 @@ void RenderObject::recalcMinMaxWidths()
 
 void RenderObject::scheduleRelayout(RenderObject* clippedObj)
 {
-    if (!isRoot()) return;
-    KHTMLView *view = static_cast<RenderRoot *>(this)->view();
+    if (!isCanvas()) return;
+    KHTMLView *view = static_cast<RenderCanvas *>(this)->view();
     if ( view )
         view->scheduleRelayout(clippedObj);
 }
diff --git a/WebCore/khtml/rendering/render_object.h b/WebCore/khtml/rendering/render_object.h
index 73c15b6..52eebd1 100644
--- a/WebCore/khtml/rendering/render_object.h
+++ b/WebCore/khtml/rendering/render_object.h
@@ -84,7 +84,7 @@ namespace khtml {
     class RenderStyle;
     class RenderTable;
     class CachedObject;
-    class RenderRoot;
+    class RenderCanvas;
     class RenderText;
     class RenderFrameSet;
     class RenderLayer;
@@ -183,9 +183,9 @@ public:
     
     virtual bool isListItem() const { return false; }
     virtual bool isListMarker() const { return false; }
-    virtual bool isRoot() const { return false; }
+    virtual bool isCanvas() const { return false; }
+    bool isRoot() const { return parent() && parent()->isCanvas(); }
     virtual bool isBR() const { return false; }
-    virtual bool isHtml() const { return false; }
     virtual bool isTableCell() const { return false; }
     virtual bool isTableRow() const { return false; }
     virtual bool isTableSection() const { return false; }
@@ -219,7 +219,7 @@ public:
     bool isSelectionBorder() const { return m_isSelectionBorder; }
     bool recalcMinMax() const { return m_recalcMinMax; }
 
-    RenderRoot* root() const;
+    RenderCanvas* canvas() const;
     // don't even think about making this method virtual!
     DOM::NodeImpl* element() const { return m_node; }
 
@@ -632,7 +632,7 @@ private:
     // note: do not add unnecessary bitflags, we have 32 bit already!
     friend class RenderListItem;
     friend class RenderContainer;
-    friend class RenderRoot;
+    friend class RenderCanvas;
 };
 
 
diff --git a/WebCore/khtml/rendering/render_replaced.cpp b/WebCore/khtml/rendering/render_replaced.cpp
index 5cb81df..443a5f2 100644
--- a/WebCore/khtml/rendering/render_replaced.cpp
+++ b/WebCore/khtml/rendering/render_replaced.cpp
@@ -22,7 +22,7 @@
  *
  */
 #include "render_replaced.h"
-#include "render_root.h"
+#include "render_canvas.h"
 
 #include "render_arena.h"
 
diff --git a/WebCore/khtml/rendering/render_table.cpp b/WebCore/khtml/rendering/render_table.cpp
index 68a18b3..41e4462 100644
--- a/WebCore/khtml/rendering/render_table.cpp
+++ b/WebCore/khtml/rendering/render_table.cpp
@@ -284,7 +284,7 @@ void RenderTable::layout()
     {
         RenderObject* c = containingBlock();
         for ( ; 
-	     !c->isRoot() && !c->isBody() && !c->isTableCell() && !c->isPositioned() && !c->isFloating(); 
+	     !c->isCanvas() && !c->isBody() && !c->isTableCell() && !c->isPositioned() && !c->isFloating(); 
              c = c->containingBlock()) {
             Length ch = c->style()->height();
             if (ch.isFixed()) {
diff --git a/WebCore/khtml/rendering/render_text.cpp b/WebCore/khtml/rendering/render_text.cpp
index cb70f64..151deae 100644
--- a/WebCore/khtml/rendering/render_text.cpp
+++ b/WebCore/khtml/rendering/render_text.cpp
@@ -24,9 +24,8 @@
 //#define DEBUG_LAYOUT
 //#define BIDI_DEBUG
 
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 #include "rendering/render_text.h"
-#include "rendering/render_root.h"
 #include "rendering/break_lines.h"
 #include "xml/dom_nodeimpl.h"
 #include "xml/dom_docimpl.h"
@@ -651,12 +650,12 @@ void RenderText::paintObject(QPainter *p, int /*x*/, int y, int /*w*/, int h,
 
                 if (ty+lh+s->m_y > y+h)
                 {
-                   RenderRoot *rootObj = root();
-                   if (ty+s->m_y < rootObj->truncatedAt())
+                   RenderCanvas* canvasObj = canvas();
+                   if (ty+s->m_y < canvasObj->truncatedAt())
 #if APPLE_CHANGES
-                       rootObj->setBestTruncatedAt(ty+s->m_y, this);
+                       canvasObj->setBestTruncatedAt(ty+s->m_y, this);
 #else
-                       rootObj->setTruncatedAt(ty+s->m_y);
+                       canvasObj->setTruncatedAt(ty+s->m_y);
 #endif
                    // Let's stop here.
                    break;
diff --git a/WebCore/khtml/rendering/table_layout.cpp b/WebCore/khtml/rendering/table_layout.cpp
index 47d22a1..50fdef5 100644
--- a/WebCore/khtml/rendering/table_layout.cpp
+++ b/WebCore/khtml/rendering/table_layout.cpp
@@ -543,7 +543,7 @@ static bool shouldScaleColumns(RenderTable* table)
         Length tw = table->style()->width();
         if ((tw.isVariable() || tw.isPercent()) && !table->isPositioned()) {
             RenderBlock* cb = table->containingBlock();
-            while (cb && !cb->isRoot() && !cb->isTableCell() &&
+            while (cb && !cb->isCanvas() && !cb->isTableCell() &&
                 cb->style()->width().isVariable() && !cb->isPositioned())
                 cb = cb->containingBlock();
 
diff --git a/WebCore/khtml/xml/dom_docimpl.cpp b/WebCore/khtml/xml/dom_docimpl.cpp
index 3f689ea..385dca3 100644
--- a/WebCore/khtml/xml/dom_docimpl.cpp
+++ b/WebCore/khtml/xml/dom_docimpl.cpp
@@ -43,7 +43,7 @@
 #include <kdebug.h>
 #include <kstaticdeleter.h>
 
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 #include "rendering/render_replaced.h"
 #include "rendering/render_image.h"
 #include "render_arena.h"
@@ -1012,7 +1012,7 @@ void DocumentImpl::attach()
         m_renderArena = new RenderArena();
     
     // Create the rendering tree
-    m_render = new (m_renderArena) RenderRoot(this, m_view);
+    m_render = new (m_renderArena) RenderCanvas(this, m_view);
     m_styleSelector->computeFontSizes(paintDeviceMetrics(), m_view ? m_view->part()->zoomFactor() : 100);
     recalcStyle( Force );
 
@@ -1076,13 +1076,13 @@ void DocumentImpl::setSelection(NodeImpl* s, int sp, NodeImpl* e, int ep)
     setFocusNode(0);
 #endif
     if ( m_render )
-        static_cast<RenderRoot*>(m_render)->setSelection(s->renderer(),sp,e->renderer(),ep);
+        static_cast<RenderCanvas*>(m_render)->setSelection(s->renderer(),sp,e->renderer(),ep);
 }
 
 void DocumentImpl::clearSelection()
 {
     if ( m_render )
-        static_cast<RenderRoot*>(m_render)->clearSelection();
+        static_cast<RenderCanvas*>(m_render)->clearSelection();
 }
 
 Tokenizer *DocumentImpl::createTokenizer()
@@ -1545,7 +1545,7 @@ void DocumentImpl::processHttpEquiv(const DOMString &equiv, const DOMString &con
 bool DocumentImpl::prepareMouseEvent( bool readonly, int _x, int _y, MouseEvent *ev )
 {
     if ( m_render ) {
-        assert(m_render->isRoot());
+        assert(m_render->isCanvas());
         RenderObject::NodeInfo renderInfo(readonly, ev->type == MousePress);
         bool isInside = m_render->layer()->nodeAtPoint(renderInfo, _x, _y);
         ev->innerNode = renderInfo.innerNode();
diff --git a/WebCore/khtml/xml/dom_elementimpl.cpp b/WebCore/khtml/xml/dom_elementimpl.cpp
index 1fb4199..da237ec 100644
--- a/WebCore/khtml/xml/dom_elementimpl.cpp
+++ b/WebCore/khtml/xml/dom_elementimpl.cpp
@@ -33,7 +33,7 @@
 #include "html/dtd.h"
 #include "html/htmlparser.h"
 
-#include "rendering/render_root.h"
+#include "rendering/render_canvas.h"
 #include "misc/htmlhashes.h"
 #include "css/css_valueimpl.h"
 #include "css/css_stylesheetimpl.h"
@@ -314,6 +314,14 @@ RenderStyle *ElementImpl::styleForRenderer(RenderObject *parentRenderer)
 
 RenderObject *ElementImpl::createRenderer(RenderArena *arena, RenderStyle *style)
 {
+    if (getDocument()->documentElement() == this) {
+        // FIXME: We're a root object. For now, force a display of block.
+        if (style->display() != NONE)
+            style->setDisplay(BLOCK);
+        RenderBlock* result = new (arena) RenderBlock(this);
+        if (result) result->setStyle(style);
+        return result;
+    }
     return RenderObject::createObject(this, style);
 }
 
diff --git a/WebCore/khtml/xml/dom_nodeimpl.cpp b/WebCore/khtml/xml/dom_nodeimpl.cpp
index c2ef3ca..3a7e671 100644
--- a/WebCore/khtml/xml/dom_nodeimpl.cpp
+++ b/WebCore/khtml/xml/dom_nodeimpl.cpp
@@ -1043,7 +1043,7 @@ RenderStyle *NodeImpl::styleForRenderer(RenderObject *parent)
 
 bool NodeImpl::rendererIsNeeded(RenderStyle *style)
 {
-    return style->display() != NONE;
+    return (getDocument()->documentElement() == this) || (style->display() != NONE);
 }
 
 RenderObject *NodeImpl::createRenderer(RenderArena *arena, RenderStyle *style)
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index e3f59a6..4d9dead 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -27,7 +27,7 @@
 
 #import "htmltokenizer.h"
 #import "html_documentimpl.h"
-#import "render_root.h"
+#import "render_canvas.h"
 #import "render_frames.h"
 #import "render_table.h"
 #import "render_text.h"
@@ -69,7 +69,7 @@ using khtml::MousePressEvent;
 using khtml::MouseReleaseEvent;
 using khtml::RenderObject;
 using khtml::RenderPart;
-using khtml::RenderRoot;
+using khtml::RenderCanvas;
 using khtml::RenderStyle;
 using khtml::RenderText;
 using khtml::RenderWidget;
@@ -742,7 +742,7 @@ void KWQKHTMLPart::paintSelectionOnly(QPainter *p, const QRect &rect)
 
 void KWQKHTMLPart::adjustPageHeight(float *newBottom, float oldTop, float oldBottom, float bottomLimit)
 {
-    RenderRoot *root = static_cast<khtml::RenderRoot *>(xmlDocImpl()->renderer());
+    RenderCanvas *root = static_cast<khtml::RenderCanvas *>(xmlDocImpl()->renderer());
     if (root) {
         // Use a printer device, with painting disabled for the pagination phase
         QPainter painter(true);
@@ -1145,7 +1145,7 @@ void KWQKHTMLPart::forceLayoutForPageWidth(float pageWidth)
 {
     // Dumping externalRepresentation(_part->renderer()).ascii() is a good trick to see
     // the state of things before and after the layout
-    RenderRoot *root = static_cast<khtml::RenderRoot *>(xmlDocImpl()->renderer());
+    RenderCanvas *root = static_cast<khtml::RenderCanvas *>(xmlDocImpl()->renderer());
     if (root) {
         // This magic is basically copied from khtmlview::print
         root->setWidth((int)ceil(pageWidth));
@@ -1881,7 +1881,7 @@ QRect KWQKHTMLPart::selectionRect() const
         return QRect();
     }
 
-    RenderRoot *root = static_cast<RenderRoot *>(xmlDocImpl()->renderer());
+    RenderCanvas *root = static_cast<RenderCanvas *>(xmlDocImpl()->renderer());
     if (!root) {
         return QRect();
 
diff --git a/WebCore/kwq/WebCoreBridge.mm b/WebCore/kwq/WebCoreBridge.mm
index 530de20..3c49e64 100644
--- a/WebCore/kwq/WebCoreBridge.mm
+++ b/WebCore/kwq/WebCoreBridge.mm
@@ -39,7 +39,7 @@
 #import "render_frames.h"
 #import "render_image.h"
 #import "render_object.h"
-#import "render_root.h"
+#import "render_canvas.h"
 #import "render_style.h"
 #import "render_replaced.h"
 using khtml::RenderWidget;
@@ -73,7 +73,7 @@ using khtml::RenderImage;
 using khtml::RenderObject;
 using khtml::RenderPart;
 using khtml::RenderStyle;
-using khtml::RenderRoot;
+using khtml::RenderCanvas;
 
 using KJS::SavedProperties;
 
@@ -338,7 +338,7 @@ static BOOL nowPrinting(WebCoreBridge *self)
 - (void)_setupRootForPrinting:(BOOL)onOrOff
 {
     if (nowPrinting(self)) {
-        RenderRoot *root = static_cast<khtml::RenderRoot *>(_part->xmlDocImpl()->renderer());
+        RenderCanvas *root = static_cast<khtml::RenderCanvas *>(_part->xmlDocImpl()->renderer());
         if (root) {
             root->setPrintingMode(onOrOff);
         }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list