diff -r f4d353bd5d16 src/events/SDL_windowevents.c --- a/src/events/SDL_windowevents.c Thu Nov 27 09:55:34 2014 -0500 +++ b/src/events/SDL_windowevents.c Fri Nov 28 14:43:57 2014 +0100 @@ -207,4 +207,27 @@ return (posted); } +int +SDL_SendWindowFlagChangeEvents(SDL_Window * window, Uint32 flags) { + int posted; + + if (flags & SDL_WINDOW_MINIMIZED) { + posted += SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MINIMIZED, 0, 0); + } else if (flags & SDL_WINDOW_MAXIMIZED) { + posted += SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MAXIMIZED, 0, 0); + } else { + posted += SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESTORED, 0, 0); + } + if (flags & SDL_WINDOW_SHOWN) { + posted += SDL_SendWindowEvent(window, SDL_WINDOWEVENT_SHOWN, 0, 0); + } else { + posted += SDL_SendWindowEvent(window, SDL_WINDOWEVENT_HIDDEN, 0, 0); + } + + if (!window) { + return 0; + } + + return (posted); +} /* vi: set ts=4 sw=4 expandtab: */ diff -r f4d353bd5d16 src/events/SDL_windowevents_c.h --- a/src/events/SDL_windowevents_c.h Thu Nov 27 09:55:34 2014 -0500 +++ b/src/events/SDL_windowevents_c.h Fri Nov 28 14:43:57 2014 +0100 @@ -25,6 +25,7 @@ extern int SDL_SendWindowEvent(SDL_Window * window, Uint8 windowevent, int data1, int data2); +extern int SDL_SendWindowFlagChangeEvents(SDL_Window * window, Uint32 flags); #endif /* _SDL_windowevents_c_h */ diff -r f4d353bd5d16 src/video/x11/SDL_x11events.c --- a/src/video/x11/SDL_x11events.c Thu Nov 27 09:55:34 2014 -0500 +++ b/src/video/x11/SDL_x11events.c Fri Nov 28 14:43:57 2014 +0100 @@ -1075,6 +1075,8 @@ because they use the NETWM protocol to notify us of changes. */ Uint32 flags = X11_GetNetWMState(_this, xevent.xproperty.window); + SDL_SendWindowFlagChangeEvents(data->window, flags); + if ((flags^data->window->flags) & SDL_WINDOW_HIDDEN || (flags^data->window->flags) & SDL_WINDOW_FULLSCREEN ) { if (flags & SDL_WINDOW_HIDDEN) {