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

List:       kde-commits
Subject:    branches/work/khtml-paged
From:       Allan Sandfeld Jensen <kde () carewolf ! com>
Date:       2005-08-31 20:17:22
Message-ID: 1125519442.905458.14498.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 455549 by carewolf:

Do all page-breaks at once in layoutBlockChildren as well.
Fix renderTable hack.


 M  +1 -3      khtml_part.cpp  
 M  +1 -2      khtmlview.cpp  
 M  +11 -24    rendering/render_block.cpp  
 M  +0 -5      rendering/render_box.cpp  
 M  +0 -1      rendering/render_box.h  
 M  +1 -3      rendering/render_object.h  
 M  +2 -8      rendering/render_table.cpp  


--- branches/work/khtml-paged/khtml_part.cpp #455548:455549
@@ -1322,15 +1322,13 @@
 {
 #ifndef NDEBUG
   if ( d->m_doc ) {
-  d->m_doc->renderer()->printTree();
-#if 0
+//   d->m_doc->renderer()->printTree();
     // dump out the contents of the rendering & DOM trees
     QString dumps;
     QTextStream outputStream(dumps,IO_WriteOnly);
     d->m_doc->renderer()->layer()->dump( outputStream );
 //     kdDebug() << "dump output:" << "\n" + dumps << endl;
     qDebug(("dump output:\n" + dumps).latin1());
-#endif
   }
 #endif
 }
--- branches/work/khtml-paged/khtmlview.cpp #455548:455549
@@ -2751,7 +2751,6 @@
 
         m_part->xmlDocImpl()->styleSelector()->computeFontSizes(&metrics, 100);
         m_part->xmlDocImpl()->updateStyleSelector();
-        m_part->xmlDocImpl()->recalcStyle(NodeImpl::Force);
         root->setPrintImages( printer->option("app-khtml-printimages") == "true");
         root->makePageBreakAvoidBlocks();
 //         m_part->slotDebugRenderTree();
@@ -2865,7 +2864,7 @@
             root->layoutIfNeeded();
             m_part->slotDebugRenderTree();
 
-            root->layer()->paint(p, QRect(0, top, pageWidth+2, pageHeight));
+            root->layer()->paint(p, QRect(0, top-1, pageWidth, pageHeight+2));
 //             m_part->xmlDocImpl()->renderer()->layer()->paint(p, QRect(0, top, \
pageWidth, pageHeight));  //             root->repaint();
 //             p->flush();
