Commit Graph

670 Commits

Author SHA1 Message Date
Sam Lantinga
2ba76dbe80 Simplified SDL_Surface
SDL_Surface has been simplified and internal details are no longer in the public structure.

The `format` member of SDL_Surface is now an enumerated pixel format value. You can get the full details of the pixel format by calling `SDL_GetPixelFormatDetails(surface->format)`. You can get the palette associated with the surface by calling SDL_GetSurfacePalette(). You can get the clip rectangle by calling SDL_GetSurfaceClipRect().

SDL_PixelFormat has been renamed SDL_PixelFormatDetails and just describes the pixel format, it does not include a palette for indexed pixel types.

SDL_PixelFormatEnum has been renamed SDL_PixelFormat and is used instead of Uint32 for API functions that refer to pixel format by enumerated value.

SDL_MapRGB(), SDL_MapRGBA(), SDL_GetRGB(), and SDL_GetRGBA() take an optional palette parameter for indexed color lookups.
2024-07-10 00:48:18 -07:00
mariob92
9389712917 wgl/glx: Fix attribute list for SDL_GL_FLOATBUFFERS
This commit fixes the attribute list in the WGL and GLX code when requesting a floating point pixel format. The name of the attribute was missing in the list.

Fixes libsdl-org#10189
2024-07-06 11:35:19 -07:00
Ryan C. Gordon
c3bf874abf stdlib: Clean up and export SDL_UCS4ToUTF8().
Also fix internal usage of the function.

Fixes #10157.
2024-07-04 11:10:50 -04:00
Sam Lantinga
d4497ecdbd Numpad scancodes have non-numpad keycodes
This allows the numpad to work as the user expects based on the numlock state. If the application needs to distinguish the keys, it can check to see whether the scancode is a numpad key or not.
2024-07-01 13:56:49 -07:00
Sam Lantinga
b72c22340e We don't need to pull scancode state to see if ALT is held down 2024-06-29 13:05:07 -07:00
Sam Lantinga
7258b36e30 Make it easier to turn on Windows message logging 2024-06-29 13:05:07 -07:00
Sam Lantinga
212a491f7c Renamed SDL_HINT_IME_NATIVE_UI to SDL_HINT_IME_IMPLEMENTED_UI
This inverts the logic to make more sense from an application perspective.
2024-06-28 19:41:37 -07:00
Sam Lantinga
e47179c4c7 We should still set the text input area if SDL_DISABLE_WINDOWS_IME is defined
Fixes https://github.com/libsdl-org/SDL/issues/6254
2024-06-28 18:28:19 -07:00
Sam Lantinga
a7d4f0a76c Center the composition text in the text input area 2024-06-28 17:09:22 -07:00
Sam Lantinga
4c7db129df SDL_HINT_IME_INTERNAL_EDITING and SDL_HINT_IME_SHOW_UI are replaced with SDL_HINT_IME_NATIVE_UI 2024-06-28 17:09:22 -07:00
Sam Lantinga
d9d7104feb Removed unneeded Text Services Framework code from IME handling
We can get the candidate list in uiless mode using ImmGetCandidateListW() once message processing has completed
2024-06-28 17:09:22 -07:00
Sam Lantinga
bdd531986b SDL_SetTextInputRect() has been renamed to SDL_SetTextInputArea()
The new function includes the cursor position so IME UI elements can be placed relative to the cursor, as well as having the whole text area available so on-screen keyboards can avoid it.
2024-06-28 17:09:22 -07:00
Sam Lantinga
e324c7d692 Fixed event spam caused by repeated calls to IME_SetTextInputRect() 2024-06-28 17:09:22 -07:00
Sam Lantinga
42d8db7e34 Current Korean IMEs don't have candidates 2024-06-28 17:09:22 -07:00
Sam Lantinga
ed2022a175 Added SDL_EVENT_TEXT_EDITING_CANDIDATES
This allows applications that have set SDL_HINT_IME_SHOW_UI to "0" to get candidates lists they can draw themselves.

