summary refs log tree commit diff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/main.c b/main.c
index 563baae..ad9ffef 100644
--- a/main.c
+++ b/main.c
@@ -238,14 +238,19 @@ static void
 display_handle_geometry(void *data, struct wl_output *wl_output, int x, int y,
                         int physical_width, int physical_height, int subpixel,
                         const char *make, const char *model, int transform) {
-	if (transform % 2 == 0 && keyboard.landscape) {
-		keyboard.landscape = false;
-		height = normal_height;
-	} else if (transform % 2 != 0 && !keyboard.landscape) {
-		keyboard.landscape = true;
+	// Swap width and height on rotated displays
+	if (transform % 2 != 0) {
+		int tmp = physical_width;
+		physical_width = physical_height;
+		physical_height = tmp;
+	}
+	bool landscape = physical_width > physical_height;
+	if (landscape == keyboard.landscape) return;
+	keyboard.landscape = landscape;
+	if (keyboard.landscape) {
 		height = landscape_height;
 	} else {
-		return; // no changes
+		height = normal_height;
 	}
 
 	zwlr_layer_surface_v1_set_size(layer_surface, 0, height);