diff --git a/RetroFE/Source/Graphics/Component/ScrollingList.cpp b/RetroFE/Source/Graphics/Component/ScrollingList.cpp index 0bd7cfd..a74df24 100644 --- a/RetroFE/Source/Graphics/Component/ScrollingList.cpp +++ b/RetroFE/Source/Graphics/Component/ScrollingList.cpp @@ -485,7 +485,7 @@ void ScrollingList::update(float dt) Component *c = components_.at(cindex); - if(c && (scrollRequested || scrollChanged)) + if(c && readyToScroll && (scrollRequested || scrollChanged)) { unsigned int nextI = 0; if(currentScrollDirection_ == ScrollDirectionBack) diff --git a/RetroFE/Source/Graphics/Page.cpp b/RetroFE/Source/Graphics/Page.cpp index d0ea5eb..3176489 100644 --- a/RetroFE/Source/Graphics/Page.cpp +++ b/RetroFE/Source/Graphics/Page.cpp @@ -145,6 +145,18 @@ void Page::onNewItemSelected() } +void Page::highlightLoadArt() +{ + selectedItem_ = activeMenu_->getSelectedItem(); + + for(std::vector::iterator it = LayerComponents.begin(); it != LayerComponents.end(); ++it) + { + (*it)->setNewItemSelected(); + } + +} + + void Page::pushMenu(ScrollingList *s) { menus_.push_back(s); diff --git a/RetroFE/Source/Graphics/Page.h b/RetroFE/Source/Graphics/Page.h index 8d0a949..ece1082 100644 --- a/RetroFE/Source/Graphics/Page.h +++ b/RetroFE/Source/Graphics/Page.h @@ -44,6 +44,7 @@ public: virtual ~Page(); void DeInitialize(); virtual void onNewItemSelected(); + void highlightLoadArt(); bool pushCollection(CollectionInfo *collection); bool popCollection(); void enterMenu(); diff --git a/RetroFE/Source/RetroFE.cpp b/RetroFE/Source/RetroFE.cpp index beca279..ab0ae08 100644 --- a/RetroFE/Source/RetroFE.cpp +++ b/RetroFE/Source/RetroFE.cpp @@ -378,36 +378,35 @@ void RetroFE::run() } break; - case RETROFE_HIGHLIGHT_REQUEST: - currentPage_->highlightExit(); + case RETROFE_HIGHLIGHT_MENU_IDLE: currentPage_->setScrolling(Page::ScrollDirectionIdle); + if (currentPage_->isIdle()) + { + state = RETROFE_HIGHLIGHT_REQUEST; + } + break; + + case RETROFE_HIGHLIGHT_REQUEST: + currentPage_->setScrolling(Page::ScrollDirectionIdle); + currentPage_->highlightExit(); state = RETROFE_HIGHLIGHT_EXIT; break; case RETROFE_HIGHLIGHT_EXIT: if (processUserInput(currentPage_) == RETROFE_HIGHLIGHT_REQUEST) { - state = RETROFE_HIGHLIGHT_REQUEST; + state = RETROFE_HIGHLIGHT_MENU_IDLE; } - else if ((currentPage_->isGraphicsIdle() && currentPage_->isMenuScrolling()) || - (currentPage_->isIdle())) + else if (currentPage_->isIdle()) { - currentPage_->onNewItemSelected(); + currentPage_->highlightLoadArt(); state = RETROFE_HIGHLIGHT_LOAD_ART; } break; case RETROFE_HIGHLIGHT_LOAD_ART: - if (processUserInput(currentPage_) == RETROFE_HIGHLIGHT_REQUEST) - { - state = RETROFE_HIGHLIGHT_REQUEST; - } - else if ((currentPage_->isGraphicsIdle() && currentPage_->isMenuScrolling()) || - (currentPage_->isIdle())) - { - currentPage_->highlightEnter(); - state = RETROFE_HIGHLIGHT_ENTER; - } + currentPage_->highlightEnter(); + state = RETROFE_HIGHLIGHT_ENTER; break; case RETROFE_HIGHLIGHT_ENTER: @@ -415,7 +414,7 @@ void RetroFE::run() { state = RETROFE_HIGHLIGHT_REQUEST; } - else if (currentPage_->isGraphicsIdle()) + else if (currentPage_->isIdle()) { state = RETROFE_IDLE; } diff --git a/RetroFE/Source/RetroFE.h b/RetroFE/Source/RetroFE.h index 620f073..69db468 100644 --- a/RetroFE/Source/RetroFE.h +++ b/RetroFE/Source/RetroFE.h @@ -63,6 +63,7 @@ private: RETROFE_HIGHLIGHT_EXIT, RETROFE_HIGHLIGHT_LOAD_ART, RETROFE_HIGHLIGHT_ENTER, + RETROFE_HIGHLIGHT_MENU_IDLE, RETROFE_NEXT_PAGE_REQUEST, RETROFE_NEXT_PAGE_MENU_EXIT, RETROFE_NEXT_PAGE_MENU_LOAD_ART,