From 0b9ca3e344da70c69c7b4b6f70d86ac3218299d6 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Mon, 20 Nov 2017 22:20:39 -0400 Subject: [PATCH] Fix love.window.isMaximized. Add love.window.restore and love.window.isMinimized (resolves issue #1354). --HG-- branch : minor --- src/modules/window/Window.h | 2 ++ src/modules/window/sdl/Window.cpp | 14 ++++++++++++++ src/modules/window/sdl/Window.h | 2 ++ src/modules/window/wrap_Window.cpp | 16 +++++++++++++++- 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/modules/window/Window.h b/src/modules/window/Window.h index ba395d245..aa6333b57 100644 --- a/src/modules/window/Window.h +++ b/src/modules/window/Window.h @@ -152,8 +152,10 @@ public: virtual void minimize() = 0; virtual void maximize() = 0; + virtual void restore() = 0; virtual bool isMaximized() const = 0; + virtual bool isMinimized() const = 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 9e78adeff..95f192d94 100644 --- a/src/modules/window/sdl/Window.cpp +++ b/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 { 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() { SDL_GL_SwapWindow(window); diff --git a/src/modules/window/sdl/Window.h b/src/modules/window/sdl/Window.h index a21d95a3b..81fa21bff 100644 --- a/src/modules/window/sdl/Window.h +++ b/src/modules/window/sdl/Window.h @@ -77,8 +77,10 @@ public: void minimize(); void maximize(); + void restore(); bool isMaximized() const; + bool isMinimized() const; void swapBuffers(); diff --git a/src/modules/window/wrap_Window.cpp b/src/modules/window/wrap_Window.cpp index df414ac0a..9a3b3fdd1 100644 --- a/src/modules/window/wrap_Window.cpp +++ b/src/modules/window/wrap_Window.cpp @@ -479,10 +479,22 @@ int w_maximize(lua_State *) return 0; } +int w_restore(lua_State *) +{ + instance()->restore(); + return 0; +} + int w_isMaximized(lua_State *L) { 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) @@ -586,7 +598,9 @@ static const luaL_Reg functions[] = { "fromPixels", w_fromPixels }, { "minimize", w_minimize }, { "maximize", w_maximize }, + { "restore", w_restore }, { "isMaximized", w_isMaximized }, + { "isMinimized", w_isMinimized }, { "showMessageBox", w_showMessageBox }, { "requestAttention", w_requestAttention }, { 0, 0 }