summaryrefslogtreecommitdiff
path: root/src/gui/widgets/characterviewnormal.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-01-01 19:20:41 +0300
committerAndrei Karas <akaras@inbox.ru>2015-01-01 19:20:41 +0300
commit37be713ea07bbe8ddcea10c77bf1bfa2cd74b989 (patch)
treeaef0df6b5a8f8c8dfb6cc05d9580eb9dbb1c03e2 /src/gui/widgets/characterviewnormal.cpp
parent4332a501d9a8a1d37913e1236dc1e60702f4b573 (diff)
downloadmanaplus-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/characterviewnormal.cpp')
-rw-r--r--src/gui/widgets/characterviewnormal.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/gui/widgets/characterviewnormal.cpp b/src/gui/widgets/characterviewnormal.cpp
index a8f676af0..ba25e2753 100644
--- a/src/gui/widgets/characterviewnormal.cpp
+++ b/src/gui/widgets/characterviewnormal.cpp
@@ -43,13 +43,25 @@ CharacterViewNormal::CharacterViewNormal(CharSelectDialog *const widget,
add(character);
character->setVisible(true);
}
- if (mSelected >= 0)
- (*mCharacterEntries)[mSelected]->setSelect(false);
- mSelected = 0;
- (*mCharacterEntries)[0]->setSelect(true);
+ const size_t sz = mCharacterEntries->size();
+ if (mSelected >= 0 && mSelected < sz)
+ {
+ CharacterDisplay *const display = (*mCharacterEntries)[mSelected];
+ if (display)
+ display->setSelect(false);
+ }
+ if (sz > 0)
+ {
+ mSelected = 0;
+ CharacterDisplay *const display = (*mCharacterEntries)[0];
+ display->setSelect(true);
+ setWidth(display->getWidth() * 5 + mPadding * 2);
+ }
+ else
+ {
+ mSelected = -1;
+ }
- const CharacterDisplay *const firtChar = (*mCharacterEntries)[0];
- setWidth(firtChar->getWidth() * 5 + mPadding * 2);
}
setHeight(210 + config.getIntValue("fontSize") * 2);
}
@@ -74,6 +86,8 @@ void CharacterViewNormal::show(const int i)
void CharacterViewNormal::resize()
{
const int sz = static_cast<signed>(mCharacterEntries->size());
+ if (sz <= 0)
+ return;
const CharacterDisplay *const firtChar = (*mCharacterEntries)[0];
int y = 0;
const int width = firtChar->getWidth();