iOS: Guard against request for textInputView without focus window

Change-Id: I7b8df07fffef1cc948f6720685234540a20ccc81
Fixes: QTBUG-79316
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
This commit is contained in:
Tor Arne Vestbø 2019-12-02 13:33:30 +01:00
parent 438702ac5f
commit 9ac156c90b

View File

@ -781,12 +781,16 @@
- (UIView *)textInputView
{
auto *focusWindow = QGuiApplication::focusWindow();
if (!focusWindow)
return nil;
// iOS expects rects we return from other UITextInput methods
// to be relative to the view this method returns.
// Since QInputMethod returns rects relative to the top level
// QWindow, that is also the view we need to return.
Q_ASSERT(qApp->focusWindow()->handle());
QPlatformWindow *topLevel = qApp->focusWindow()->handle();
Q_ASSERT(focusWindow->handle());
QPlatformWindow *topLevel = focusWindow->handle();
while (QPlatformWindow *p = topLevel->parent())
topLevel = p;
return reinterpret_cast<UIView *>(topLevel->winId());