diff --git a/SDL2pp/Window.cc b/SDL2pp/Window.cc index 9417094..35ef144 100644 --- a/SDL2pp/Window.cc +++ b/SDL2pp/Window.cc @@ -142,6 +142,14 @@ Window& Window::SetFullscreen(Uint32 flags) { return *this; } +Window& Window::ToggleFullscreen() { + Uint32 const fullscreenFlag = SDL_WINDOW_FULLSCREEN | SDL_WINDOW_FULLSCREEN_DESKTOP; + bool const isFullscreen = SDL_GetWindowFlags(window_) & fullscreenFlag; + if (SDL_SetWindowFullscreen(window_, isFullscreen ? SDL_FALSE : SDL_WINDOW_FULLSCREEN_DESKTOP) != 0) + throw Exception("SDL_SetWindowFullscreen"); + return *this; +} + Window& Window::SetSize(int w, int h) { SDL_SetWindowSize(window_, w, h); return *this; diff --git a/SDL2pp/Window.hh b/SDL2pp/Window.hh index 4ebf000..5c53e8f 100644 --- a/SDL2pp/Window.hh +++ b/SDL2pp/Window.hh @@ -302,6 +302,18 @@ public: //////////////////////////////////////////////////////////// Window& SetFullscreen(Uint32 flags); + //////////////////////////////////////////////////////////// + /// \brief Toggle the window's fullscreen state + /// + /// \returns Reference to self + /// + /// \throws SDL2pp::Exception + /// + /// \see http://wiki.libsdl.org/SDL_SetWindowFullscreen + /// + //////////////////////////////////////////////////////////// + Window& ToggleFullscreen(); + //////////////////////////////////////////////////////////// /// \brief Set the size of a window's client area ///