Fix bug on X11 with WA_TranslucentBackground and native child windows.
The native child windows need to inherit the parent's visual in order to have a translucent background as well. Surface with type QSurface::OpenGLSurface should not be forced to use the parent window's visual - the parent visual for instance, might not even be GL capable. Changing WA_TranslucentBackground during runtime is not supported, for two reasons: 1) Other platform plugins seem not to support it 2) It would require recreating X windows. Task-number: QTBUG-29625 Change-Id: Ic1474dd2de99069027481c7db6bf865f9b8d616d Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
This commit is contained in:
parent
eb5c0f4b12
commit
b088e4827f
@ -280,8 +280,12 @@ void QXcbWindow::create()
|
||||
if (parent()) {
|
||||
xcb_parent_id = static_cast<QXcbWindow *>(parent())->xcb_window();
|
||||
m_embedded = parent()->window()->type() == Qt::ForeignWindow;
|
||||
}
|
||||
|
||||
QSurfaceFormat parentFormat = parent()->window()->requestedFormat();
|
||||
if (window()->surfaceType() != QSurface::OpenGLSurface && parentFormat.hasAlpha()) {
|
||||
window()->setFormat(parentFormat);
|
||||
}
|
||||
}
|
||||
m_format = window()->requestedFormat();
|
||||
|
||||
#if (defined(XCB_USE_GLX) || defined(XCB_USE_EGL)) && defined(XCB_USE_XLIB)
|
||||
|
@ -118,11 +118,12 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
|
||||
win->resize(q->size());
|
||||
win->setScreen(QGuiApplication::screens().value(topData()->screenIndex, 0));
|
||||
|
||||
if (q->testAttribute(Qt::WA_TranslucentBackground)) {
|
||||
QSurfaceFormat format;
|
||||
QSurfaceFormat format = win->requestedFormat();
|
||||
if ((flags & Qt::Window) && win->surfaceType() != QSurface::OpenGLSurface
|
||||
&& q->testAttribute(Qt::WA_TranslucentBackground)) {
|
||||
format.setAlphaBufferSize(8);
|
||||
win->setFormat(format);
|
||||
}
|
||||
win->setFormat(format);
|
||||
|
||||
if (QWidget *nativeParent = q->nativeParentWidget()) {
|
||||
if (nativeParent->windowHandle()) {
|
||||
|
Loading…
Reference in New Issue
Block a user