ShowWidget

ShowWidget

#Overview

name: ShowWidget

The value of this variable can be defined or overridden in .ini config files. 1 .ini config file referencing this setting variable.

It is referenced in 23 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of ShowWidget is to control the visibility of a widget in various viewport contexts within Unreal Engine 5. This setting is primarily used in editor and debug scenarios to toggle the display of UI elements or tools within a viewport.

ShowWidget is utilized across several Unreal Engine subsystems and modules, including:

  1. Level Editor
  2. Sequencer
  3. Niagara (FX system)
  4. Hair Strands Editor
  5. Display Cluster Configurator
  6. UV Editor
  7. Viewport Interaction system

The value of this variable is typically set through function calls, such as ShowWidget(bool bShow), which allows developers to programmatically control widget visibility. It’s often toggled when switching between different view modes or editor states.

ShowWidget interacts with other variables and flags, such as:

  1. bShowWidget (the actual boolean storage for the setting)
  2. EngineShowFlags (for controlling various rendering features)
  3. ViewMode settings

Developers should be aware of the following when using ShowWidget:

  1. It affects the visibility of editor widgets, which can impact user interaction with the viewport.
  2. It’s often toggled when entering or exiting game view mode.
  3. Some systems automatically manage this setting based on the current editor state.

Best practices for using ShowWidget include:

  1. Ensure proper state management when switching between different viewport modes.
  2. Consider the impact on user experience when hiding or showing widgets.
  3. Use in conjunction with other viewport and engine show flags for consistent behavior.
  4. Remember to restore the widget visibility when exiting special modes or states.

By carefully managing the ShowWidget setting, developers can create more intuitive and clean editor interfaces while still providing necessary tools and information when needed.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:496, section: [FEditorModeTools]

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Plugins/Editor/UVEditor/Source/UVEditor/Private/UVEditor2DViewportClient.cpp:151

Scope (from outer to inner):

file
function     FUVEditor2DViewportClient::FUVEditor2DViewportClient

Source code excerpt:

	, ViewportButtonsAPI(ViewportButtonsAPIIn), UVTool2DViewportAPI(UVTool2DViewportAPIIn)
{
	ShowWidget(false);

	// Don't draw the little XYZ drawing in the corner.
	bDrawAxes = false;

	// We want our near clip plane to be quite close so that we can zoom in further.
	OverrideNearClipPlane(KINDA_SMALL_NUMBER);

#Loc: <Workspace>/Engine/Plugins/Experimental/Avalanche/Source/AvalancheLevelViewport/Private/Widgets/SAvaLevelViewportStatusBarButtons.cpp:1383

Scope (from outer to inner):

file
function     FReply SAvaLevelViewportStatusBarButtons::ToggleGameView

Source code excerpt:

		if (!bNewGameModeValue)
		{
			FrameAndClient.ViewportClient->ShowWidget(true);
		}

		return FReply::Handled();
	}

	return FReply::Unhandled();

#Loc: <Workspace>/Engine/Plugins/FX/Niagara/Source/NiagaraEditor/Private/Customizations/SimCache/NiagaraRenderTargetVolumeSimCacheVisualizer.cpp:189

Scope (from outer to inner):

file
function     FNiagaraVolumeTextureViewportClient::FNiagaraVolumeTextureViewportClient

Source code excerpt:

	DrawHelper.GridColorMinor = FColor(64,64,64);
	DrawHelper.PerspectiveGridSize = UE_OLD_HALF_WORLD_MAX1;
	//ShowWidget(false);

	SetViewMode(VMI_Lit);
	
	EngineShowFlags.SetSnap(0);

	OverrideNearClipPlane(1.0f);

#Loc: <Workspace>/Engine/Plugins/FX/Niagara/Source/NiagaraEditor/Private/Widgets/AssetBrowser/NiagaraAssetBrowserPreview.cpp:55

Scope (from outer to inner):