--- branches/work/khtml-paged/rendering/render_block.cpp #455548:455549
@@ -674,11 +674,10 @@
     }
 
     if (canvas()->pagedMode()) {
-        if (pageBottom() > 0)
-            kdDebug(6040) << renderName() << " Page Bottom: " << pageBottom() << \
endl; +        kdDebug(6040) << renderName() << " Page Bottom: " << pageTopAfter(0) \
<< endl;  kdDebug(6040) << renderName() << " Bottom: " << m_height << endl;
         bool needsPageBreak = false;
-        if (pageBottom() > 0 && pageBottom() < m_height)
+        if (crossesPageBreak(0, m_height))
             needsPageBreak = true;
         if (needsPageBreak && !containsPageBreak()) {
             setNeedsPageClear(true);
@@ -1281,9 +1280,7 @@
     RenderObject* legend = layoutLegend(relayoutChildren);
 
     bool forcePageBreak = false;
-    bool isPaged = canvas()->pagedMode();
-    int pageBottom = this->pageBottom();
-    bool beforeBottom = (pageBottom > 0);
+    int pageBottom = pageTopAfter(0);
 
     RenderObject* child = firstChild();
     while( child != 0 )
@@ -1334,8 +1331,8 @@
 
         // If a child have been cleared from the bottom on a earlier page-layout,
         // it needs to be placed there again.
-        if ( canvas()->pagedMode() && beforeBottom && child->afterPageBreak() ) {
-            int top = pageTop(static_cast<RenderBlock*>(child)->firstInPage());
+        if ( canvas()->pagedMode() && child->afterPageBreak() ) {
+            int top = pageTopAfter(yPosEstimate);
             yPosEstimate = top;
             m_height = top;
         }
@@ -1370,7 +1367,7 @@
 #endif
 
         // Check for page-breaks
-        if (isPaged && beforeBottom) {
+        if (canvas()->pagedMode()) {
             int childTop = child->yPos();
             int childBottom = child->yPos()+child->height();
             kdDebug(6040) << renderName() << " ChildTop: " << childTop << " \
ChildBottom: " << childBottom << endl; @@ -1381,7 +1378,7 @@
             {
                 if (!forcePageBreak && child->containsPageBreak() && \
!child->needsPageClear()) {  kdDebug(6040) << "Child contains page-break" << endl;
-                    // Actually this assumes floating children are breaking
+                    // ### Actually this assumes floating children are \
breaking/clearing  // nicely as well.
                     setContainsPageBreak(true);
                 }
@@ -1404,7 +1401,7 @@
                         setContainsPageBreak(true);
                     }
                 }
-                beforeBottom = false;
+                pageBottom = pageTopAfter(pageBottom+1);
             }
             else
             if (child->yPos() >= pageBottom) {
@@ -1421,10 +1418,9 @@
                 }
                 if (doBreak) {
                     // Break between children
-                    clearPageBreak(child, pageBottom);
                     setContainsPageBreak(true);
                 }
-                beforeBottom = false;
+                pageBottom = pageTopAfter(pageBottom+1);
             }
         }
 
@@ -1550,12 +1546,6 @@
 
     paintLineBoxBackgroundBorder(pI, _tx, _ty);
 
-    if (canvas()->pagedMode())
-        if (pI.r.y() < pageBottom() && pI.r.y()+pI.r.height() >= pageBottom()) {
-            pI.p->setPen(Qt::red);
-            pI.p->drawLine(pI.r.x(), _ty+pageBottom(), pI.r.x()+pI.r.width(), \
                _ty+pageBottom());
-        }
-
     // 2. paint contents
     int scrolledX = _tx;
     int scrolledY = _ty;
@@ -1766,11 +1756,8 @@
         {
             int top = y;
             int bottom = y + o->height();
-            if (top < pageTop() && bottom > pageTop()) {
-                y = pageTop();
-            } else
-            if (top < pageBottom() && bottom > pageBottom()) {
-                y = pageBottom();
+            if (crossesPageBreak(top, bottom)) {
+                y = pageTopAfter(top);
             }
         }
 
--- branches/work/khtml-paged/rendering/render_box.cpp #455548:455549
@@ -1615,11 +1615,6 @@
     return (isRoot()) ? canvas()->pageTop() : parent()->pageTop() - m_y;
 }
 
-int RenderBox::pageTop(int page) const
-{
-    return (isRoot()) ? canvas()->pageTop(page) : parent()->pageTop(page) - m_y;
-}
-
 int RenderBox::pageTopAfter(int y) const
 {
     return (isRoot()) ? canvas()->pageTopAfter(y) : parent()->pageTopAfter(y+m_y) - \
                m_y;
--- branches/work/khtml-paged/rendering/render_box.h #455548:455549
@@ -117,7 +117,6 @@
 
     virtual int pageTop() const;
     virtual int pageBottom() const;
-    virtual int pageTop(int page) const;
     virtual int pageTopAfter(int y) const;
     virtual bool crossesPageBreak(int t, int b) const;
 
--- branches/work/khtml-paged/rendering/render_object.h #455548:455549
@@ -429,13 +429,11 @@
 
     virtual int pageTop() const { if (parent()) return parent()->pageTop(); else \
                return 0; }
     virtual int pageBottom() const { if (parent()) return parent()->pageBottom(); \
                else return 0; }
-
-    virtual int pageTop(int page) const { if (parent()) return \
                parent()->pageTop(page); else return 0; }
     virtual int pageTopAfter(int x) const { if (parent()) return \
parent()->pageTopAfter(x); else return 0; }  
     virtual void markForPageLayout(int /*pageTop*/, int /*pageBottom*/) { \
setNeedsLayout(true); }  //     virtual void markForPageLayout() { \
                setNeedsLayout(true); }
-    virtual bool crossesPageBreak(int /*y*/, int /*h*/) const { return false; }
+    virtual bool crossesPageBreak(int /*top*/, int /*bottom*/) const { return false; \
}  
     // Checks if a page-break before child is possible at the given page-break level
     // false means the child should attempt the break self.
--- branches/work/khtml-paged/rendering/render_table.cpp #455548:455549
@@ -386,7 +386,7 @@
 
 void RenderTable::paint( PaintInfo& pI, int _tx, int _ty)
 {
-//     if(needsLayout()) return;
+    if(needsLayout()) return;
 
     _tx += xPos();
     _ty += yPos();
@@ -1373,12 +1373,6 @@
                     cell->setChildNeedsLayout(true, false);
                     cellChildrenFlex = true;
                 }
-                else
-                if (canvas()->pagedMode()) {
-                    // we need to redo page-break logic
-                    if (o->yPos() < pageBottom() && o->yPos()+o->height() > \
                pageBottom())
-                        o->setNeedsLayout(true);
-                }
                 o = o->nextSibling();
             }
             if (cellChildrenFlex) {
@@ -2419,7 +2413,7 @@
     kdDebug( 6040 ) << renderName() << "(RenderTableCell)::paint() w/h = (" << \
width() << "/" << height() << ")" << " _y/_h=" << pI.r.y() << "/" << pI.r.height() << \
endl;  #endif
 
-//     if (needsLayout()) return;
+    if (needsLayout()) return;
 
     _tx += m_x;
     _ty += m_y/* + _topExtra*/;


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

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