jobextra/i3-wm/c305798d42.patch

79 lines
2.4 KiB
Diff

From c305798d42131e4231631547a42ac85e0d3b0f52 Mon Sep 17 00:00:00 2001
From: Orestis Floros <orestisflo@gmail.com>
Date: Fri, 6 Jan 2023 22:24:08 +0100
Subject: [PATCH] Do not canonicalize "nonprimary" output for i3bar
Fixes #5346
---
src/ipc.c | 2 +-
testcases/t/538-i3bar-primary-output.t | 29 +++++++++++++++++++++++++-
2 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/src/ipc.c b/src/ipc.c
index f69ba2ae9..28a86092f 100644
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -739,7 +739,7 @@ static void dump_bar_bindings(yajl_gen gen, Barconfig *config) {
static char *canonicalize_output_name(char *name) {
/* Do not canonicalize special output names. */
- if (strcasecmp(name, "primary") == 0) {
+ if (strcasecmp(name, "primary") == 0 || strcasecmp(name, "nonprimary") == 0) {
return name;
}
Output *output = get_output_by_name(name, false);
diff --git a/testcases/t/538-i3bar-primary-output.t b/testcases/t/538-i3bar-primary-output.t
index 249d57779..d5581dd81 100644
--- a/testcases/t/538-i3bar-primary-output.t
+++ b/testcases/t/538-i3bar-primary-output.t
@@ -17,8 +17,10 @@
# Tests that i3bars configured to use the primary output do not have
# their output names canonicalized to something other than "primary".
# Ticket: #2948
+# Ticket: #5346
# Bug still in: 4.14-93-ga3a7d04a
-use i3test i3_config => <<EOT;
+use i3test i3_autostart => 0;
+my $config = <<EOT;
# i3 config file (v4)
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
@@ -28,6 +30,7 @@ bar {
output primary
}
EOT
+my $pid = launch_with_config($config);
my $bars = i3->get_bar_config()->recv;
is(@$bars, 1, 'one bar configured');
@@ -36,5 +39,29 @@ my $bar_id = shift @$bars;
my $bar_config = i3->get_bar_config($bar_id)->recv;
is_deeply($bar_config->{outputs}, [ "primary" ], 'bar_config output is primary');
+exit_gracefully($pid);
+
+# Same but for "nonprimary"
+
+$config = <<EOT;
+# i3 config file (v4)
+font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
+
+fake-outputs 1024x768+0+0P,1024x768+0+0
+
+bar {
+ output nonprimary
+}
+EOT
+$pid = launch_with_config($config);
+
+$bars = i3->get_bar_config()->recv;
+is(@$bars, 1, 'one bar configured');
+
+$bar_id = shift @$bars;
+
+$bar_config = i3->get_bar_config($bar_id)->recv;
+is_deeply($bar_config->{outputs}, [ "nonprimary" ], 'bar_config output is nonprimary');
+exit_gracefully($pid);
done_testing;