From dac9f4eaaa3723edc36b7dc6f9a1d3da0a8e5464 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sat, 5 Jul 2014 17:55:06 -0300 Subject: [PATCH] Added love.window.minimize (resolves issue #904). --- changes.txt | 1 + src/modules/window/Window.h | 2 ++ src/modules/window/sdl/Window.cpp | 6 ++++++ src/modules/window/sdl/Window.h | 2 ++ src/modules/window/wrap_Window.cpp | 7 +++++++ src/modules/window/wrap_Window.h | 1 + 6 files changed, 19 insertions(+) diff --git a/changes.txt b/changes.txt index e62c7943b..d0c4203b2 100644 --- a/changes.txt +++ b/changes.txt @@ -14,6 +14,7 @@ LOVE 0.9.2 [Baby Inspector] * Added Joint:setUserData and Joint:getUserData. * Added Body:getWorld. * Added love.window.getDisplayName. + * Added love.window.minimize. * Deprecated SpriteBatch:bind and SpriteBatch:unbind. * Deprecated all uses of the name 'FSAA' in favor of 'MSAA'. diff --git a/src/modules/window/Window.h b/src/modules/window/Window.h index 3cadb6d0d..e1afb25d2 100644 --- a/src/modules/window/Window.h +++ b/src/modules/window/Window.h @@ -104,6 +104,8 @@ public: virtual bool setIcon(love::image::ImageData *imgd) = 0; virtual love::image::ImageData *getIcon() = 0; + virtual void minimize() = 0; + // default no-op implementation virtual void swapBuffers(); diff --git a/src/modules/window/sdl/Window.cpp b/src/modules/window/sdl/Window.cpp index 6f2667166..c0e7461e6 100644 --- a/src/modules/window/sdl/Window.cpp +++ b/src/modules/window/sdl/Window.cpp @@ -601,6 +601,12 @@ love::image::ImageData *Window::getIcon() return curMode.icon; } +void Window::minimize() +{ + if (window != nullptr) + SDL_MinimizeWindow(window); +} + void Window::swapBuffers() { SDL_GL_SwapWindow(window); diff --git a/src/modules/window/sdl/Window.h b/src/modules/window/sdl/Window.h index f44aebf35..996e99c7d 100644 --- a/src/modules/window/sdl/Window.h +++ b/src/modules/window/sdl/Window.h @@ -68,6 +68,8 @@ public: bool setIcon(love::image::ImageData *imgd); love::image::ImageData *getIcon(); + void minimize(); + void swapBuffers(); bool hasFocus() const; diff --git a/src/modules/window/wrap_Window.cpp b/src/modules/window/wrap_Window.cpp index 6683c83e2..9a8a103a7 100644 --- a/src/modules/window/wrap_Window.cpp +++ b/src/modules/window/wrap_Window.cpp @@ -334,6 +334,12 @@ int w_getPixelScale(lua_State *L) return 1; } +int w_minimize(lua_State* /*L*/) +{ + instance->minimize(); + return 0; +} + static const luaL_Reg functions[] = { { "getDisplayCount", w_getDisplayCount }, @@ -356,6 +362,7 @@ static const luaL_Reg functions[] = { "hasMouseFocus", w_hasMouseFocus }, { "isVisible", w_isVisible }, { "getPixelScale", w_getPixelScale }, + { "minimize", w_minimize }, { 0, 0 } }; diff --git a/src/modules/window/wrap_Window.h b/src/modules/window/wrap_Window.h index 2739b8b9e..1b5277a11 100644 --- a/src/modules/window/wrap_Window.h +++ b/src/modules/window/wrap_Window.h @@ -49,6 +49,7 @@ int w_hasFocus(lua_State *L); int w_hasMouseFocus(lua_State *L); int w_isVisible(lua_State *L); int w_getPixelScale(lua_State *L); +int w_minimize(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_window(lua_State *L); } // window