1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-01-21 23:53:57 +00:00

Don't prompt for spell deletion when using cycling keys (Fixes #2382)

This commit is contained in:
scrawl 2015-02-18 19:06:36 +01:00
parent 4c5bba2947
commit 6d62aa7544
2 changed files with 39 additions and 33 deletions

View file

@ -102,22 +102,7 @@ namespace MWGui
updateSpells(); updateSpells();
} }
void SpellWindow::onModelIndexSelected(SpellModel::ModelIndex index) void SpellWindow::askDeleteSpell(const std::string &spellId)
{
const Spell& spell = mSpellView->getModel()->getItem(index);
if (spell.mType == Spell::Type_EnchantedItem)
{
onEnchantedItemSelected(spell.mItem, spell.mActive);
}
else
{
onSpellSelected(spell.mId);
}
}
void SpellWindow::onSpellSelected(const std::string& spellId)
{
if (MyGUI::InputManager::getInstance().isShiftPressed())
{ {
// delete spell, if allowed // delete spell, if allowed
const ESM::Spell* spell = const ESM::Spell* spell =
@ -141,13 +126,29 @@ namespace MWGui
dialog->eventCancelClicked.clear(); dialog->eventCancelClicked.clear();
} }
} }
void SpellWindow::onModelIndexSelected(SpellModel::ModelIndex index)
{
const Spell& spell = mSpellView->getModel()->getItem(index);
if (spell.mType == Spell::Type_EnchantedItem)
{
onEnchantedItemSelected(spell.mItem, spell.mActive);
}
else else
{
if (MyGUI::InputManager::getInstance().isShiftPressed())
askDeleteSpell(spell.mId);
else
onSpellSelected(spell.mId);
}
}
void SpellWindow::onSpellSelected(const std::string& spellId)
{ {
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayerPtr(); MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayerPtr();
MWWorld::InventoryStore& store = player.getClass().getInventoryStore(player); MWWorld::InventoryStore& store = player.getClass().getInventoryStore(player);
store.setSelectedEnchantItem(store.end()); store.setSelectedEnchantItem(store.end());
MWBase::Environment::get().getWindowManager()->setSelectedSpell(spellId, int(MWMechanics::getSpellSuccessChance(spellId, player))); MWBase::Environment::get().getWindowManager()->setSelectedSpell(spellId, int(MWMechanics::getSpellSuccessChance(spellId, player)));
}
updateSpells(); updateSpells();
} }
@ -184,6 +185,10 @@ namespace MWGui
return; return;
selected = (selected + itemcount) % itemcount; selected = (selected + itemcount) % itemcount;
onModelIndexSelected(selected); const Spell& spell = mSpellView->getModel()->getItem(selected);
if (spell.mType == Spell::Type_EnchantedItem)
onEnchantedItemSelected(spell.mItem, spell.mActive);
else
onSpellSelected(spell.mId);
} }
} }

View file

@ -33,6 +33,7 @@ namespace MWGui
void onSpellSelected(const std::string& spellId); void onSpellSelected(const std::string& spellId);
void onModelIndexSelected(SpellModel::ModelIndex index); void onModelIndexSelected(SpellModel::ModelIndex index);
void onDeleteSpellAccept(); void onDeleteSpellAccept();
void askDeleteSpell(const std::string& spellId);
virtual void onPinToggled(); virtual void onPinToggled();
virtual void onTitleDoubleClicked(); virtual void onTitleDoubleClicked();