Commit Graph

520 Commits

Author SHA1 Message Date
Dimitriy Ryazantcev
9faa7977bd UWP: Add support for supplementary Unicode characters input
Characters outside Basic Multilingual Plane (BMP) are coded as so called "surrogate pair" in two separate UTF-16 character events.
2023-11-28 12:33:21 -08:00
Dimitriy Ryazantcev
7b628ea4d5 Win32: Simplify Unicode text input code 2023-11-28 12:33:21 -08:00
Dimitriy Ryazantcev
acc5bb89f8 [Win32] Better keyboard button mapping to SDL scan codes
Using official mappings from the Microsoft docs:
https://learn.microsoft.com/windows/win32/inputdev/about-keyboard-input#scan-codes
2023-11-28 11:31:19 -08:00
Dimitriy Ryazantcev
7e86b6aef2 Win32: Fix keymap for keyboard layouts that can print UTF-16 surrogates and ligatures
Old implementation with `MapVirtualKey(..., MAPVK_VK_TO_CHAR) & 0x7FFFF` simply returned `A`..`Z` for VK_A..VK_Z and
completely useless <U+0002 START OF TEXT> (`WCH_LGTR 0xF002` without high-order bit) in case of ligature.

See https://kbdlayout.info/features/ligatures for a list of affected keyboard layouts.
More info on `MAPVK_VK_TO_CHAR`: https://stackoverflow.com/a/72464584/1795050
2023-11-28 11:11:33 -08:00
Jake S. Del Mastro
ceac93ade2 Set framebuffer_srgb_capable to the actual value obtained (#8634)
(cherry picked from commit 594a79c2f9)
2023-11-28 05:49:40 -08:00
Sam Lantinga
81fc7ded78 Removed the window shape API for SDL 3.0
Fixes https://github.com/libsdl-org/SDL/issues/6654
Fixes https://github.com/libsdl-org/SDL/issues/6897
2023-11-22 14:11:10 -08:00
Dimitriy Ryazantcev
0d431015bf Extract BMP magic into separate define 2023-11-21 08:37:33 -08:00
Zack Middleton
5e9b0820f3 Add cursors for X11/Wayland window resizing 2023-11-21 08:34:13 -08:00
Dimitriy Ryazantcev
91e122316c Use SDL_small_alloc() instead of SDL_stack_alloc() in CreateMaskBitmap() 2023-11-21 07:42:01 -08:00
Dimitriy Ryazantcev
49d58bc73a Cleanup WIN_CreateCursor() code a bit
Generate bimap mask from the alpha channel.
2023-11-19 12:41:12 -08:00
Sam Lantinga
aaf54b09a1 Revert "Cleanup WIN_CreateCursor() code a bit"
This reverts commit 876c97454a.

This caused the blank cursor to be entirely black
2023-11-15 11:32:06 -08:00
Louis M
bd4966999b Replacing SDL_SCANCODE_AUDIOMUTE by SDL_SCANCODE_MUTE on Windows
(cherry picked from commit 925362a2fc)
2023-11-14 09:27:43 -08:00
Sam Lantinga
e0c45c6c98 Renamed SDL_WINDOW_FOREIGN to SDL_WINDOW_EXTERNAL 2023-11-14 06:06:51 -08:00
Sam Lantinga
229b7b9d50 SDL_CreateWindowWithPosition() and SDL_CreateWindowFrom() have been replaced with SDL_CreateWindowWithProperties()
This is a more general interface that can be extended in the future as needed.
2023-11-14 06:06:51 -08:00
Dimitriy Ryazantcev
876c97454a Cleanup WIN_CreateCursor() code a bit
Closes #6476
2023-11-13 11:46:50 -08:00
Sam Lantinga
1c4723ac66 SDL_CreateWindowFrom() now takes a set of properties that describe the native window and options. 2023-11-12 21:58:58 -08:00
Sylvain Becker
04b6b2979f Re-add SDL_assert() with non boolean ptr syntax (#8530) 2023-11-11 12:28:24 +03:00
Sylvain
d8600f717e Pointer as bool (libsdl-org#7214) 2023-11-09 14:18:36 -08:00
Sam Lantinga
02f356439d Allow the application to draw while Windows is in a modal move/resize loop
If you're using the application main callbacks, your SDL_AppIterate() function will be called while Windows is moving and resizing your window. If not, then SDL will send an SDL_EVENT_WINDOW_EXPOSED event for your window and you can use an event watcher to redraw your window directly from the callback.

Fixes https://github.com/libsdl-org/SDL/issues/1059
Closes https://github.com/libsdl-org/SDL/pull/4836
2023-11-08 13:32:56 -08:00
Sam Lantinga
fd4a2cce9e SDL_syswm.h has been removed and replaced with window properties 2023-11-08 12:01:48 -08:00
Ryan C. Gordon
2f92807087 vulkan: SDL_Vulkan_CreateSurface now accepts an app-provided allocator.
Fixes #3638.
2023-11-06 13:31:20 -05:00
Sam Lantinga
9302d7732d Fixed touch normalized coordinates
When converting normalized coordinates to pixel coordinates, the valid range is 0 to (width or height) - 1, and the pixel coordinate of width or height is past the edge of the window.

Fixes https://github.com/libsdl-org/SDL/issues/2913
2023-11-05 06:55:39 -08:00
Sam Lantinga
91f0456391 Add the source application for drag and drop events (thanks Nathan!)
This is only implemented on iOS, but is useful for third party application integrations.

Fixes https://github.com/libsdl-org/SDL/issues/2024
2023-11-04 13:00:41 -07:00
Sam Lantinga
f3261fedcc Code cleanup now that SDL_bool is equivalent to a C boolean expression 2023-11-03 09:54:04 -07:00
ilyas-taouaou
9224a0a2d8 Fix emscripten, android, uikit and windows 2023-11-02 14:27:36 -04:00
ilyas-taouaou
d0d8b28df1 Change SDL_Vulkan_GetInstanceExtensions 2023-11-02 14:27:36 -04:00
Sam Lantinga
c98a14fdeb Renamed display added/removed events for consistency with the rest of the API
Fixes https://github.com/libsdl-org/SDL/issues/8425
2023-10-23 09:14:54 -07:00
danginsburg
723835d16a Windows: fix for client rect resizing larger each time we came from exclusive fullscreen -> windowed on a monitor with HiDPI set. The problem was we were using the monitor DPI rather than the window DPI so AdjustWindowRectExForDpi was giving us an incorrect size which would be too large for the client rect. Closes #8237. 2023-09-12 07:36:55 -07:00
Sam Lantinga
a5e7214795 Add SDL_WINDOW_NOT_FOCUSABLE flag to set that the window should not be able to gain key focus
- Also adds SDL_SetWindowFocusable() to set/clear flag on existing windows
2023-08-30 20:29:51 -07:00
Sam Huang
c191d6c306 Better Win32 transparent window support 2023-08-27 13:06:42 -07:00
Ozkan Sezer
363f4fa9c1 avoid type redefinition errors after commit ee806597b9.
(Reference issue: https://github.com/libsdl-org/SDL/issues/8142)
2023-08-27 22:22:10 +03:00
Sam Huang
c7588e4261 Transparent window for Win32 + OpenGL (#8143)
* Transparent window for Win32 + OpenGL via DWM
2023-08-23 07:42:59 -07:00
Frank Praznik
70323a8350 Add a function to display the system menu for a window
Add SDL_ShowWindowSystemMenu() to display the system-level menu for windows. Typically, this is done by right-clicking on the system provided window decorations, however, if an application is rendering its own client-side decorations, there is currently no way to display it. This menu is provided by the system and can provide privileged desktop functionality such as moving or pinning a window to a specific workspace or display, setting the always-on-top property, or taking screenshots. In many cases, there are no APIs which allow applications to perform these actions manually.

Implemented for Wayland via functionality provided by the xdg_toplevel protocol, Win32 via the undocumented message 0x313 (typically called WM_POPUPSYSTEMMENU), and X11 via the "_GTK_SHOW_WINDOW_MENU" atom (supported in GNOME and KDE).
2023-08-04 13:39:45 -04:00
Sam Lantinga
68a4bb01e0 Allocate displays as an array of pointers instead of an array of objects
This fixes current_mode from pointing at the wrong data when displays are moved around
2023-08-01 19:24:29 -07:00
Sam Lantinga
07578fde3d Fixed crash if a display is enumerated twice
This can happen if a monitor is in the process of becoming primary because another monitor was disconnected.
2023-08-01 18:28:55 -07:00
Sam Lantinga
41d436f0fe Use SetWindowPos to show windows when SDL_HINT_WINDOW_ACTIVATE_WHEN_SHOWN is set to avoid activating the parent window when showing a child window 2023-07-27 11:56:53 -07:00
Sam Lantinga
c5bd2cba98 Fix passing of child window focus in WIN_ShowWindow/WIN_RaiseWindow
Keyboard focus was being passed to the child window being shown if SDL_HINT_WINDOW_ACTIVATE_WHEN_SHOWN is false and keyboard focus was not being passed to the child window being activated in WIN_RaiseWindow.
2023-07-06 18:14:34 -07:00
Sam Lantinga
565e95ac4e Fix windows created with SDL_WINDOW_MINIMIZED having inconsistent SDL_WINDOW_HIDDEN flag on Windows
- Windows created minimized are shown with SW_SHOWMINNOACTIVE which does not send WM_SHOWWINDOW leaving the window visible (but minimized)
  on desktop but still with the SDL_WINDOW_HIDDEN flag set. Now the hidden flag is cleared in this case but noted that this means it's not currently possible
  to create a window that is initially hidden that then is minimized once shown.
2023-07-06 18:14:27 -07:00
Sam Lantinga
badb7f1e8b Added notes about delayed clipboard rendering on Windows 2023-07-06 08:36:49 -07:00
Sam Lantinga
7890985629 Fixed windows debug message formatting 2023-07-06 08:33:12 -07:00
Sam Lantinga
55ff09de38 Reimplement clipboard text in terms of clipboard data
This will simplify the X11 and Wayland implementations, which were doing that under the hood, and makes application interaction between the two APIs consistent.
2023-07-05 20:06:59 -07:00
Sam Lantinga
443868143c Added support for clipboard data on Windows
The only supported image format is image/bmp
2023-07-05 20:06:59 -07:00
Sam Lantinga
61ff86617a Added GetClientScreenRect() and fixed build for C89 compilers 2023-07-05 11:05:48 -07:00
expikr
a7326b9396 center cursor to client area (excludes titlebar thickness) 2023-07-05 10:11:57 -07:00
Sam Lantinga
f49f1434b9 Revert "Update SDL_windowswindow.c"
This reverts commit d0fdf6207b.
2023-07-05 09:22:09 -07:00
expikr
d0fdf6207b Update SDL_windowswindow.c 2023-07-04 20:42:01 -07:00
Sam Lantinga
b6645bb255 Retry to open the clipboard in case another application has it open
This fixes 'testautomation --filter clipboard_testClipboardTextFunctions' on Windows
2023-07-03 16:18:33 -07:00
luzpaz
37e567994d Fix remaining typos (#7921)
* Fix remaining typos

Found via `codespell -q 3 -S *.hex,*.pdf,./src/libm,./src/hidapi,./src/stdlib/SDL_malloc.c,./src/video/x11/edid.h -L caf,currenty,datas,einstance,fo,hda,lod,mata,parm,parms,pevent,pevents,pixelx,requestor,ser,statics,te,texturers,thid,uscaled,windowz`
2023-07-03 12:46:47 -07:00
Sam Lantinga
e264bb5178 Rename SDL_PIXELFORMAT_RGB888 and SDL_PIXELFORMAT_BGR888 to SDL_PIXELFORMAT_XRGB8888 and SDL_PIXELFORMAT_XBGR8888 for clarity
Fixes https://github.com/libsdl-org/SDL/issues/7903
2023-07-01 17:58:34 -07:00
Sam Lantinga
8da9b22c17 The SDL_WINDOW_SKIP_TASKBAR flag has been replaced by the SDL_WINDOW_UTILITY flag
The SDL_WINDOW_UTILITY flag has the same functionality, and is now implemented on Windows.
2023-06-29 21:43:17 -07:00