Ejemplo n.º 1
0
void HTMLImageElementImp::notify()
{
    if (request->getStatus() != 200)
        active = false;
    else {
        // TODO: Check type
        delete image;
        image = new(std::nothrow) BoxImage;
        if (!image)
            active = false;
        else {
            if (FILE* file = request->openFile()) {
                image->open(file);
                fclose(file);
            }
            if (image->getState() != BoxImage::CompletelyAvailable) {
                active = false;
                delete image;
                image = 0;
            }
        }
    }
    if (Box* box = getBox()) {
        box->setFlags(Box::NEED_REFLOW);
        Box* ancestor = box->getParentBox();
        if (ancestor && !dynamic_cast<Block*>(ancestor)) {
            // Update inline image
            ancestor = ancestor->getParentBox();
            while (ancestor && !dynamic_cast<Block*>(ancestor))
                ancestor = ancestor->getParentBox();
            if (ancestor)
                ancestor->setFlags(Box::NEED_REFLOW);
        }
    }
    DocumentImp* document = getOwnerDocumentImp();
    document->decrementLoadEventDelayCount();
}