fix warning+exit crash, fix menusection offset resetting when menus are rebuilt

This commit is contained in:
jacob1 2016-06-25 11:53:42 -04:00
parent 083d488566
commit 4190946de5
3 changed files with 13 additions and 5 deletions

View File

@ -23,4 +23,4 @@ bool Favorite::IsFavorite(std::string identifier)
{ {
std::vector<std::string> tempFavoritsList = *favoritesList; std::vector<std::string> tempFavoritsList = *favoritesList;
return std::find(tempFavoritsList.begin(), tempFavoritsList.end(), identifier) != tempFavoritsList.end(); return std::find(tempFavoritsList.begin(), tempFavoritsList.end(), identifier) != tempFavoritsList.end();
} }

View File

@ -166,6 +166,8 @@ GameModel::~GameModel()
for (size_t i = 0; i < menuList.size(); i++) for (size_t i = 0; i < menuList.size(); i++)
{ {
if (i == SC_FAVORITES)
menuList[i]->ClearTools();
delete menuList[i]; delete menuList[i];
} }
for (std::vector<Tool*>::iterator iter = extraElementTools.begin(), end = extraElementTools.end(); iter != end; ++iter) for (std::vector<Tool*>::iterator iter = extraElementTools.begin(), end = extraElementTools.end(); iter != end; ++iter)
@ -370,12 +372,12 @@ void GameModel::BuildFavoritesMenu()
{ {
menuList[SC_FAVORITES]->ClearTools(); menuList[SC_FAVORITES]->ClearTools();
for (int i = 0; i < menuList.size(); i++) for (size_t i = 0; i < menuList.size(); i++)
{ {
if (i == SC_FAVORITES) if (i == SC_FAVORITES)
continue; continue;
for (int j = 0; j < menuList[i]->GetToolList().size(); j++) for (size_t j = 0; j < menuList[i]->GetToolList().size(); j++)
{ {
if (Favorite::Ref().IsFavorite(menuList[i]->GetToolList()[j]->GetIdentifier())) if (Favorite::Ref().IsFavorite(menuList[i]->GetToolList()[j]->GetIdentifier()))
{ {

View File

@ -538,11 +538,13 @@ public:
void ActionCallback(ui::Button * sender_) void ActionCallback(ui::Button * sender_)
{ {
ToolButton *sender = (ToolButton*)sender_; ToolButton *sender = (ToolButton*)sender_;
if (v->ShiftBehaviour() && !v->CtrlBehaviour() && !v->AltBehaviour()) if (v->ShiftBehaviour() && v->CtrlBehaviour() && !v->AltBehaviour())
{ {
if (Favorite::Ref().IsFavorite(tool->GetIdentifier()) && sender->GetSelectionState() == 1) if (Favorite::Ref().IsFavorite(tool->GetIdentifier()) && sender->GetSelectionState() == 1)
{
Favorite::Ref().GetFavoritesList()->erase(std::remove(Favorite::Ref().GetFavoritesList()->begin(), Favorite::Ref().GetFavoritesList()->end(), Favorite::Ref().GetFavoritesList()->erase(std::remove(Favorite::Ref().GetFavoritesList()->begin(), Favorite::Ref().GetFavoritesList()->end(),
tool->GetIdentifier()), Favorite::Ref().GetFavoritesList()->end()); tool->GetIdentifier()), Favorite::Ref().GetFavoritesList()->end());
}
else if (sender->GetSelectionState() == 0) else if (sender->GetSelectionState() == 0)
Favorite::Ref().GetFavoritesList()->push_back(tool->GetIdentifier()); Favorite::Ref().GetFavoritesList()->push_back(tool->GetIdentifier());
else if (sender->GetSelectionState() == 2) else if (sender->GetSelectionState() == 2)
@ -728,7 +730,6 @@ void GameView::NotifyLastToolChanged(GameModel * sender)
void GameView::NotifyToolListChanged(GameModel * sender) void GameView::NotifyToolListChanged(GameModel * sender)
{ {
lastOffset = 0;
int currentX = WINDOWW-56; int currentX = WINDOWW-56;
for (size_t i = 0; i < menuButtons.size(); i++) for (size_t i = 0; i < menuButtons.size(); i++)
{ {
@ -795,6 +796,11 @@ void GameView::NotifyToolListChanged(GameModel * sender)
} }
if (sender->GetActiveMenu() != SC_DECO) if (sender->GetActiveMenu() != SC_DECO)
lastMenu = sender->GetActiveMenu(); lastMenu = sender->GetActiveMenu();
// don't reset scroll back to 0
int origOffset = lastOffset;
lastOffset = 0;
setToolButtonOffset(origOffset);
} }
void GameView::NotifyColourSelectorVisibilityChanged(GameModel * sender) void GameView::NotifyColourSelectorVisibilityChanged(GameModel * sender)