diff --git a/src/Windowing/Silk.NET.Windowing.Common/Interfaces/IView.cs b/src/Windowing/Silk.NET.Windowing.Common/Interfaces/IView.cs
index d172f1b7a5..7f90e5f4e5 100644
--- a/src/Windowing/Silk.NET.Windowing.Common/Interfaces/IView.cs
+++ b/src/Windowing/Silk.NET.Windowing.Common/Interfaces/IView.cs
@@ -103,6 +103,11 @@ public interface IView : IViewProperties, IGLContextSource, IVkSurfaceSource, ID
///
void Reset();
+ ///
+ /// Sets focus to current window.
+ ///
+ void Focus();
+
///
/// Close this window.
///
@@ -146,4 +151,4 @@ public interface IView : IViewProperties, IGLContextSource, IVkSurfaceSource, ID
/// The callback to run each frame.
void Run(Action onFrame);
}
-}
\ No newline at end of file
+}
diff --git a/src/Windowing/Silk.NET.Windowing.Common/Internals/ViewImplementationBase.cs b/src/Windowing/Silk.NET.Windowing.Common/Internals/ViewImplementationBase.cs
index caef47152c..876ebaed07 100644
--- a/src/Windowing/Silk.NET.Windowing.Common/Internals/ViewImplementationBase.cs
+++ b/src/Windowing/Silk.NET.Windowing.Common/Internals/ViewImplementationBase.cs
@@ -71,6 +71,7 @@ protected ViewImplementationBase(ViewOptions opts)
public abstract void ContinueEvents();
public abstract Vector2D PointToClient(Vector2D point);
public abstract Vector2D PointToScreen(Vector2D point);
+ public abstract void Focus();
public abstract void Close();
protected abstract void RegisterCallbacks();
protected abstract void UnregisterCallbacks();
diff --git a/src/Windowing/Silk.NET.Windowing.Common/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt b/src/Windowing/Silk.NET.Windowing.Common/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt
index 257c914b4b..b4dbdfc355 100644
--- a/src/Windowing/Silk.NET.Windowing.Common/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt
+++ b/src/Windowing/Silk.NET.Windowing.Common/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt
@@ -60,6 +60,7 @@ Silk.NET.Windowing.IView.Render -> System.Action?
Silk.NET.Windowing.IView.Reset() -> void
Silk.NET.Windowing.IView.Resize -> System.Action>?
Silk.NET.Windowing.IView.Run(System.Action! onFrame) -> void
+Silk.NET.Windowing.IView.Focus() -> void
Silk.NET.Windowing.IView.Time.get -> double
Silk.NET.Windowing.IView.Update -> System.Action?
Silk.NET.Windowing.IViewProperties
diff --git a/src/Windowing/Silk.NET.Windowing.Common/PublicAPI/netstandard2.1/PublicAPI.Shipped.txt b/src/Windowing/Silk.NET.Windowing.Common/PublicAPI/netstandard2.1/PublicAPI.Shipped.txt
index 257c914b4b..b4dbdfc355 100644
--- a/src/Windowing/Silk.NET.Windowing.Common/PublicAPI/netstandard2.1/PublicAPI.Shipped.txt
+++ b/src/Windowing/Silk.NET.Windowing.Common/PublicAPI/netstandard2.1/PublicAPI.Shipped.txt
@@ -60,6 +60,7 @@ Silk.NET.Windowing.IView.Render -> System.Action?
Silk.NET.Windowing.IView.Reset() -> void
Silk.NET.Windowing.IView.Resize -> System.Action>?
Silk.NET.Windowing.IView.Run(System.Action! onFrame) -> void
+Silk.NET.Windowing.IView.Focus() -> void
Silk.NET.Windowing.IView.Time.get -> double
Silk.NET.Windowing.IView.Update -> System.Action?
Silk.NET.Windowing.IViewProperties
diff --git a/src/Windowing/Silk.NET.Windowing.Glfw/GlfwWindow.cs b/src/Windowing/Silk.NET.Windowing.Glfw/GlfwWindow.cs
index 67f0bd8d36..eae634b6c5 100644
--- a/src/Windowing/Silk.NET.Windowing.Glfw/GlfwWindow.cs
+++ b/src/Windowing/Silk.NET.Windowing.Glfw/GlfwWindow.cs
@@ -677,6 +677,11 @@ public bool TryGetProcAddress(string proc, out nint addr, int? slot = default)
return ret;
}
+ public override void Focus()
+ {
+ _glfw.FocusWindow(_glfwWindow);
+ }
+
public override void Close()
{
Closing?.Invoke();
diff --git a/src/Windowing/Silk.NET.Windowing.Sdl/SdlView.cs b/src/Windowing/Silk.NET.Windowing.Sdl/SdlView.cs
index bf82f3c9b5..258d7f2171 100644
--- a/src/Windowing/Silk.NET.Windowing.Sdl/SdlView.cs
+++ b/src/Windowing/Silk.NET.Windowing.Sdl/SdlView.cs
@@ -313,6 +313,11 @@ internal void RemoveEvent(int index)
Reset();
}
+ public override void Focus()
+ {
+ Sdl.RaiseWindow(SdlWindow);
+ }
+
public override void Close()
{
Closing?.Invoke();