diff --git a/src/logic/scripting/lua/libs/libapp.cpp b/src/logic/scripting/lua/libs/libapp.cpp index 7c8fab71..88091bc2 100644 --- a/src/logic/scripting/lua/libs/libapp.cpp +++ b/src/logic/scripting/lua/libs/libapp.cpp @@ -5,6 +5,7 @@ #include "engine/EnginePaths.hpp" #include "network/Network.hpp" #include "util/platform.hpp" +#include "window/Window.hpp" using namespace scripting; @@ -27,8 +28,14 @@ static int l_start_debug_instance(lua::State* L) { return lua::pushinteger(L, port); } +static int l_focus(lua::State* L) { + engine->getWindow().focus(); + return 0; +} + const luaL_Reg applib[] = { {"start_debug_instance", lua::wrap}, + {"focus", lua::wrap}, // for other functions see libcore.cpp and stdlib.lua {nullptr, nullptr} }; diff --git a/src/window/Window.hpp b/src/window/Window.hpp index a5a3240b..f5a50a73 100644 --- a/src/window/Window.hpp +++ b/src/window/Window.hpp @@ -36,6 +36,8 @@ public: virtual void setMode(WindowMode mode) = 0; virtual WindowMode getMode() const = 0; + virtual void focus() = 0; + virtual void setTitle(const std::string& title) = 0; virtual void setIcon(const ImageData* image) = 0; diff --git a/src/window/detail/GLFWWindow.cpp b/src/window/detail/GLFWWindow.cpp index 88df3940..07469306 100644 --- a/src/window/detail/GLFWWindow.cpp +++ b/src/window/detail/GLFWWindow.cpp @@ -468,6 +468,10 @@ public: return mode; } + void focus() override { + glfwFocusWindow(window); + } + void setTitle(const std::string& title) override { glfwSetWindowTitle(window, title.c_str()); }