file
function     FNiagaraAssetPreviewViewportClient::FNiagaraAssetPreviewViewportClient

Source code excerpt:

	DrawHelper.GridColorMinor = FColor(64,64,64);
	DrawHelper.PerspectiveGridSize = UE_OLD_HALF_WORLD_MAX1;
	ShowWidget(false);

	FEditorViewportClient::SetViewMode(VMI_Lit);

	EngineShowFlags.SetSnap(0);

	OverrideNearClipPlane(1.0f);

#Loc: <Workspace>/Engine/Plugins/FX/Niagara/Source/NiagaraEditor/Private/Widgets/SNiagaraSimCacheViewport.cpp:48

Scope (from outer to inner):

file
function     FNiagaraSimCacheViewportClient::FNiagaraSimCacheViewportClient

Source code excerpt:

	DrawHelper.GridColorMinor = FColor(64,64,64);
	DrawHelper.PerspectiveGridSize = UE_OLD_HALF_WORLD_MAX1;
	ShowWidget(false);

	FEditorViewportClient::SetViewMode(VMI_Lit);

	EngineShowFlags.SetSnap(0);

	OverrideNearClipPlane(1.0f);

#Loc: <Workspace>/Engine/Plugins/FX/Niagara/Source/NiagaraEditor/Private/Widgets/SNiagaraSystemViewport.cpp:109

Scope (from outer to inner):

file
function     FNiagaraSystemViewportClient::FNiagaraSystemViewportClient

Source code excerpt:

	DrawHelper.GridColorMinor = FColor(64,64,64);
	DrawHelper.PerspectiveGridSize = UE_OLD_HALF_WORLD_MAX1;
	ShowWidget(false);

	FEditorViewportClient::SetViewMode(VMI_Lit);

	EngineShowFlags.SetSnap(0);

	OverrideNearClipPlane(1.0f);

#Loc: <Workspace>/Engine/Plugins/FX/Niagara/Source/NiagaraEditor/Private/Widgets/SNiagaraSystemViewport.cpp:1253

Scope (from outer to inner):

file
function     FNiagaraBaselineViewportClient::FNiagaraBaselineViewportClient

Source code excerpt:

	DrawHelper.GridColorMinor = FColor(64,64,64);
	DrawHelper.PerspectiveGridSize = UE_OLD_HALF_WORLD_MAX1;
	ShowWidget(false);

	SetViewMode(VMI_Lit);
	
	EngineShowFlags.SetSnap(0);

	OverrideNearClipPlane(1.0f);

#Loc: <Workspace>/Engine/Plugins/Runtime/HairStrands/Source/HairStrandsEditor/Private/Widgets/SGroomEditorViewport.cpp:64

Scope (from outer to inner):

file
function     FGroomEditorViewportClient::FGroomEditorViewportClient

Source code excerpt:

	DrawHelper.GridColorMinor = FColor(64,64,64);
	DrawHelper.PerspectiveGridSize = UE_OLD_HALF_WORLD_MAX1;
	ShowWidget(false);

	SetViewMode(VMI_Lit);
	
	EngineShowFlags.DisableAdvancedFeatures();
	EngineShowFlags.SetSnap(0);
	EngineShowFlags.SetTemporalAA(true);

#Loc: <Workspace>/Engine/Plugins/Runtime/nDisplay/Source/DisplayClusterConfigurator/Private/Views/Viewport/DisplayClusterConfiguratorSCSEditorViewportClient.cpp:59

Scope (from outer to inner):

file
function     FDisplayClusterConfiguratorSCSEditorViewportClient::FDisplayClusterConfiguratorSCSEditorViewportClient

Source code excerpt:

	const UDisplayClusterConfiguratorEditorSettings* DisplayClusterSettings = GetDefault<UDisplayClusterConfiguratorEditorSettings>();
	
	ShowWidget(true);

	SetViewMode(VMI_Lit);

	SyncEditorSettings();

	EngineShowFlags.AntiAliasing = DisplayClusterSettings->bEditorEnableAA;

