diff --git a/Engine/Source/Developer/SourceControl/Private/SourceControlCVars.cpp b/Engine/Source/Developer/SourceControl/Private/SourceControlCVars.cpp index f9884aed4253..182f9aa75c9e 100644 --- a/Engine/Source/Developer/SourceControl/Private/SourceControlCVars.cpp +++ b/Engine/Source/Developer/SourceControl/Private/SourceControlCVars.cpp @@ -15,4 +15,10 @@ namespace SourceControlCVars false, TEXT("Allows a SourceControl 'Revert' operation to be triggered from the SubmitWidget."), ECVF_Default); + + TAutoConsoleVariable CVarSourceControlEnableLoginDialogModal( + TEXT("SourceControl.LoginDialog.ForceModal"), + false, + TEXT("Forces the SourceControl 'Login Dialog' to always be a modal dialog."), + ECVF_Default); } \ No newline at end of file diff --git a/Engine/Source/Developer/SourceControl/Private/SourceControlCVars.h b/Engine/Source/Developer/SourceControl/Private/SourceControlCVars.h index d75d03a6326d..fa43ebda4e62 100644 --- a/Engine/Source/Developer/SourceControl/Private/SourceControlCVars.h +++ b/Engine/Source/Developer/SourceControl/Private/SourceControlCVars.h @@ -9,4 +9,5 @@ namespace SourceControlCVars { extern TAutoConsoleVariable CVarSourceControlEnableRevertFromSceneOutliner; extern TAutoConsoleVariable CVarSourceControlEnableRevertFromSubmitWidget; + extern TAutoConsoleVariable CVarSourceControlEnableLoginDialogModal; } \ No newline at end of file diff --git a/Engine/Source/Developer/SourceControl/Private/SourceControlModule.cpp b/Engine/Source/Developer/SourceControl/Private/SourceControlModule.cpp index 36ea73fb200f..298041d12cc3 100644 --- a/Engine/Source/Developer/SourceControl/Private/SourceControlModule.cpp +++ b/Engine/Source/Developer/SourceControl/Private/SourceControlModule.cpp @@ -7,6 +7,7 @@ #include "SourceControlHelpers.h" #include "SourceControlAssetDataCache.h" #include "SourceControlFileStatusMonitor.h" +#include "SourceControlCVars.h" #include "Misc/Paths.h" #if SOURCE_CONTROL_WITH_SLATE @@ -109,8 +110,15 @@ void FSourceControlModule::ShowLoginDialog(const FSourceControlLoginClosed& InOn // Get Active Provider Name ActiveProviderName = GetProvider().GetName().ToString(); + // if we are forcing a modal dialog, change the preference now + ELoginWindowMode::Type LoginWindowMode = InLoginWindowMode; + if(SourceControlCVars::CVarSourceControlEnableLoginDialogModal.GetValueOnAnyThread()) + { + LoginWindowMode = ELoginWindowMode::Modal; + } + // if we are showing a modal version of the dialog & a modeless version already exists, we must destroy the modeless dialog first - if(InLoginWindowMode == ELoginWindowMode::Modal && SourceControlLoginPtr.IsValid()) + if(LoginWindowMode == ELoginWindowMode::Modal && SourceControlLoginPtr.IsValid()) { // unhook the delegate so it doesn't fire in this case SourceControlLoginWindowPtr->SetOnWindowClosed(FOnWindowClosed()); @@ -157,7 +165,7 @@ void FSourceControlModule::ShowLoginDialog(const FSourceControlLoginClosed& InOn TSharedPtr RootWindow = FGlobalTabmanager::Get()->GetRootWindow(); if(RootWindow.IsValid()) { - if(InLoginWindowMode == ELoginWindowMode::Modal) + if(LoginWindowMode == ELoginWindowMode::Modal) { FSlateApplication::Get().AddModalWindow(SourceControlLoginWindowPtr.ToSharedRef(), RootWindow); } @@ -168,7 +176,7 @@ void FSourceControlModule::ShowLoginDialog(const FSourceControlLoginClosed& InOn } else { - if(InLoginWindowMode == ELoginWindowMode::Modal) + if(LoginWindowMode == ELoginWindowMode::Modal) { FSlateApplication::Get().AddModalWindow(SourceControlLoginWindowPtr.ToSharedRef(), RootWindow); }