Commit e673bdc6 authored by Emmanuel Gil Peyrot's avatar Emmanuel Gil Peyrot Committed by Camilla Berglund
Browse files

wayland: Implement maximized state

parent 71cedc6c
......@@ -83,6 +83,7 @@ typedef struct _GLFWwindowWayland
{
int width, height;
GLFWbool visible;
GLFWbool maximized;
struct wl_surface* surface;
struct wl_egl_window* native;
struct wl_shell_surface* shell_surface;
......
......@@ -222,6 +222,10 @@ static GLFWbool createShellSurface(_GLFWwindow* window)
0,
window->monitor->wl.output);
}
else if (window->wl.maximized)
{
wl_shell_surface_set_maximized(window->wl.shell_surface, NULL);
}
else
{
wl_shell_surface_set_toplevel(window->wl.shell_surface);
......@@ -516,14 +520,27 @@ void _glfwPlatformIconifyWindow(_GLFWwindow* window)
void _glfwPlatformRestoreWindow(_GLFWwindow* window)
{
// TODO
fprintf(stderr, "_glfwPlatformRestoreWindow not implemented yet\n");
// TODO: also do the same for iconified.
if (window->monitor || window->wl.maximized)
{
if (window->wl.shell_surface)
wl_shell_surface_set_toplevel(window->wl.shell_surface);
window->wl.maximized = GLFW_FALSE;
}
}
void _glfwPlatformMaximizeWindow(_GLFWwindow* window)
{
// TODO
fprintf(stderr, "_glfwPlatformMaximizeWindow not implemented yet\n");
if (!window->monitor && !window->wl.maximized)
{
if (window->wl.shell_surface)
{
// Let the compositor select the best output.
wl_shell_surface_set_maximized(window->wl.shell_surface, NULL);
}
window->wl.maximized = GLFW_TRUE;
}
}
void _glfwPlatformShowWindow(_GLFWwindow* window)
......@@ -592,8 +609,7 @@ int _glfwPlatformWindowVisible(_GLFWwindow* window)
int _glfwPlatformWindowMaximized(_GLFWwindow* window)
{
// TODO
return GLFW_FALSE;
return window->wl.maximized;
}
void _glfwPlatformPollEvents(void)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment