[webkit-changes] cvs commit: WebCore/khtml/rendering
render_frames.cpp
Timothy
thatcher at opensource.apple.com
Tue Nov 1 10:36:30 PST 2005
thatcher 05/11/01 10:36:29
Modified: . ChangeLog
khtml/html html_objectimpl.cpp html_objectimpl.h
htmlfactory.cpp
khtml/rendering render_frames.cpp
Log:
Reviewed by Dave Hyatt.
Commited by Tim Hatcher.
Fixes http://bugzilla.opendarwin.org/show_bug.cgi?id=5256
Relayout during load causes duplicate plugin part.
This was a problem with <OBJECT>s that contain an <EMBED>, if
layout happened in the middle of the OBJECT but before the EMBED.
No test case added, requires manual testing.
* khtml/html/html_objectimpl.cpp:
(DOM::HTMLObjectElementImpl::HTMLObjectElementImpl):
(DOM::HTMLObjectElementImpl::closeRenderer):
(DOM::HTMLObjectElementImpl::setComplete):
* khtml/html/html_objectimpl.h:
(DOM::HTMLObjectElementImpl::isComplete):
* khtml/html/htmlfactory.cpp:
(DOM::objectConstructor):
* khtml/rendering/render_frames.cpp:
(RenderPartObject::updateWidget):
Revision Changes Path
1.321 +24 -0 WebCore/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/root/WebCore/ChangeLog,v
retrieving revision 1.320
retrieving revision 1.321
diff -u -r1.320 -r1.321
--- ChangeLog 1 Nov 2005 17:33:36 -0000 1.320
+++ ChangeLog 1 Nov 2005 18:36:24 -0000 1.321
@@ -1,3 +1,27 @@
+2005-11-01 Mitz Pettel <opendarwin.org at mitzpettel.com>
+
+ Reviewed by Dave Hyatt.
+ Commited by Tim Hatcher.
+
+ Fixes http://bugzilla.opendarwin.org/show_bug.cgi?id=5256
+ Relayout during load causes duplicate plugin part.
+
+ This was a problem with <OBJECT>s that contain an <EMBED>, if
+ layout happened in the middle of the OBJECT but before the EMBED.
+
+ No test case added, requires manual testing.
+
+ * khtml/html/html_objectimpl.cpp:
+ (DOM::HTMLObjectElementImpl::HTMLObjectElementImpl):
+ (DOM::HTMLObjectElementImpl::closeRenderer):
+ (DOM::HTMLObjectElementImpl::setComplete):
+ * khtml/html/html_objectimpl.h:
+ (DOM::HTMLObjectElementImpl::isComplete):
+ * khtml/html/htmlfactory.cpp:
+ (DOM::objectConstructor):
+ * khtml/rendering/render_frames.cpp:
+ (RenderPartObject::updateWidget):
+
2005-11-01 Alexey Proskuryakov <ap at nypop.com>
Reviewed by Dave Hyatt.
1.87 +20 -0 WebCore/khtml/html/html_objectimpl.cpp
Index: html_objectimpl.cpp
===================================================================
RCS file: /cvs/root/WebCore/khtml/html/html_objectimpl.cpp,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -r1.86 -r1.87
--- html_objectimpl.cpp 27 Oct 2005 23:15:01 -0000 1.86
+++ html_objectimpl.cpp 1 Nov 2005 18:36:28 -0000 1.87
@@ -562,6 +562,7 @@
{
needWidgetUpdate = false;
m_useFallbackContent = false;
+ m_complete = false;
m_docNamedItem = true;
}
@@ -764,6 +765,25 @@
}
}
+void HTMLObjectElementImpl::closeRenderer()
+{
+ // The parser just reached </object>.
+ setComplete(true);
+
+ HTMLElementImpl::closeRenderer();
+}
+
+void HTMLObjectElementImpl::setComplete(bool complete)
+{
+ if (complete != m_complete) {
+ m_complete = complete;
+ if (complete && inDocument() && !m_useFallbackContent) {
+ needWidgetUpdate = true;
+ setChanged();
+ }
+ }
+}
+
void HTMLObjectElementImpl::detach()
{
if (attached() && m_render && !m_useFallbackContent) {
1.38 +5 -0 WebCore/khtml/html/html_objectimpl.h
Index: html_objectimpl.h
===================================================================
RCS file: /cvs/root/WebCore/khtml/html/html_objectimpl.h,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- html_objectimpl.h 24 Oct 2005 21:42:14 -0000 1.37
+++ html_objectimpl.h 1 Nov 2005 18:36:28 -0000 1.38
@@ -170,6 +170,7 @@
virtual void attach();
virtual bool rendererIsNeeded(khtml::RenderStyle *);
virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *);
+ virtual void closeRenderer();
virtual void detach();
virtual void insertedIntoDocument();
virtual void removedFromDocument();
@@ -236,6 +237,9 @@
DOMString width() const;
void setWidth(const DOMString &);
+ bool isComplete() const { return m_complete; }
+ void setComplete(bool complete);
+
bool isDocNamedItem() const { return m_docNamedItem; }
#if APPLE_CHANGES
KJS::Bindings::Instance *getObjectInstance() const;
@@ -255,6 +259,7 @@
#if APPLE_CHANGES
mutable KJS::Bindings::Instance *objectInstance;
#endif
+ bool m_complete;
bool m_docNamedItem;
};
1.9 +3 -1 WebCore/khtml/html/htmlfactory.cpp
Index: htmlfactory.cpp
===================================================================
RCS file: /cvs/root/WebCore/khtml/html/htmlfactory.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- htmlfactory.cpp 3 Oct 2005 21:12:30 -0000 1.8
+++ htmlfactory.cpp 1 Nov 2005 18:36:28 -0000 1.9
@@ -269,7 +269,9 @@
HTMLElementImpl* objectConstructor(const AtomicString& tagName, DocumentPtr* docPtr, HTMLFormElementImpl* form, bool createdByParser)
{
- return new HTMLObjectElementImpl(docPtr);
+ HTMLObjectElementImpl * object = new HTMLObjectElementImpl(docPtr);
+ object->setComplete(!createdByParser);
+ return object;
}
HTMLElementImpl* paramConstructor(const AtomicString& tagName, DocumentPtr* docPtr, HTMLFormElementImpl* form, bool createdByParser)
1.83 +2 -0 WebCore/khtml/rendering/render_frames.cpp
Index: render_frames.cpp
===================================================================
RCS file: /cvs/root/WebCore/khtml/rendering/render_frames.cpp,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -r1.82 -r1.83
--- render_frames.cpp 25 Oct 2005 03:45:31 -0000 1.82
+++ render_frames.cpp 1 Nov 2005 18:36:29 -0000 1.83
@@ -781,6 +781,8 @@
HTMLObjectElementImpl *o = static_cast<HTMLObjectElementImpl *>(element());
+ if (!o->isComplete())
+ return;
// Check for a child EMBED tag.
HTMLEmbedElementImpl *embed = 0;
for (NodeImpl *child = o->firstChild(); child; ) {
More information about the webkit-changes
mailing list