Enable QWindowContainer on Android
[ChangeLog][Platform Specific Changes][Android] QWidget::createWindowContainer() is now supported on Android for embedding OpenGL-based QWindows into widget UIs. Task-number: QTBUG-59175 Change-Id: I84d3703bcd44c63b1fdfe6772b7f3de9d5c18ddf Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This commit is contained in:
parent
7a717aaf45
commit
2c9acfbec6
@ -237,6 +237,10 @@ QPlatformServices *QPlatformIntegration::services() const
|
|||||||
is required to have this capability.
|
is required to have this capability.
|
||||||
|
|
||||||
\value ApplicationIcon The platform supports setting the application icon. (since 5.5)
|
\value ApplicationIcon The platform supports setting the application icon. (since 5.5)
|
||||||
|
|
||||||
|
\value TopStackedNativeChildWindows The platform supports native child windows via
|
||||||
|
QWindowContainer without having to punch a transparent hole in the
|
||||||
|
backingstore. (since 5.10)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -260,7 +264,8 @@ QPlatformServices *QPlatformIntegration::services() const
|
|||||||
|
|
||||||
bool QPlatformIntegration::hasCapability(Capability cap) const
|
bool QPlatformIntegration::hasCapability(Capability cap) const
|
||||||
{
|
{
|
||||||
return cap == NonFullScreenWindows || cap == NativeWidgets || cap == WindowManagement;
|
return cap == NonFullScreenWindows || cap == NativeWidgets || cap == WindowManagement
|
||||||
|
|| cap == TopStackedNativeChildWindows;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPlatformPixmap *QPlatformIntegration::createPlatformPixmap(QPlatformPixmap::PixelType type) const
|
QPlatformPixmap *QPlatformIntegration::createPlatformPixmap(QPlatformPixmap::PixelType type) const
|
||||||
|
@ -99,7 +99,8 @@ public:
|
|||||||
RasterGLSurface,
|
RasterGLSurface,
|
||||||
AllGLFunctionsQueryable,
|
AllGLFunctionsQueryable,
|
||||||
ApplicationIcon,
|
ApplicationIcon,
|
||||||
SwitchableWidgetComposition
|
SwitchableWidgetComposition,
|
||||||
|
TopStackedNativeChildWindows
|
||||||
};
|
};
|
||||||
|
|
||||||
virtual ~QPlatformIntegration() { }
|
virtual ~QPlatformIntegration() { }
|
||||||
|
@ -233,6 +233,7 @@ bool QAndroidPlatformIntegration::hasCapability(Capability cap) const
|
|||||||
case ForeignWindows: return QtAndroid::activity();
|
case ForeignWindows: return QtAndroid::activity();
|
||||||
case ThreadedOpenGL: return !needsBasicRenderloopWorkaround() && QtAndroid::activity();
|
case ThreadedOpenGL: return !needsBasicRenderloopWorkaround() && QtAndroid::activity();
|
||||||
case RasterGLSurface: return QtAndroid::activity();
|
case RasterGLSurface: return QtAndroid::activity();
|
||||||
|
case TopStackedNativeChildWindows: return false;
|
||||||
default:
|
default:
|
||||||
return QPlatformIntegration::hasCapability(cap);
|
return QPlatformIntegration::hasCapability(cap);
|
||||||
}
|
}
|
||||||
|
@ -329,6 +329,19 @@ bool QWindowContainer::event(QEvent *e)
|
|||||||
e->accept();
|
e->accept();
|
||||||
return true;
|
return true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
case QEvent::Paint:
|
||||||
|
{
|
||||||
|
static bool needsPunch = !QGuiApplicationPrivate::platformIntegration()->hasCapability(
|
||||||
|
QPlatformIntegration::TopStackedNativeChildWindows);
|
||||||
|
if (needsPunch) {
|
||||||
|
QPainter p(this);
|
||||||
|
p.setCompositionMode(QPainter::CompositionMode_Source);
|
||||||
|
p.fillRect(rect(), Qt::transparent);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user