|
|
@@ -30,6 +30,9 @@ namespace bs
|
|
|
mWindows[renderWindow->mWindowId] = renderWindow.get();
|
|
|
}
|
|
|
|
|
|
+ if (renderWindow->getProperties().isModal)
|
|
|
+ mModalWindowStack.push_back(renderWindow.get());
|
|
|
+
|
|
|
renderWindow->initialize();
|
|
|
|
|
|
return renderWindow;
|
|
|
@@ -52,6 +55,12 @@ namespace bs
|
|
|
mWindows.erase(window->mWindowId);
|
|
|
mDirtyProperties.erase(window);
|
|
|
}
|
|
|
+
|
|
|
+ {
|
|
|
+ auto iterFind = std::find(begin(mModalWindowStack), end(mModalWindowStack), window);
|
|
|
+ if(iterFind != mModalWindowStack.end())
|
|
|
+ mModalWindowStack.erase(iterFind);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void RenderWindowManager::notifyFocusReceived(ct::RenderWindow* coreWindow)
|
|
|
@@ -218,6 +227,14 @@ namespace bs
|
|
|
return windows;
|
|
|
}
|
|
|
|
|
|
+ RenderWindow* RenderWindowManager::getTopMostModal() const
|
|
|
+ {
|
|
|
+ if (mModalWindowStack.empty())
|
|
|
+ return nullptr;
|
|
|
+
|
|
|
+ return mModalWindowStack.back();
|
|
|
+ }
|
|
|
+
|
|
|
RenderWindow* RenderWindowManager::getNonCore(const ct::RenderWindow* window) const
|
|
|
{
|
|
|
auto iterFind = mWindows.find(window->mWindowId);
|