Restore maximized window state when returning from fullscreen
This commit is contained in:
parent
f36b71350d
commit
95e6e80921
@ -596,14 +596,17 @@ do_toggle_fullscreen(OSWindow *w, unsigned int flags, bool restore_sizes) {
|
|||||||
int width, height, x, y;
|
int width, height, x, y;
|
||||||
glfwGetWindowSize(w->handle, &width, &height);
|
glfwGetWindowSize(w->handle, &width, &height);
|
||||||
glfwGetWindowPos(w->handle, &x, &y);
|
glfwGetWindowPos(w->handle, &x, &y);
|
||||||
|
bool was_maximized = glfwGetWindowAttrib(w->handle, GLFW_MAXIMIZED);
|
||||||
if (glfwToggleFullscreen(w->handle, flags)) {
|
if (glfwToggleFullscreen(w->handle, flags)) {
|
||||||
w->before_fullscreen.is_set = true;
|
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.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;
|
return true;
|
||||||
}
|
}
|
||||||
if (w->before_fullscreen.is_set && restore_sizes) {
|
if (w->before_fullscreen.is_set && restore_sizes) {
|
||||||
glfwSetWindowSize(w->handle, w->before_fullscreen.w, w->before_fullscreen.h);
|
glfwSetWindowSize(w->handle, w->before_fullscreen.w, w->before_fullscreen.h);
|
||||||
glfwSetWindowPos(w->handle, w->before_fullscreen.x, w->before_fullscreen.y);
|
glfwSetWindowPos(w->handle, w->before_fullscreen.x, w->before_fullscreen.y);
|
||||||
|
if (w->before_fullscreen.was_maximized) glfwMaximizeWindow(w->handle);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -167,7 +167,7 @@ typedef struct {
|
|||||||
uint32_t offscreen_framebuffer;
|
uint32_t offscreen_framebuffer;
|
||||||
struct {
|
struct {
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
bool is_set;
|
bool is_set, was_maximized;
|
||||||
} before_fullscreen;
|
} before_fullscreen;
|
||||||
int viewport_width, viewport_height, window_width, window_height;
|
int viewport_width, viewport_height, window_width, window_height;
|
||||||
double viewport_x_ratio, viewport_y_ratio;
|
double viewport_x_ratio, viewport_y_ratio;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user