diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-01-01 19:20:41 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-01-01 19:20:41 +0300 |
commit | 37be713ea07bbe8ddcea10c77bf1bfa2cd74b989 (patch) | |
tree | aef0df6b5a8f8c8dfb6cc05d9580eb9dbb1c03e2 /src/gui/widgets/characterviewsmall.cpp | |
parent | 4332a501d9a8a1d37913e1236dc1e60702f4b573 (diff) | |
download | manaplus-37be713ea07bbe8ddcea10c77bf1bfa2cd74b989.tar.gz manaplus-37be713ea07bbe8ddcea10c77bf1bfa2cd74b989.tar.bz2 manaplus-37be713ea07bbe8ddcea10c77bf1bfa2cd74b989.tar.xz manaplus-37be713ea07bbe8ddcea10c77bf1bfa2cd74b989.zip |
Fix crash with completly broken themes.
Diffstat (limited to 'src/gui/widgets/characterviewsmall.cpp')
-rw-r--r-- | src/gui/widgets/characterviewsmall.cpp | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/gui/widgets/characterviewsmall.cpp b/src/gui/widgets/characterviewsmall.cpp index b68c0171a..7e327c29f 100644 --- a/src/gui/widgets/characterviewsmall.cpp +++ b/src/gui/widgets/characterviewsmall.cpp @@ -48,11 +48,21 @@ CharacterViewSmall::CharacterViewSmall(CharSelectDialog *const widget, add(*it); } const int sz = static_cast<signed>(mCharacterEntries->size()); - mSelected = 0; - mSelectedEntry = (*mCharacterEntries)[mSelected]; - mSelectedEntry->setVisible(true); - mNumber->setCaption(strprintf("%d / %d", mSelected + 1, sz)); - mNumber->adjustSize(); + if (sz > 0) + { + mSelected = 0; + mSelectedEntry = (*mCharacterEntries)[mSelected]; + mSelectedEntry->setVisible(true); + mNumber->setCaption(strprintf("%d / %d", mSelected + 1, sz)); + mNumber->adjustSize(); + } + else + { + mSelected = -1; + mSelectedEntry = nullptr; + mNumber->setCaption("0 / 0"); + mNumber->adjustSize(); + } } add(mPrevious); add(mNext); @@ -69,6 +79,8 @@ CharacterViewSmall::~CharacterViewSmall() void CharacterViewSmall::show(const int i) { const int sz = static_cast<signed>(mCharacterEntries->size()); + if (sz <= 0) + return; if (mSelectedEntry) mSelectedEntry->setVisible(false); if (i >= sz) @@ -85,6 +97,9 @@ void CharacterViewSmall::show(const int i) void CharacterViewSmall::resize() { + const int sz = static_cast<signed>(mCharacterEntries->size()); + if (sz <= 0) + return; const CharacterDisplay *const firtChar = (*mCharacterEntries)[0]; const int x = (getWidth() - firtChar->getWidth()) / 2; const int y = (getHeight() - firtChar->getHeight()) / 2; |