From 6f13fe93a3e023f8cc6f53683dbe1b39d0b07f3c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Filip=20Ban=C3=A1k?=
<58399088+Filip62@users.noreply.github.com>
Date: Thu, 17 Dec 2020 20:49:10 +0100
Subject: [PATCH] xkeyboard: Fix indicator spacing (#2306)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Fix xkeyboard module spacing between the layout and indicators when indicators are empty.
* Simplify the empty label check.
* Remove permanently enabled SCROLL_LOCK, sorry.
* Another mistake.
* Update src/modules/xkeyboard.cpp
Co-authored-by: Patrick Ziegler
* Update src/modules/xkeyboard.cpp
Co-authored-by: Patrick Ziegler
* Update.
* Fix xkeyboard module spacing between the layout and indicators, when indicators are empty. And fix the spacing between indicators when some are empty.
* Add issue #2292 to fixed.
* Update CHANGELOG.md
Co-authored-by: Filip BanĂ¡k <6111455-Filip62@users.noreply.gitlab.com>
Co-authored-by: Patrick Ziegler
---
CHANGELOG.md | 3 +++
src/modules/xkeyboard.cpp | 8 +++++---
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0dbf5150..c50feeb9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -47,6 +47,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
KB/s (as before), 1 for MB/s and 2 for GB/s.
### Fixed
+- Trailing space after the layout label when indicators are empty and made sure right amount
+ of spacing is added between the indicator labels, in the xkeyboard module.
+ ([`#2292`](https://github.com/polybar/polybar/issues/2292))
- Parser error if click command contained `}`
([`#2040`](https://github.com/polybar/polybar/issues/2040))
diff --git a/src/modules/xkeyboard.cpp b/src/modules/xkeyboard.cpp
index cdceccb7..ebfa9a74 100644
--- a/src/modules/xkeyboard.cpp
+++ b/src/modules/xkeyboard.cpp
@@ -191,10 +191,12 @@ namespace modules {
} else if (tag == TAG_LABEL_INDICATOR && !m_indicators.empty()) {
size_t n{0};
for (auto&& indicator : m_indicators) {
- if (n++) {
- builder->space(m_formatter->get(DEFAULT_FORMAT)->spacing);
+ if (*indicator.second) {
+ if (n++) {
+ builder->space(m_formatter->get(DEFAULT_FORMAT)->spacing);
+ }
+ builder->node(indicator.second);
}
- builder->node(indicator.second);
}
return n > 0;
} else {