⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 html_baseimpl.cpp

📁 konqueror3 embedded版本, KDE环境下的当家浏览器的嵌入式版本源码包.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        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::setLocation( const DOMString& str ){    if ( url == str )        return;    url = str;    if( !attached() )        return;    if( !m_render ) {        detach();        attach();        return;    }    if( !getDocument()->isURLAllowed(url.string()) )        return;    // load the frame contents    KHTMLView *w = getDocument()->view();    if (w) {	KHTMLPart *part = w->part()->findFrame(  name.string() );	if ( part ) {	    part->openURL( KURL( getDocument()->completeURL( url.string() ) ) );	} else {	    w->part()->requestFrame( static_cast<RenderFrame*>( m_render ), url.string(), name.string() );	}    }}bool HTMLFrameElementImpl::isFocusable() const{    return m_render!=0;}void HTMLFrameElementImpl::setFocus(bool received){    HTMLElementImpl::setFocus(received);    khtml::RenderFrame *renderFrame = static_cast<khtml::RenderFrame *>(m_render);    if (!renderFrame || !renderFrame->widget())	return;    if (received)	renderFrame->widget()->setFocus();    else	renderFrame->widget()->clearFocus();}DocumentImpl* HTMLFrameElementImpl::contentDocument() const{    if ( !m_render ) return 0;    RenderPart* render = static_cast<RenderPart*>( m_render );    if(render->widget() && ::qt_cast<KHTMLView*>( render->widget()) )        return static_cast<KHTMLView*>( render->widget() )->part()->xmlDocImpl();    return 0;}// -------------------------------------------------------------------------HTMLFrameSetElementImpl::HTMLFrameSetElementImpl(DocumentPtr *doc)    : HTMLElementImpl(doc){    // default value for rows and cols...    m_totalRows = 1;    m_totalCols = 1;    m_rows = m_cols = 0;    frameborder = true;    frameBorderSet = false;    m_border = 4;    noresize = false;    m_resizing = false;}HTMLFrameSetElementImpl::~HTMLFrameSetElementImpl(){    delete [] m_rows;    delete [] m_cols;}NodeImpl::Id HTMLFrameSetElementImpl::id() const{    return ID_FRAMESET;}void HTMLFrameSetElementImpl::parseAttribute(AttributeImpl *attr){    switch(attr->id())    {    case ATTR_ROWS:        if (!attr->val()) break;        delete [] m_rows;        m_rows = attr->val()->toLengthArray(m_totalRows);        setChanged();    break;    case ATTR_COLS:        if (!attr->val()) break;        delete [] m_cols;        m_cols = attr->val()->toLengthArray(m_totalCols);        setChanged();    break;    case ATTR_FRAMEBORDER:        // false or "no" or "0"..        if ( attr->value().toInt() == 0 ) {            frameborder = false;            m_border = 0;        }        frameBorderSet = true;        break;    case ATTR_NORESIZE:        noresize = true;        break;    case ATTR_BORDER:        m_border = attr->val()->toInt();        if(!m_border)            frameborder = false;        break;    case ATTR_ONLOAD:        getDocument()->setHTMLEventListener(EventImpl::LOAD_EVENT,	    getDocument()->createHTMLEventListener(attr->value().string(), "onload", this));        break;    case ATTR_ONUNLOAD:        getDocument()->setHTMLEventListener(EventImpl::UNLOAD_EVENT,	    getDocument()->createHTMLEventListener(attr->value().string(), "onunload", this));        break;    default:        HTMLElementImpl::parseAttribute(attr);    }}void HTMLFrameSetElementImpl::attach(){    assert(!attached() );    assert(parentNode());    // 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    if ( parentNode()->renderer() ) {        m_render = new (getDocument()->renderArena()) RenderFrameSet(this);        m_render->setStyle(getDocument()->styleSelector()->styleForElement(this));       parentNode()->renderer()->addChild(m_render, nextRenderer());    }    NodeBaseImpl::attach();}void HTMLFrameSetElementImpl::defaultEventHandler(EventImpl *evt){    if (evt->isMouseEvent() && !noresize && m_render)        static_cast<khtml::RenderFrameSet *>(m_render)->userResize(static_cast<MouseEventImpl*>(evt));    evt->setDefaultHandled();    HTMLElementImpl::defaultEventHandler(evt);}void HTMLFrameSetElementImpl::detach(){    if(attached())        // ### send the event when we actually get removed from the doc instead of here        getDocument()->dispatchHTMLEvent(EventImpl::UNLOAD_EVENT,false,false);    HTMLElementImpl::detach();}void HTMLFrameSetElementImpl::recalcStyle( StyleChange ch ){    if (changed() && m_render) {        m_render->setNeedsLayout(true);//         m_render->layout();        setChanged(false);    }    HTMLElementImpl::recalcStyle( ch );}// -------------------------------------------------------------------------NodeImpl::Id HTMLHeadElementImpl::id() const{    return ID_HEAD;}// -------------------------------------------------------------------------NodeImpl::Id HTMLHtmlElementImpl::id() const{    return ID_HTML;}// -------------------------------------------------------------------------HTMLIFrameElementImpl::HTMLIFrameElementImpl(DocumentPtr *doc) : HTMLFrameElementImpl(doc){    frameBorder = false;    marginWidth = 0;    marginHeight = 0;    needWidgetUpdate = false;}HTMLIFrameElementImpl::~HTMLIFrameElementImpl(){}NodeImpl::Id HTMLIFrameElementImpl::id() const{    return ID_IFRAME;}void HTMLIFrameElementImpl::parseAttribute(AttributeImpl *attr ){    switch (  attr->id() )    {    case ATTR_WIDTH:        if (!attr->value().isEmpty())            addCSSLength(CSS_PROP_WIDTH, attr->value());        else            removeCSSProperty(CSS_PROP_WIDTH);        break;    case ATTR_HEIGHT:        if (!attr->value().isEmpty())            addCSSLength(CSS_PROP_HEIGHT, attr->value());        else            removeCSSProperty(CSS_PROP_HEIGHT);        break;    case ATTR_SRC:        needWidgetUpdate = true; // ### do this for scrolling, margins etc?        HTMLFrameElementImpl::parseAttribute( attr );        break;    default:        HTMLFrameElementImpl::parseAttribute( attr );    }}void HTMLIFrameElementImpl::attach(){    assert(!attached());    assert(!m_render);    assert(parentNode());    name = getAttribute(ATTR_NAME);    if (name.isNull())        name = getAttribute(ATTR_ID);    RenderStyle* style = getDocument()->styleSelector()->styleForElement(this);    style->ref();    if (getDocument()->isURLAllowed(url.string()) &&        parentNode()->renderer() && style->display() != NONE) {        m_render = new (getDocument()->renderArena()) RenderPartObject(this);        m_render->setStyle(style);        parentNode()->renderer()->addChild(m_render, nextRenderer());    }    style->deref();    NodeBaseImpl::attach();    if (m_render) {        // we need a unique name for every frame in the frameset. Hope that's unique enough.        KHTMLView* w = getDocument()->view();        if(w && (name.isEmpty() || w->part()->frameExists( name.string() )))            name = DOMString(w->part()->requestFrameName());        needWidgetUpdate = false;        static_cast<RenderPartObject*>(m_render)->updateWidget();    }}void HTMLIFrameElementImpl::recalcStyle( StyleChange ch ){    if (needWidgetUpdate) {        needWidgetUpdate = false;        if(m_render)  static_cast<RenderPartObject*>(m_render)->updateWidget();    }    HTMLElementImpl::recalcStyle( ch );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -