diff --git a/src/modules/window/Window.h b/src/modules/window/Window.h index 6b66adcf8..307adadc5 100644 --- a/src/modules/window/Window.h +++ b/src/modules/window/Window.h @@ -143,6 +143,8 @@ public: virtual void minimize() = 0; virtual void maximize() = 0; + virtual bool isMaximized() 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 bdc3e2ce7..d3d727877 100644 --- a/src/modules/window/sdl/Window.cpp +++ b/src/modules/window/sdl/Window.cpp @@ -866,6 +866,11 @@ void Window::maximize() } } +bool Window::isMaximized() const +{ + return window != nullptr && (SDL_GetWindowFlags(window) & SDL_WINDOW_MAXIMIZED); +} + void Window::swapBuffers() { SDL_GL_SwapWindow(window); diff --git a/src/modules/window/sdl/Window.h b/src/modules/window/sdl/Window.h index fcabb0cc5..f920f8536 100644 --- a/src/modules/window/sdl/Window.h +++ b/src/modules/window/sdl/Window.h @@ -76,6 +76,8 @@ public: void minimize(); void maximize(); + bool isMaximized() const; + void swapBuffers(); bool hasFocus() const; diff --git a/src/modules/window/wrap_Window.cpp b/src/modules/window/wrap_Window.cpp index c7a7a1497..48ae7af3d 100644 --- a/src/modules/window/wrap_Window.cpp +++ b/src/modules/window/wrap_Window.cpp @@ -432,6 +432,12 @@ int w_maximize(lua_State *) return 0; } +int w_isMaximized(lua_State *L) +{ + luax_pushboolean(L, instance()->isMaximized()); + return 0; +} + int w_showMessageBox(lua_State *L) { Window::MessageBoxData data = {}; @@ -533,6 +539,7 @@ static const luaL_Reg functions[] = { "fromPixels", w_fromPixels }, { "minimize", w_minimize }, { "maximize", w_maximize }, + { "isMaximized", w_isMaximized }, { "showMessageBox", w_showMessageBox }, { "requestAttention", w_requestAttention }, { 0, 0 }