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

📄 html_baseimpl.cpp

📁 khtml在gtk上的移植版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    }}bool HTMLFrameElementImpl::rendererIsNeeded(RenderStyle *style){    // Ignore display: none.    return isURLAllowed(url);}RenderObject *HTMLFrameElementImpl::createRenderer(RenderArena *arena, RenderStyle *style){    return new (arena) RenderFrame(this);}void HTMLFrameElementImpl::attach(){    // 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());    }    HTMLElementImpl::attach();    if (!m_render)        return;    KHTMLPart *part = getDocument()->part();    if (!part)	return;    part->incrementFrameCount();        AtomicString relativeURL = url;    if (relativeURL.isEmpty()) {        relativeURL = "about:blank";    }    // we need a unique name for every frame in the frameset. Hope that's unique enough.    if (name.isEmpty() || part->frameExists( name.string() ) )      name = AtomicString(part->requestFrameName());    // load the frame contents    part->requestFrame( static_cast<RenderFrame*>(m_render), relativeURL.string(), name.string() );}void HTMLFrameElementImpl::detach(){    KHTMLPart *part = getDocument()->part();    if (m_render && part) {	part->decrementFrameCount();        KHTMLPart *framePart = part->findFrame( name.string() );        if (framePart)            framePart->frameDetached();    }    HTMLElementImpl::detach();}void HTMLFrameElementImpl::setLocation( const DOMString& str ){    if (url == str) return;    url = AtomicString(str);    updateForNewURL();}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{    KHTMLPart* p = getDocument()->part();    if (p) {        KHTMLPart *part = p->findFrame( name.string() );        if (part) {            return part->xmlDocImpl();        }    }    return 0;}bool HTMLFrameElementImpl::isURLAttribute(AttributeImpl *attr) const{    return attr->id() == ATTR_SRC;}// -------------------------------------------------------------------------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(){    if (m_rows)        delete [] m_rows;    if (m_cols)        delete [] m_cols;}NodeImpl::Id HTMLFrameSetElementImpl::id() const{    return ID_FRAMESET;}void HTMLFrameSetElementImpl::parseHTMLAttribute(HTMLAttributeImpl *attr){    switch(attr->id())    {    case ATTR_ROWS:        if (attr->isNull()) break;        if (m_rows) delete [] m_rows;        m_rows = attr->value().toLengthArray(m_totalRows);        setChanged();    break;    case ATTR_COLS:        if (attr->isNull()) break;        delete [] m_cols;        m_cols = attr->value().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->value().toInt();        if(!m_border)            frameborder = false;        break;    case ATTR_ONLOAD:        setHTMLEventListener(EventImpl::LOAD_EVENT,	    getDocument()->createHTMLEventListener(attr->value().string()));        break;    case ATTR_ONUNLOAD:        setHTMLEventListener(EventImpl::UNLOAD_EVENT,	    getDocument()->createHTMLEventListener(attr->value().string()));        break;    default:        HTMLElementImpl::parseHTMLAttribute(attr);    }}bool HTMLFrameSetElementImpl::rendererIsNeeded(RenderStyle *style){    // Ignore display: none but do pay attention if a stylesheet has caused us to delay our loading.    return style->isStyleAvailable();}RenderObject *HTMLFrameSetElementImpl::createRenderer(RenderArena *arena, RenderStyle *style){    return new (arena) RenderFrameSet(this);}void HTMLFrameSetElementImpl::attach(){    // 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());    }    HTMLElementImpl::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        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 );}// -------------------------------------------------------------------------HTMLHeadElementImpl::HTMLHeadElementImpl(DocumentPtr *doc)    : HTMLElementImpl(doc){}HTMLHeadElementImpl::~HTMLHeadElementImpl(){}NodeImpl::Id HTMLHeadElementImpl::id() const{    return ID_HEAD;}// -------------------------------------------------------------------------HTMLHtmlElementImpl::HTMLHtmlElementImpl(DocumentPtr *doc)    : HTMLElementImpl(doc){}HTMLHtmlElementImpl::~HTMLHtmlElementImpl(){}NodeImpl::Id HTMLHtmlElementImpl::id() const{    return ID_HTML;}// -------------------------------------------------------------------------HTMLIFrameElementImpl::HTMLIFrameElementImpl(DocumentPtr *doc) : HTMLFrameElementImpl(doc){    frameBorder = false;    marginWidth = -1;    marginHeight = -1;    needWidgetUpdate = false;}HTMLIFrameElementImpl::~HTMLIFrameElementImpl(){}NodeImpl::Id HTMLIFrameElementImpl::id() const{    return ID_IFRAME;}bool HTMLIFrameElementImpl::mapToEntry(NodeImpl::Id attr, MappedAttributeEntry& result) const{    switch (attr) {        case ATTR_WIDTH:        case ATTR_HEIGHT:            result = eUniversal;            return false;        case ATTR_ALIGN:            result = eReplaced; // Share with <img> since the alignment behavior is the same.            return false;        default:            break;    }        return HTMLElementImpl::mapToEntry(attr, result);}void HTMLIFrameElementImpl::parseHTMLAttribute(HTMLAttributeImpl *attr ){  switch (  attr->id() )  {    case ATTR_WIDTH:      addCSSLength( attr, CSS_PROP_WIDTH, attr->value());      break;    case ATTR_HEIGHT:      addCSSLength( attr, CSS_PROP_HEIGHT, attr->value() );      break;    case ATTR_ALIGN:      addHTMLAlignment( attr );      break;    default:      HTMLFrameElementImpl::parseHTMLAttribute( attr );  }}bool HTMLIFrameElementImpl::rendererIsNeeded(RenderStyle *style){    // Don't ignore display: none the way frame does.    return isURLAllowed(url) && style->display() != NONE;}RenderObject *HTMLIFrameElementImpl::createRenderer(RenderArena *arena, RenderStyle *style){    return new (arena) RenderPartObject(this);}void HTMLIFrameElementImpl::attach(){    HTMLElementImpl::attach();    KHTMLPart *part = getDocument()->part();    if (m_render && part) {        // we need a unique name for every frame in the frameset. Hope that's unique enough.	part->incrementFrameCount();        if(name.isEmpty() || part->frameExists( name.string() ))            name = AtomicString(part->requestFrameName());        static_cast<RenderPartObject*>(m_render)->updateWidget();        needWidgetUpdate = false;    }}void HTMLIFrameElementImpl::recalcStyle( StyleChange ch ){    if (needWidgetUpdate) {        if(m_render)  static_cast<RenderPartObject*>(m_render)->updateWidget();        needWidgetUpdate = false;    }    HTMLElementImpl::recalcStyle( ch );}void HTMLIFrameElementImpl::openURL(){    needWidgetUpdate = true;    setChanged();}bool HTMLIFrameElementImpl::isURLAttribute(AttributeImpl *attr) const{    return attr->id() == ATTR_SRC;}

⌨️ 快捷键说明

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