亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? render_container.cpp

?? It is WEB browser core module with source code. Very good!
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
    // have no generated content and can now return.
    if (!newContentWanted)
        return;

    if (isInlineFlow() && pseudo->display() != INLINE)
        // According to the CSS2 spec (the end of section 12.1), the only allowed
        // display values for the pseudo style are NONE and INLINE.  Since we already
        // determined that the pseudo is not display NONE, any display other than
        // inline should be mutated to INLINE.
        pseudo->setDisplay(INLINE);
    
    if (oldContentPresent) {
        if (child && child->style()->styleType() == type) {
            // We have generated content present still.  We want to walk this content and update our
            // style information with the new pseudo style.
            child->setStyle(pseudo);

            // Note that if we ever support additional types of generated content (which should be way off
            // in the future), this code will need to be patched.
            for (RenderObject* genChild = child->firstChild(); genChild; genChild = genChild->nextSibling()) {
                if (genChild->isText())
                    // Generated text content is a child whose style also needs to be set to the pseudo
                    // style.
                    genChild->setStyle(pseudo);
                else {
                    // Images get an empty style that inherits from the pseudo.
                    RenderStyle* style = new (renderArena()) RenderStyle();
                    style->inheritFrom(pseudo);
                    genChild->setStyle(style);
                }
            }
        }
        return; // We've updated the generated content. That's all we needed to do.
    }
    
    RenderObject* insertBefore = (type == RenderStyle::BEFORE) ? child : 0;

    // Generated content consists of a single container that houses multiple children (specified
    // by the content property).  This pseudo container gets the pseudo style set on it.
    RenderObject* pseudoContainer = 0;
    
    // Now walk our list of generated content and create render objects for every type
    // we encounter.
    for (ContentData* contentData = pseudo->contentData();
         contentData; contentData = contentData->_nextContent) {
        if (!pseudoContainer)
            pseudoContainer = RenderFlow::createAnonymousFlow(document(), pseudo); /* anonymous box */
        
        if (contentData->contentType() == CONTENT_TEXT)
        {
            RenderText* t = new (renderArena()) RenderTextFragment(document() /*anonymous object */, contentData->contentText());
            t->setStyle(pseudo);
            pseudoContainer->addChild(t);
        }
        else if (contentData->contentType() == CONTENT_OBJECT)
        {
            RenderImage* img = new (renderArena()) RenderImage(document()); /* Anonymous object */
            RenderStyle* style = new (renderArena()) RenderStyle();
            style->inheritFrom(pseudo);
            img->setStyle(style);
            img->setContentObject(contentData->contentObject());
            pseudoContainer->addChild(img);
        }
    }

    if (pseudoContainer) {
        // Add the pseudo after we've installed all our content, so that addChild will be able to find the text
        // inside the inline for e.g., first-letter styling.
        addChild(pseudoContainer, insertBefore);
    }
}


void RenderContainer::appendChildNode(RenderObject* newChild)
{
    KHTMLAssert(newChild->parent() == 0);

    newChild->setParent(this);
    RenderObject* lChild = lastChild();

    if(lChild)
    {
        newChild->setPreviousSibling(lChild);
        lChild->setNextSibling(newChild);
    }
    else
        setFirstChild(newChild);

    setLastChild(newChild);
    
    // Keep our layer hierarchy updated.  Optimize for the common case where we don't have any children
    // and don't have a layer attached to ourselves.
    if (newChild->firstChild() || newChild->layer()) {
        RenderLayer* layer = enclosingLayer();
        newChild->addLayers(layer, newChild);
    }
    
    newChild->setNeedsLayoutAndMinMaxRecalc(); // Goes up the containing block hierarchy.
    if (!normalChildNeedsLayout())
        setChildNeedsLayout(true); // We may supply the static position for an absolute positioned child.
    
    if (!newChild->isFloatingOrPositioned() && childrenInline())
        dirtyLinesFromChangedChild(newChild);
    
#if APPLE_CHANGES
    if (KWQAccObjectCache::accessibilityEnabled())
        document()->getAccObjectCache()->childrenChanged(this);
#endif
}

