void QWidgetPrivate::updateFrameStrut() { Q_Q(QWidget); if (q->data->fstrut_dirty) { if (QTLWExtra *te = maybeTopData()) { if (te->window) { if (const QPlatformWindow *pw = te->window->handle()) { const QMargins margins = pw->frameMargins(); if (!margins.isNull()) { te->frameStrut.setCoords(margins.left(), margins.top(), margins.right(), margins.bottom()); q->data->fstrut_dirty = false; } } } } } }
QMargins MainPanel::FixRatioTransform(const QMargins &g) { if(g.isNull()) return g; Screen* s = ui->panel->CurrentPage()->ScreenWidget(); QSize intend = (s->geometry() + g).size(); int sum = g.left()+g.top()+g.right()+g.bottom(); QSize except = _fixRatio.scaled(intend, (sum > 0 ? Qt::KeepAspectRatioByExpanding : Qt::KeepAspectRatio)) - s->size(); QMargins ret; qreal h = g.left() + g.right(); qreal v = g.top() + g.bottom(); if(h) { ret.setLeft(g.left() / h * except.width()); ret.setRight(g.right() / h * except.width()); } else ret.setRight(except.width()); if(v) { ret.setTop(g.top() / v * except.height()); ret.setBottom(g.bottom() / v * except.height()); } else ret.setBottom(except.height()); return ret; }