commit 3ff7943

dalem  ·  2026-01-27 16:36:27 +0000 UTC
parent ee6d5a8
add fullscreen support
2 files changed,  +21, -5
+16, -5
 1@@ -194,12 +194,23 @@ EXPORT void
 2 swc_window_set_fullscreen(struct swc_window *base, struct swc_screen *screen)
 3 {
 4 	struct window *window = INTERNAL(base);
 5+	struct swc_rectangle geom;
 6+	swc_window_get_geometry(base, &geom);
 7+	
 8+	if (window->mode != WINDOW_MODE_FULLSCREEN) {
 9+		window->prev.geom = geom;
10+		window->prev.mode = window->mode;
11+		swc_window_set_geometry(base, &screen->usable_geometry);
12+
13+		if (window->impl->set_mode)
14+			window->impl->set_mode(window, WINDOW_MODE_FULLSCREEN);
15+		window->mode = WINDOW_MODE_FULLSCREEN;
16+	}
17 
18-	/* TODO: Implement fullscreen windows. */
19-
20-	if (window->impl->set_mode)
21-		window->impl->set_mode(window, WINDOW_MODE_FULLSCREEN);
22-	window->mode = WINDOW_MODE_FULLSCREEN;
23+	else {
24+		swc_window_set_geometry(base, &window->prev.geom);
25+		window->mode = window->prev.mode;
26+	}
27 }
28 
29 EXPORT void
+5, -0
 1@@ -52,6 +52,11 @@ struct window {
 2 	struct view_handler view_handler;
 3 	bool managed;
 4 	unsigned mode;
 5+	
 6+	struct {
 7+		struct swc_rectangle geom;
 8+		unsigned mode;
 9+	} prev;
10 
11 	struct {
12 		struct window_pointer_interaction interaction;