void RenderContainer::insertChildNode(RenderObject* child, RenderObject* beforeChild)
{
    if(!beforeChild) {
        appendChildNode(child);
        return;
    }

    KHTMLAssert(!child->parent());
    while ( beforeChild->parent() != this && beforeChild->parent()->isAnonymousBlock() )
	beforeChild = beforeChild->parent();
    KHTMLAssert(beforeChild->parent() == this);

    if(beforeChild == firstChild())
        setFirstChild(child);

    RenderObject* prev = beforeChild->previousSibling();
    child->setNextSibling(beforeChild);
    beforeChild->setPreviousSibling(child);
    if(prev) prev->setNextSibling(child);
    child->setPreviousSibling(prev);

    child->setParent(this);
    
    // Keep our layer hierarchy updated.
    RenderLayer* layer = enclosingLayer();
    child->addLayers(layer, child);

    child->setNeedsLayoutAndMinMaxRecalc();
    if (!normalChildNeedsLayout())
        setChildNeedsLayout(true); // We may supply the static position for an absolute positioned child.
    
    if (!child->isFloatingOrPositioned() && childrenInline())
        dirtyLinesFromChangedChild(child);
    
#if APPLE_CHANGES
    if (KWQAccObjectCache::accessibilityEnabled())
        document()->getAccObjectCache()->childrenChanged(this);
#endif    
}

void RenderContainer::layout()
{
    KHTMLAssert( needsLayout() );
    KHTMLAssert( minMaxKnown() );

    RenderObject *child = firstChild();
    while( child ) {
        child->layoutIfNeeded();
        child = child->nextSibling();
    }
    setNeedsLayout(false);
}

void RenderContainer::removeLeftoverAnonymousBoxes()
{
    // we have to go over all child nodes and remove anonymous boxes, that do _not_
    // have inline children to keep the tree flat
    RenderObject *child = firstChild();
    while( child ) {
	RenderObject *next = child->nextSibling();
	
	if ( child->isRenderBlock() && child->isAnonymousBlock() && !child->continuation() && !child->childrenInline() && !child->isTableCell() ) {
	    RenderObject *firstAnChild = child->firstChild();
	    RenderObject *lastAnChild = child->lastChild();
	    if ( firstAnChild ) {
		RenderObject *o = firstAnChild;
		while( o ) {
		    o->setParent( this );
		    o = o->nextSibling();
		}
		firstAnChild->setPreviousSibling( child->previousSibling() );
		lastAnChild->setNextSibling( child->nextSibling() );
		if ( child->previousSibling() )
		    child->previousSibling()->setNextSibling( firstAnChild );
		if ( child->nextSibling() )
		    child->nextSibling()->setPreviousSibling( lastAnChild );
	    } else {
		if ( child->previousSibling() )
		    child->previousSibling()->setNextSibling( child->nextSibling() );
		if ( child->nextSibling() )
		    child->nextSibling()->setPreviousSibling( child->previousSibling() );
		
	    }
	    if ( child == firstChild() )
		m_first = firstAnChild;
	    if ( child == lastChild() )
		m_last = lastAnChild;
	    child->setParent( 0 );
	    child->setPreviousSibling( 0 );
	    child->setNextSibling( 0 );
	    if ( !child->isText() ) {
		RenderContainer *c = static_cast<RenderContainer *>(child);
		c->m_first = 0;
		c->m_next = 0;
	    }
	    child->detach();
	}
	child = next;
    }
    if ( parent() )
	parent()->removeLeftoverAnonymousBoxes();
}

