Browse Source

Fix love.window.isMaximized. Add love.window.restore and love.window.isMinimized (resolves issue #1354).

--HG--
branch : minor
Alex Szpakowski 7 years ago
parent
commit
0b9ca3e344

+ 2 - 0
src/modules/window/Window.h

@@ -152,8 +152,10 @@ public:
 
 
 	virtual void minimize() = 0;
 	virtual void minimize() = 0;
 	virtual void maximize() = 0;
 	virtual void maximize() = 0;
+	virtual void restore() = 0;
 
 
 	virtual bool isMaximized() const = 0;
 	virtual bool isMaximized() const = 0;
+	virtual bool isMinimized() const = 0;
 
 
 	// default no-op implementation
 	// default no-op implementation
 	virtual void swapBuffers();
 	virtual void swapBuffers();

+ 14 - 0
src/modules/window/sdl/Window.cpp

@@ -914,11 +914,25 @@ void Window::maximize()
 	}
 	}
 }
 }
 
 
+void Window::restore()
+{
+	if (window != nullptr)
+	{
+		SDL_RestoreWindow(window);
+		updateSettings(settings, true);
+	}
+}
+
 bool Window::isMaximized() const
 bool Window::isMaximized() const
 {
 {
 	return window != nullptr && (SDL_GetWindowFlags(window) & SDL_WINDOW_MAXIMIZED);
 	return window != nullptr && (SDL_GetWindowFlags(window) & SDL_WINDOW_MAXIMIZED);
 }
 }
 
 
+bool Window::isMinimized() const
+{
+	return window != nullptr && (SDL_GetWindowFlags(window) & SDL_WINDOW_MINIMIZED);
+}
+
 void Window::swapBuffers()
 void Window::swapBuffers()
 {
 {
 	SDL_GL_SwapWindow(window);
 	SDL_GL_SwapWindow(window);

+ 2 - 0
src/modules/window/sdl/Window.h

@@ -77,8 +77,10 @@ public:
 
 
 	void minimize();
 	void minimize();
 	void maximize();
 	void maximize();
+	void restore();
 
 
 	bool isMaximized() const;
 	bool isMaximized() const;
+	bool isMinimized() const;
 
 
 	void swapBuffers();
 	void swapBuffers();
 
 

+ 15 - 1
src/modules/window/wrap_Window.cpp

@@ -479,10 +479,22 @@ int w_maximize(lua_State *)
 	return 0;
 	return 0;
 }
 }
 
 
+int w_restore(lua_State *)
+{
+	instance()->restore();
+	return 0;
+}
+
 int w_isMaximized(lua_State *L)
 int w_isMaximized(lua_State *L)
 {
 {
 	luax_pushboolean(L, instance()->isMaximized());
 	luax_pushboolean(L, instance()->isMaximized());
-	return 0;
+	return 1;
+}
+
+int w_isMinimized(lua_State *L)
+{
+	luax_pushboolean(L, instance()->isMinimized());
+	return 1;
 }
 }
 
 
 int w_showMessageBox(lua_State *L)
 int w_showMessageBox(lua_State *L)
@@ -586,7 +598,9 @@ static const luaL_Reg functions[] =
 	{ "fromPixels", w_fromPixels },
 	{ "fromPixels", w_fromPixels },
 	{ "minimize", w_minimize },
 	{ "minimize", w_minimize },
 	{ "maximize", w_maximize },
 	{ "maximize", w_maximize },
+	{ "restore", w_restore },
 	{ "isMaximized", w_isMaximized },
 	{ "isMaximized", w_isMaximized },
+	{ "isMinimized", w_isMinimized },
 	{ "showMessageBox", w_showMessageBox },
 	{ "showMessageBox", w_showMessageBox },
 	{ "requestAttention", w_requestAttention },
 	{ "requestAttention", w_requestAttention },
 	{ 0, 0 }
 	{ 0, 0 }