Fixes https://github.com/libsdl-org/SDL/issues/4855
2024-06-28 17:09:22 -07:00
Sam Lantinga
3609b15920 Fixed showing the selected clause in the Japanese IME 2024-06-27 17:43:03 -07:00
Ryan C. Gordon
982feb7a65 vulkan: SDL_Vulkan_CreateSurface now returns the usual int (0=ok, -1=error).
Fixes #10091.
2024-06-27 15:25:10 -04:00
Sam Lantinga
80e64ef921 Windows IME cleanup
* Don't need to initialize values already zeroed
* Added debug message logging
* Don't send duplicate SDL_EVENT_TEXT_EDITING events with empty text
* Send the length of selected text in the SDL_EVENT_TEXT_EDITING event
* Fixed potential crashes when out of memory
2024-06-26 08:26:52 -07:00
Sam Lantinga
def7a43a2e SDL_HINT_IME_SHOW_UI defaults to SDL_TRUE
This hint is currently only used on Windows, and this matches the behavior of other platforms.
2024-06-24 20:32:03 -07:00
Sam Lantinga
018ca39c45 Don't move the cursor to the end of the selected candidate
We might have legitimately moved the cursor to the beginning.

Fixes https://github.com/libsdl-org/SDL/issues/9761
2024-06-24 20:32:03 -07:00
Sam Lantinga
8328fdfe0d Don't use raw keyboard input when text input is active
This lets IME processing consume key events that shouldn't be passed on to the application
2024-06-24 20:32:03 -07:00
Sam Lantinga
76631a0978 The text input state has been changed to be window-specific.
SDL_StartTextInput(), SDL_StopTextInput(), SDL_TextInputActive(), SDL_ClearComposition(), and SDL_SetTextInputRect() all now take a window parameter.

