mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-09-26 20:56:37 +00:00
fix(ui): wrap-around at both ends of the DM/channel history list
Every other list in the UI (contacts, channels, message-pick, the mode tabs) wraps at its ends; the DM and channel history lists were the one exception -- UP at the oldest message (top of the list) just stopped instead of wrapping to the compose row (the list's own bottom-most stop), and DOWN from the compose row didn't wrap back to the oldest either. Both directions now close the loop, same as everywhere else. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2304,6 +2304,12 @@ public:
|
|||||||
_dm_hist_sel++;
|
_dm_hist_sel++;
|
||||||
if (_dm_hist_sel >= _dm_hist_scroll + _hist_visible)
|
if (_dm_hist_sel >= _dm_hist_scroll + _hist_visible)
|
||||||
_dm_hist_scroll = _dm_hist_sel - _hist_visible + 1;
|
_dm_hist_scroll = _dm_hist_sel - _hist_visible + 1;
|
||||||
|
} else if (_dm_hist_sel == dm_count - 1) {
|
||||||
|
// Oldest (top of the list) -> wrap to the compose row, the list's
|
||||||
|
// own bottom-most stop -- same ring-wrap every other list in the UI
|
||||||
|
// does at its ends, just closing the loop through the compose row
|
||||||
|
// instead of straight back to index 0.
|
||||||
|
_dm_hist_sel = -1;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -2313,6 +2319,10 @@ public:
|
|||||||
if (_dm_hist_sel < _dm_hist_scroll) _dm_hist_scroll = _dm_hist_sel;
|
if (_dm_hist_sel < _dm_hist_scroll) _dm_hist_scroll = _dm_hist_sel;
|
||||||
} else if (_dm_hist_sel == 0) {
|
} else if (_dm_hist_sel == 0) {
|
||||||
_dm_hist_sel = -1;
|
_dm_hist_sel = -1;
|
||||||
|
} else if (_dm_hist_sel == -1 && dm_count > 0) {
|
||||||
|
// Compose row -> wrap to the oldest message (top of the list).
|
||||||
|
_dm_hist_sel = dm_count - 1;
|
||||||
|
_dm_hist_scroll = (dm_count > _hist_visible) ? dm_count - _hist_visible : 0;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -2388,6 +2398,9 @@ public:
|
|||||||
else if (_hist_sel >= 0 && _hist_sel < ch_hist_count - 1) {
|
else if (_hist_sel >= 0 && _hist_sel < ch_hist_count - 1) {
|
||||||
_hist_sel++;
|
_hist_sel++;
|
||||||
if (_hist_sel >= _hist_scroll + _hist_visible) _hist_scroll = _hist_sel - _hist_visible + 1;
|
if (_hist_sel >= _hist_scroll + _hist_visible) _hist_scroll = _hist_sel - _hist_visible + 1;
|
||||||
|
} else if (_hist_sel == ch_hist_count - 1) {
|
||||||
|
// Oldest -> wrap to the compose row, same as the DM history handler.
|
||||||
|
_hist_sel = -1;
|
||||||
}
|
}
|
||||||
updateChannelUnread();
|
updateChannelUnread();
|
||||||
return true;
|
return true;
|
||||||
@@ -2395,6 +2408,11 @@ public:
|
|||||||
if (c == KEY_DOWN) {
|
if (c == KEY_DOWN) {
|
||||||
if (_hist_sel > 0) { _hist_sel--; if (_hist_sel < _hist_scroll) _hist_scroll = _hist_sel; }
|
if (_hist_sel > 0) { _hist_sel--; if (_hist_sel < _hist_scroll) _hist_scroll = _hist_sel; }
|
||||||
else if (_hist_sel == 0) _hist_sel = -1;
|
else if (_hist_sel == 0) _hist_sel = -1;
|
||||||
|
else if (_hist_sel == -1 && ch_hist_count > 0) {
|
||||||
|
// Compose row -> wrap to the oldest message.
|
||||||
|
_hist_sel = ch_hist_count - 1;
|
||||||
|
_hist_scroll = (ch_hist_count > _hist_visible) ? ch_hist_count - _hist_visible : 0;
|
||||||
|
}
|
||||||
updateChannelUnread();
|
updateChannelUnread();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user