Browse Source

Fix UTF char cutoff at DOGM edge (#18294)

cccc 4 years ago
parent
commit
fe46704848
No account linked to committer's email address
1 changed files with 4 additions and 2 deletions
  1. 4
    2
      Marlin/src/lcd/dogm/ultralcd_DOGM.cpp

+ 4
- 2
Marlin/src/lcd/dogm/ultralcd_DOGM.cpp View File

@@ -377,12 +377,14 @@ void MarlinUI::clear_lcd() { } // Automatically cleared by Picture Loop
377 377
   // Draw a menu item with an editable value
378 378
   void MenuEditItemBase::draw(const bool sel, const uint8_t row, PGM_P const pstr, const char* const data, const bool pgm) {
379 379
     if (mark_as_selected(row, sel)) {
380
-      const uint8_t vallen = (pgm ? utf8_strlen_P(data) : utf8_strlen((char*)data));
380
+      const uint8_t vallen = (pgm ? utf8_strlen_P(data) : utf8_strlen((char*)data)),
381
+                    pixelwidth = (pgm ? uxg_GetUtf8StrPixelWidthP(u8g.getU8g(), data) : uxg_GetUtf8StrPixelWidth(u8g.getU8g(), (char*)data));
382
+
381 383
       u8g_uint_t n = lcd_put_u8str_ind_P(pstr, itemIndex, LCD_WIDTH - 2 - vallen) * (MENU_FONT_WIDTH);
382 384
       if (vallen) {
383 385
         lcd_put_wchar(':');
384 386
         while (n > MENU_FONT_WIDTH) n -= lcd_put_wchar(' ');
385
-        lcd_moveto(LCD_PIXEL_WIDTH - (MENU_FONT_WIDTH) * vallen, row_y2);
387
+        lcd_moveto(LCD_PIXEL_WIDTH - _MAX((MENU_FONT_WIDTH) * vallen, pixelwidth + 2), row_y2);
386 388
         if (pgm) lcd_put_u8str_P(data); else lcd_put_u8str((char*)data);
387 389
       }
388 390
     }

Loading…
Cancel
Save