diff --git a/kitty/glfw.c b/kitty/glfw.c index 01471c565..50eb9ada2 100644 --- a/kitty/glfw.c +++ b/kitty/glfw.c @@ -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; } diff --git a/kitty/state.h b/kitty/state.h index 4fda37623..be41649b0 100644 --- a/kitty/state.h +++ b/kitty/state.h @@ -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;