MsgPreview: fix nav-to-home from chat screen; add fullscreen left/right message switching

- msgRead(0) now only navigates to home when curr == msg_preview, preventing
  unexpected redirects while the user is in the chat selection screen
- Fullscreen message view: LEFT/RIGHT navigate between unread messages (resets
  scroll to top); < > hints shown at bottom corners when more messages available

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-05-13 21:09:47 +02:00
co-authored by Claude Sonnet 4.6
parent eea9254212
commit f603d82b0c
+17 -1
View File
@@ -2197,6 +2197,14 @@ public:
display.setCursor(display.width() - 6, FS_START_Y + (FS_VISIBLE - 1) * FS_LINE_H); display.setCursor(display.width() - 6, FS_START_Y + (FS_VISIBLE - 1) * FS_LINE_H);
display.print("v"); display.print("v");
} }
if (_view_offset < num_unread - 1) {
display.setCursor(0, 56);
display.print("<");
}
if (_view_offset > 0) {
display.setCursor(display.width() - 6, 56);
display.print(">");
}
} else { } else {
display.setCursor(0, 13); display.setCursor(0, 13);
display.printWordWrap(filtered_msg, display.width()); display.printWordWrap(filtered_msg, display.width());
@@ -2232,6 +2240,14 @@ public:
if (_fullscreen) { if (_fullscreen) {
if (c == KEY_UP) { if (_fs_scroll > 0) _fs_scroll--; return true; } if (c == KEY_UP) { if (_fs_scroll > 0) _fs_scroll--; return true; }
if (c == KEY_DOWN) { _fs_scroll++; return true; } if (c == KEY_DOWN) { _fs_scroll++; return true; }
if (c == KEY_LEFT) {
if (_view_offset < num_unread - 1) { _view_offset++; _fs_scroll = 0; }
return true;
}
if (c == KEY_RIGHT) {
if (_view_offset > 0) { _view_offset--; _fs_scroll = 0; }
return true;
}
if (c == KEY_ENTER || c == KEY_CANCEL) { _fullscreen = false; return true; } if (c == KEY_ENTER || c == KEY_CANCEL) { _fullscreen = false; return true; }
return true; return true;
} }
@@ -2374,7 +2390,7 @@ void UITask::msgRead(int msgcount) {
_msgcount = msgcount; _msgcount = msgcount;
if (msgcount == 0) { if (msgcount == 0) {
_room_unread = 0; _room_unread = 0;
gotoHomeScreen(); if (curr == msg_preview) gotoHomeScreen();
} }
} }