21 auto allWindows = qGuiApp->allWindows();
22 auto qWindowIt = std::find_if(
23 allWindows.begin(), allWindows.end(), [&](QWindow *qWindow) {
24 auto *platformWindow = QOhosPlatformWindow::fromQWindowOrNull(qWindow);
25 return platformWindow !=
nullptr
26 && platformWindow->internalWindowId() == internalWindowId;
29 return qWindowIt != allWindows.end()
40 QWindow *qWindow,
const QOhosWindowProxy &windowProxy)
43 auto *platformWindow = QOhosPlatformWindow::fromQWindow(qWindow);
44 auto internalWindowId = platformWindow->internalWindowId();
46 bool internalWindowIdAdded =
false;
47 std::tie(std::ignore, internalWindowIdAdded) = m_jsWindowIdMap.insert({jsWindowId, internalWindowId});
49 bool qAbilityInstanceIdAdded =
false;
50 std::tie(std::ignore, qAbilityInstanceIdAdded) = m_qAbilityInstanceIdMap.emplace(
51 internalWindowId, windowProxy.qAbilityInstanceId());
53 if (internalWindowIdAdded != qAbilityInstanceIdAdded) {
54 qOhosReportFatalErrorAndAbort(
55 "%s: state inconsistency: internalWindowIdAdded: %d, qAbilityInstanceIdAdded: %d, InternalWindowId='%s', JsWindowId=%f",
56 Q_FUNC_INFO, internalWindowIdAdded, qAbilityInstanceIdAdded,
57 internalWindowId.toStdString().c_str(), jsWindowId.value());
60 return internalWindowIdAdded
61 ? QtOhos::makeDestroyNotifier([
this, jsWindowId, internalWindowId]() {
62 m_jsWindowIdMap.erase(jsWindowId);
63 m_qAbilityInstanceIdMap.erase(internalWindowId);
71 auto foundEntryIter = std::find_if(
72 m_jsWindowIdMap.begin(), m_jsWindowIdMap.end(),
73 [&](
const auto &entry) {
74 return entry.second == internalWindowId;
77 return foundEntryIter != m_jsWindowIdMap.end()
78 ? makeQOhosOptional(foundEntryIter->first)
79 : makeEmptyQOhosOptional();