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

📄 qwidget_qws.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 3 页
字号:
void QWidgetPrivate::stackUnder_sys(QWidget*){    Q_Q(QWidget);    if (QWidget *p = q->parentWidget()) {        setDirtyOpaqueRegion();        p->d_func()->invalidateBuffer(q->geometry());    }}void QWidgetPrivate::moveSurface(QWindowSurface *surface, const QPoint &offset){    QWSWindowSurface *s = static_cast<QWSWindowSurface*>(surface);    if (!s->move(offset))        s->invalidateBuffer();    QWSDisplay::instance()->moveRegion(s->winId(), offset.x(), offset.y());}void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove){    Q_Q(QWidget);    if (extra) {                                // any size restrictions?        w = qMin(w,extra->maxw);        h = qMin(h,extra->maxh);        w = qMax(w,extra->minw);        h = qMax(h,extra->minh);    }    QPoint oldp = q->geometry().topLeft();    QSize olds = q->size();    QRect r(x, y, w, h);    bool isResize = olds != r.size();    isMove = oldp != r.topLeft(); //### why do we have isMove as a parameter?    // We only care about stuff that changes the geometry, or may    // cause the window manager to change its state    if (r.size() == olds && oldp == r.topLeft())        return;    if (!data.in_set_window_state) {        q->data->window_state &= ~Qt::WindowMaximized;        q->data->window_state &= ~Qt::WindowFullScreen;        if (q->isWindow())            topData()->normalGeometry = QRect(0, 0, -1, -1);    }    QPoint oldPos = q->pos();    data.crect = r;    if ((q->windowType() == Qt::Desktop))        return;    bool inTransaction = false;    QTLWExtra *topextra = q->window()->d_func()->maybeTopData();    if (topextra) {        inTransaction = topextra->inPaintTransaction;        topextra->inPaintTransaction = true;    }    if (q->isVisible()) {        bool toplevelMove = false;        QWSWindowSurface *surface = 0;        if (q->isWindow()) {            //### ConfigPending not implemented, do we need it?            //setAttribute(Qt::WA_WState_ConfigPending);            const QWidgetBackingStore *bs = maybeBackingStore();            if (bs)                surface = static_cast<QWSWindowSurface*>(bs->windowSurface);            if (isMove && !isResize && surface) {                const QPoint offset(x - oldp.x(), y - oldp.y());                moveSurface(surface, offset);                toplevelMove = true; //server moves window, but we must send moveEvent, which might trigger painting#ifdef Q_BACKINGSTORE_SUBSURFACES                QList<QWindowSurface*> surfaces = bs->subSurfaces;                for (int i = 0; i < surfaces.size(); ++i)                    moveSurface(surfaces.at(i), offset);#endif            } else {                    updateFrameStrut();            }        }        //### must have frame geometry correct before sending move/resize events        if (isMove) {            QMoveEvent e(q->pos(), oldPos);            QApplication::sendEvent(q, &e);        }        if (isResize) {            QResizeEvent e(r.size(), olds);            QApplication::sendEvent(q, &e);        }        if (!toplevelMove) {            if (q->isWindow()) {                if (surface)                    surface->setGeometry(q->frameGeometry());                else                    invalidateBuffer(q->rect()); //####ifdef Q_BACKINGSTORE_SUBSURFACES                // XXX: should not resize subsurfaces. Children within a layout                // will be resized automatically while children with a static                // geometry should get a new clip region instead.                const QRect clipRect = q->geometry();                QWidgetBackingStore *bs = maybeBackingStore();                QList<QWindowSurface*> surfaces = bs->subSurfaces;                for (int i = 0; i < surfaces.size(); ++i) {                    QWSWindowSurface *s = static_cast<QWSWindowSurface*>(surfaces.at(i));                    QRect srect = s->geometry();                    s->setGeometry(clipRect & srect);                }#endif            }#ifdef Q_BACKINGSTORE_SUBSURFACES            // XXX: merge this case with the isWindow() case            else if (maybeTopData() && maybeTopData()->windowSurface) {                QWSWindowSurface *surface;                surface = static_cast<QWSWindowSurface*>(q->windowSurface());                if (isMove && !isResize) {                    moveSurface(surface, QPoint(x - oldp.x(), y - oldp.y()));                } else {                    const QPoint p = q->mapToGlobal(QPoint());                    surface->setGeometry(QRect(p, QSize(w, h)));                }            }#endif            else {                if (isMove && !isResize) {                    moveRect(QRect(oldPos, olds), x - oldPos.x(), y - oldPos.y());                } else {                    q->parentWidget()->d_func()->invalidateBuffer(QRect(oldPos, olds));                    invalidateBuffer(q->rect());                    //TODO: handle static contents                }            }        }    } else { // not visible        if (isMove && q->pos() != oldPos)            q->setAttribute(Qt::WA_PendingMoveEvent, true);        if (isResize)            q->setAttribute(Qt::WA_PendingResizeEvent, true);    }    if (topextra)        topextra->inPaintTransaction = inTransaction;}void QWidgetPrivate::setConstraints_sys(){}QScreen* QWidgetPrivate::getScreen() const{    Q_Q(const QWidget);    const QList<QScreen*> subScreens = qt_screen->subScreens();    if (subScreens.isEmpty())        return qt_screen;    const int screen = QApplication::desktop()->screenNumber(q);    return qt_screen->subScreens().at(screen < 0 ? 0 : screen);}void QWidgetPrivate::scroll_sys(int dx, int dy){    Q_Q(QWidget);    scrollChildren(dx, dy);    scrollRect(q->rect(), dx, dy);}void QWidgetPrivate::scroll_sys(int dx, int dy, const QRect &r){    scrollRect(r, dx, dy);}int QWidget::metric(PaintDeviceMetric m) const{    Q_D(const QWidget);    int val;    if (m == PdmWidth) {        val = data->crect.width();    } else if (m == PdmWidthMM) {        const QScreen *screen = d->getScreen();        val = data->crect.width() * screen->physicalWidth() / screen->width();    } else if (m == PdmHeight) {        val = data->crect.height();    } else if (m == PdmHeightMM) {        const QScreen *screen = d->getScreen();        val = data->crect.height() * screen->physicalHeight() / screen->height();    } else if (m == PdmDepth) {        return qwsDisplay()->depth();    } else if (m == PdmDpiX || m == PdmPhysicalDpiX) {        const QScreen *screen = d->getScreen();        return qRound(screen->width() / double(screen->physicalWidth() / 25.4));    } else if (m == PdmDpiY || m == PdmPhysicalDpiY) {        const QScreen *screen = d->getScreen();        return qRound(screen->height() / double(screen->physicalHeight() / 25.4));    } else {        val = QPaintDevice::metric(m);// XXX    }    return val;}void QWidgetPrivate::createSysExtra(){}void QWidgetPrivate::deleteSysExtra(){}void QWidgetPrivate::createTLSysExtra(){    extra->topextra->backingStore = 0;}void QWidgetPrivate::deleteTLSysExtra(){    delete extra->topextra->backingStore;    extra->topextra->backingStore = 0;}void QWidgetPrivate::registerDropSite(bool on){    Q_UNUSED(on);}QRegion QWidgetPrivate::localRequestedRegion() const{    Q_Q(const QWidget);    QRegion r(q->rect());    if (extra && !extra->mask.isEmpty())        r &= extra->mask;    return r;}QRegion QWidgetPrivate::localAllocatedRegion() const{    Q_Q(const QWidget);    QWidgetBackingStore *wbs = q->window()->d_func()->maybeBackingStore();    QWindowSurface *ws = wbs ? wbs->windowSurface : 0;    if (!ws)        return QRegion();    QRegion r = static_cast<QWSWindowSurface*>(ws)->clipRegion();    if (!q->isWindow()) {        QPoint off = q->mapTo(q->window(), QPoint());        r &= localRequestedRegion().translated(off);        r.translate(-off);    }    return r;}inline bool QRect::intersects(const QRect &r) const{    return (qMax(x1, r.x1) <= qMin(x2, r.x2) &&             qMax(y1, r.y1) <= qMin(y2, r.y2));}void QWidget::setMask(const QRegion& region){    Q_D(QWidget);    d->createExtra();    if (region == d->extra->mask)        return;    QRegion parentR;    if (!isWindow())        parentR = d->extra->mask.isEmpty() ? QRegion(rect()) : d->extra->mask ;    d->extra->mask = region;    if (isVisible()) {        if (isWindow()) {            d->data.fstrut_dirty = true;            d->invalidateBuffer(rect());            QWindowSurface *surface = d->extra->topextra->backingStore->windowSurface;            if (surface) {                // QWSWindowSurface::setGeometry() returns without doing anything                // if old geom  == new geom. Therefore, we need to reset the old value.                surface->QWindowSurface::setGeometry(QRect());                surface->setGeometry(frameGeometry());            }        } else {            parentR += d->extra->mask;            parentWidget()->update(parentR.translated(geometry().topLeft()));            update();        }    }}void QWidget::setMask(const QBitmap &bitmap){    setMask(QRegion(bitmap));}void QWidget::clearMask(){    setMask(QRegion());}void QWidgetPrivate::updateFrameStrut(){    Q_Q(QWidget);    if(!q->isVisible() || (q->windowType() == Qt::Desktop)) {        data.fstrut_dirty = q->isVisible();        return;    }#ifndef QT_NO_QWS_MANAGER    if (extra && extra->topextra && extra->topextra->qwsManager) {        QTLWExtra *topextra = extra->topextra;        const QRect oldFrameStrut = topextra->frameStrut;        const QRect contents = data.crect;        QRegion r = localRequestedRegion().translated(contents.topLeft());        r += extra->topextra->qwsManager->region();        const QRect frame = r.boundingRect();        topextra->frameStrut.setCoords(contents.left() - frame.left(),                                       contents.top() - frame.top(),                                       frame.right() - contents.right(),                                       frame.bottom() - contents.bottom());        topextra->qwsManager->repaintRegion(QDecoration::All, QDecoration::Normal);    }#endif    data.fstrut_dirty = false;}#ifndef QT_NO_CURSORvoid QWidgetPrivate::updateCursor() const{    Q_Q(const QWidget);    if (QApplication::overrideCursor())        return;    if (qt_last_x        && (!QWidget::mouseGrabber() || QWidget::mouseGrabber() == q)        && qt_last_cursor != (WId)q->cursor().handle())    {        const QPoint pos(*qt_last_x, *qt_last_y);        const QPoint offset = q->mapToGlobal(QPoint());        if (!localAllocatedRegion().contains(pos - offset))            return;        const QWidget *w = q->childAt(q->mapFromGlobal(pos));        if (!w || w->cursor().handle() == q->cursor().handle())            QWidget::qwsDisplay()->selectCursor(const_cast<QWidget*>(q),                                                q->cursor().handle());    }}#endifvoid QWidget::setWindowOpacity(qreal level){    if (!isWindow())        return;    Q_D(QWidget);    level = qBound(qreal(0), level, qreal(1));    uchar opacity = uchar(level * 255);    d->topData()->opacity = opacity;    d->createWinId();    qwsDisplay()->setOpacity(data->winid, opacity);}qreal QWidget::windowOpacity() const{    return isWindow() ? ((QWidget*)this)->d_func()->topData()->opacity / 255.0 : 1.0;}//static QSingleCleanupHandler<QWSPaintEngine> qt_paintengine_cleanup_handler;//static QWSPaintEngine *qt_widget_paintengine = 0;/*!    Returns the widget's paint engine.*/QPaintEngine *QWidget::paintEngine() const{    qWarning("QWidget::paintEngine: Should no longer be called");    return 0; //##### @@@//     if (!qt_widget_paintengine) {//         qt_widget_paintengine = new QRasterPaintEngine();//         qt_paintengine_cleanup_handler.set(&qt_widget_paintengine);//     }//     if (qt_widget_paintengine->isActive()) {//         if (d->extraPaintEngine)//             return d->extraPaintEngine;//         const_cast<QWidget *>(this)->d_func()->extraPaintEngine = new QRasterPaintEngine();//         return d->extraPaintEngine;//     }//    return qt_widget_paintengine;}void QWidgetPrivate::setModal_sys(){}

⌨️ 快捷键说明

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