diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-02-06 11:38:26 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-02-06 14:21:44 +0100 |
commit | b3820b12fbded1f173837eee7f7559783e92b46b (patch) | |
tree | c53fa9b6b9b20d28be22baf31abe6be2bc6c459c /src/plugins/platforms/windows/qwindowsbackingstore.cpp | |
parent | ba2a0d652c3366638fb18218b632de8512fb1c9c (diff) |
Windows: Fix setting of layered windows.
The setting/clearing of WS_EX_LAYERED in the backing store
interfered with the setting/clearing in setWindowOpacity
when combining translucent and non-opaque windows.
Introduce QWindowsWindow::setWindowLayered to handle
it consistently.
Task-number: QTBUG-29010
Task-number: QTBUG-28531
Change-Id: Ib6e2740aae417bdf7b3db9ef7deb646be98df1d6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsbackingstore.cpp')
-rw-r--r-- | src/plugins/platforms/windows/qwindowsbackingstore.cpp | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/src/plugins/platforms/windows/qwindowsbackingstore.cpp b/src/plugins/platforms/windows/qwindowsbackingstore.cpp index 792eaf0fdc..0a7ff61b7b 100644 --- a/src/plugins/platforms/windows/qwindowsbackingstore.cpp +++ b/src/plugins/platforms/windows/qwindowsbackingstore.cpp @@ -88,11 +88,7 @@ void QWindowsBackingStore::flush(QWindow *window, const QRegion ®ion, QWindowsWindow *rw = QWindowsWindow::baseWindowOf(window); #ifndef Q_OS_WINCE - if (rw->format().hasAlpha() && (window->flags() & Qt::FramelessWindowHint)) { - const long wl = GetWindowLong(rw->handle(), GWL_EXSTYLE); - if ((wl & WS_EX_LAYERED) == 0) - SetWindowLong(rw->handle(), GWL_EXSTYLE, wl | WS_EX_LAYERED); - + if (QWindowsWindow::setWindowLayered(rw->handle(), window->flags(), rw->format().hasAlpha(), rw->opacity())) { QRect r = window->frameGeometry(); QPoint frameOffset(window->frameMargins().left(), window->frameMargins().top()); QRect dirtyRect = br.translated(offset + frameOffset); |