summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorRichard Moe Gustavsen <richard.gustavsen@digia.com>2012-12-19 09:15:27 +0100
committerTor Arne Vestbø <tor.arne.vestbo@digia.com>2013-02-27 23:55:58 +0100
commit2dea9fdc3a04ccc9759427c6450e88cb78003381 (patch)
tree48760334249361e3deae29a3cbf245e6b8f6f407 /src/plugins/platforms
parentac0f6d1a349748ff82e1710c33e91e6b3f179a58 (diff)
iOS: add convenience function to get to the root QIOSViewController
It seems that we need to access our view controller from many places, and the syntax to do so is tricky to remember. So lets just add it to our global functions, with the added bonus of a using a little cache. Note: many of these functions could be made inline, but since one concern of the plugin will be the end size of the app, I prefer to trade size for speed at this point. We can always change this later. Change-Id: I578ea9ae8218d23d635b7728a930763ca53c4eaa Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/ios/qiosglobal.h4
-rw-r--r--src/plugins/platforms/ios/qiosglobal.mm8
-rw-r--r--src/plugins/platforms/ios/qiosscreen.mm4
-rw-r--r--src/plugins/platforms/ios/qioswindow.mm2
4 files changed, 15 insertions, 3 deletions
diff --git a/src/plugins/platforms/ios/qiosglobal.h b/src/plugins/platforms/ios/qiosglobal.h
index 849d9bce37..86377e7c64 100644
--- a/src/plugins/platforms/ios/qiosglobal.h
+++ b/src/plugins/platforms/ios/qiosglobal.h
@@ -47,9 +47,13 @@
#import <QtGui/qguiapplication.h>
#import "qiosscreen.h"
+@class QIOSViewController;
+
QT_BEGIN_NAMESPACE
bool isQtApplication();
+QIOSViewController *rootViewController();
+
CGRect toCGRect(const QRect &rect);
QRect fromCGRect(const CGRect &rect);
Qt::ScreenOrientation toQtScreenOrientation(UIDeviceOrientation uiDeviceOrientation);
diff --git a/src/plugins/platforms/ios/qiosglobal.mm b/src/plugins/platforms/ios/qiosglobal.mm
index 69547fb2a1..cf69d8fdef 100644
--- a/src/plugins/platforms/ios/qiosglobal.mm
+++ b/src/plugins/platforms/ios/qiosglobal.mm
@@ -41,6 +41,7 @@
#include "qiosglobal.h"
#include "qiosapplicationdelegate.h"
+#include "qiosviewcontroller.h"
#include <QtGui/qscreen.h>
QT_BEGIN_NAMESPACE
@@ -57,6 +58,13 @@ bool isQtApplication()
return isQt;
}
+QIOSViewController *rootViewController()
+{
+ static QIOSViewController *c = isQtApplication() ?
+ static_cast<QIOSViewController *>([UIApplication sharedApplication].delegate.window.rootViewController) : nil;
+ return c;
+}
+
CGRect toCGRect(const QRect &rect)
{
return CGRectMake(rect.x(), rect.y(), rect.width(), rect.height());
diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm
index a0403a0d69..5905f1630e 100644
--- a/src/plugins/platforms/ios/qiosscreen.mm
+++ b/src/plugins/platforms/ios/qiosscreen.mm
@@ -44,6 +44,7 @@
#include "qioswindow.h"
#include <qpa/qwindowsysteminterface.h>
#include "qiosapplicationdelegate.h"
+#include "qiosviewcontroller.h"
#include <sys/sysctl.h>
@@ -141,8 +142,7 @@ QIOSScreen::QIOSScreen(unsigned int screenIndex)
if (isQtApplication()) {
// When in a non-mixed environment, let QScreen follow the current interface orientation:
- UIViewController *controller = [UIApplication sharedApplication].delegate.window.rootViewController;
- setPrimaryOrientation(toQtScreenOrientation(controller.interfaceOrientation));
+ setPrimaryOrientation(toQtScreenOrientation(rootViewController().interfaceOrientation));
}
[pool release];
diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm
index af184e2e7b..71816f7d94 100644
--- a/src/plugins/platforms/ios/qioswindow.mm
+++ b/src/plugins/platforms/ios/qioswindow.mm
@@ -197,7 +197,7 @@ QIOSWindow::QIOSWindow(QWindow *window)
, m_devicePixelRatio(1.0)
{
if (isQtApplication())
- [[UIApplication sharedApplication].delegate.window.rootViewController.view addSubview:m_view];
+ [rootViewController().view addSubview:m_view];
setWindowState(window->windowState());