#Loc: <Workspace>/Engine/Plugins/Runtime/nDisplay/Source/DisplayClusterLightCardEditor/Private/Viewport/DisplayClusterLightCardEditorViewportClient.cpp:113

Scope (from outer to inner):

file
function     FDisplayClusterLightCardEditorViewportClient::FDisplayClusterLightCardEditorViewportClient

Source code excerpt:

	Widget->SetSnapEnabled(true);
	
	ShowWidget(true);

	SetViewMode(VMI_Unlit);
	
	ViewportType = LVT_Perspective;
	bSetListenerPosition = false;
	bUseNumpadCameraControl = false;

#Loc: <Workspace>/Engine/Source/Editor/LevelEditor/Private/SLevelViewport.cpp:2057

Scope (from outer to inner):

file
function     void SLevelViewport::ToggleGameView

Source code excerpt:

			// LevelViewportClient->bShowWidget is set to "false" when entering game mode
			// Need to turn it back to "true" when exiting game mode
			LevelViewportClient->ShowWidget(true);
		}
	}
}

bool SLevelViewport::CanToggleGameView() const
{

#Loc: <Workspace>/Engine/Source/Editor/LevelEditor/Private/SLevelViewport.cpp:2858

Scope (from outer to inner):

file
function     void SLevelViewport::OnActorSelectionChanged

Source code excerpt:


		// In game mode, selecting any actor should make LevelViewportClient->bShowWidget be "true"
		LevelViewportClient->ShowWidget(true);
		LevelViewportClient->EngineShowFlags.SetSelection(true);
		LevelViewportClient->EngineShowFlags.SetSelectionOutline(GetDefault<ULevelEditorViewportSettings>()->bUseSelectionOutline);
	}

	bNeedToUpdatePreviews = true;
}

#Loc: <Workspace>/Engine/Source/Editor/Sequencer/Private/Sequencer.cpp:4647

Scope (from outer to inner):

file
function     void FSequencer::FCachedViewState::RestoreViewState

Source code excerpt:

				if (GameViewStates[Index].Value == false)
				{
					LevelVC->ShowWidget(true);
				}
			}
		}
	}
	GameViewStates.Empty();
}

#Loc: <Workspace>/Engine/Source/Editor/Sequencer/Private/Sequencer.cpp:5862

Scope (from outer to inner):

file
function     void FSequencer::SaveCurrentMovieScene

Source code excerpt:

		if (bIsInGameView == false)
		{
			GCurrentLevelEditingViewportClient->ShowWidget(true);
		}
		Viewport->Draw();
	}

	OnPreSaveEvent.Broadcast(*this);

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/EditorModeManager.cpp:126

Scope (from outer to inner):

file
function     void FEditorModeTools::LoadConfig

Source code excerpt:

