Why does clicking a widget pause the game?

There is a SlateThrottleManager that is per default set to allow throttling to keep the UI responsive under certain circumstances.

The code where the Tick block is happening:
EditorEngine.cpp

...
		if( FSlateThrottleManager::Get().IsAllowingExpensiveTasks() )
		{
			FKismetDebugUtilities::NotifyDebuggerOfStartOfGameFrame(EditorContext.World());
			EditorContext.World()->Tick(TickType, DeltaSeconds);
			bAWorldTicked = true;
			FKismetDebugUtilities::NotifyDebuggerOfEndOfGameFrame(EditorContext.World());
		}
...

The ThrottleManager constructor function

FSlateThrottleManager::FSlateThrottleManager( )
	: bShouldThrottle(1)
	, CVarAllowThrottle(TEXT("Slate.bAllowThrottling"), bShouldThrottle, TEXT("Allow Slate to throttle parts of the engine to ensure the UI is responsive") )
	, ThrottleCount(0)
{ }

That code tells us that there is a ConsoleVariable named “Slate.bAllowThrottling”.

So if you want to keep the world ticking, use the console and enter the command:

Slate.bAllowThrottling false
4 Likes