|
@@ -83,11 +83,28 @@ namespace O3DE::ProjectManager
|
|
|
|
|
|
bool ScreensCtrl::ForceChangeToScreen(ProjectManagerScreen screen, bool addVisit)
|
|
|
{
|
|
|
+ ScreenWidget* newScreen = nullptr;
|
|
|
+
|
|
|
const auto iterator = m_screenMap.find(screen);
|
|
|
if (iterator != m_screenMap.end())
|
|
|
+ {
|
|
|
+ newScreen = iterator.value();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // Check if screen is contained by another screen
|
|
|
+ for (ScreenWidget* checkingScreen : m_screenMap)
|
|
|
+ {
|
|
|
+ if (checkingScreen->ContainsScreen(screen))
|
|
|
+ {
|
|
|
+ newScreen = checkingScreen;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (newScreen)
|
|
|
{
|
|
|
ScreenWidget* currentScreen = GetCurrentScreen();
|
|
|
- ScreenWidget* newScreen = iterator.value();
|
|
|
|
|
|
if (currentScreen != newScreen)
|
|
|
{
|
|
@@ -109,6 +126,11 @@ namespace O3DE::ProjectManager
|
|
|
|
|
|
newScreen->NotifyCurrentScreen();
|
|
|
|
|
|
+ if (iterator == m_screenMap.end())
|
|
|
+ {
|
|
|
+ newScreen->GoToScreen(screen);
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
@@ -116,7 +138,7 @@ namespace O3DE::ProjectManager
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- bool ScreensCtrl::GotoPreviousScreen()
|
|
|
+ bool ScreensCtrl::GoToPreviousScreen()
|
|
|
{
|
|
|
if (!m_screenVisitOrder.isEmpty())
|
|
|
{
|
|
@@ -171,7 +193,7 @@ namespace O3DE::ProjectManager
|
|
|
m_screenMap.insert(screen, newScreen);
|
|
|
|
|
|
connect(newScreen, &ScreenWidget::ChangeScreenRequest, this, &ScreensCtrl::ChangeToScreen);
|
|
|
- connect(newScreen, &ScreenWidget::GotoPreviousScreenRequest, this, &ScreensCtrl::GotoPreviousScreen);
|
|
|
+ connect(newScreen, &ScreenWidget::GoToPreviousScreenRequest, this, &ScreensCtrl::GoToPreviousScreen);
|
|
|
connect(newScreen, &ScreenWidget::ResetScreenRequest, this, &ScreensCtrl::ResetScreen);
|
|
|
connect(newScreen, &ScreenWidget::NotifyCurrentProject, this, &ScreensCtrl::NotifyCurrentProject);
|
|
|
connect(newScreen, &ScreenWidget::NotifyBuildProject, this, &ScreensCtrl::NotifyBuildProject);
|