summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/ios/qiosapplicationdelegate.mm18
-rw-r--r--src/plugins/platforms/ios/qioswindow.mm6
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()