Commit Graph

2805 Commits

Author SHA1 Message Date
Frank Praznik
1f35fd6939 video: Update the popup window creation documentation and disallowed flags
Update the popup window creation documentation with additional info, remove the SDL_WINDOW_MOUSE_GRABBED flag check since it isn't a valid window creation flag and will be removed automatically elsewhere, and check for and remove the explicit skip taskbar and borderless flags since they are implicit for popup windows.
2023-03-13 13:56:01 -04:00
Frank Praznik
f97b469184 video: Disallow additional operations on popups where appropriate
Disallow additional window operations on popups where they have no functionality or otherwise don't make sense:

- Popups cannot be set as modal to other windows (they're already child windows of a parent)
- Other windows cannot be set as modal of popups
- Popups cannot explicitly grab the mouse/keyboard (the topmost popup menu takes the keyboard focus implicitly)
- Popups cannot flash or be raised
2023-03-13 13:56:01 -04:00
Frank Praznik
d5b5e524af wayland: Set the EGL swap timeout to one second from the current time
Set the timeout max to one second from the current time or presentation time will always be greater than the timeout and the application will run unthrottled.
2023-03-12 17:07:32 -04:00
Sam Lantinga
67e2558310 Check tooltip and popup window flags during parameter validation 2023-03-11 12:44:57 -08:00
Frank Praznik
3e28588bb6 wayland: Never use the cached size for maximized or tiled windows
Don't use the cached floating window size for maximized or tiled windows. Fixes the initial window size when creating a window with the maximized flag set.
2023-03-11 11:40:57 -05:00
Sam Lantinga
f4c1260120 More changes to fix building with older macOS SDKs 2023-03-10 16:38:45 -08:00
Sam Lantinga
c044cff4c7 Rewrite WIN_GetSystemTheme() so we don't need to bump Windows SDK versions 2023-03-10 16:29:42 -08:00
Sam Lantinga
edc8f0b841 Fixed building on older macOS SDKs 2023-03-10 16:15:46 -08:00
Frank Praznik
98e864f286 win32: Implement popup windows 2023-03-10 15:51:13 -08:00
Frank Praznik
77dc1a929a cocoa: Implement popup windows 2023-03-10 15:51:13 -08:00
Frank Praznik
f41d3933e6 X11: Implement popup windows 2023-03-10 15:51:13 -08:00
Frank Praznik
68d2d9f76d wayland: Implement popup windows 2023-03-10 15:51:13 -08:00
Frank Praznik
e987c4a463 video: Add the concept of child popup windows
Add the CreatePopupWindow function to allow the creation of child tooltip and menu popup windows. Popup windows must be created as either a tooltip or popup menu and cannot be minimized, maximized, made fullscreen, or grab the mouse.

Child popup windows are tracked and will be recursively hidden, shown, or destroyed in tandem with the parent window.
2023-03-10 15:51:13 -08:00
Sam Lantinga
dfa832c5de Make sure our pixel size is up to date at window creation
This guarantees that the application will always get SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED when a window is created.

Fixes https://github.com/libsdl-org/SDL/issues/7441
2023-03-10 08:11:16 -08:00
Sam Lantinga
c6443d86c9 Code style: changed "sizeof foo" to "sizeof(foo)" (thanks @sezero!) 2023-03-09 15:10:44 -08:00
Guldoman
ad95c93bf4 Add portal interface to support SDL_GetSystemTheme in linux 2023-03-09 15:05:16 -08:00
Sam Lantinga
2ca727aec6 If the client rect is empty, use the last known window size
This happens on Windows 11 with fullscreen desktop windows when the desktop is brought up with the Windows+D shortcut.

Fixes https://github.com/libsdl-org/SDL/issues/7419
2023-03-09 10:31:39 -08:00
Ozkan Sezer
34d13cd0a9 made IsModifierKeyPressed() helper static 2023-03-09 20:28:05 +03:00
Deve
4de6ddd07f Fixed incorrect modifier keys handling on macOS 2023-03-09 09:00:53 -08:00
David Demelier
d0c4849d0b Rename SDL_atomic_t to SDL_AtomicInt 2023-03-09 09:00:09 -08:00
Sam Lantinga
8994878767 Added SDL_GetSystemTheme() to return whether the system is using a dark or light color theme, and SDL_EVENT_SYSTEM_THEME_CHANGED is sent when this changes
Fixes https://github.com/libsdl-org/SDL/issues/5334
Fixes https://github.com/libsdl-org/SDL/issues/6958
Closes https://github.com/libsdl-org/SDL/pull/6440
2023-03-09 03:25:20 -08:00
Sylvain
c963f02571 More fix warnings about static function and prototype 2023-03-08 16:14:09 +01:00
Sam Lantinga
61309b4382 Disassociate the SDLOpenGLContext from the view before deleting it
If we don't do this, the view will be blanked even if another context is current and rendering from that context won't be visible.

Fixes https://github.com/libsdl-org/SDL/issues/4986
2023-03-08 01:35:21 -08:00
Sam Lantinga
04a03a3eec Use SDL_GL_DeleteContext instead of Cocoa_GL_DeleteContext for context cleanup
That will make the current context NULL before deleting the context.
2023-03-08 01:33:28 -08:00
Sam Lantinga
f8106d4f30 Fixed build warning
format '%x' expects argument of type 'unsigned int', but argument 2 has type 'Uint32' {aka 'long unsigned int'}
2023-03-06 13:33:52 -08:00
Sam Lantinga
c0e7845874 Be more clear about what flags conflicted 2023-03-06 11:43:28 -08:00
Sam Lantinga
c69aea887a Fixed permissions for src/video/x11/SDL_x11modes.c 2023-03-06 11:39:21 -08:00
Sam Lantinga
698dbd8464 SDL_CreateWindow() has been simplified and no longer takes a window position. 2023-03-06 09:50:12 -08:00
Sam Lantinga
7905254087 Updated debug print with new SDL_DisplayMode fields 2023-03-06 09:50:12 -08:00
Sylvain
a946a34452 Add Drag and drop position, for x11, wayland and MACOSX 2023-03-06 08:44:05 -08:00
Sylvain
813c586edb Change local (void*) to SDL_FunctionPointer 2023-03-06 12:38:38 +01:00
Sylvain
9b065bf54b Fix various warnings: static /void / comma 2023-03-06 12:37:37 +01:00
Sam Lantinga
6b87d1938f Added SDL_EVENT_DISPLAY_SCALE_CHANGED 2023-03-03 11:16:31 -08:00
Eddy Jansson
91b9ba8c54 Correct typo GetSlectionText -> GetSelectionText 2023-03-02 16:29:18 -05:00
Sam Lantinga
3bba33932f Fixed testshape on high DPI displays
Since the shape is set based on the pixels in the image, we want the window to have the same number of pixels.
2023-03-02 10:15:14 -08:00
Sam Lantinga
ebdb320651 Follow the same pattern for releasing the window data in the UIKit driver
Possible fix for https://github.com/libsdl-org/SDL/issues/7361
2023-02-28 15:56:49 -08:00
Sam Lantinga
6aeb07d4c2 Fixed SDL windows getting the maximized state after leaving fullscreen on macOS 2023-02-28 09:03:28 -08:00
Sam Lantinga
c824060503 Fixed missing line 2023-02-27 21:08:50 -08:00
Sam Lantinga
a6d8cdf186 Setting a window to non-fullscreen when it's not fullscreen is a no-op
Also explicitly reset fullscreen mode when destroying a window, eliminating the need for doing that in SDL_HideWindow(), as that's already taken care of in SDL_OnWindowHidden() normally.
2023-02-27 21:06:05 -08:00
Sam Lantinga
fcc9deb365 Only restore desktop mode when hiding a window if that window was fullscreen 2023-02-27 15:38:48 -08:00
Torge Matthies
f18b5656f6 x11: Fix duplicate Xinput2 event reception
Passing True for owner_events in the XGrabPointer call makes all
XI_RawMotion events appear in the queue twice, with the only difference
between them being the value of XGenericEventCookie::cookie. These have
always been filtered out by a check in the XI_RawMotion handler,
however with a mouse that polls at more than 1 kHz frequency, there
also exist legitimate events that appear indistinguishable from these
duplicated events. These must not be filtered out, otherwise the
pointer may move at an inconsistent speed, appearing like a bad pointer
acceleration implementation.

Change owner_events to False in the XGrabPointer and remove the
duplicate event detection code to fix this.

Signed-off-by: Torge Matthies <openglfreak@googlemail.com>
2023-02-25 10:04:46 -08:00
David Carlier
d73f2d76a0 Haiku modernizing a bit the C++ code with C++11 heuristics
with BApplication
2023-02-24 20:54:41 -08:00
Sam Lantinga
2897de9efc Clear the undefined position state when the window is placed
This allows the window to be recreated in the same location if needed, for example if recreated because of switching to OpenGL rendering.
2023-02-24 18:04:54 -08:00
Sam Lantinga
4d9d343662 Added handling for undefined window position on X11 2023-02-24 17:49:45 -08:00
Sam Lantinga
3bfd596608 Added handling for undefined window position on Windows 2023-02-24 17:06:47 -08:00
Sam Lantinga
daffe02b11 Fixed relative mouse motion over remote desktop
Setting the cursor clip area to a single pixel prevents the relative mouse motion remote desktop warping from working, so the mouse is never recentered.
2023-02-24 09:20:38 -08:00
Anonymous Maarten
f2a277414f raspberry: SDL_DisplayMode's w/h members have been renamed to screen_w/screen_h
Found by running the coccinelle script on SDL's source tree.
2023-02-24 06:55:28 -08:00
Sam Lantinga
b2d913883c Fixed view frame from flipping back and forth between landscape and portrait on iOS 2023-02-23 09:14:53 -08:00
Frank Praznik
e8fd7f74bd windows: Track the window display ID locally
Track the current window display ID locally so as not to depend on specific behavior of the video layer, which may change the value at times when it isn't expected.
2023-02-23 07:39:16 -08:00
Frank Praznik
9f1a7bb94c wayland: Track the window display ID locally
Track the current window display ID locally so as not to depend on specific behavior of the video layer, which may change the value at times when it isn't expected.
2023-02-23 07:39:16 -08:00