mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-28 10:26:22 +00:00
Tidied paging
This commit is contained in:
36
windows.c
36
windows.c
@@ -320,35 +320,39 @@ void win_page_off(void)
|
|||||||
|
|
||||||
void win_handle_page(int *ch)
|
void win_handle_page(int *ch)
|
||||||
{
|
{
|
||||||
if (*ch == KEY_PPAGE) {
|
int rows, cols, y, x;
|
||||||
int rows, cols;
|
getmaxyx(stdscr, rows, cols);
|
||||||
getmaxyx(stdscr, rows, cols);
|
getyx(_wins[_curr_prof_win].win, y, x);
|
||||||
|
|
||||||
_wins[_curr_prof_win].y_pos = _wins[_curr_prof_win].y_pos - (rows - 4);
|
int page_space = rows - 4;
|
||||||
if (_wins[_curr_prof_win].y_pos < 0)
|
int *page_start = &_wins[_curr_prof_win].y_pos;
|
||||||
_wins[_curr_prof_win].y_pos = 0;
|
|
||||||
|
// page up
|
||||||
|
if (*ch == KEY_PPAGE) {
|
||||||
|
*page_start -= page_space;
|
||||||
|
|
||||||
|
// went past beginning, show first page
|
||||||
|
if (*page_start < 0)
|
||||||
|
*page_start = 0;
|
||||||
|
|
||||||
_wins[_curr_prof_win].paged = 1;
|
_wins[_curr_prof_win].paged = 1;
|
||||||
dirty = TRUE;
|
dirty = TRUE;
|
||||||
} else if (*ch == KEY_NPAGE) {
|
|
||||||
int rows, cols, y, x;
|
|
||||||
getmaxyx(stdscr, rows, cols);
|
|
||||||
getyx(_wins[_curr_prof_win].win, y, x);
|
|
||||||
|
|
||||||
_wins[_curr_prof_win].y_pos = _wins[_curr_prof_win].y_pos + (rows - 4);
|
// page down
|
||||||
|
} else if (*ch == KEY_NPAGE) {
|
||||||
|
*page_start += page_space;
|
||||||
|
|
||||||
// only got half a screen, show full screen
|
// only got half a screen, show full screen
|
||||||
if ((y - _wins[_curr_prof_win].y_pos) < (rows - 4))
|
if ((y - (*page_start)) < page_space)
|
||||||
_wins[_curr_prof_win].y_pos = y - (rows - 4);
|
*page_start = y - page_space;
|
||||||
|
|
||||||
// went past end, show full screen
|
// went past end, show full screen
|
||||||
else if (_wins[_curr_prof_win].y_pos >= y)
|
else if (*page_start >= y)
|
||||||
_wins[_curr_prof_win].y_pos = y - (rows - 4);
|
*page_start = y - page_space;
|
||||||
|
|
||||||
_wins[_curr_prof_win].paged = 1;
|
_wins[_curr_prof_win].paged = 1;
|
||||||
dirty = TRUE;
|
dirty = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _create_windows(void)
|
static void _create_windows(void)
|
||||||
|
|||||||
Reference in New Issue
Block a user