Windows: Add a workaround for render-to-texture widgets for translucent windows

Do not attempt to switch from translucent GL windows (emulated by DWM blur
behind) to translucent raster windows (using layered windows) as
this produces warnings from UpdateLayeredWindowIndirect() failing.

Task-number: QTBUG-54734
Change-Id: Ie05126c5cb091a00f17b88a74b287c90aa2dfebd
Reviewed-by: Joni Poikelin <joni.poikelin@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
This commit is contained in:
Friedemann Kleint 2016-07-14 16:19:42 +02:00
parent 34de4f6a15
commit 89765ced6e

View File

@ -1018,9 +1018,11 @@ static QPlatformTextureList *widgetTexturesFor(QWidget *tlw, QWidget *widget)
// The Windows compositor handles fullscreen OpenGL window specially. Besides
// having trouble with popups, it also has issues with flip-flopping between
// OpenGL-based and normal flushing. Therefore, stick with GL for fullscreen
// windows. (QTBUG-53515)
// windows (QTBUG-53515). Similary, translucent windows should not switch to
// layered native windows (QTBUG-54734).
#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) && !defined(Q_OS_WINCE)
|| tlw->windowState().testFlag(Qt::WindowFullScreen)
|| tlw->testAttribute(Qt::WA_TranslucentBackground)
#endif
)
{