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) ||
101  SDL_WINDOWPOS_ISUNDEFINED(data2)) {
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;
131  window->flags |= SDL_WINDOW_MINIMIZED;
133  break;
135  if (window->flags & SDL_WINDOW_MAXIMIZED) {
136  return 0;
137  }
138  window->flags &= ~SDL_WINDOW_MINIMIZED;
139  window->flags |= SDL_WINDOW_MAXIMIZED;
140  break;
142  if (!(window->flags & (SDL_WINDOW_MINIMIZED | SDL_WINDOW_MAXIMIZED))) {
143  return 0;
144  }
147  break;
149  if (window->flags & SDL_WINDOW_MOUSE_FOCUS) {
150  return 0;
151  }
152  window->flags |= SDL_WINDOW_MOUSE_FOCUS;
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  }
166  window->flags |= SDL_WINDOW_INPUT_FOCUS;
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 }

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().

SDL_OnWindowMinimized
void SDL_OnWindowMinimized(SDL_Window *window)
Definition: SDL_video.c:2622
SDL_WINDOW_MINIMIZED
@ SDL_WINDOW_MINIMIZED
Definition: SDL_video.h:105
SDL_WINDOWEVENT_FOCUS_LOST
@ SDL_WINDOWEVENT_FOCUS_LOST
Definition: SDL_video.h:165
SDL_WINDOWEVENT_CLOSE
@ SDL_WINDOWEVENT_CLOSE
Definition: SDL_video.h:166
SDL_WINDOWEVENT_ENTER
@ SDL_WINDOWEVENT_ENTER
Definition: SDL_video.h:162
SDL_OnWindowHidden
void SDL_OnWindowHidden(SDL_Window *window)
Definition: SDL_video.c:2609
SDL_WINDOW_FULLSCREEN
@ SDL_WINDOW_FULLSCREEN
Definition: SDL_video.h:99
SDL_WINDOWEVENT_RESIZED
@ SDL_WINDOWEVENT_RESIZED
Definition: SDL_video.h:154
SDL_ENABLE
#define SDL_ENABLE
Definition: SDL_events.h:760
SDL_WINDOW_MAXIMIZED
@ SDL_WINDOW_MAXIMIZED
Definition: SDL_video.h:106
SDL_WINDOWEVENT_MOVED
@ SDL_WINDOWEVENT_MOVED
Definition: SDL_video.h:152
SDL_WINDOW_INPUT_FOCUS
@ SDL_WINDOW_INPUT_FOCUS
Definition: SDL_video.h:108
SDL_WINDOWEVENT_SHOWN
@ SDL_WINDOWEVENT_SHOWN
Definition: SDL_video.h:148
event
struct _cl_event * event
Definition: SDL_opengl_glext.h:2652
SDL_OnWindowRestored
void SDL_OnWindowRestored(SDL_Window *window)
Definition: SDL_video.c:2628
SDL_GetEventState
#define SDL_GetEventState(type)
Definition: SDL_events.h:773
window
EGLSurface EGLNativeWindowType * window
Definition: eglext.h:1025
RemovePendingMoveEvents
static int RemovePendingMoveEvents(void *userdata, SDL_Event *event)
Definition: SDL_windowevents.c:46
SDL_PushEvent
#define SDL_PushEvent
Definition: SDL_dynapi_overrides.h:125
SDL_WINDOWEVENT_EXPOSED
@ SDL_WINDOWEVENT_EXPOSED
Definition: SDL_video.h:150
SDL_WINDOWEVENT_SIZE_CHANGED
@ SDL_WINDOWEVENT_SIZE_CHANGED
Definition: SDL_video.h:155
SDL_WINDOWEVENT_MINIMIZED
@ SDL_WINDOWEVENT_MINIMIZED
Definition: SDL_video.h:158
SDL_WINDOW_SHOWN
@ SDL_WINDOW_SHOWN
Definition: SDL_video.h:101
RemovePendingExposedEvents
static int RemovePendingExposedEvents(void *userdata, SDL_Event *event)
Definition: SDL_windowevents.c:60
SDL_OnWindowShown
void SDL_OnWindowShown(SDL_Window *window)
Definition: SDL_video.c:2603
SDL_OnWindowFocusGained
void SDL_OnWindowFocusGained(SDL_Window *window)
Definition: SDL_video.c:2657
SDL_WINDOW_HIDDEN
@ SDL_WINDOW_HIDDEN
Definition: SDL_video.h:102
SDL_FilterEvents
#define SDL_FilterEvents
Definition: SDL_dynapi_overrides.h:130
RemovePendingSizeChangedAndResizedEvents
static int RemovePendingSizeChangedAndResizedEvents(void *userdata, SDL_Event *event)
Definition: SDL_windowevents.c:31
SDL_OnWindowFocusLost
void SDL_OnWindowFocusLost(SDL_Window *window)
Definition: SDL_video.c:2701
SDL_OnWindowLeave
void SDL_OnWindowLeave(SDL_Window *window)
Definition: SDL_video.c:2652
SDL_WINDOW_MOUSE_FOCUS
@ SDL_WINDOW_MOUSE_FOCUS
Definition: SDL_video.h:109
SDL_WINDOWEVENT_HIDDEN
@ SDL_WINDOWEVENT_HIDDEN
Definition: SDL_video.h:149
SDL_Event
General event structure.
Definition: SDL_events.h:558
SDL_WINDOWEVENT
@ SDL_WINDOWEVENT
Definition: SDL_events.h:92
SDL_WINDOWEVENT_RESTORED
@ SDL_WINDOWEVENT_RESTORED
Definition: SDL_video.h:160
SDL_WINDOWEVENT_FOCUS_GAINED
@ SDL_WINDOWEVENT_FOCUS_GAINED
Definition: SDL_video.h:164
SDL_SendQuit
int SDL_SendQuit(void)
Definition: SDL_quit.c:201
SDL_WINDOWPOS_ISUNDEFINED
#define SDL_WINDOWPOS_ISUNDEFINED(X)
Definition: SDL_video.h:130
SDL_OnWindowResized
void SDL_OnWindowResized(SDL_Window *window)
Definition: SDL_video.c:2615
SDL_WINDOWEVENT_MAXIMIZED
@ SDL_WINDOWEVENT_MAXIMIZED
Definition: SDL_video.h:159
SDL_WINDOWEVENT_LEAVE
@ SDL_WINDOWEVENT_LEAVE
Definition: SDL_video.h:163
SDL_OnWindowEnter
void SDL_OnWindowEnter(SDL_Window *window)
Definition: SDL_video.c:2644