This change also fixes IME candidate positioning when SDL_SetTextInputRect() is called before SDL_StartTextInput(), as is recommended in the documentation.
2024-06-24 11:20:08 -07:00
expikr
3b504c4a89 Add SDL_HINT_MOUSE_RELATIVE_CLIP_INTERVAL (#10085) 2024-06-23 00:09:59 -07:00
Sam Lantinga
679e4471ed Added the ability to query the keymap for keycodes based on modifier state 2024-06-21 22:06:08 -07:00
Sam Lantinga
ef9bd8b609 Add the raw platform specific key code to SDL_Keysym
This allows applications to handle keys that SDL doesn't recognize, in a platform dependent way.

Fixes https://github.com/libsdl-org/SDL/issues/6390
2024-06-21 22:06:08 -07:00
Frank Praznik
2f276a2eea video: Expose HDR metadata per-window
Moves the HDR properties from the display to be per-window, and adds the frog_color protocol to enable HDR under Wayland.
2024-06-20 15:55:07 -04:00
Anonymous Maarten
031dc0743f Use an opaque struct typedef for SDL_GLContext
Using a struct typedef instead of a void pointer results in extra C typechecks
2024-06-15 01:43:22 +02:00
Sam Lantinga
0635112119 Added SDL_HINT_WINDOWS_ERASE_BACKGROUND_MODE (thanks @lostgoat!) 2024-06-13 14:54:36 -07:00
Anonymous Maarten
32907a9606 Rename SDL_Swap(16|32|64)(LE|BE) to SDL_Swap(LE|BE)(16|32|64) 2024-06-12 02:29:39 +02:00
Fabrice Desclaux
f62a1bed16 Fix spurious LCtrl on RAlt key pressed
(cherry picked from commit 22c14442e2)
2024-06-07 09:21:40 -07:00
Sam Lantinga
a9a51cebde Disable raw keyboard input by default
It interferes with keyboard hooks and most applications don't expect key events coming from another thread
2024-06-03 14:43:46 -07:00
Sam Lantinga
73879ef26e Only register for the type of raw input requested by the application 2024-06-03 14:43:46 -07:00
Ryan C. Gordon
9a9a3d1a33 SDL_SystemCursor: rename enum items to match CSS.
Fixes #9079.
2024-06-01 22:32:43 -04:00
Ozkan Sezer
5aa9ee8446 SDL_windowsmodes.c (WIN_GetDisplayNameVista): fix return after PR/9923
why haven't any of the build tests catch this..
2024-05-31 11:33:50 +03:00
Ozkan Sezer
e4518af377 move vista+ display config function ptr calls to device->driverdata
.. and change hdr code's display config function calls to use those
function ptrs.
2024-05-31 02:50:02 +03:00
Sam Lantinga
690d73f5c9 Fixed warning C4244: 'initializing': conversion from 'WPARAM' to 'Uint32', possible loss of data 2024-05-30 07:42:35 -07:00
Ozkan Sezer
d41e48e4c6 WIN_AdjustWindowRectWithStyle: silence gcc maybe-uninitialized warnings
/tmp/SDL3/src/video/windows/SDL_windowswindow.c: In function 'WIN_SetWindowPositionInternal':
/tmp/SDL3/src/video/windows/SDL_windowswindow.c:216:17: warning: 'h' may be used uninitialized in this function [-Wmaybe-uninitialized]
     rect.bottom = *height;
     ~~~~~~~~~~~~^~~~~~~~~
/tmp/SDL3/src/video/windows/SDL_windowswindow.c:320:12: note: 'h' was declared here
     int w, h;
            ^
/tmp/SDL3/src/video/windows/SDL_windowswindow.c:215:16: warning: 'w' may be used uninitialized in this function [-Wmaybe-uninitialized]
     rect.right = *width;
     ~~~~~~~~~~~^~~~~~~~
/tmp/SDL3/src/video/windows/SDL_windowswindow.c:320:9: note: 'w' was declared here
     int w, h;
         ^
2024-05-29 16:39:03 -07:00
Frank Praznik
fafc9f642a win32: Don't set the display HDR values to uninitialized data
The HDR properties are zeroed and set in WIN_GetHDRProperties, and using the struct without calling this function results in sending uninitialized data.
2024-05-28 15:51:02 -04:00
Ozkan Sezer
2b374e6c0f check dxgi1_6.h before enabling sdr/hdr code in SDL_windowsmodes.c
thanks @madebr
2024-05-28 22:11:56 +03:00
Sam Lantinga
c74886ab00 Added SDL_SetWindowAspectRatio() and SDL_GetWindowAspectRatio()
Fixes https://github.com/libsdl-org/SDL/issues/1573
2024-05-28 11:52:31 -07:00
Ozkan Sezer
864df05b19 SDL_windowsevents.c: define RI_MOUSE_HWHEEL if missing. 2024-05-28 11:11:50 +03:00
Sam Lantinga
df25e4022d Removed short aliases for 16-bit pixel formats
These were potentially misleading in the same way the RGB888/BGR888 aliases were

Fixes https://github.com/libsdl-org/SDL/issues/4994
2024-05-27 07:24:46 -07:00
Ryan C. Gordon
cf2874080f mouse: Move mouse button state from a Uint32 to a formal typedef.
Reference Issue #9812.
2024-05-26 13:23:21 -04:00
Frank Praznik
0e1f3b681f video: Distinguish between explicit fullscreen enter requests and update requests
Video backends that run asynchronously can wind up in a race situation if a mode or position update request queues up a fullscreen enter request while an unprocessed asynchronous leave request is in flight, and the mode switch or position update request is processed after the leave request, causing the window to erroneously return to fullscreen.

Instead of the internal SDL_UpdateFullscreenMode and backend SetWindowFullscreen functions taking a boolean value, use an enum that allows the backends to distinguish between "this is an explicit fullscreen enter/leave request", and "this is an update request to change the mode or position". Communicating the specific intent allows the backend to early-out when required, which prevents windows from erroneously returning to fullscreen due to update requests made after a leave request, and allows for the removal of some internal synchronization previously needed to (attempt to) work around this, which improves overall performance while also increasing robustness.

This is only relevant to the internal functions, and nothing in the public-facing API has been changed.
2024-05-25 14:13:00 -04:00
Frank Praznik
1f89c407e0 win32: Fix maximized windows when leaving fullscreen
If a window is fullscreen and the maximized state is requested, it needs to be explicitly entered after leaving fullscreen, or the resulting window will be in the maximized state, but still the size of the non-maximized window.
2024-05-21 18:57:55 -04:00
Ozkan Sezer
f295f6814c fix type redefinition errors after #9817 2024-05-17 07:28:50 +03:00
Ali Emre Gülcü
f17b556c76 Add SDL_Vulkan_DestroySurface functionality (#9817)
Added SDL_Vulkan_DestroySurface, its documentation and corresponding platform specific implementations. Fixed some header inclusion orders to improve consistency between platforms. Added TODOs regarding MetalView creation and destruction which will benefit from the new functionality.
2024-05-16 17:41:15 -07:00
Daniel Ludwig
22bcee3318 VisualC-GDK: Fix Xbox builds 2024-05-08 08:58:29 -07:00
Sam Lantinga
991d28ae37 Use SDL_MessageBoxFlags and SDL_MessageBoxButtonFlags appropriately 2024-05-07 13:41:12 -07:00
Sam Lantinga
537c62f4c1 Fixed memory leak cleaning up mouse and keyboard instances
Fixes https://github.com/libsdl-org/SDL/issues/9487
2024-05-07 09:26:18 -07:00