diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2021-08-14 17:35:03 +0200 |
---|---|---|
committer | BenBE <BenBE@geshi.org> | 2021-08-17 10:36:10 +0200 |
commit | f886759022c06ccee679e580882b51828c2021aa (patch) | |
tree | 9b6f111873e6066e5584b668fb26cd07ca0fda25 /Meter.c | |
parent | b965417bf78e20fe1bdde3678361f8fbec86f458 (diff) |
Meter: limit LED mode by width
Stop displaying LED-mode if maximum width is reached.
Diffstat (limited to 'Meter.c')
-rw-r--r-- | Meter.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -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); |