wayland: Implement maximized state

This commit is contained in:
Emmanuel Gil Peyrot 2016-04-09 00:54:23 +01:00 committed by Camilla Berglund
parent 71cedc6cfe
commit e673bdc617
2 changed files with 23 additions and 6 deletions

View File

@ -83,6 +83,7 @@ typedef struct _GLFWwindowWayland
{ {
int width, height; int width, height;
GLFWbool visible; GLFWbool visible;
GLFWbool maximized;
struct wl_surface* surface; struct wl_surface* surface;
struct wl_egl_window* native; struct wl_egl_window* native;
struct wl_shell_surface* shell_surface; struct wl_shell_surface* shell_surface;

View File

@ -222,6 +222,10 @@ static GLFWbool createShellSurface(_GLFWwindow* window)
0, 0,
window->monitor->wl.output); window->monitor->wl.output);
} }
else if (window->wl.maximized)
{
wl_shell_surface_set_maximized(window->wl.shell_surface, NULL);
}
else else
{ {
wl_shell_surface_set_toplevel(window->wl.shell_surface); wl_shell_surface_set_toplevel(window->wl.shell_surface);
@ -516,14 +520,27 @@ void _glfwPlatformIconifyWindow(_GLFWwindow* window)
void _glfwPlatformRestoreWindow(_GLFWwindow* window) void _glfwPlatformRestoreWindow(_GLFWwindow* window)
{ {
// TODO // TODO: also do the same for iconified.
fprintf(stderr, "_glfwPlatformRestoreWindow not implemented yet\n"); 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) void _glfwPlatformMaximizeWindow(_GLFWwindow* window)
{ {
// TODO if (!window->monitor && !window->wl.maximized)
fprintf(stderr, "_glfwPlatformMaximizeWindow not implemented yet\n"); {
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) void _glfwPlatformShowWindow(_GLFWwindow* window)
@ -592,8 +609,7 @@ int _glfwPlatformWindowVisible(_GLFWwindow* window)
int _glfwPlatformWindowMaximized(_GLFWwindow* window) int _glfwPlatformWindowMaximized(_GLFWwindow* window)
{ {
// TODO return window->wl.maximized;
return GLFW_FALSE;
} }
void _glfwPlatformPollEvents(void) void _glfwPlatformPollEvents(void)