SDL 2.0
SDL_windowevents_c.h File Reference
#include "../SDL_internal.h"
+ Include dependency graph for SDL_windowevents_c.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int SDL_SendWindowEvent (SDL_Window *window, Uint8 windowevent, int data1, int data2)
 

Function Documentation

◆ SDL_SendWindowEvent()

int SDL_SendWindowEvent ( SDL_Window window,
Uint8  windowevent,
int  data1,
int  data2 
)

Definition at line 74 of file SDL_windowevents.c.

76{
77 int posted;
78
79 if (!window) {
80 return 0;
81 }
82 switch (windowevent) {
84 if (window->flags & SDL_WINDOW_SHOWN) {
85 return 0;
86 }
88 window->flags |= SDL_WINDOW_SHOWN;
90 break;
92 if (!(window->flags & SDL_WINDOW_SHOWN)) {
93 return 0;
94 }
95 window->flags &= ~SDL_WINDOW_SHOWN;
96 window->flags |= SDL_WINDOW_HIDDEN;
98 break;
100 if (SDL_WINDOWPOS_ISUNDEFINED(data1) ||
102 return 0;
103 }
104 if (!(window->flags & SDL_WINDOW_FULLSCREEN)) {
105 window->windowed.x = data1;
106 window->windowed.y = data2;
107 }
108 if (data1 == window->x && data2 == window->y) {
109 return 0;
110 }
111 window->x = data1;
112 window->y = data2;
113 break;
115 if (!(window->flags & SDL_WINDOW_FULLSCREEN)) {
116 window->windowed.w = data1;
117 window->windowed.h = data2;
118 }
119 if (data1 == window->w && data2 == window->h) {
120 return 0;
121 }
122 window->w = data1;
123 window->h = data2;
125 break;
127 if (window->flags & SDL_WINDOW_MINIMIZED) {
128 return 0;
129 }
130 window->flags &= ~SDL_WINDOW_MAXIMIZED;
133 break;
135 if (window->flags & SDL_WINDOW_MAXIMIZED) {
136 return 0;
137 }
138 window->flags &= ~SDL_WINDOW_MINIMIZED;
140 break;
143 return 0;
144 }
147 break;
149 if (window->flags & SDL_WINDOW_MOUSE_FOCUS) {
150 return 0;
151 }
154 break;
156 if (!(window->flags & SDL_WINDOW_MOUSE_FOCUS)) {
157 return 0;
158 }
159 window->flags &= ~SDL_WINDOW_MOUSE_FOCUS;
161 break;
163 if (window->flags & SDL_WINDOW_INPUT_FOCUS) {
164 return 0;
165 }
168 break;
170 if (!(window->flags & SDL_WINDOW_INPUT_FOCUS)) {
171 return 0;
172 }
173 window->flags &= ~SDL_WINDOW_INPUT_FOCUS;
175 break;
176 }
177
178 /* Post the event, if desired */
179 posted = 0;
182 event.type = SDL_WINDOWEVENT;
183 event.window.event = windowevent;
184 event.window.data1 = data1;
185 event.window.data2 = data2;
186 event.window.windowID = window->id;
187
188 /* Fixes queue overflow with resize events that aren't processed */
189 if (windowevent == SDL_WINDOWEVENT_SIZE_CHANGED) {
191 }
192 if (windowevent == SDL_WINDOWEVENT_MOVED) {
194 }
195 if (windowevent == SDL_WINDOWEVENT_EXPOSED) {
197 }
198 posted = (SDL_PushEvent(&event) > 0);
199 }
200
201 if (windowevent == SDL_WINDOWEVENT_CLOSE) {
202 if ( !window->prev && !window->next ) {
203 /* This is the last window in the list so send the SDL_QUIT event */
204 SDL_SendQuit();
205 }
206 }
207
208 return (posted);
209}
#define SDL_PushEvent
#define SDL_FilterEvents
@ SDL_WINDOWEVENT
Definition: SDL_events.h:92
#define SDL_GetEventState(type)
Definition: SDL_events.h:772
#define SDL_ENABLE
Definition: SDL_events.h:759
int SDL_SendQuit(void)
Definition: SDL_quit.c:201
struct _cl_event * event
void SDL_OnWindowLeave(SDL_Window *window)
Definition: SDL_video.c:2631
void SDL_OnWindowMinimized(SDL_Window *window)
Definition: SDL_video.c:2601
void SDL_OnWindowFocusLost(SDL_Window *window)
Definition: SDL_video.c:2680
void SDL_OnWindowHidden(SDL_Window *window)
Definition: SDL_video.c:2588
void SDL_OnWindowShown(SDL_Window *window)
Definition: SDL_video.c:2582
void SDL_OnWindowResized(SDL_Window *window)
Definition: SDL_video.c:2594
void SDL_OnWindowEnter(SDL_Window *window)
Definition: SDL_video.c:2623
void SDL_OnWindowRestored(SDL_Window *window)
Definition: SDL_video.c:2607
void SDL_OnWindowFocusGained(SDL_Window *window)
Definition: SDL_video.c:2636
#define SDL_WINDOWPOS_ISUNDEFINED(X)
Definition: SDL_video.h:131
@ SDL_WINDOW_SHOWN
Definition: SDL_video.h:102
@ SDL_WINDOW_MINIMIZED
Definition: SDL_video.h:106
@ SDL_WINDOW_MOUSE_FOCUS
Definition: SDL_video.h:110
@ SDL_WINDOW_FULLSCREEN
Definition: SDL_video.h:100
@ SDL_WINDOW_MAXIMIZED
Definition: SDL_video.h:107
@ SDL_WINDOW_HIDDEN
Definition: SDL_video.h:103
@ SDL_WINDOW_INPUT_FOCUS
Definition: SDL_video.h:109
@ SDL_WINDOWEVENT_HIDDEN
Definition: SDL_video.h:150
@ SDL_WINDOWEVENT_FOCUS_LOST
Definition: SDL_video.h:166
@ SDL_WINDOWEVENT_CLOSE
Definition: SDL_video.h:167
@ SDL_WINDOWEVENT_RESIZED
Definition: SDL_video.h:155
@ SDL_WINDOWEVENT_FOCUS_GAINED
Definition: SDL_video.h:165
@ SDL_WINDOWEVENT_SHOWN
Definition: SDL_video.h:149
@ SDL_WINDOWEVENT_MOVED
Definition: SDL_video.h:153
@ SDL_WINDOWEVENT_MINIMIZED
Definition: SDL_video.h:159
@ SDL_WINDOWEVENT_LEAVE
Definition: SDL_video.h:164
@ SDL_WINDOWEVENT_MAXIMIZED
Definition: SDL_video.h:160
@ SDL_WINDOWEVENT_SIZE_CHANGED
Definition: SDL_video.h:156
@ SDL_WINDOWEVENT_RESTORED
Definition: SDL_video.h:161
@ SDL_WINDOWEVENT_EXPOSED
Definition: SDL_video.h:151
@ SDL_WINDOWEVENT_ENTER
Definition: SDL_video.h:163
static int RemovePendingExposedEvents(void *userdata, SDL_Event *event)
static int RemovePendingMoveEvents(void *userdata, SDL_Event *event)
static int RemovePendingSizeChangedAndResizedEvents(void *userdata, SDL_Event *event)
EGLSurface EGLNativeWindowType * window
Definition: eglext.h:1025
General event structure.
Definition: SDL_events.h:558

