summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2021-08-14 17:35:03 +0200
committerBenBE <BenBE@geshi.org>2021-08-17 10:36:10 +0200
commitf886759022c06ccee679e580882b51828c2021aa (patch)
tree9b6f111873e6066e5584b668fb26cd07ca0fda25
parentb965417bf78e20fe1bdde3678361f8fbec86f458 (diff)
Meter: limit LED mode by width
Stop displaying LED-mode if maximum width is reached.
-rw-r--r--Meter.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/Meter.c b/Meter.c
index 3e5281c7..917d5904 100644
--- a/Meter.c
+++ b/Meter.c
@@ -379,7 +379,7 @@ static void LEDMeterMode_drawDigit(int x, int y, int n) {
mvaddstr(y + i, x, LEDMeterMode_digits[i * 10 + n]);
}
-static void LEDMeterMode_draw(Meter* this, int x, int y, ATTR_UNUSED int w) {
+static void LEDMeterMode_draw(Meter* this, int x, int y, int w) {
#ifdef HAVE_LIBNCURSESW
if (CRT_utf8)
LEDMeterMode_digits = LEDMeterMode_digitsUtf8;
@@ -403,9 +403,14 @@ static void LEDMeterMode_draw(Meter* this, int x, int y, ATTR_UNUSED int w) {
for (int i = 0; i < len; i++) {
int c = RichString_getCharVal(out, i);
if (c >= '0' && c <= '9') {
+ if (xx - x + 4 > w)
+ break;
+
LEDMeterMode_drawDigit(xx, y, c - '0');
xx += 4;
} else {
+ if (xx - x + 1 > w)
+ break;
#ifdef HAVE_LIBNCURSESW
const cchar_t wc = { .chars = { c, '\0' }, .attr = 0 }; /* use LED_COLOR from attrset() */
mvadd_wch(yText, xx, &wc);

© 2014-2024 Faster IT GmbH | imprint | privacy policy