Factorise moving to fullscreen
diff --git a/src/wl_window.c b/src/wl_window.c
index aea3b55..4f11da1 100644
--- a/src/wl_window.c
+++ b/src/wl_window.c
@@ -448,6 +448,25 @@
return GLFW_TRUE;
}
+static void setFullscreen(_GLFWwindow* window, _GLFWmonitor* monitor, int refreshRate)
+{
+ if (window->wl.xdg.toplevel)
+ {
+ xdg_toplevel_set_fullscreen(
+ window->wl.xdg.toplevel,
+ monitor->wl.output);
+ }
+ else if (window->wl.shellSurface)
+ {
+ wl_shell_surface_set_fullscreen(
+ window->wl.shellSurface,
+ WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT,
+ refreshRate * 1000, // Convert Hz to mHz.
+ monitor->wl.output);
+ }
+ setIdleInhibitor(window, GLFW_TRUE);
+}
+
static GLFWbool createShellSurface(_GLFWwindow* window)
{
if (!_glfw.wl.shell)
@@ -475,12 +494,7 @@
if (window->monitor)
{
- wl_shell_surface_set_fullscreen(
- window->wl.shellSurface,
- WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT,
- 0,
- window->monitor->wl.output);
- setIdleInhibitor(window, GLFW_TRUE);
+ setFullscreen(window, window->monitor, 0);
}
else if (window->wl.maximized)
{
@@ -1039,35 +1053,18 @@
int width, int height,
int refreshRate)
{
- if (window->wl.xdg.toplevel)
+ if (monitor)
{
- if (monitor)
- {
- xdg_toplevel_set_fullscreen(
- window->wl.xdg.toplevel,
- monitor->wl.output);
- }
- else
- {
+ setFullscreen(window, monitor, refreshRate);
+ }
+ else
+ {
+ if (window->wl.xdg.toplevel)
xdg_toplevel_unset_fullscreen(window->wl.xdg.toplevel);
- }
- }
- else if (window->wl.shellSurface)
- {
- if (monitor)
- {
- wl_shell_surface_set_fullscreen(
- window->wl.shellSurface,
- WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT,
- refreshRate * 1000, // Convert Hz to mHz.
- monitor->wl.output);
- }
- else
- {
+ else if (window->wl.shellSurface)
wl_shell_surface_set_toplevel(window->wl.shellSurface);
- }
+ setIdleInhibitor(window, GLFW_FALSE);
}
- setIdleInhibitor(window, monitor ? GLFW_TRUE : GLFW_FALSE);
_glfwInputWindowMonitor(window, monitor);
}