Restore maximized window state when returning from fullscreen

This commit is contained in:
Kovid Goyal 2021-11-13 12:22:52 +05:30
parent f36b71350d
commit 95e6e80921
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 4 additions and 1 deletions

View File

@ -596,14 +596,17 @@ do_toggle_fullscreen(OSWindow *w, unsigned int flags, bool restore_sizes) {
int width, height, x, y;
glfwGetWindowSize(w->handle, &width, &height);
glfwGetWindowPos(w->handle, &x, &y);
bool was_maximized = glfwGetWindowAttrib(w->handle, GLFW_MAXIMIZED);
if (glfwToggleFullscreen(w->handle, flags)) {
w->before_fullscreen.is_set = true;
w->before_fullscreen.w = width; w->before_fullscreen.h = height; w->before_fullscreen.x = x; w->before_fullscreen.y = y;
w->before_fullscreen.was_maximized = was_maximized;
return true;
}
if (w->before_fullscreen.is_set && restore_sizes) {
glfwSetWindowSize(w->handle, w->before_fullscreen.w, w->before_fullscreen.h);
glfwSetWindowPos(w->handle, w->before_fullscreen.x, w->before_fullscreen.y);
if (w->before_fullscreen.was_maximized) glfwMaximizeWindow(w->handle);
}
return false;
}

View File

@ -167,7 +167,7 @@ typedef struct {
uint32_t offscreen_framebuffer;
struct {
int x, y, w, h;
bool is_set;
bool is_set, was_maximized;
} before_fullscreen;
int viewport_width, viewport_height, window_width, window_height;
double viewport_x_ratio, viewport_y_ratio;