Explorar el Código

🐛 Fix FTDI Eve unicode and spinner dialog (#22459)

Marcio T hace 3 años
padre
commit
cdcb45b87e
No account linked to committer's email address

+ 6
- 4
Marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/unicode/unicode.cpp Ver fichero

@@ -68,15 +68,17 @@
68 68
 
69 69
   utf8_char_t FTDI::get_utf8_char_and_inc(const char *&c) {
70 70
     utf8_char_t val = *(uint8_t*)c++;
71
-    while ((*c & 0xC0) == 0x80)
72
-      val = (val << 8) | *(uint8_t*)c++;
71
+    if ((val & 0xC0) == 0x80)
72
+      while ((*c & 0xC0) == 0x80)
73
+        val = (val << 8) | *(uint8_t*)c++;
73 74
     return val;
74 75
   }
75 76
 
76 77
   utf8_char_t FTDI::get_utf8_char_and_inc(char *&c) {
77 78
     utf8_char_t val = *(uint8_t*)c++;
78
-    while ((*c & 0xC0) == 0x80)
79
-      val = (val << 8) | *(uint8_t*)c++;
79
+    if ((val & 0xC0) == 0x80)
80
+      while ((*c & 0xC0) == 0x80)
81
+        val = (val << 8) | *(uint8_t*)c++;
80 82
     return val;
81 83
   }
82 84
 

+ 5
- 4
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/spinner_dialog_box.cpp Ver fichero

@@ -31,6 +31,10 @@ using namespace ExtUI;
31 31
 
32 32
 constexpr static SpinnerDialogBoxData &mydata = screen_data.SpinnerDialogBox;
33 33
 
34
+void SpinnerDialogBox::onEntry() {
35
+  mydata.auto_hide = true;
36
+}
37
+
34 38
 void SpinnerDialogBox::onRedraw(draw_mode_t) {
35 39
 }
36 40
 
@@ -38,6 +42,7 @@ void SpinnerDialogBox::show(progmem_str message) {
38 42
   drawMessage(message);
39 43
   drawSpinner();
40 44
   storeBackground();
45
+  GOTO_SCREEN(SpinnerDialogBox);
41 46
   mydata.auto_hide = false;
42 47
 }
43 48
 
@@ -48,16 +53,12 @@ void SpinnerDialogBox::hide() {
48 53
 
49 54
 void SpinnerDialogBox::enqueueAndWait(progmem_str message, progmem_str commands) {
50 55
   show(message);
51
-  GOTO_SCREEN(SpinnerDialogBox);
52 56
   ExtUI::injectCommands_P((const char*)commands);
53
-  mydata.auto_hide = true;
54 57
 }
55 58
 
56 59
 void SpinnerDialogBox::enqueueAndWait(progmem_str message, char *commands) {
57 60
   show(message);
58
-  GOTO_SCREEN(SpinnerDialogBox);
59 61
   ExtUI::injectCommands(commands);
60
-  mydata.auto_hide = true;
61 62
 }
62 63
 
63 64
 void SpinnerDialogBox::onIdle() {

+ 1
- 0
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/spinner_dialog_box.h Ver fichero

@@ -31,6 +31,7 @@ struct SpinnerDialogBoxData {
31 31
 
32 32
 class SpinnerDialogBox : public DialogBoxBaseClass, public CachedScreen<SPINNER_CACHE,SPINNER_DL_SIZE> {
33 33
   public:
34
+    static void onEntry();
34 35
     static void onRedraw(draw_mode_t);
35 36
     static void onIdle();
36 37
 

Loading…
Cancelar
Guardar