[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kfm-devel
Subject:    Complete patch, change frameset.rows from js (please apply)
From:       <koos.vriezen () xs4all ! nl>
Date:       2001-12-17 21:07:36
[Download RAW message or body]

Hi,

Second and complete patch to make the following work:
index.html:
 <HTML><HEAD> </HEAD>
  <FRAMESET ROWS="200,*" ID='OUTERFRAME'>
   <FRAME SRC="topframe.html">
   <FRAME SRC="http://www.kde.org">
  </FRAMESET>
 </HTML>

topframe.html
 <HTML>
  <HEAD>
   <SCRIPT>
    function resizeFrame() {
        var fs = top.document.getElementById("OUTERFRAME");
        fs.rows = "300,*";
    }
   </SCRIPT>
  </HEAD>
  <BODY onClick='resizeFrame()'></BODY>
 </HTML>


--- html/html_baseimpl.cpp.orig Sun Dec 16 19:15:35 2001
+++ html/html_baseimpl.cpp      Mon Dec 17 21:37:25 2001
@@ -385,12 +385,18 @@
     switch(attr->attrId)
     {
     case ATTR_ROWS:
+       delete m_rows;
         m_rows = attr->val()->toLengthList();
         m_totalRows = m_rows->count();
+       if (m_render)
+           m_render->layout();
         break;
     case ATTR_COLS:
+       delete m_cols;
         m_cols = attr->val()->toLengthList();
         m_totalCols = m_cols->count();
+       if (m_render)
+           m_render->layout();
         break;
     case ATTR_FRAMEBORDER:
         // false or "no" or "0"..
@@ -446,7 +452,7 @@
     if ( !r )
       return;

-    khtml::RenderFrameSet *renderFrameSet = new khtml::RenderFrameSet(
this, w, m_rows, m_cols );
+    khtml::RenderFrameSet *renderFrameSet = new khtml::RenderFrameSet(
this, w );
     m_render = renderFrameSet;
     m_render->setStyle(m_style);
     r->addChild( m_render, nextRenderer() );
--- rendering/render_frames.cpp.orig    Mon Dec 17 14:03:09 2001
+++ rendering/render_frames.cpp Mon Dec 17 21:42:10 2001
@@ -52,8 +52,7 @@
 using namespace khtml;
 using namespace DOM;

-RenderFrameSet::RenderFrameSet( HTMLFrameSetElementImpl *frameSet,
KHTMLView *view,
-                                QPtrList<khtml::Length> *rows,
QPtrList<khtml::Length> *cols )
+RenderFrameSet::RenderFrameSet( HTMLFrameSetElementImpl *frameSet,
KHTMLView *view )
     : RenderBox()
 {
   // init RenderObject attributes
@@ -61,19 +60,6 @@

   m_frameset = frameSet;

-  m_rows = rows;
-  m_cols = cols;
-
-  // another one for bad html
-  // handle <frameset cols="*" rows="100, ...">
-  if ( m_rows && m_cols ) {
-      // lets see if one of them is relative
-      if ( m_rows->count() == 1 && m_rows->at( 0 )->isRelative() )
-            m_rows = 0;
-      if ( m_cols->count() == 1 && m_cols->at( 0 )->isRelative() )
-          m_cols = 0;
-  }
-
   m_rowHeight = 0;
   m_colWidth = 0;

@@ -109,6 +95,17 @@
         m_width = m_view->visibleWidth();
         m_height = m_view->visibleHeight();
     }
+    QList<khtml::Length> *m_rows = m_frameset->m_rows;
+    QList<khtml::Length> *m_cols = m_frameset->m_cols;
+    // another one for bad html
+    // handle <frameset cols="*" rows="100, ...">
+    if ( m_rows && m_cols ) {
+       // lets see if one of them is relative
+       if ( m_rows->count() == 1 && m_rows->at( 0 )->isRelative() )
+           m_rows = 0;
+       if ( m_cols->count() == 1 && m_cols->at( 0 )->isRelative() )
+           m_cols = 0;
+    }

 #ifdef DEBUG_LAYOUT
     kdDebug( 6040 ) << renderName() << "(FrameSet)::layout( ) width=" <<
width() << ", height=" << height() << endl;
--- rendering/render_frames.h.orig      Mon Dec 17 21:38:54 2001
+++ rendering/render_frames.h   Mon Dec 17 21:40:11 2001
@@ -45,12 +45,7 @@
 {
   friend class DOM::HTMLFrameSetElementImpl;
 public:
-  RenderFrameSet( DOM::HTMLFrameSetElementImpl *frameSet, KHTMLView
*view,
-#if QT_VERSION < 300
-                  QList<khtml::Length> *rows, QList<khtml::Length> *cols
);
-#else
-                  QPtrList<khtml::Length> *rows, QPtrList<khtml::Length>
*cols
);
-#endif
+  RenderFrameSet( DOM::HTMLFrameSetElementImpl *frameSet, KHTMLView *view );

   virtual ~RenderFrameSet();

@@ -72,13 +67,6 @@

 private:
   DOM::HTMLFrameSetElementImpl *m_frameset;
-#if QT_VERSION < 300
-  QList<khtml::Length> *m_rows;
-  QList<khtml::Length> *m_cols;
-#else
-  QPtrList<khtml::Length> *m_rows;
-  QPtrList<khtml::Length> *m_cols;
-#endif
   KHTMLView *m_view;
   int *m_rowHeight;
   int *m_colWidth;


This patch removes m_rows and m_cols from RenderFrameSet. A small
initialization check done by the RenderFrameSet constructor is moved to
RenderFrameSet::layout.

What remains:
Dragging a frame border, doesn't update HTMLFrameSetElementImpl::m_rows.
Should that be fixed?

Regards,

Koos Vriezen




[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic