From 0cd3416136210397ef4843224181445a81bdf0f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 28 Jul 2014 13:02:07 +0200 Subject: iOS: Simplify QWindow/UIView geometry mapping As we now have a root viewcontroller that always has a geometry that matches the containing UIWindow, we don't need to do any fancy calculations when mapping between the two. Change-Id: I08a7b9992be7b7238cbad2a2da20488bba1c0939 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/qioswindow.mm | 19 +------------------ src/plugins/platforms/ios/quiview.mm | 15 +-------------- 2 files changed, 2 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm index 2874d272fe..1c9fc6f28a 100644 --- a/src/plugins/platforms/ios/qioswindow.mm +++ b/src/plugins/platforms/ios/qioswindow.mm @@ -178,24 +178,7 @@ void QIOSWindow::applyGeometry(const QRect &rect) // The baseclass takes care of persisting this for us. QPlatformWindow::setGeometry(rect); - if (window()->isTopLevel()) { - // The QWindow is in QScreen coordinates, which maps to a possibly rotated root-view-controller. - // Since the root-view-controller might be translated in relation to the UIWindow, we need to - // check specifically for that and compensate. Also check if the root view has been scrolled - // as a result of the keyboard being open. - UIWindow *uiWindow = m_view.window; - UIView *rootView = uiWindow.rootViewController.view; - CGRect rootViewPositionInRelationToRootViewController = - [rootView convertRect:uiWindow.bounds fromView:uiWindow]; - - m_view.frame = CGRectOffset([m_view.superview convertRect:toCGRect(rect) fromView:rootView], - rootViewPositionInRelationToRootViewController.origin.x, - rootViewPositionInRelationToRootViewController.origin.y - + rootView.bounds.origin.y); - } else { - // Easy, in parent's coordinates - m_view.frame = toCGRect(rect); - } + m_view.frame = toCGRect(rect); // iOS will automatically trigger -[layoutSubviews:] for resize, // but not for move, so we force it just in case. diff --git a/src/plugins/platforms/ios/quiview.mm b/src/plugins/platforms/ios/quiview.mm index 3040e89864..444017f4c7 100644 --- a/src/plugins/platforms/ios/quiview.mm +++ b/src/plugins/platforms/ios/quiview.mm @@ -135,20 +135,7 @@ // from what we end up with after applying window constraints. QRect requestedGeometry = m_qioswindow->geometry(); - QRect actualGeometry; - if (m_qioswindow->window()->isTopLevel()) { - UIWindow *uiWindow = self.window; - UIView *rootView = uiWindow.rootViewController.view; - CGRect rootViewPositionInRelationToRootViewController = - [rootView convertRect:uiWindow.bounds fromView:uiWindow]; - - actualGeometry = fromCGRect(CGRectOffset([self.superview convertRect:self.frame toView:rootView], - -rootViewPositionInRelationToRootViewController.origin.x, - -rootViewPositionInRelationToRootViewController.origin.y - + rootView.bounds.origin.y)).toRect(); - } else { - actualGeometry = fromCGRect(self.frame).toRect(); - } + QRect actualGeometry = fromCGRect(self.frame).toRect(); // Persist the actual/new geometry so that QWindow::geometry() can // be queried on the resize event. -- cgit v1.2.3