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

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

Definition at line 74 of file SDL_windowevents.c.

References SDL_Window::flags, SDL_Rect::h, SDL_Window::h, SDL_Window::id, SDL_Window::next, SDL_Window::prev, 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, SDL_WINDOWPOS_ISUNDEFINED, SDL_Rect::w, SDL_Window::w, SDL_Window::windowed, SDL_Rect::x, SDL_Window::x, SDL_Rect::y, and SDL_Window::y.

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

{
int posted;
if (!window) {
return 0;
}
switch (windowevent) {
if (window->flags & SDL_WINDOW_SHOWN) {
return 0;
}
window->flags &= ~SDL_WINDOW_HIDDEN;
window->flags |= SDL_WINDOW_SHOWN;
break;
if (!(window->flags & SDL_WINDOW_SHOWN)) {
return 0;
}
window->flags &= ~SDL_WINDOW_SHOWN;
break;
return 0;
}
if (!(window->flags & SDL_WINDOW_FULLSCREEN)) {
window->windowed.x = data1;
window->windowed.y = data2;
}
if (data1 == window->x && data2 == window->y) {
return 0;
}
window->x = data1;
window->y = data2;
break;
if (!(window->flags & SDL_WINDOW_FULLSCREEN)) {
window->windowed.w = data1;
window->windowed.h = data2;
}
if (data1 == window->w && data2 == window->h) {
return 0;
}
window->w = data1;
window->h = data2;
break;
if (window->flags & SDL_WINDOW_MINIMIZED) {
return 0;
}
break;
if (window->flags & SDL_WINDOW_MAXIMIZED) {
return 0;
}
break;
return 0;
}
break;
if (window->flags & SDL_WINDOW_MOUSE_FOCUS) {
return 0;
}
break;
if (!(window->flags & SDL_WINDOW_MOUSE_FOCUS)) {
return 0;
}
break;
if (window->flags & SDL_WINDOW_INPUT_FOCUS) {
return 0;
}
break;
if (!(window->flags & SDL_WINDOW_INPUT_FOCUS)) {
return 0;
}
break;
}
/* Post the event, if desired */
posted = 0;
event.type = SDL_WINDOWEVENT;
event.window.event = windowevent;
event.window.data1 = data1;
event.window.data2 = data2;
event.window.windowID = window->id;
/* Fixes queue overflow with resize events that aren't processed */
if (windowevent == SDL_WINDOWEVENT_SIZE_CHANGED) {
}
if (windowevent == SDL_WINDOWEVENT_MOVED) {
}
if (windowevent == SDL_WINDOWEVENT_EXPOSED) {
}
posted = (SDL_PushEvent(&event) > 0);
}
if (windowevent == SDL_WINDOWEVENT_CLOSE) {
if ( !window->prev && !window->next ) {
/* This is the last window in the list so send the SDL_QUIT event */
}
}
return (posted);
}