void HTMLFrameSetElementImpl::attach()
{
    assert(!m_render);
    assert(parentNode());
    assert(parentNode()->renderer());

    // inherit default settings from parent frameset
    HTMLElementImpl* node = static_cast<HTMLElementImpl*>(parentNode());
    while(node)
    {
        if(node->id() == ID_FRAMESET)
        {
            HTMLFrameSetElementImpl* frameset = static_cast<HTMLFrameSetElementImpl*>(node);
            if(!frameBorderSet)  frameborder = frameset->frameBorder();
            if(!noresize)  noresize = frameset->noResize();
            break;
        }
        node = static_cast<HTMLElementImpl*>(node->parentNode());
    }

    // ignore display: none
    m_render = new RenderFrameSet(this);
    m_render->setStyle(getDocument()->styleSelector()->styleForElement(this));
    parentNode()->renderer()->addChild(m_render, nextRenderer());

    NodeBaseImpl::attach();
}
Exemple #2
0
void HTMLFrameElementImpl::attach()
{
    assert(!attached());
    assert(parentNode());

    name = getAttribute(ATTR_NAME);
    if(name.isNull())
        name = getAttribute(ATTR_ID);

    // inherit default settings from parent frameset
    HTMLElementImpl *node = static_cast< HTMLElementImpl * >(parentNode());
    while(node)
    {
        if(node->id() == ID_FRAMESET)
        {
            HTMLFrameSetElementImpl *frameset = static_cast< HTMLFrameSetElementImpl * >(node);
            if(!frameBorderSet)
                frameBorder = frameset->frameBorder();
            if(!noresize)
                noresize = frameset->noResize();
            break;
        }
        node = static_cast< HTMLElementImpl * >(node->parentNode());
    }

    if(parentNode()->renderer() && getDocument()->isURLAllowed(url.string()))
    {
        RenderStyle *_style = getDocument()->styleSelector()->styleForElement(this);
        _style->ref();
        if(_style->display() != NONE)
        {
            m_render = new(getDocument()->renderArena()) RenderFrame(this);
            m_render->setStyle(_style);
            parentNode()->renderer()->addChild(m_render, nextRenderer());
        }
        _style->deref();
    }

    NodeBaseImpl::attach();

    if(!m_render)
        return;

    KHTMLView *w = getDocument()->view();
    if(w)
    {
        // we need a unique name for every frame in the frameset. Hope that's unique enough.
        if(name.isEmpty() || w->part()->frameExists(name.string()))
            name = DOMString(w->part()->requestFrameName());

        // load the frame contents
        w->part()->requestFrame(static_cast< RenderFrame * >(m_render), url.string(), name.string());
    }
}
void HTMLFrameElementImpl::attach()
{
    assert(!attached());
    assert(parentNode());
    assert(parentNode()->renderer());

    // we should first look up via id, then via name.
    // this shortterm hack fixes the ugly case. ### rewrite needed for next release
    name = getAttribute(ATTR_NAME);
    if (name.isNull())
        name = getAttribute(ATTR_ID);

    // inherit default settings from parent frameset
    HTMLElementImpl* node = static_cast<HTMLElementImpl*>(parentNode());
    while(node)
    {
        if(node->id() == ID_FRAMESET)
        {
            HTMLFrameSetElementImpl* frameset = static_cast<HTMLFrameSetElementImpl*>(node);
            if(!frameBorderSet)  frameBorder = frameset->frameBorder();
            if(!noresize)  noresize = frameset->noResize();
            break;
        }
        node = static_cast<HTMLElementImpl*>(node->parentNode());
    }

    // ignore display: none for this element!
    KHTMLView* w = getDocument()->view();

    if (isURLAllowed(url.string()))  {
        m_render = new RenderFrame(this);
        m_render->setStyle(getDocument()->styleSelector()->styleForElement(this));
        parentNode()->renderer()->addChild(m_render, nextRenderer());
    }

    NodeBaseImpl::attach();

    if (!m_render)
        return;

    // we need a unique name for every frame in the frameset. Hope that's unique enough.
    if(name.isEmpty() || w->part()->frameExists( name.string() ) )
      name = DOMString(w->part()->requestFrameName());

    // load the frame contents
    w->part()->requestFrame( static_cast<RenderFrame*>(m_render), url.string(), name.string() );
}