int RenderCanvas::docHeight() const { if (m_cachedDocHeight != -1) return m_cachedDocHeight; int h; if (m_pagedMode || !m_view) h = m_height; else h = 0; RenderObject *fc = firstChild(); if(fc) { int dh = fc->overflowHeight() + fc->marginTop() + fc->marginBottom(); int lowestPos = fc->lowestPosition(false); // kdDebug(6040) << "h " << h << " lowestPos " << lowestPos << " dh " << dh << " fc->rh " << fc->effectiveHeight() << " fc->height() " << fc->height() << endl; if( lowestPos > dh ) dh = lowestPos; lowestPos = lowestAbsolutePosition(); if( lowestPos > dh ) dh = lowestPos; if( dh > h ) h = dh; } RenderLayer *layer = m_layer; h = kMax( h, layer->yPos() + layer->height() ); // kdDebug(6040) << "h " << h << " layer(" << layer->renderer()->renderName() << "@" << layer->renderer() << ")->height " << layer->height() << " lp " << (layer->yPos() + layer->height()) << " height() " << layer->renderer()->height() << " rh " << layer->renderer()->effectiveHeight() << endl; return h; }
static void write(QTextStream &ts, const RenderObject &o, int indent = 0) { writeIndent(ts, indent); ts << o << "\n"; if (o.isText() && !o.isBR()) { const RenderText &text = static_cast<const RenderText &>(o); for (InlineTextBox* box = text.firstTextBox(); box; box = box->nextTextBox()) { writeIndent(ts, indent+1); writeTextRun(ts, text, *box); } } for (RenderObject *child = o.firstChild(); child; child = child->nextSibling()) { if (child->layer()) { continue; } write(ts, *child, indent + 1); } if (o.isWidget()) { QWidget *widget = static_cast<const RenderWidget &>(o).widget(); if (widget && widget->inherits("KHTMLView")) { KHTMLView *view = static_cast<KHTMLView *>(widget); RenderObject *root = KWQ(view->part())->renderer(); if (root) { view->layout(); RenderLayer* l = root->layer(); if (l) writeLayers(ts, l, l, QRect(l->xPos(), l->yPos(), l->width(), l->height()), indent+1); } } } }
void MouseEventImpl::computeLayerPos() { m_layerX = m_pageX; m_layerY = m_pageY; DocumentImpl *doc = view() ? view()->document() : 0; if(doc) { khtml::RenderObject::NodeInfo renderInfo(true, false); doc->renderer()->layer()->nodeAtPoint(renderInfo, m_pageX, m_pageY); NodeImpl *node = renderInfo.innerNonSharedNode(); while(node && !node->renderer()) node = node->parent(); if(node) { node->renderer()->enclosingLayer()->updateLayerPosition(); for(RenderLayer *layer = node->renderer()->enclosingLayer(); layer; layer = layer->parent()) { m_layerX -= layer->xPos(); m_layerY -= layer->yPos(); } } } }
void write(TextStream& ts, const RenderObject& o, int indent) { #if ENABLE(SVG) if (o.isRenderPath()) { write(ts, static_cast<const RenderPath&>(o), indent); return; } if (o.isSVGContainer()) { write(ts, static_cast<const RenderSVGContainer&>(o), indent); return; } if (o.isSVGRoot()) { write(ts, static_cast<const RenderSVGRoot&>(o), indent); return; } if (o.isSVGText()) { if (!o.isText()) write(ts, static_cast<const RenderSVGText&>(o), indent); else write(ts, static_cast<const RenderSVGInlineText&>(o), indent); return; } #endif writeIndent(ts, indent); ts << o << "\n"; if (o.isText() && !o.isBR()) { const RenderText& text = static_cast<const RenderText&>(o); for (InlineTextBox* box = text.firstTextBox(); box; box = box->nextTextBox()) { writeIndent(ts, indent + 1); writeTextRun(ts, text, *box); } } for (RenderObject* child = o.firstChild(); child; child = child->nextSibling()) { if (child->hasLayer()) continue; write(ts, *child, indent + 1); } if (o.isWidget()) { Widget* widget = static_cast<const RenderWidget&>(o).widget(); if (widget && widget->isFrameView()) { FrameView* view = static_cast<FrameView*>(widget); RenderObject* root = view->frame()->contentRenderer(); if (root) { view->layout(); RenderLayer* l = root->layer(); if (l) writeLayers(ts, l, l, IntRect(l->xPos(), l->yPos(), l->width(), l->height()), indent + 1); } } } }
String externalRepresentation(RenderObject* o) { if (!o) return String(); TextStream ts; #if ENABLE(SVG) writeRenderResources(ts, o->document()); #endif if (o->view()->frameView()) o->view()->frameView()->layout(); RenderLayer* l = o->layer(); if (l) { writeLayers(ts, l, l, IntRect(l->xPos(), l->yPos(), l->width(), l->height())); writeSelection(ts, o); } return ts.release(); }
QString externalRepresentation(RenderObject *o) { debuggingRenderTreeFlag = true; JSEditor::setSupportsPasteCommand(true); QString s; { QTextStream ts(&s); if (o) { // FIXME: Hiding the vertical scrollbar is a total hack to preserve the // layout test results until I can figure out what the heck is going on. -dwh o->canvas()->view()->setVScrollBarMode(QScrollView::AlwaysOff); o->canvas()->view()->layout(); RenderLayer* l = o->layer(); if (l) { writeLayers(ts, l, l, QRect(l->xPos(), l->yPos(), l->width(), l->height())); writeSelection(ts, o); } } } return s; }