diff options
author | Liang Qi <liang.qi@qt.io> | 2017-04-20 11:19:14 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-04-20 12:31:27 +0200 |
commit | 7950b6b283549c98f1e0f981c84b68071a13b616 (patch) | |
tree | cf7281872045ebd57c68e10064ff0f400084aa13 /src/widgets/kernel | |
parent | 58d2927861d3e57cac4f6db599e209d2bfb17a2c (diff) | |
parent | 0794d61c822585530243f638687b8a75f0a15d0c (diff) |
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts:
src/corelib/tools/qbytearray.h
src/corelib/tools/qdatetime.h
src/corelib/tools/qstring.h
src/corelib/tools/qversionnumber.h
src/plugins/platforms/android/qandroidplatformintegration.cpp
tests/auto/corelib/tools/qhashfunctions/tst_qhashfunctions.cpp
Change-Id: Iefd92a435e687a76cd593099e40d9a9620a1454d
Diffstat (limited to 'src/widgets/kernel')
-rw-r--r-- | src/widgets/kernel/qdesktopwidget.cpp | 5 | ||||
-rw-r--r-- | src/widgets/kernel/qlayout.cpp | 31 | ||||
-rw-r--r-- | src/widgets/kernel/qsizepolicy.h | 3 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget.cpp | 8 |
4 files changed, 18 insertions, 29 deletions
diff --git a/src/widgets/kernel/qdesktopwidget.cpp b/src/widgets/kernel/qdesktopwidget.cpp index eee818b685..1e6fbfd239 100644 --- a/src/widgets/kernel/qdesktopwidget.cpp +++ b/src/widgets/kernel/qdesktopwidget.cpp @@ -269,12 +269,13 @@ int QDesktopWidget::screenNumber(const QWidget *w) const QRect frame = w->frameGeometry(); if (!w->isWindow()) frame.moveTopLeft(w->mapToGlobal(QPoint(0, 0))); - const QRect nativeFrame = QHighDpi::toNativePixels(frame, winHandle); QScreen *widgetScreen = Q_NULLPTR; int largestArea = 0; foreach (QScreen *screen, screens) { - const QRect intersected = screen->handle()->geometry().intersected(nativeFrame); + const QRect deviceIndependentScreenGeometry = + QHighDpi::fromNativePixels(screen->handle()->geometry(), screen); + const QRect intersected = deviceIndependentScreenGeometry.intersected(frame); int area = intersected.width() * intersected.height(); if (largestArea < area) { widgetScreen = screen; diff --git a/src/widgets/kernel/qlayout.cpp b/src/widgets/kernel/qlayout.cpp index f88ed350c7..129c12885a 100644 --- a/src/widgets/kernel/qlayout.cpp +++ b/src/widgets/kernel/qlayout.cpp @@ -641,21 +641,11 @@ void QLayout::childEvent(QChildEvent *e) if (!d->enabled) return; - if (e->type() == QEvent::ChildRemoved) { - QChildEvent *c = (QChildEvent*)e; - int i = 0; - - QLayoutItem *item; - while ((item = itemAt(i))) { - if (item == static_cast<QLayout*>(c->child())) { - takeAt(i); - invalidate(); - break; - } else { - ++i; - } - } - } + if (e->type() != QEvent::ChildRemoved) + return; + + if (QLayout *childLayout = qobject_cast<QLayout *>(e->child())) + removeItem(childLayout); } /*! @@ -766,13 +756,10 @@ QSize QLayout::totalMaximumSize() const QLayout::~QLayout() { Q_D(QLayout); - /* - This function may be called during the QObject destructor, - when the parent no longer is a QWidget. - */ - if (d->topLevel && parent() && parent()->isWidgetType() && - ((QWidget*)parent())->layout() == this) - ((QWidget*)parent())->d_func()->layout = 0; + if (d->topLevel && parent() && parent()->isWidgetType() && parentWidget()->layout() == this) + parentWidget()->d_func()->layout = 0; + else if (QLayout *parentLayout = qobject_cast<QLayout *>(parent())) + parentLayout->removeItem(this); } diff --git a/src/widgets/kernel/qsizepolicy.h b/src/widgets/kernel/qsizepolicy.h index 6cb4e147e9..dba742dec5 100644 --- a/src/widgets/kernel/qsizepolicy.h +++ b/src/widgets/kernel/qsizepolicy.h @@ -159,10 +159,11 @@ public: Q_DECL_RELAXED_CONSTEXPR void setRetainSizeWhenHidden(bool retainSize) Q_DECL_NOTHROW { bits.retainSizeWhenHidden = retainSize; } Q_DECL_RELAXED_CONSTEXPR void transpose() Q_DECL_NOTHROW { *this = transposed(); } + Q_REQUIRED_RESULT #ifndef Q_QDOC QT_SIZEPOLICY_CONSTEXPR_AND_UNIFORM_INIT #endif - QSizePolicy transposed() const Q_DECL_NOTHROW Q_REQUIRED_RESULT + QSizePolicy transposed() const Q_DECL_NOTHROW { return QSizePolicy(bits.transposed()); } diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index e26e9af2c5..7112e1c783 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -340,10 +340,6 @@ QWidgetPrivate::~QWidgetPrivate() if (extra) deleteExtra(); - -#ifndef QT_NO_GRAPHICSEFFECT - delete graphicsEffect; -#endif //QT_NO_GRAPHICSEFFECT } /*! @@ -1717,6 +1713,10 @@ QWidget::~QWidget() } QT_CATCH(const std::exception&) { // if this fails we can't do anything about it but at least we are not allowed to throw. } + +#if QT_CONFIG(graphicseffect) + delete d->graphicsEffect; +#endif } int QWidgetPrivate::instanceCounter = 0; // Current number of widget instances |