fix: GPS search clock stops with the receiver; L2 cursor survives accented keys; lighter, scrolling quick panel

- GPS: stop() resets the sky state so the 'Searching' timer does not run
  while the receiver is off; the status page shows it only when GPS is on.
- L2 keyboard: put the FOCUSED state back after typing a key or picking a
  variant, so the cursor is drawn again after characters like a-ogonek.
- Quick panel: drop the full-screen dim (a blend per frame), so the screen
  below stays interactive; tiles are one sideways-scrolling, snapping row;
  the brightness slider no longer animates and only updates the backlight
  when the value changes.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VeBrxKyHHxWsmttVkUdBrj
This commit is contained in:
Claude
2026-10-05 07:15:32 +00:00
parent b5e4845dae
commit 997da95ecf
4 changed files with 46 additions and 25 deletions
+12 -1
View File
@@ -151,6 +151,13 @@ static void releaseShift(lv_obj_t* kbd) {
static char s_var_txt[12][8];
static const char* s_var_map[13];
// The cursor is only drawn while the field is FOCUSED, and the popup (a touch
// on another object) can take that state away: put it back after a pick.
static void keepCursor(lv_obj_t* ta) {
lv_obj_add_state(ta, LV_STATE_FOCUSED);
lv_obj_invalidate(ta);
}
static void closePopup() {
if (s_popup) { lv_obj_delete_async(s_popup); s_popup = nullptr; }
}
@@ -160,7 +167,10 @@ static void onPopupPick(lv_event_t* e) {
uint32_t id = lv_buttonmatrix_get_selected_button(m);
if (id == LV_BUTTONMATRIX_BUTTON_NONE || !s_popup_kbd) return;
lv_obj_t* ta = lv_keyboard_get_textarea(s_popup_kbd);
if (ta) lv_textarea_add_text(ta, lv_buttonmatrix_get_button_text(m, id));
if (ta) {
lv_textarea_add_text(ta, lv_buttonmatrix_get_button_text(m, id));
keepCursor(ta);
}
releaseShift(s_popup_kbd);
closePopup();
}
@@ -248,6 +258,7 @@ static void onEvent(lv_event_t* e) {
return;
}
lv_keyboard_def_event_cb(e); // type the character / backspace / OK
if (lv_obj_t* ta = lv_keyboard_get_textarea(kbd)) keepCursor(ta);
if (strcmp(t, KB_BS) != 0) releaseShift(kbd);
}