View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0004981 | NoesisGUI | Unreal | public | 2026-04-09 16:43 | 2026-04-13 15:02 |
| Reporter | ttermeer-rcg | Assigned To | hcpizzi | ||
| Priority | normal | Severity | major | ||
| Status | resolved | Resolution | fixed | ||
| Product Version | 3.2.12 | ||||
| Target Version | 3.2.13 | Fixed in Version | 3.2.13 | ||
| Summary | 0004981: Keyboard inputs no longer working after ALT+TAB | ||||
| Description | Reproduction Steps:
Unreal: 5.6.1 This seems to also affect any KeyBinding in XAML. If those KeyBinding correspond to a gamepad input, they also stop working. GamepadTrigger is however unaffected. | ||||
| Platform | Windows | ||||
|
Please, find a patch attached until 3.2.13 is released. 4981.patch (3,124 bytes)
Index: Classes/NoesisInstance.h
===================================================================
--- Classes/NoesisInstance.h (revision 16994)
+++ Classes/NoesisInstance.h (revision 16995)
@@ -140,6 +140,8 @@
typedef TSharedPtr<class FNoesisSlateElement, ESPMode::ThreadSafe> FNoesisSlateElementPtr;
FNoesisSlateElementPtr NoesisSlateElement;
+ TWeakPtr<SWindow> SlateParentWindowPtr;
+
UPROPERTY()
TObjectPtr<class UWidgetComponent> WidgetComponent;
@@ -276,6 +278,9 @@
virtual void NativeConstruct() override;
virtual void NativeDestruct() override;
// End of UUserWidget interface
+
+ void OnOwningWindowActivated();
+ void OnOwningWindowDeactivated();
};
FDelegateHandle NoesisRegisterOverlayRender();
Index: Private/NoesisInstance.cpp
===================================================================
--- Private/NoesisInstance.cpp (revision 16994)
+++ Private/NoesisInstance.cpp (revision 16995)
@@ -1429,6 +1429,31 @@
Height = SlateRectSize.Y;
Update();
+
+ if (MyWidget.IsValid())
+ {
+ auto SlateParentWindow = FSlateApplication::Get().FindWidgetWindow(MyWidget.Pin().ToSharedRef());
+ if (SlateParentWindow.IsValid() && SlateParentWindow != SlateParentWindowPtr)
+ {
+ if (SlateParentWindowPtr.IsValid())
+ {
+ auto OldSlateParentWindow = SlateParentWindowPtr.Pin();
+ OldSlateParentWindow->GetOnWindowActivatedEvent().RemoveAll(this);
+ OldSlateParentWindow->GetOnWindowDeactivatedEvent().RemoveAll(this);
+ }
+
+ SlateParentWindowPtr = SlateParentWindow;
+
+ if (!SlateParentWindow->GetOnWindowActivatedEvent().IsBoundToObject(this))
+ {
+ SlateParentWindow->GetOnWindowActivatedEvent().AddUObject(this, &UNoesisInstance::OnOwningWindowActivated);
+ }
+ if (!SlateParentWindow->GetOnWindowDeactivatedEvent().IsBoundToObject(this))
+ {
+ SlateParentWindow->GetOnWindowDeactivatedEvent().AddUObject(this, &UNoesisInstance::OnOwningWindowDeactivated);
+ }
+ }
+ }
}
bool GetHitResultAtScreenPositionAndCache(APlayerController* PlayerController, FVector2D ScreenPosition, FHitResult& HitResult)
@@ -2089,11 +2114,43 @@
void UNoesisInstance::NativeDestruct()
{
+ if (MyWidget.IsValid())
+ {
+ if (SlateParentWindowPtr.IsValid())
+ {
+ auto SlateParentWindow = SlateParentWindowPtr.Pin();
+ SlateParentWindow->GetOnWindowActivatedEvent().RemoveAll(this);
+ SlateParentWindow->GetOnWindowDeactivatedEvent().RemoveAll(this);
+ }
+ }
+
TermInstance();
Super::NativeDestruct();
}
+void UNoesisInstance::OnOwningWindowActivated()
+{
+ if (TakeWidget().Get().HasAnyUserFocusOrFocusedDescendants())
+ {
+ if (XamlView != nullptr)
+ {
+ XamlView->Activate();
+ }
+ }
+}
+
+void UNoesisInstance::OnOwningWindowDeactivated()
+{
+ if (TakeWidget().Get().HasAnyUserFocusOrFocusedDescendants())
+ {
+ if (XamlView != nullptr)
+ {
+ XamlView->Deactivate();
+ }
+ }
+}
+
// This is a copy of FMobileSceneRenderer::RequiresMultiPass
static bool RequiresMultiPass(EShaderPlatform ShaderPlatform, uint32 NumMSAASamples)
{
|
|
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-04-09 16:43 | ttermeer-rcg | New Issue | |
| 2026-04-09 17:19 | sfernandez | Assigned To | => hcpizzi |
| 2026-04-09 17:19 | sfernandez | Status | new => assigned |
| 2026-04-09 17:19 | sfernandez | Target Version | => 3.2.13 |
| 2026-04-13 15:01 | hcpizzi | Note Added: 0012189 | |
| 2026-04-13 15:01 | hcpizzi | File Added: 4981.patch | |
| 2026-04-13 15:02 | hcpizzi | Status | assigned => resolved |
| 2026-04-13 15:02 | hcpizzi | Resolution | open => fixed |
| 2026-04-13 15:02 | hcpizzi | Fixed in Version | => 3.2.13 |