From f886759022c06ccee679e580882b51828c2021aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Sat, 14 Aug 2021 17:35:03 +0200 Subject: Meter: limit LED mode by width Stop displaying LED-mode if maximum width is reached. --- Meter.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3