Преглед изворни кода

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

Marcio T пре 3 година
родитељ
комит
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 Прегледај датотеку

68
 
68
 
69
   utf8_char_t FTDI::get_utf8_char_and_inc(const char *&c) {
69
   utf8_char_t FTDI::get_utf8_char_and_inc(const char *&c) {
70
     utf8_char_t val = *(uint8_t*)c++;
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
     return val;
74
     return val;
74
   }
75
   }
75
 
76
 
76
   utf8_char_t FTDI::get_utf8_char_and_inc(char *&c) {
77
   utf8_char_t FTDI::get_utf8_char_and_inc(char *&c) {
77
     utf8_char_t val = *(uint8_t*)c++;
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
     return val;
82
     return val;
81
   }
83
   }
82
 
84
 

+ 5
- 4
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/spinner_dialog_box.cpp Прегледај датотеку

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

+ 1
- 0
Marlin/src/lcd/extui/ftdi_eve_touch_ui/generic/spinner_dialog_box.h Прегледај датотеку

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

Loading…
Откажи
Сачувај