References RemovePendingExposedEvents(), RemovePendingMoveEvents(), RemovePendingSizeChangedAndResizedEvents(), SDL_ENABLE, SDL_FilterEvents, SDL_GetEventState, SDL_OnWindowEnter(), SDL_OnWindowFocusGained(), SDL_OnWindowFocusLost(), SDL_OnWindowHidden(), SDL_OnWindowLeave(), SDL_OnWindowMinimized(), SDL_OnWindowResized(), SDL_OnWindowRestored(), SDL_OnWindowShown(), SDL_PushEvent, SDL_SendQuit(), SDL_WINDOW_FULLSCREEN, SDL_WINDOW_HIDDEN, SDL_WINDOW_INPUT_FOCUS, SDL_WINDOW_MAXIMIZED, SDL_WINDOW_MINIMIZED, SDL_WINDOW_MOUSE_FOCUS, SDL_WINDOW_SHOWN, SDL_WINDOWEVENT, SDL_WINDOWEVENT_CLOSE, SDL_WINDOWEVENT_ENTER, SDL_WINDOWEVENT_EXPOSED, SDL_WINDOWEVENT_FOCUS_GAINED, SDL_WINDOWEVENT_FOCUS_LOST, SDL_WINDOWEVENT_HIDDEN, SDL_WINDOWEVENT_LEAVE, SDL_WINDOWEVENT_MAXIMIZED, SDL_WINDOWEVENT_MINIMIZED, SDL_WINDOWEVENT_MOVED, SDL_WINDOWEVENT_RESIZED, SDL_WINDOWEVENT_RESTORED, SDL_WINDOWEVENT_SHOWN, SDL_WINDOWEVENT_SIZE_CHANGED, and SDL_WINDOWPOS_ISUNDEFINED.

Referenced by SDL_BApp::_HandleBasicWindowEvent(), SDL_BApp::_HandleWindowMoved(), SDL_BApp::_HandleWindowResized(), SDL_HideWindow(), SDL_OnApplicationDidBecomeActive(), SDL_OnApplicationWillResignActive(), SDL_OnWindowResized(), SDL_SetKeyboardFocus(), SDL_SetMouseFocus(), SDL_ShowWindow(), SDL_UpdateFullscreenMode(), and WINRT_ProcessWindowSizeChange().