Browse Source

Added love.window.minimize (resolves issue #904).

Alex Szpakowski 11 years ago
parent
commit
dac9f4eaaa

+ 1 - 0
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'.

+ 2 - 0
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();
 

+ 6 - 0
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);

+ 2 - 0
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;

+ 7 - 0
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 }
 };
 

+ 1 - 0
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