diff --git a/src/modules/window/Window.h b/src/modules/window/Window.h index c627aadab..06e30f75f 100644 --- a/src/modules/window/Window.h +++ b/src/modules/window/Window.h @@ -78,6 +78,8 @@ public: virtual bool hasFocus() const = 0; virtual bool hasMouseFocus() const = 0; + virtual bool isVisible() const = 0; + virtual void setMouseVisible(bool visible) = 0; virtual bool getMouseVisible() const = 0; diff --git a/src/modules/window/sdl/Window.cpp b/src/modules/window/sdl/Window.cpp index f380a7f59..986a102da 100644 --- a/src/modules/window/sdl/Window.cpp +++ b/src/modules/window/sdl/Window.cpp @@ -310,6 +310,11 @@ bool Window::hasMouseFocus() const return (SDL_GetAppState() & SDL_APPMOUSEFOCUS) != 0; } +bool Window::isVisible() const +{ + return (SDL_GetAppState() & SDL_APPACTIVE) != 0; +} + void Window::setMouseVisible(bool visible) { SDL_ShowCursor(visible ? SDL_ENABLE : SDL_DISABLE); diff --git a/src/modules/window/sdl/Window.h b/src/modules/window/sdl/Window.h index 7cd8c226d..052890800 100644 --- a/src/modules/window/sdl/Window.h +++ b/src/modules/window/sdl/Window.h @@ -59,6 +59,8 @@ public: bool hasFocus() const; bool hasMouseFocus() const; + bool isVisible() const; + void setMouseVisible(bool visible); bool getMouseVisible() const; diff --git a/src/modules/window/wrap_Window.cpp b/src/modules/window/wrap_Window.cpp index b023b3d0e..dfe692ae4 100644 --- a/src/modules/window/wrap_Window.cpp +++ b/src/modules/window/wrap_Window.cpp @@ -214,6 +214,12 @@ int w_hasMouseFocus(lua_State *L) return 1; } +int w_isVisible(lua_State *L) +{ + luax_pushboolean(L, instance->isVisible()); + return 1; +} + static const luaL_Reg functions[] = { { "checkMode", w_checkMode }, @@ -230,6 +236,7 @@ static const luaL_Reg functions[] = { "getTitle", w_getTitle }, { "hasFocus", w_hasFocus }, { "hasMouseFocus", w_hasMouseFocus }, + { "isVisible", w_isVisible }, { 0, 0 } }; diff --git a/src/modules/window/wrap_Window.h b/src/modules/window/wrap_Window.h index 13c3bbc39..88376de0a 100644 --- a/src/modules/window/wrap_Window.h +++ b/src/modules/window/wrap_Window.h @@ -43,6 +43,7 @@ int w_setTitle(lua_State *L); int w_getTitle(lua_State *L); int w_hasFocus(lua_State *L); int w_hasMouseFocus(lua_State *L); +int w_isVisible(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_window(lua_State *L); } // window