diff --git a/Robust.Client/Graphics/Clyde/Windowing/Glfw.Cursors.cs b/Robust.Client/Graphics/Clyde/Windowing/Glfw.Cursors.cs
index fb99347b3..75ec1c1f7 100644
--- a/Robust.Client/Graphics/Clyde/Windowing/Glfw.Cursors.cs
+++ b/Robust.Client/Graphics/Clyde/Windowing/Glfw.Cursors.cs
@@ -128,6 +128,19 @@ namespace Robust.Client.Graphics.Clyde
AddStandardCursor(StandardCursorShape.Hand, CursorShape.Hand);
AddStandardCursor(StandardCursorShape.HResize, CursorShape.HResize);
AddStandardCursor(StandardCursorShape.VResize, CursorShape.VResize);
+ AddStandardCursor(StandardCursorShape.Progress, CursorShape.Arrow);
+ AddStandardCursor(StandardCursorShape.NWSEResize, CursorShape.Crosshair);
+ AddStandardCursor(StandardCursorShape.NESWResize, CursorShape.Crosshair);
+ AddStandardCursor(StandardCursorShape.Move, CursorShape.Crosshair);
+ AddStandardCursor(StandardCursorShape.NotAllowed, CursorShape.Arrow);
+ AddStandardCursor(StandardCursorShape.NWResize, CursorShape.Crosshair);
+ AddStandardCursor(StandardCursorShape.NResize, CursorShape.VResize);
+ AddStandardCursor(StandardCursorShape.NEResize, CursorShape.Crosshair);
+ AddStandardCursor(StandardCursorShape.EResize, CursorShape.HResize);
+ AddStandardCursor(StandardCursorShape.SEResize, CursorShape.Crosshair);
+ AddStandardCursor(StandardCursorShape.SResize, CursorShape.VResize);
+ AddStandardCursor(StandardCursorShape.SWResize, CursorShape.Crosshair);
+ AddStandardCursor(StandardCursorShape.WResize, CursorShape.HResize);
}
private sealed class CursorImpl : ICursor
diff --git a/Robust.Client/Graphics/Clyde/Windowing/Sdl3.Cursor.cs b/Robust.Client/Graphics/Clyde/Windowing/Sdl3.Cursor.cs
index ff2d1d9d4..71b609495 100644
--- a/Robust.Client/Graphics/Clyde/Windowing/Sdl3.Cursor.cs
+++ b/Robust.Client/Graphics/Clyde/Windowing/Sdl3.Cursor.cs
@@ -94,6 +94,19 @@ internal partial class Clyde
Add(StandardCursorShape.Hand, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_POINTER);
Add(StandardCursorShape.HResize, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_EW_RESIZE);
Add(StandardCursorShape.VResize, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_NS_RESIZE);
+ Add(StandardCursorShape.Progress, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_PROGRESS);
+ Add(StandardCursorShape.NWSEResize, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_NWSE_RESIZE);
+ Add(StandardCursorShape.NESWResize, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_NESW_RESIZE);
+ Add(StandardCursorShape.Move, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_MOVE);
+ Add(StandardCursorShape.NotAllowed, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_NOT_ALLOWED);
+ Add(StandardCursorShape.NWResize, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_NW_RESIZE);
+ Add(StandardCursorShape.NResize, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_N_RESIZE);
+ Add(StandardCursorShape.NEResize, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_NE_RESIZE);
+ Add(StandardCursorShape.EResize, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_E_RESIZE);
+ Add(StandardCursorShape.SEResize, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_SE_RESIZE);
+ Add(StandardCursorShape.SResize, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_S_RESIZE);
+ Add(StandardCursorShape.SWResize, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_SW_RESIZE);
+ Add(StandardCursorShape.WResize, SDL.SDL_SystemCursor.SDL_SYSTEM_CURSOR_W_RESIZE);
void Add(StandardCursorShape shape, SDL.SDL_SystemCursor sysCursor)
{
diff --git a/Robust.Client/Graphics/StandardCursorShape.cs b/Robust.Client/Graphics/StandardCursorShape.cs
index e8e176a6b..254c9dc3b 100644
--- a/Robust.Client/Graphics/StandardCursorShape.cs
+++ b/Robust.Client/Graphics/StandardCursorShape.cs
@@ -15,6 +15,11 @@ namespace Robust.Client.Graphics
///
IBeam,
+ ///
+ /// Alias for .
+ ///
+ Text = IBeam,
+
///
/// The crosshair shape. Used when dragging and dropping.
///
@@ -25,16 +30,135 @@ namespace Robust.Client.Graphics
///
Hand,
+ ///
+ /// Alias for
+ ///
+ Pointer = Hand,
+
///
/// The horizontal resize shape. Used when mousing over something that can be horizontally resized.
///
HResize,
+ ///
+ /// Alias for
+ ///
+ EWResize = HResize,
+
///
/// The vertical resize shape. Used when mousing over something that can be vertically resized.
///
VResize,
+ ///
+ /// Alias for .
+ ///
+ NSResize = VResize,
+
+ ///
+ /// Program is busy doing something.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ Progress,
+
+ ///
+ /// Diagonal resize shape for northwest-southeast resizing.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ NWSEResize,
+
+ ///
+ /// Diagonal resize shape for northeast-southwest resizing.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ NESWResize,
+
+ ///
+ /// 4-way arrow move icon.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ Move,
+
+ ///
+ /// An action is not allowed.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ NotAllowed,
+
+ ///
+ /// One-directional resize to the northwest.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ NWResize,
+
+ ///
+ /// One-directional resize to the north.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ NResize,
+
+ ///
+ /// One-directional resize to the northeast.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ NEResize,
+
+ ///
+ /// One-directional resize to the east.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ EResize,
+
+ ///
+ /// One-directional resize to the southeast.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ SEResize,
+
+ ///
+ /// One-directional resize to the south.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ SResize,
+
+ ///
+ /// One-directional resize to the southwest.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ SWResize,
+
+ ///
+ /// One-directional resize to the west.
+ ///
+ ///
+ /// This cursor is not always available and may be substituted.
+ ///
+ WResize,
+
///
/// Not a real value
///
diff --git a/Robust.Client/UserInterface/Control.Cursor.cs b/Robust.Client/UserInterface/Control.Cursor.cs
index 17a5ce3c9..40da22a2c 100644
--- a/Robust.Client/UserInterface/Control.Cursor.cs
+++ b/Robust.Client/UserInterface/Control.Cursor.cs
@@ -11,14 +11,124 @@ namespace Robust.Client.UserInterface
///
/// Default common cursor shapes available in the UI.
///
+ ///
public enum CursorShape: byte
{
+ ///
+ /// Corresponds to
+ ///
Arrow,
+
+ ///
+ /// Corresponds to
+ ///
IBeam,
+
+ ///
+ /// Corresponds to
+ ///
+ Text = IBeam,
+
+ ///
+ /// Corresponds to
+ ///
Crosshair,
+
+ ///
+ /// Corresponds to
+ ///
Hand,
+
+ ///
+ /// Corresponds to
+ ///
+ Pointer = Hand,
+
+ ///
+ /// Corresponds to
+ ///
HResize,
+
+ ///
+ /// Corresponds to
+ ///
+ EWResize = HResize,
+
+ ///
+ /// Corresponds to
+ ///
VResize,
+
+ ///
+ /// Corresponds to
+ ///
+ NSResize = VResize,
+
+ ///
+ /// Corresponds to
+ ///
+ Progress,
+
+ ///
+ /// Corresponds to
+ ///
+ NWSEResize,
+
+ ///
+ /// Corresponds to
+ ///
+ NESWResize,
+
+ ///
+ /// Corresponds to
+ ///
+ Move,
+
+ ///
+ /// Corresponds to
+ ///
+ NotAllowed,
+
+ ///
+ /// Corresponds to
+ ///
+ NWResize,
+
+ ///
+ /// Corresponds to
+ ///
+ NResize,
+
+ ///
+ /// Corresponds to
+ ///
+ NEResize,
+
+ ///
+ /// Corresponds to
+ ///
+ EResize,
+
+ ///
+ /// Corresponds to
+ ///
+ SEResize,
+
+ ///
+ /// Corresponds to
+ ///
+ SResize,
+
+ ///
+ /// Corresponds to
+ ///
+ SWResize,
+
+ ///
+ /// Corresponds to
+ ///
+ WResize,
+
///
/// Special cursor shape indicating that is set and being used.
///
diff --git a/Robust.Client/UserInterface/UserInterfaceManager.Input.cs b/Robust.Client/UserInterface/UserInterfaceManager.Input.cs
index 9fc7a3ee6..6907ed196 100644
--- a/Robust.Client/UserInterface/UserInterfaceManager.Input.cs
+++ b/Robust.Client/UserInterface/UserInterfaceManager.Input.cs
@@ -202,7 +202,14 @@ internal partial class UserInterfaceManager
return;
}
- var shape = cursorTarget.DefaultCursorShape switch
+ var shape = MapCursorShape(cursorTarget.DefaultCursorShape);
+
+ _clyde.SetCursor(_clyde.GetStandardCursor(shape));
+ }
+
+ private static StandardCursorShape MapCursorShape(Control.CursorShape shape)
+ {
+ return shape switch
{
Control.CursorShape.Arrow => StandardCursorShape.Arrow,
Control.CursorShape.IBeam => StandardCursorShape.IBeam,
@@ -210,10 +217,21 @@ internal partial class UserInterfaceManager
Control.CursorShape.Crosshair => StandardCursorShape.Crosshair,
Control.CursorShape.VResize => StandardCursorShape.VResize,
Control.CursorShape.HResize => StandardCursorShape.HResize,
+ Control.CursorShape.Progress => StandardCursorShape.Progress,
+ Control.CursorShape.NWSEResize => StandardCursorShape.NWSEResize,
+ Control.CursorShape.NESWResize => StandardCursorShape.NESWResize,
+ Control.CursorShape.Move => StandardCursorShape.Move,
+ Control.CursorShape.NotAllowed => StandardCursorShape.NotAllowed,
+ Control.CursorShape.NWResize => StandardCursorShape.NWResize,
+ Control.CursorShape.NResize => StandardCursorShape.NResize,
+ Control.CursorShape.NEResize => StandardCursorShape.NEResize,
+ Control.CursorShape.EResize => StandardCursorShape.EResize,
+ Control.CursorShape.SEResize => StandardCursorShape.SEResize,
+ Control.CursorShape.SResize => StandardCursorShape.SResize,
+ Control.CursorShape.SWResize => StandardCursorShape.SWResize,
+ Control.CursorShape.WResize => StandardCursorShape.WResize,
_ => StandardCursorShape.Arrow
};
-
- _clyde.SetCursor(_clyde.GetStandardCursor(shape));
}
public void MouseWheel(MouseWheelEventArgs args)