mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2025-02-25 02:32:21 +01:00
repair page up/down in GUI
Signed-off-by: SergeySlice <sergey.slice@gmail.com>
This commit is contained in:
parent
0f5da727e0
commit
33b2a4535f
@ -340,27 +340,36 @@ VOID REFIT_MENU_SCREEN::UpdateScroll(IN UINTN Movement)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SCROLL_PAGE_DOWN:
|
case SCROLL_PAGE_DOWN:
|
||||||
|
// DBG("cur=%lld, maxInd=%lld, maxVis=%lld, First=%lld, maxFirst=%lld, lastVis=%lld, maxscr=%lld\n",
|
||||||
|
// ScrollState.CurrentSelection, ScrollState.MaxIndex, ScrollState.MaxVisible, ScrollState.FirstVisible,
|
||||||
|
// ScrollState.MaxFirstVisible, ScrollState.CurrentSelection, ScrollState.LastVisible);
|
||||||
|
|
||||||
if (ScrollState.CurrentSelection < ScrollState.MaxIndex) {
|
if (ScrollState.CurrentSelection < ScrollState.MaxIndex) {
|
||||||
if (ScrollState.CurrentSelection == 0) { // currently at first entry, special treatment
|
if (ScrollState.CurrentSelection == 0) { // currently at first entry, special treatment
|
||||||
if (ScrollState.IsScrolling)
|
if (ScrollState.IsScrolling)
|
||||||
ScrollState.CurrentSelection += ScrollState.MaxVisible - 1; // move to second-to-last line without scrolling
|
ScrollState.CurrentSelection = ScrollState.MaxVisible - 1; // move to second-to-last line without scrolling
|
||||||
else
|
else
|
||||||
ScrollState.CurrentSelection = ScrollState.MaxIndex; // move to last entry
|
ScrollState.CurrentSelection = ScrollState.MaxIndex; // move to last entry
|
||||||
} else {
|
} else {
|
||||||
if (ScrollState.FirstVisible < ScrollState.MaxFirstVisible)
|
// if (ScrollState.FirstVisible < ScrollState.MaxFirstVisible)
|
||||||
ScrollState.PaintAll = TRUE;
|
// ScrollState.PaintAll = TRUE;
|
||||||
ScrollState.CurrentSelection += ScrollState.MaxVisible; // move one page and scroll synchronously
|
ScrollState.CurrentSelection += ScrollState.MaxVisible; // move one page and scroll synchronously
|
||||||
ScrollState.FirstVisible += ScrollState.MaxVisible;
|
ScrollState.FirstVisible += ScrollState.MaxVisible;
|
||||||
}
|
}
|
||||||
CONSTRAIN_MAX(ScrollState.CurrentSelection, ScrollState.MaxIndex);
|
CONSTRAIN_MAX(ScrollState.CurrentSelection, ScrollState.MaxIndex); // if (v>m) v=m;
|
||||||
CONSTRAIN_MAX(ScrollState.FirstVisible, ScrollState.MaxFirstVisible);
|
CONSTRAIN_MAX(ScrollState.FirstVisible, ScrollState.MaxFirstVisible);
|
||||||
if ((ScrollState.CurrentSelection > ScrollState.LastVisible) &&
|
if ((ScrollState.CurrentSelection > ScrollState.LastVisible) &&
|
||||||
(ScrollState.CurrentSelection <= ScrollState.MaxScroll)){
|
(ScrollState.CurrentSelection <= ScrollState.MaxScroll)){
|
||||||
ScrollState.PaintAll = TRUE;
|
// ScrollState.PaintAll = TRUE;
|
||||||
ScrollState.FirstVisible+= ScrollState.MaxVisible;
|
ScrollState.FirstVisible+= ScrollState.MaxVisible;
|
||||||
CONSTRAIN_MAX(ScrollState.FirstVisible, ScrollState.MaxFirstVisible);
|
CONSTRAIN_MAX(ScrollState.FirstVisible, ScrollState.MaxFirstVisible);
|
||||||
}
|
}
|
||||||
|
ScrollState.PaintAll = TRUE;
|
||||||
}
|
}
|
||||||
|
// DBG("after cur=%lld, maxInd=%lld, maxVis=%lld, First=%lld, maxFirst=%lld, lastVis=%lld, maxscr=%lld\n",
|
||||||
|
// ScrollState.CurrentSelection, ScrollState.MaxIndex, ScrollState.MaxVisible, ScrollState.FirstVisible,
|
||||||
|
// ScrollState.MaxFirstVisible, ScrollState.CurrentSelection, ScrollState.LastVisible);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCROLL_FIRST:
|
case SCROLL_FIRST:
|
||||||
@ -714,7 +723,7 @@ EFI_STATUS REFIT_MENU_SCREEN::WaitForInputEventPoll(UINTN TimeoutDefault)
|
|||||||
TimeoutRemain--;
|
TimeoutRemain--;
|
||||||
if (mPointer.isAlive()) {
|
if (mPointer.isAlive()) {
|
||||||
mPointer.UpdatePointer(!Daylight);
|
mPointer.UpdatePointer(!Daylight);
|
||||||
Status = CheckMouseEvent(); //out: gItemID, gAction
|
Status = CheckMouseEvent(); //out: mItemID, mAction
|
||||||
if (Status != EFI_TIMEOUT) { //this check should return timeout if no mouse events occured
|
if (Status != EFI_TIMEOUT) { //this check should return timeout if no mouse events occured
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -935,12 +944,12 @@ UINTN REFIT_MENU_SCREEN::RunGenericMenu(IN MENU_STYLE_FUNC StyleFunc, IN OUT INT
|
|||||||
case SCAN_PAGE_UP:
|
case SCAN_PAGE_UP:
|
||||||
UpdateScroll(SCROLL_PAGE_UP);
|
UpdateScroll(SCROLL_PAGE_UP);
|
||||||
// SetNextScreenMode(1);
|
// SetNextScreenMode(1);
|
||||||
((*this).*(StyleFunc))(MENU_FUNCTION_INIT, NULL);
|
// ((*this).*(StyleFunc))(MENU_FUNCTION_INIT, NULL);
|
||||||
break;
|
break;
|
||||||
case SCAN_PAGE_DOWN:
|
case SCAN_PAGE_DOWN:
|
||||||
UpdateScroll(SCROLL_PAGE_DOWN);
|
UpdateScroll(SCROLL_PAGE_DOWN);
|
||||||
// SetNextScreenMode(-1);
|
// SetNextScreenMode(-1);
|
||||||
((*this).*(StyleFunc))(MENU_FUNCTION_INIT, NULL);
|
// ((*this).*(StyleFunc))(MENU_FUNCTION_INIT, NULL);
|
||||||
break;
|
break;
|
||||||
case SCAN_ESC:
|
case SCAN_ESC:
|
||||||
MenuExit = MENU_EXIT_ESCAPE;
|
MenuExit = MENU_EXIT_ESCAPE;
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
// object XCinema Cinema is a part of Theme
|
// object XCinema Cinema is a part of Theme
|
||||||
// object FILM* FilmC is a part or current Screen. Must be initialized from Cinema somewhere on Screen init
|
// object FILM* FilmC is a part or current Screen. Must be initialized from Cinema somewhere on Screen init
|
||||||
|
// assumed one Film per screen
|
||||||
VOID REFIT_MENU_SCREEN::UpdateFilm()
|
VOID REFIT_MENU_SCREEN::UpdateFilm()
|
||||||
{
|
{
|
||||||
if (FilmC == nullptr || !FilmC->AnimeRun) {
|
if (FilmC == nullptr || !FilmC->AnimeRun) {
|
||||||
|
Loading…
Reference in New Issue
Block a user