summaryrefslogtreecommitdiff
path: root/src/gui/widgets
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-10-05 20:26:59 +0300
committerAndrei Karas <akaras@inbox.ru>2013-10-05 20:31:40 +0300
commit4e6f98cfd788965bd382f1722e2a5d895dda3bc6 (patch)
tree12b6195bbc66b49389f65d8c4831cd259e3429bc /src/gui/widgets
parent322aea1d69a47e8080bcd0552473a5a5d66c5e1a (diff)
downloadmanaplus-4e6f98cfd788965bd382f1722e2a5d895dda3bc6.tar.gz
manaplus-4e6f98cfd788965bd382f1722e2a5d895dda3bc6.tar.bz2
manaplus-4e6f98cfd788965bd382f1722e2a5d895dda3bc6.tar.xz
manaplus-4e6f98cfd788965bd382f1722e2a5d895dda3bc6.zip
Add support for min and max label resize size.
Using it in character selection dialog.
Diffstat (limited to 'src/gui/widgets')
-rw-r--r--src/gui/widgets/characterdisplay.cpp2
-rw-r--r--src/gui/widgets/label.cpp17
-rw-r--r--src/gui/widgets/label.h2
3 files changed, 13 insertions, 8 deletions
diff --git a/src/gui/widgets/characterdisplay.cpp b/src/gui/widgets/characterdisplay.cpp
index d88334973..9d409a6bb 100644
--- a/src/gui/widgets/characterdisplay.cpp
+++ b/src/gui/widgets/characterdisplay.cpp
@@ -102,6 +102,8 @@ void CharacterDisplay::update()
mName->setCaption(mCharacter->dummy->getName());
else
mName->setCaption("");
+ const int width = mPlayerBox->getWidth();
+ mName->resizeTo(width, width);
distributeResizedEvent();
}
diff --git a/src/gui/widgets/label.cpp b/src/gui/widgets/label.cpp
index d57268bdd..50bd3ad41 100644
--- a/src/gui/widgets/label.cpp
+++ b/src/gui/widgets/label.cpp
@@ -128,18 +128,18 @@ void Label::setForegroundColorAll(const gcn::Color &color1,
mForegroundColor2 = color2;
}
-void Label::resizeTo(const int sz)
+void Label::resizeTo(const int maxSize, const int minSize)
{
const gcn::Font *const font = getFont();
const int pad2 = 2 * mPadding;
setHeight(font->getHeight() + pad2);
- if (font->getWidth(mCaption) + pad2 > sz)
+ if (font->getWidth(mCaption) + pad2 > maxSize)
{
const int dots = font->getWidth("...");
- if (dots > sz)
+ if (dots > maxSize)
{
- setWidth(sz);
+ setWidth(maxSize);
return;
}
const size_t szChars = mCaption.size();
@@ -147,17 +147,20 @@ void Label::resizeTo(const int sz)
{
const std::string text = mCaption.substr(0, szChars - f);
const int width = font->getWidth(text) + dots + pad2;
- if (width <= sz)
+ if (width <= maxSize)
{
setCaption(text + "...");
setWidth(width);
return;
}
}
- setWidth(sz);
+ setWidth(maxSize);
}
else
{
- setWidth(font->getWidth(mCaption) + pad2);
+ int sz = font->getWidth(mCaption) + pad2;
+ if (sz < minSize)
+ sz = minSize;
+ setWidth(sz);
}
}
diff --git a/src/gui/widgets/label.h b/src/gui/widgets/label.h
index 42f07d1c2..049e7bae9 100644
--- a/src/gui/widgets/label.h
+++ b/src/gui/widgets/label.h
@@ -68,7 +68,7 @@ class Label final : public gcn::Label, public Widget2
void setForegroundColorAll(const gcn::Color &color1,
const gcn::Color &color2);
- void resizeTo(const int sz);
+ void resizeTo(const int maxSize, const int minSize);
static Skin *mSkin;