Skip to content

Commit ee77493

Browse files
committed
Add a windowed fullscreen setting on request of Stride
1 parent 1444deb commit ee77493

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

documentation/proposals/Proposal - Windowing 3.0.md

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -900,10 +900,18 @@ public enum WindowState
900900
Maximized,
901901

902902
/// <summary>
903-
/// The window has been fullscreened, covering the entire surface of the monitor. Note that changing to/from this
904-
/// state may enact an implicit change to <see cref="ISurfaceDisplay" />'s state if supported.
903+
/// The window has been fullscreened, covering the entire surface of the monitor without a border, with exclusive
904+
/// control over the display. Note that changing to/from this state may enact an implicit change to
905+
/// <see cref="ISurfaceDisplay" />'s state if supported.
905906
/// </summary>
906-
Fullscreen
907+
ExclusiveFullscreen,
908+
909+
/// <summary>
910+
/// The window has been fullscreened, covering the entire surface of the monitor, but still uses window management
911+
/// to allow the user to interoperate with other applications easily. This setting leads the
912+
/// <see cref="ISurfaceWindow.Border" /> setting to be ignored, as this setting is functionally equivalent to
913+
/// <see cref="Maximized" /> and a <see cref="WindowBorder.Hidden" /> border.
914+
WindowedFullscreen
907915
}
908916

909917
/// <summary>
@@ -1271,12 +1279,12 @@ public readonly record struct DisplayCoordinatesEvent(
12711279

12721280
/// <summary>
12731281
/// Represents the properties of a surface whose rendering is intrinsically linked to the composition of a specific
1274-
/// display. In most cases, this translates to "the surface is rendering in fullscreen mode".
1282+
/// display. In most cases, this translates to "the surface is rendering in exclusive fullscreen mode".
12751283
/// </summary>
12761284
/// <param name="Resolution">
12771285
/// The resolution the surface is rendering on its display at, if known. If <c>null</c>, it is highly likely that the
1278-
/// surface is not rendering in fullscreen mode or otherwise has its rendering intrinsically linked to the composition
1279-
/// of a specific display.
1286+
/// surface is not rendering in exclusive fullscreen mode or otherwise has its rendering intrinsically linked to the
1287+
/// composition of a specific display.
12801288
/// </param>
12811289
/// <param name="RefreshRate">
12821290
/// The rate (per second) at which the physical display will receive new renders from the surface, if known. If
@@ -1285,8 +1293,9 @@ public readonly record struct DisplayCoordinatesEvent(
12851293
/// of a specific display.
12861294
/// </param>
12871295
/// <remarks>
1288-
/// If a <c>default</c> video mode is encountered, it is highly likely the surface is not rendering in fullscreen mode.
1289-
/// If an individual property is <c>null</c>, it is highly likely that property is not controllable programmatically.
1296+
/// If a <c>default</c> video mode is encountered, it is highly likely the surface is not rendering in exclusive
1297+
/// fullscreen mode. If an individual property is <c>null</c>, it is highly likely that property is not controllable
1298+
/// programmatically.
12901299
/// </remarks>
12911300
public readonly record struct VideoMode(Vector2? Resolution, int? RefreshRate);
12921301

@@ -1591,7 +1600,7 @@ public interface IDetachedSurfaceLifecycle : IDisposable
15911600
/// </summary>
15921601
/// <remarks>
15931602
/// It is expected that <see cref="Tick" /> shall not be called if this property is <c>true</c>.
1594-
/// <remarks>
1603+
/// </remarks>
15951604
bool ShouldTerminate { get; }
15961605

15971606
/// <summary>
@@ -1612,7 +1621,7 @@ public interface IDetachedSurfaceLifecycle : IDisposable
16121621
/// <param name="lifecycle">The created surface lifecycle on success, <c>null</c> otherwise.</param>
16131622
/// <typeparam name="T">
16141623
/// The application that shall be associated with the surface. Note that even with this API,
1615-
/// <see cref="ISurfaceApplication.Initialize{T}"> shall still be called for consistency and portability. However,
1624+
/// <see cref="ISurfaceApplication.Initialize{T}" /> shall still be called for consistency and portability. However,
16161625
/// unlike <see cref="ISurfaceApplication.Run{T}" />, this method shall not block and will instead return an
16171626
/// <see cref="IDetachedSurfaceLifecycle" /> on which <see cref="Tick" /> is expected to be continuously called to
16181627
/// enact the same behaviour on the surface. The associated application is also used for any additional global

0 commit comments

Comments
 (0)