[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