Enlarge nearest-airport marquee text to size 2

The scrolling "nearest airport" line on the Location Presets screen
was hard to read at size 1. setupMarquee() now measures text width
at size 2 (matching what drawMarquee() actually renders), and
drawMarquee() resets back to size 1 on both return paths so it
doesn't leak into subsequently drawn UI (e.g. the Back button).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Eiswolf-BG
2026-08-06 15:09:51 +02:00
parent 0abd293450
commit 191380ba01

View File

@@ -188,8 +188,15 @@ namespace {
// anderer Standort aktiviert wurde) - merkt sich Text + Ringpuffer und // anderer Standort aktiviert wurde) - merkt sich Text + Ringpuffer und
// setzt den Scroll-Fortschritt zurueck. // setzt den Scroll-Fortschritt zurueck.
void setupMarquee(TFT_eSPI& tft, const String& text, int16_t viewportW) { void setupMarquee(TFT_eSPI& tft, const String& text, int16_t viewportW) {
// WICHTIG: textWidth() haengt von der aktuell gesetzten Textgroesse
// ab. Der Marquee wird in Size 2 gezeichnet (siehe drawMarquee),
// also muss hier ebenfalls Size 2 aktiv sein, sonst wird die
// Breite falsch (zu schmal) gemessen und der Text ragt beim
// Zeichnen ueber den verfuegbaren Platz hinaus.
tft.setTextSize(2);
airportMarquee.text = text; airportMarquee.text = text;
airportMarquee.needsScroll = tft.textWidth(text) > viewportW; airportMarquee.needsScroll = tft.textWidth(text) > viewportW;
tft.setTextSize(1);
String withGap = text + " "; // 5 Leerzeichen Luecke vor der Wiederholung String withGap = text + " "; // 5 Leerzeichen Luecke vor der Wiederholung
airportMarquee.ring = withGap + withGap; airportMarquee.ring = withGap + withGap;
airportMarquee.charOffset = 0; airportMarquee.charOffset = 0;
@@ -213,10 +220,16 @@ namespace {
tft.fillRect(x, y - h + 4, w, h, TFT_BLACK); tft.fillRect(x, y - h + 4, w, h, TFT_BLACK);
tft.setTextColor(TFT_DARKGREEN, TFT_BLACK); tft.setTextColor(TFT_DARKGREEN, TFT_BLACK);
// Groessere Schrift fuer den Nearest-Airport-Marquee (auf Wunsch
// vergroessert von Size 1 auf Size 2) - nach dem Zeichnen wieder auf
// Size 1 zurueckstellen, damit nachfolgender Code (z.B. der
// "Zurueck"-Button) nicht versehentlich auch vergroessert wird.
tft.setTextSize(2);
tft.setCursor(x, y); tft.setCursor(x, y);
if (!airportMarquee.needsScroll) { if (!airportMarquee.needsScroll) {
tft.print(airportMarquee.text); tft.print(airportMarquee.text);
tft.setTextSize(1);
return; return;
} }
@@ -231,6 +244,7 @@ namespace {
} }
tft.print(marqueeWindow(tft, airportMarquee.ring, airportMarquee.charOffset, w)); tft.print(marqueeWindow(tft, airportMarquee.ring, airportMarquee.charOffset, w));
tft.setTextSize(1);
} }
void runInfoScreen(TFT_eSPI& tft) { void runInfoScreen(TFT_eSPI& tft) {