mirror of
https://github.com/LostArtefacts/TRX.git
synced 2025-04-28 12:47:58 +03:00
ui/requester: fix clamping
Fixes the selection outline disappearing for a single frame when navigating beyond the last visible row.
This commit is contained in:
parent
83bee31c0c
commit
0676fbdd4d
2 changed files with 5 additions and 16 deletions
|
@ -41,14 +41,9 @@ int32_t UI_Requester_Control(UI_REQUESTER_STATE *const s)
|
|||
s->sel_row = s->max_rows - 1;
|
||||
}
|
||||
}
|
||||
CLAMP(s->vis_row, s->sel_row - s->vis_rows + 1, s->sel_row);
|
||||
}
|
||||
|
||||
if (s->sel_row > s->vis_row + s->vis_rows) {
|
||||
s->vis_row++;
|
||||
}
|
||||
if (s->sel_row < s->vis_row) {
|
||||
s->vis_row = s->sel_row;
|
||||
}
|
||||
CLAMP(s->vis_row, 0, s->max_rows - s->vis_rows);
|
||||
|
||||
if (s->is_selectable) {
|
||||
|
@ -62,8 +57,7 @@ int32_t UI_Requester_Control(UI_REQUESTER_STATE *const s)
|
|||
return UI_REQUESTER_NO_CHOICE;
|
||||
}
|
||||
|
||||
void UI_Requester_SetMaxRows(
|
||||
UI_REQUESTER_STATE *const s, const int32_t max_rows)
|
||||
void UI_Requester_SetMaxRows(UI_REQUESTER_STATE *const s, const size_t max_rows)
|
||||
{
|
||||
s->max_rows = max_rows;
|
||||
}
|
||||
|
@ -72,15 +66,10 @@ void UI_Requester_SetVisibleRows(
|
|||
UI_REQUESTER_STATE *const s, const size_t visible_rows)
|
||||
{
|
||||
s->vis_rows = visible_rows;
|
||||
CLAMP(s->vis_rows, 0, s->max_rows);
|
||||
CLAMPL(s->vis_rows, 0);
|
||||
if (s->sel_row != -1) {
|
||||
if (s->vis_row > s->sel_row) {
|
||||
s->vis_row = s->sel_row;
|
||||
} else if (s->sel_row > s->vis_row + s->vis_rows) {
|
||||
s->vis_row = s->sel_row - s->vis_rows + 1;
|
||||
}
|
||||
CLAMP(s->vis_row, s->sel_row - s->vis_rows + 1, s->sel_row);
|
||||
}
|
||||
|
||||
CLAMP(s->vis_row, 0, s->max_rows - s->vis_rows);
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ void UI_Requester_Init(
|
|||
bool is_selectable);
|
||||
void UI_Requester_Free(UI_REQUESTER_STATE *s);
|
||||
int32_t UI_Requester_Control(UI_REQUESTER_STATE *s);
|
||||
void UI_Requester_SetMaxRows(UI_REQUESTER_STATE *s, int32_t max_rows);
|
||||
void UI_Requester_SetMaxRows(UI_REQUESTER_STATE *s, size_t max_rows);
|
||||
void UI_Requester_SetVisibleRows(UI_REQUESTER_STATE *s, size_t visible_rows);
|
||||
int32_t UI_Requester_GetFirstRow(const UI_REQUESTER_STATE *s);
|
||||
int32_t UI_Requester_GetLastRow(const UI_REQUESTER_STATE *s);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue