diff options
author | Richard Moe Gustavsen <richard.gustavsen@digia.com> | 2012-12-19 11:05:27 +0100 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@digia.com> | 2013-02-27 23:55:59 +0100 |
commit | 1ff571142d5c06e91a1698d635ab092bbcf393cf (patch) | |
tree | ef7ef37043a99c139b995f6ba49755cd98a3f58a /src/plugins/platforms/ios | |
parent | 646b1fd2b65f42327ff81b92ead96c634bec6468 (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.mm | 16 |
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) |