aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Simon Ser <contact@emersion.fr>2020-02-10 18:25:24 +0100
committerLibravatar Drew DeVault <sir@cmpwn.com>2020-02-17 21:47:36 +0100
commita5a4d32816a050fc213246008f3951b463b8c4e5 (patch)
tree71811b9ffa198693a612ffd814be3fc5bbd93551
parentoutput: fix updating output manager config (diff)
downloadsway-a5a4d32816a050fc213246008f3951b463b8c4e5.tar.gz
sway-a5a4d32816a050fc213246008f3951b463b8c4e5.tar.zst
sway-a5a4d32816a050fc213246008f3951b463b8c4e5.zip
Fix output transform anticlockwise
This wouldn't have any effect if the transform was flipped.
-rw-r--r--sway/commands/output/transform.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/sway/commands/output/transform.c b/sway/commands/output/transform.c
index 8e5324ad..2a3d1d4b 100644
--- a/sway/commands/output/transform.c
+++ b/sway/commands/output/transform.c
@@ -4,6 +4,22 @@
4#include "log.h" 4#include "log.h"
5#include "sway/output.h" 5#include "sway/output.h"
6 6
7static enum wl_output_transform invert_rotation_direction(
8 enum wl_output_transform t) {
9 switch (t) {
10 case WL_OUTPUT_TRANSFORM_90:
11 return WL_OUTPUT_TRANSFORM_270;
12 case WL_OUTPUT_TRANSFORM_270:
13 return WL_OUTPUT_TRANSFORM_90;
14 case WL_OUTPUT_TRANSFORM_FLIPPED_90:
15 return WL_OUTPUT_TRANSFORM_FLIPPED_270;
16 case WL_OUTPUT_TRANSFORM_FLIPPED_270:
17 return WL_OUTPUT_TRANSFORM_FLIPPED_90;
18 default:
19 return t;
20 }
21}
22
7struct cmd_results *output_cmd_transform(int argc, char **argv) { 23struct cmd_results *output_cmd_transform(int argc, char **argv) {
8 if (!config->handler_context.output_config) { 24 if (!config->handler_context.output_config) {
9 return cmd_results_new(CMD_FAILURE, "Missing output config"); 25 return cmd_results_new(CMD_FAILURE, "Missing output config");
@@ -11,6 +27,7 @@ struct cmd_results *output_cmd_transform(int argc, char **argv) {
11 if (!argc) { 27 if (!argc) {
12 return cmd_results_new(CMD_INVALID, "Missing transform argument."); 28 return cmd_results_new(CMD_INVALID, "Missing transform argument.");
13 } 29 }
30
14 enum wl_output_transform transform; 31 enum wl_output_transform transform;
15 if (strcmp(*argv, "normal") == 0 || 32 if (strcmp(*argv, "normal") == 0 ||
16 strcmp(*argv, "0") == 0) { 33 strcmp(*argv, "0") == 0) {
@@ -32,6 +49,7 @@ struct cmd_results *output_cmd_transform(int argc, char **argv) {
32 } else { 49 } else {
33 return cmd_results_new(CMD_INVALID, "Invalid output transform."); 50 return cmd_results_new(CMD_INVALID, "Invalid output transform.");
34 } 51 }
52
35 struct output_config *output = config->handler_context.output_config; 53 struct output_config *output = config->handler_context.output_config;
36 config->handler_context.leftovers.argc = argc - 1; 54 config->handler_context.leftovers.argc = argc - 1;
37 config->handler_context.leftovers.argv = argv + 1; 55 config->handler_context.leftovers.argv = argv + 1;
@@ -50,13 +68,14 @@ struct cmd_results *output_cmd_transform(int argc, char **argv) {
50 "Cannot apply relative transform to unknown output %s", output->name); 68 "Cannot apply relative transform to unknown output %s", output->name);
51 } 69 }
52 if (strcmp(argv[1], "anticlockwise") == 0) { 70 if (strcmp(argv[1], "anticlockwise") == 0) {
53 transform = wlr_output_transform_invert(transform); 71 transform = invert_rotation_direction(transform);
54 } 72 }
55 struct wlr_output *w_output = s_output->wlr_output; 73 struct wlr_output *w_output = s_output->wlr_output;
56 transform = wlr_output_transform_compose(w_output->transform, transform); 74 transform = wlr_output_transform_compose(w_output->transform, transform);
57 config->handler_context.leftovers.argv += 1; 75 config->handler_context.leftovers.argv += 1;
58 config->handler_context.leftovers.argc -= 1; 76 config->handler_context.leftovers.argc -= 1;
59 } 77 }
78
60 output->transform = transform; 79 output->transform = transform;
61 return NULL; 80 return NULL;
62} 81}