VisiblePosition RenderContainer::positionForCoordinates(int _x, int _y)
{
    // no children...return this render object's element, if there is one, and offset 0
    if (!firstChild())
        return VisiblePosition(element(), 0, DOWNSTREAM);

    // look for the geometrically-closest child and pass off to that child
    int min = INT_MAX;
    RenderObject *closestRenderer = 0;
    for (RenderObject *renderer = firstChild(); renderer; renderer = renderer->nextSibling()) {
        if (!renderer->firstChild() && !renderer->isInline() && !renderer->isBlockFlow())
            continue;

        int absx, absy;
        renderer->absolutePosition(absx, absy);
        
        int top = absy + borderTop() + paddingTop();
        int bottom = top + renderer->contentHeight();
        int left = absx + borderLeft() + paddingLeft();
        int right = left + renderer->contentWidth();
        
        int cmp;
        cmp = abs(_y - top);    if (cmp < min) { closestRenderer = renderer; min = cmp; }
        cmp = abs(_y - bottom); if (cmp < min) { closestRenderer = renderer; min = cmp; }
        cmp = abs(_x - left);   if (cmp < min) { closestRenderer = renderer; min = cmp; }
        cmp = abs(_x - right);  if (cmp < min) { closestRenderer = renderer; min = cmp; }
    }
    
    if (closestRenderer)
        return closestRenderer->positionForCoordinates(_x, _y);
    
    return VisiblePosition(element(), 0, DOWNSTREAM);
}
    
