summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-12-16 19:51:22 +0300
committerAndrei Karas <akaras@inbox.ru>2013-12-16 20:05:42 +0300
commit7f7ac0e998506fb2b19b03ae4f2ef6ef04b87b13 (patch)
treeff445411d6b69e6f65f7f83bf7ff634974f472c6 /src/gui
parentbf3205aafa71fad7138e7be8a4b641907ec056ce (diff)
downloadmanaplus-7f7ac0e998506fb2b19b03ae4f2ef6ef04b87b13.tar.gz
manaplus-7f7ac0e998506fb2b19b03ae4f2ef6ef04b87b13.tar.bz2
manaplus-7f7ac0e998506fb2b19b03ae4f2ef6ef04b87b13.tar.xz
manaplus-7f7ac0e998506fb2b19b03ae4f2ef6ef04b87b13.zip
fix speechbubble size.
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/popups/speechbubble.cpp29
-rw-r--r--src/gui/popups/speechbubble.h1
-rw-r--r--src/gui/widgets/browserbox.cpp8
-rw-r--r--src/gui/widgets/browserbox.h4
4 files changed, 24 insertions, 18 deletions
diff --git a/src/gui/popups/speechbubble.cpp b/src/gui/popups/speechbubble.cpp
index 3033b7923..7febfdf4c 100644
--- a/src/gui/popups/speechbubble.cpp
+++ b/src/gui/popups/speechbubble.cpp
@@ -36,16 +36,16 @@
SpeechBubble::SpeechBubble() :
Popup("Speech", "speechbubble.xml"),
mText(),
+ mSpacing(mSkin ? mSkin->getOption("spacing") : 2),
mCaption(new Label(this)),
mSpeechBox(new BrowserBox(this, BrowserBox::AUTO_SIZE, true,
- "browserbox.xml"))
+ "speechbrowserbox.xml"))
{
setContentSize(140, 46);
- setMinWidth(29);
- setMinHeight(29);
+ setMinWidth(8);
+ setMinHeight(8);
mCaption->setFont(boldFont);
-// mSpeechBox->setEditable(false);
mSpeechBox->setOpaque(false);
mSpeechBox->setForegroundColorAll(getThemeColor(Theme::BUBBLE_TEXT),
getThemeColor(Theme::BUBBLE_TEXT_OUTLINE));
@@ -75,28 +75,21 @@ void SpeechBubble::setText(const std::string &text, const bool showName)
getThemeColor(Theme::BUBBLE_TEXT_OUTLINE));
const int pad = mPadding;
- const int pad2 = 2 * pad;
- int width = mCaption->getWidth() + pad2;
+ int width = mCaption->getWidth();
mSpeechBox->clearRows();
mSpeechBox->addRow(text);
- const int speechWidth = mSpeechBox->getWidth() + pad2;
+ mSpeechBox->setWidth(mSpeechBox->getDataWidth());
+ const int speechWidth = mSpeechBox->getWidth();
const int fontHeight = getFont()->getHeight();
- const int nameHeight = showName ? mCaption->getHeight() + pad / 2 : 0;
- const int numRows = 1;
- const int height = fontHeight + nameHeight + pad;
+ const int nameHeight = showName ? mCaption->getHeight() + mSpacing : 0;
+ int height = fontHeight + nameHeight;
if (width < speechWidth)
width = speechWidth;
- width += pad2;
-
setContentSize(width, height);
- const gcn::Rectangle &rect = mDimension;
- const int xPos = ((rect.width - width) / 2);
- const int yPos = ((rect.height - height) / 2) + nameHeight;
-
- mCaption->setPosition(xPos, pad);
- mSpeechBox->setPosition(xPos, yPos);
+ mCaption->setPosition(0, 0);
+ mSpeechBox->setPosition(0, nameHeight);
}
diff --git a/src/gui/popups/speechbubble.h b/src/gui/popups/speechbubble.h
index 496b3d71c..41c210eab 100644
--- a/src/gui/popups/speechbubble.h
+++ b/src/gui/popups/speechbubble.h
@@ -59,6 +59,7 @@ class SpeechBubble final : public Popup
private:
std::string mText;
+ int mSpacing;
Label *mCaption;
BrowserBox *mSpeechBox;
};
diff --git a/src/gui/widgets/browserbox.cpp b/src/gui/widgets/browserbox.cpp
index 014e4cf58..d3e2efc67 100644
--- a/src/gui/widgets/browserbox.cpp
+++ b/src/gui/widgets/browserbox.cpp
@@ -72,6 +72,7 @@ BrowserBox::BrowserBox(const Widget2 *const widget,
mPadding(0),
mNewLinePadding(15),
mItemPadding(0),
+ mDataWidth(0),
mHighlightColor(getThemeColor(Theme::HIGHLIGHT)),
mHyperLinkColor(getThemeColor(Theme::HYPERLINK)),
mOpaque(opaque),
@@ -403,6 +404,7 @@ void BrowserBox::clearRows()
setHeight(0);
mSelectedLink = -1;
mUpdateTime = 0;
+ mDataWidth = 0;
updateHeight();
}
@@ -751,7 +753,11 @@ int BrowserBox::calcHeight()
start += 3;
if (start == row.size())
+ {
+ if (x > mDataWidth)
+ mDataWidth = x;
break;
+ }
}
}
const size_t len = (end == std::string::npos) ? end : end - start;
@@ -832,6 +838,8 @@ int BrowserBox::calcHeight()
break;
x += width;
+ if (x > mDataWidth)
+ mDataWidth = x;
}
y += fontHeight;
}
diff --git a/src/gui/widgets/browserbox.h b/src/gui/widgets/browserbox.h
index fd037506b..5a09f60d6 100644
--- a/src/gui/widgets/browserbox.h
+++ b/src/gui/widgets/browserbox.h
@@ -234,6 +234,9 @@ class BrowserBox final : public gcn::Widget,
void setForegroundColorAll(const gcn::Color &color1,
const gcn::Color &color2);
+ int getDataWidth() const
+ { return mDataWidth; }
+
private:
int calcHeight() A_WARN_UNUSED;
@@ -264,6 +267,7 @@ class BrowserBox final : public gcn::Widget,
int mPadding;
int mNewLinePadding;
int mItemPadding;
+ unsigned int mDataWidth;
gcn::Color mHighlightColor;
gcn::Color mHyperLinkColor;