Hi, Second and complete patch to make the following work: index.html: topframe.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 *rows, QPtrList *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 - 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 *m_rows = m_frameset->m_rows; + QList *m_cols = m_frameset->m_cols; + // another one for bad html + // handle + 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 *rows, QList *cols ); -#else - QPtrList *rows, QPtrList *cols ); -#endif + RenderFrameSet( DOM::HTMLFrameSetElementImpl *frameSet, KHTMLView *view ); virtual ~RenderFrameSet(); @@ -72,13 +67,6 @@ private: DOM::HTMLFrameSetElementImpl *m_frameset; -#if QT_VERSION < 300 - QList *m_rows; - QList *m_cols; -#else - QPtrList *m_rows; - QPtrList *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