#undef DEBUG_LAYOUT

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
717成人午夜免费福利电影| 久久99精品国产| 中文字幕精品一区二区精品绿巨人 | 亚洲日本在线看| 国产视频亚洲色图| 日本一区二区三区免费乱视频| 久久久不卡影院| 国产欧美一区视频| 国产精品电影一区二区三区| 中文字幕日韩精品一区| 一色屋精品亚洲香蕉网站| 亚洲美女淫视频| 亚洲第四色夜色| 久久福利视频一区二区| 国产成人夜色高潮福利影视| 国产99久久久久久免费看农村| 国产精品亚洲а∨天堂免在线| 成人av资源站| 欧美放荡的少妇| 久久精品在这里| 亚洲裸体xxx| 免费成人在线观看| 国产福利一区二区三区在线视频| 国产成人在线观看| 欧美性一二三区| 久久久欧美精品sm网站| 一区二区三区国产| 久久精品国产亚洲高清剧情介绍 | 欧美精品一区二区久久婷婷| 国产精品三级电影| 首页国产丝袜综合| 不卡的av电影| 日韩欧美亚洲国产精品字幕久久久| 久久久久久99精品| 亚洲成人资源网| 国产精品一区二区黑丝| 欧美在线你懂得| 久久精品男人天堂av| 性做久久久久久免费观看| 国产精品66部| 欧美一二三四区在线| 成人免费在线视频观看| 国产真实精品久久二三区| 色八戒一区二区三区| 2024国产精品| 日本视频一区二区三区| 色丁香久综合在线久综合在线观看| 久久久久国产一区二区三区四区| 一区二区三区四区在线免费观看 | av电影在线不卡| 日韩三级免费观看| 亚洲电影第三页| www.欧美精品一二区| 久久久亚洲国产美女国产盗摄| 午夜精品久久久久久久99水蜜桃 | 91精品久久久久久久久99蜜臂| 成人丝袜高跟foot| 国产精品乱子久久久久| 久久福利视频一区二区| 亚洲蜜臀av乱码久久精品| 9191国产精品| 色婷婷av久久久久久久| 丁香天五香天堂综合| 青草国产精品久久久久久| 亚洲精品成人a在线观看| 欧美videossexotv100| 在线播放/欧美激情| 欧美色区777第一页| 色综合久久久久久久久| 97aⅴ精品视频一二三区| 成人免费视频免费观看| 风间由美性色一区二区三区| 国产一区二区主播在线| 日韩二区三区四区| 日韩激情视频网站| 蜜臀91精品一区二区三区| 日本在线不卡视频| 美日韩一区二区| 国产99久久精品| 色婷婷国产精品久久包臀| 97精品国产露脸对白| 欧美高清视频一二三区| 精品国产网站在线观看| 久久久久久久av麻豆果冻| 日本一区二区三区四区| 亚洲欧美另类综合偷拍| 婷婷综合五月天| 国产成人综合自拍| 色婷婷国产精品综合在线观看| 欧美日韩精品一区二区| 久久久五月婷婷| 日本不卡一区二区| 成人av电影在线播放| 91精品黄色片免费大全| 国产精品久久久久7777按摩| 性做久久久久久免费观看| 成人在线视频一区| 亚洲精品在线免费观看视频| 中文一区二区完整视频在线观看| 亚洲午夜在线观看视频在线| 国产精品一区二区三区四区| 欧美一区二区三区视频在线观看| 国产视频视频一区| 精品一区二区在线免费观看| 欧美一级一区二区| 精一区二区三区| 日韩欧美你懂的| 久久精品噜噜噜成人88aⅴ| 欧美三日本三级三级在线播放| 国产精品久久久久久久久搜平片| 乱一区二区av| 精品久久久久久久久久久久久久久久久| 亚洲成av人影院| 欧美一级片在线| 国产精品中文有码| 国产精品少妇自拍| 色综合天天综合网国产成人综合天| 国产日韩综合av| 不卡av在线免费观看| 亚洲精品老司机| 精品婷婷伊人一区三区三| 免费不卡在线观看| 国产视频在线观看一区二区三区| 成人性生交大片免费看在线播放| 国产精品久久久久桃色tv| 精品婷婷伊人一区三区三| 成人欧美一区二区三区白人| 色哟哟国产精品| 国内偷窥港台综合视频在线播放| 国产欧美日本一区二区三区| 欧美日韩国产影片| 国产成人av电影在线观看| 日韩av电影免费观看高清完整版| 精品久久久久久亚洲综合网| 欧美自拍偷拍一区| 波多野结衣在线一区| 麻豆精品新av中文字幕| 一区二区三区影院| 国产精品色在线| 中文字幕在线免费不卡| 国产视频一区在线播放| 宅男噜噜噜66一区二区66| 欧美性色综合网| 91福利在线免费观看| 色综合天天综合色综合av| 国产成人av自拍| 国产在线视频不卡二| 精品一区二区在线观看| 狠狠色丁香久久婷婷综合_中| 亚洲国产成人91porn| 亚洲成人免费av| 日产国产欧美视频一区精品| 亚洲aaa精品| 久久91精品久久久久久秒播| 天使萌一区二区三区免费观看| 一区二区三区产品免费精品久久75| 国产视频不卡一区| 一区二区在线免费| 亚洲一区二区精品久久av| 丝袜亚洲另类欧美| 国产在线视频一区二区三区| 成人精品视频一区二区三区 | 国产精品资源网| 91视频免费观看| 精品国产3级a| 亚洲欧美日韩在线| 婷婷国产在线综合| 国产精品996| 日韩午夜av一区| 亚洲欧美另类久久久精品| 无码av免费一区二区三区试看| 国产九色sp调教91| 欧美体内she精视频| 日本一区二区三区高清不卡 | 久久不见久久见免费视频7 | 不卡一区中文字幕| 日韩欧美国产系列| 亚洲在线视频免费观看| 国产毛片精品国产一区二区三区| 欧美中文字幕久久| 国产精品久久久久久久久果冻传媒| 天堂va蜜桃一区二区三区 | 99久久精品免费看| 国产人成一区二区三区影院| 日韩福利电影在线观看| 在线观看国产精品网站| 亚洲日本va午夜在线影院| 成人免费毛片高清视频| 日本一区二区三区久久久久久久久不| 丝袜亚洲另类丝袜在线| 欧美体内she精视频| 日本视频在线一区| 日韩一区二区三区视频在线| 日日夜夜免费精品视频| 欧美日韩成人激情| 久久国产精品无码网站| 2022国产精品视频| 成人成人成人在线视频| 亚洲第一狼人社区| 精品国精品国产|