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();