diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/platforms/ios/qiosapplicationdelegate.mm | 18 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qioswindow.mm | 6 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/platforms/ios/qiosapplicationdelegate.mm b/src/plugins/platforms/ios/qiosapplicationdelegate.mm index d88b2b83f1..6fed4c1a23 100644 --- a/src/plugins/platforms/ios/qiosapplicationdelegate.mm +++ b/src/plugins/platforms/ios/qiosapplicationdelegate.mm @@ -40,6 +40,7 @@ ****************************************************************************/ #import "qiosapplicationdelegate.h" +#include "qioswindow.h" #include <QtCore/QtCore> @implementation QIOSApplicationDelegate @@ -48,7 +49,24 @@ { Q_UNUSED(application) Q_UNUSED(launchOptions) + + // If this application delegate is instanciated, it means that + // this plugin also created UIApplication. We then also create a + // window with a view controller, and set all QWindow views + // as children of the controller view: self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + UIViewController *controller = [[UIViewController alloc] init]; + self.window.rootViewController = controller; + controller.view = [[UIView alloc] init]; + + QWindowList windows = QGuiApplication::topLevelWindows(); + for (int i=0; i<windows.size(); ++i) { + if (QIOSWindow *w = static_cast<QIOSWindow *>(windows[i]->handle())) { + UIView *winView = w->nativeView(); + if (winView && !winView.superview) + [controller.view addSubview:winView]; + } + } // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 46612ae699..2888228f18 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -42,6 +42,7 @@ #include "qioswindow.h" #include "qioscontext.h" #include "qiosscreen.h" +#include "qiosapplicationdelegate.h" #import <QuartzCore/CAEAGLLayer.h> @@ -170,6 +171,11 @@ QIOSWindow::QIOSWindow(QWindow *window) : QPlatformWindow(window) , m_view([[EAGLView alloc] init]) { + UIApplication *uiApplication = [UIApplication sharedApplication]; + if (uiApplication) { + if ([uiApplication.delegate isMemberOfClass:[QIOSApplicationDelegate class]]) + [uiApplication.delegate.window.rootViewController.view addSubview:m_view]; + } } QIOSWindow::~QIOSWindow() |