void FEditorModeTools::LoadConfig(void)
{
	GConfig->GetBool(TEXT("FEditorModeTools"),TEXT("ShowWidget"),bShowWidget,
		GEditorPerProjectIni);

	static constexpr bool bGetRawValue = true;
	int32 CoordSystemAsInt = (int32)GetCoordSystem(bGetRawValue);
	GConfig->GetInt(TEXT("FEditorModeTools"),TEXT("CoordSystem"), CoordSystemAsInt,
		GEditorPerProjectIni);

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/EditorModeManager.cpp:151

Scope (from outer to inner):

file
function     void FEditorModeTools::SaveConfig

Source code excerpt:

void FEditorModeTools::SaveConfig(void)
{
	GConfig->SetBool(TEXT("FEditorModeTools"), TEXT("ShowWidget"), bShowWidget, GEditorPerProjectIni);

	static constexpr bool bGetRawValue = true;
	GConfig->SetInt(TEXT("FEditorModeTools"), TEXT("CoordSystem"), (int32)GetCoordSystem(bGetRawValue), GEditorPerProjectIni);

	SaveWidgetSettings();
}

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/EditorViewportClient.cpp:5362

Scope (from outer to inner):

file
function     void FEditorViewportClient::ShowWidget

Source code excerpt:



void FEditorViewportClient::ShowWidget(const bool bShow)
{
	bShowWidget = bShow;
}

void FEditorViewportClient::MoveViewportCamera(const FVector& InDrag, const FRotator& InRot, bool bDollyCamera)
{

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/EditorViewportClient.cpp:6387

Scope (from outer to inner):

file
function     void FEditorViewportClient::SetGameView

Source code excerpt:

		EngineShowFlags.SetModeWidgets(true); // Enable "Mode Widgets" by default when entering game mode
		EngineShowFlags.SetSelection(false);
		ShowWidget(false); // Hide the widget
	}

	EngineShowFlags.SetSelectionOutline(bGameViewEnable ? false : GetDefault<ULevelEditorViewportSettings>()->bUseSelectionOutline);

	ApplyViewMode(GetViewMode(), IsPerspective(), EngineShowFlags);

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Public/EditorViewportClient.h:1306

Scope (from outer to inner):

file
class        class FEditorViewportClient : public FCommonViewportClient, public FViewElementDrawer, public FGCObject

Source code excerpt:


	/** Show or hide the widget. */
	UNREALED_API void ShowWidget(const bool bShow);
	UNREALED_API bool GetShowWidget() const { return bShowWidget; }

	/**
	 * Returns whether or not the flight camera is active
	 *
	 * @return true if the flight camera is active

#Loc: <Workspace>/Engine/Source/Editor/ViewportInteraction/Private/ViewportWorldInteraction.cpp:370

Scope (from outer to inner):

file
function     void UViewportWorldInteraction::Shutdown

Source code excerpt:

	if (DefaultOptionalViewportClient != nullptr)
	{
		DefaultOptionalViewportClient->ShowWidget(true);
		DefaultOptionalViewportClient = nullptr;
	}

	AppTimeEntered = FTimespan::Zero();

	for ( UViewportInteractor* Interactor : Interactors )

#Loc: <Workspace>/Engine/Source/Editor/ViewportInteraction/Private/ViewportWorldInteraction.cpp:561

Scope (from outer to inner):

file
function     void UViewportWorldInteraction::SetDefaultOptionalViewportClient

Source code excerpt:

	{
		DefaultOptionalViewportClient = InEditorViewportClient.Get();
		DefaultOptionalViewportClient->ShowWidget(false);
	}
}

void UViewportWorldInteraction::PairInteractors( UViewportInteractor* FirstInteractor, UViewportInteractor* SecondInteractor )
{
	FirstInteractor->SetOtherInteractor( SecondInteractor );

#Loc: <Workspace>/Engine/Source/Editor/ViewportInteraction/Private/ViewportWorldInteraction.cpp:3740

Scope (from outer to inner):

file
function     void UViewportWorldInteraction::UseLegacyInteractions

Source code excerpt:

	if (DefaultOptionalViewportClient != nullptr)
	{
		DefaultOptionalViewportClient->ShowWidget(true);
	}
	for (UViewportInteractor* Interactor : Interactors)
	{
		Interactor->Shutdown();
		Interactor->MarkAsGarbage();
	}

#Loc: <Workspace>/Engine/Source/Editor/ViewportInteraction/Private/ViewportWorldInteraction.cpp:3797

Scope (from outer to inner):

file
function     void UViewportWorldInteraction::UseVWInteractions

Source code excerpt:

	if (DefaultOptionalViewportClient != nullptr)
	{
		DefaultOptionalViewportClient->ShowWidget(false);
	}

	// Start with the default transformer
	SetTransformer(nullptr);

	// Spawn the transform gizmo