mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-04-08 08:23:54 +02:00
fix warning+exit crash, fix menusection offset resetting when menus are rebuilt
This commit is contained in:
parent
083d488566
commit
4190946de5
src/gui/game
@ -23,4 +23,4 @@ bool Favorite::IsFavorite(std::string identifier)
|
||||
{
|
||||
std::vector<std::string> tempFavoritsList = *favoritesList;
|
||||
return std::find(tempFavoritsList.begin(), tempFavoritsList.end(), identifier) != tempFavoritsList.end();
|
||||
}
|
||||
}
|
||||
|
@ -166,6 +166,8 @@ GameModel::~GameModel()
|
||||
|
||||
for (size_t i = 0; i < menuList.size(); i++)
|
||||
{
|
||||
if (i == SC_FAVORITES)
|
||||
menuList[i]->ClearTools();
|
||||
delete menuList[i];
|
||||
}
|
||||
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();
|
||||
|
||||
for (int i = 0; i < menuList.size(); i++)
|
||||
for (size_t i = 0; i < menuList.size(); i++)
|
||||
{
|
||||
if (i == SC_FAVORITES)
|
||||
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()))
|
||||
{
|
||||
|
@ -538,11 +538,13 @@ public:
|
||||
void ActionCallback(ui::Button * 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)
|
||||
{
|
||||
Favorite::Ref().GetFavoritesList()->erase(std::remove(Favorite::Ref().GetFavoritesList()->begin(), Favorite::Ref().GetFavoritesList()->end(),
|
||||
tool->GetIdentifier()), Favorite::Ref().GetFavoritesList()->end());
|
||||
}
|
||||
else if (sender->GetSelectionState() == 0)
|
||||
Favorite::Ref().GetFavoritesList()->push_back(tool->GetIdentifier());
|
||||
else if (sender->GetSelectionState() == 2)
|
||||
@ -728,7 +730,6 @@ void GameView::NotifyLastToolChanged(GameModel * sender)
|
||||
|
||||
void GameView::NotifyToolListChanged(GameModel * sender)
|
||||
{
|
||||
lastOffset = 0;
|
||||
int currentX = WINDOWW-56;
|
||||
for (size_t i = 0; i < menuButtons.size(); i++)
|
||||
{
|
||||
@ -795,6 +796,11 @@ void GameView::NotifyToolListChanged(GameModel * sender)
|
||||
}
|
||||
if (sender->GetActiveMenu() != SC_DECO)
|
||||
lastMenu = sender->GetActiveMenu();
|
||||
|
||||
// don't reset scroll back to 0
|
||||
int origOffset = lastOffset;
|
||||
lastOffset = 0;
|
||||
setToolButtonOffset(origOffset);
|
||||
}
|
||||
|
||||
void GameView::NotifyColourSelectorVisibilityChanged(GameModel * sender)
|
||||
|
Loading…
x
Reference in New Issue
Block a user