summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/ios
diff options
context:
space:
mode:
authorRichard Moe Gustavsen <richard.gustavsen@digia.com>2012-12-19 11:05:27 +0100
committerTor Arne Vestbø <tor.arne.vestbo@digia.com>2013-02-27 23:55:59 +0100
commit1ff571142d5c06e91a1698d635ab092bbcf393cf (patch)
treeef7ef37043a99c139b995f6ba49755cd98a3f58a /src/plugins/platforms/ios
parent646b1fd2b65f42327ff81b92ead96c634bec6468 (diff)
iOS: activate next window when active window hides
Since the OS does not handle window management for us, we need to handle this ourselves. So when a QWindow is closed or hidden, we transfer activation to the top-most visible window. This will fix application unresponsive after closing a dialog. Change-Id: I83f836ebafa71edca5ab5ae3a2bdba7cd1decbc1 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Diffstat (limited to 'src/plugins/platforms/ios')
-rw-r--r--src/plugins/platforms/ios/qioswindow.mm16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/plugins/platforms/ios/qioswindow.mm b/src/plugins/platforms/ios/qioswindow.mm
index d79c1de461..53da97e12d 100644
--- a/src/plugins/platforms/ios/qioswindow.mm
+++ b/src/plugins/platforms/ios/qioswindow.mm
@@ -260,7 +260,21 @@ QIOSWindow::~QIOSWindow()
void QIOSWindow::setVisible(bool visible)
{
QPlatformWindow::setVisible(visible);
- [m_view setHidden:!visible];
+ m_view.hidden = !visible;
+
+ if (isQtApplication() && !visible) {
+ // Activate top-most visible QWindow:
+ NSArray *subviews = rootViewController().view.subviews;
+ for (int i = int(subviews.count) - 1; i >= 0; --i) {
+ UIView *view = [subviews objectAtIndex:i];
+ if (!view.hidden) {
+ if (QWindow *window = view.qwindow) {
+ QWindowSystemInterface::handleWindowActivated(window);
+ break;
+ }
+ }
+ }
+ }
}
void QIOSWindow::setGeometry(const QRect &rect)