diff --git a/README.md b/README.md index c3b512f6..4777cb25 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ sudo apt install libglfw3-dev libglfw3 libglew-dev libglm-dev libpng-dev libopen #### RHEL based distros ```sh -sudo dnf install glfw-devel glfw glew-devel glm-devel libpng-devel libvorbis-devel openal-devel luajit-devel libcurl-devel +sudo dnf install glfw-devel glfw glew-devel glm-devel libpng-devel libvorbis-devel openal-soft-devel luajit-devel libcurl-devel ``` #### Arch based distros diff --git a/res/layouts/pages/content.xml b/res/layouts/pages/content.xml index 37025c69..dfa7b654 100644 --- a/res/layouts/pages/content.xml +++ b/res/layouts/pages/content.xml @@ -31,11 +31,11 @@ size='32' margin='0,0,425,64' gravity='bottom-right' color='#FFFFFF50' hover-color='#FFFFFF10'/> - + - + \ No newline at end of file diff --git a/src/window/detail/GLFWWindow.cpp b/src/window/detail/GLFWWindow.cpp index cbf628af..accd969f 100644 --- a/src/window/detail/GLFWWindow.cpp +++ b/src/window/detail/GLFWWindow.cpp @@ -19,6 +19,7 @@ static debug::Logger logger("window"); static std::unordered_set supported_gl_extensions; +static void window_size_callback(GLFWwindow* window, int width, int height); static void init_gl_extensions_list() { GLint numExtensions = 0; @@ -418,7 +419,7 @@ public: if (fullscreen) { glfwGetWindowPos(window, &posX, &posY); glfwSetWindowMonitor( - window, monitor, 0, 0, mode->width, mode->height, GLFW_DONT_CARE + window, monitor, 0, 0, mode->width, mode->height, mode->refreshRate ); } else { glfwSetWindowMonitor( @@ -430,6 +431,7 @@ public: settings->height.get(), GLFW_DONT_CARE ); + window_size_callback(window, settings->width.get(), settings->height.get()); } double xPos, yPos; @@ -596,6 +598,17 @@ static void cursor_pos_callback(GLFWwindow* window, double xpos, double ypos) { handler->input.setCursorPosition(xpos, ypos); } +static void iconify_callback(GLFWwindow* window, int iconified) { + auto handler = static_cast(glfwGetWindowUserPointer(window)); + if (handler->isFullscreen() && iconified == 0) { + GLFWmonitor* monitor = glfwGetPrimaryMonitor(); + const GLFWvidmode* mode = glfwGetVideoMode(monitor); + glfwSetWindowMonitor( + window, monitor, 0, 0, mode->width, mode->height, mode->refreshRate + ); + } +} + static void create_standard_cursors() { for (int i = 0; i <= static_cast(CursorShape::LAST); i++) { int cursor = GLFW_ARROW_CURSOR + i; @@ -615,6 +628,7 @@ static void setup_callbacks(GLFWwindow* window) { glfwSetWindowSizeCallback(window, window_size_callback); glfwSetCharCallback(window, character_callback); glfwSetScrollCallback(window, scroll_callback); + glfwSetWindowIconifyCallback(window, iconify_callback); } std::tuple<