diff --git a/src/modules/window/Window.h b/src/modules/window/Window.h index 9f0201ac6..c627aadab 100644 --- a/src/modules/window/Window.h +++ b/src/modules/window/Window.h @@ -76,6 +76,8 @@ public: virtual void swapBuffers(); virtual bool hasFocus() const = 0; + virtual bool hasMouseFocus() 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 7546c98c7..f380a7f59 100644 --- a/src/modules/window/sdl/Window.cpp +++ b/src/modules/window/sdl/Window.cpp @@ -305,6 +305,11 @@ bool Window::hasFocus() const return (SDL_GetAppState() & SDL_APPINPUTFOCUS) != 0; } +bool Window::hasMouseFocus() const +{ + return (SDL_GetAppState() & SDL_APPMOUSEFOCUS) != 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 6d9e2742f..7cd8c226d 100644 --- a/src/modules/window/sdl/Window.h +++ b/src/modules/window/sdl/Window.h @@ -57,6 +57,8 @@ public: void swapBuffers(); bool hasFocus() const; + bool hasMouseFocus() 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 2626f8c26..b023b3d0e 100644 --- a/src/modules/window/wrap_Window.cpp +++ b/src/modules/window/wrap_Window.cpp @@ -208,6 +208,12 @@ int w_hasFocus(lua_State *L) return 1; } +int w_hasMouseFocus(lua_State *L) +{ + luax_pushboolean(L, instance->hasMouseFocus()); + return 1; +} + static const luaL_Reg functions[] = { { "checkMode", w_checkMode }, @@ -223,6 +229,7 @@ static const luaL_Reg functions[] = { "setTitle", w_setTitle }, { "getTitle", w_getTitle }, { "hasFocus", w_hasFocus }, + { "hasMouseFocus", w_hasMouseFocus }, { 0, 0 } }; diff --git a/src/modules/window/wrap_Window.h b/src/modules/window/wrap_Window.h index 4d9b507d2..13c3bbc39 100644 --- a/src/modules/window/wrap_Window.h +++ b/src/modules/window/wrap_Window.h @@ -42,6 +42,7 @@ int w_setIcon(lua_State *L); int w_setTitle(lua_State *L); int w_getTitle(lua_State *L); int w_hasFocus(lua_State *L); +int w_hasMouseFocus(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_window(lua_State *L); } // window