diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-01-16 01:22:45 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-01-16 01:22:45 +0100 |
commit | 7075e291998612a3c0a530bb37a515dd07739e28 (patch) | |
tree | 4e1992498d82ee3f6f92fd6d42754c92928dd581 /src/widgets/kernel/qwidget.cpp | |
parent | 1161a8a62907796ea45b1877bec31e66aeef77f6 (diff) | |
parent | 3d9a40038f01bc2a3df0027a9be04e7fa3ce3850 (diff) |
Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
src/widgets/styles/qstyleanimation.cpp
Change-Id: Iae570895be6544de80f9c1ec309d1a08c59daff8
Diffstat (limited to 'src/widgets/kernel/qwidget.cpp')
-rw-r--r-- | src/widgets/kernel/qwidget.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index ecf73ee777..c4ea213f29 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -2080,8 +2080,15 @@ void QWidgetPrivate::setOpaque(bool opaque) void QWidgetPrivate::updateIsTranslucent() { Q_Q(QWidget); - if (QWindow *window = q->windowHandle()) - window->setOpacity(isOpaque ? qreal(1.0) : qreal(0.0)); + if (QWindow *window = q->windowHandle()) { + QSurfaceFormat format = window->format(); + const int oldAlpha = format.alphaBufferSize(); + const int newAlpha = q->testAttribute(Qt::WA_TranslucentBackground)? 8 : 0; + if (oldAlpha != newAlpha) { + format.setAlphaBufferSize(newAlpha); + window->setFormat(format); + } + } } static inline void fillRegion(QPainter *painter, const QRegion &rgn, const QBrush &brush) |