summaryrefslogtreecommitdiff
path: root/src/gui/confirm_dialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/confirm_dialog.cpp')
-rw-r--r--src/gui/confirm_dialog.cpp53
1 files changed, 22 insertions, 31 deletions
diff --git a/src/gui/confirm_dialog.cpp b/src/gui/confirm_dialog.cpp
index f4b49251..4c08eb73 100644
--- a/src/gui/confirm_dialog.cpp
+++ b/src/gui/confirm_dialog.cpp
@@ -48,47 +48,38 @@ ConfirmDialog::ConfirmDialog(const std::string &title, const std::string &msg,
mTextBox->setTextWrapped(msg, 260);
- int numRows = mTextBox->getNumberOfRows();
- int width = getFont()->getWidth(title);
- int inWidth = yesButton->getWidth() + noButton->getWidth() + 5;
+ const int numRows = mTextBox->getNumberOfRows();
+ const int inWidth = yesButton->getWidth() + noButton->getWidth() +
+ (2 * getPadding());
const int fontHeight = getFont()->getHeight();
+ const int height = numRows * fontHeight;
+ int width = getFont()->getWidth(title);
- if (numRows > 1)
- {
- // fontHeight == height of each line of text (based on font heights)
- // 14 == row top + bottom graphic pixel heights
- setContentSize(mTextBox->getMinWidth() + fontHeight, ((numRows + 1) *
- fontHeight) + noButton->getHeight());
- mTextArea->setDimension(gcn::Rectangle(4, 5, mTextBox->getMinWidth() + 5,
- 3 + (numRows * fontHeight)));
- }
- else
- {
- if (width < getFont()->getWidth(msg))
- width = getFont()->getWidth(msg);
- if (width < inWidth)
- width = inWidth;
- setContentSize(width + fontHeight, (2 * fontHeight) +
- noButton->getHeight());
- mTextArea->setDimension(gcn::Rectangle(4, 5, width + 5, 17));
- }
+ if (width < mTextBox->getMinWidth())
+ width = mTextBox->getMinWidth();
+ if (width < inWidth)
+ width = inWidth;
- yesButton->setPosition(
- (mTextBox->getMinWidth() - inWidth) / 2,
- ((numRows - 1) * fontHeight) + noButton->getHeight() + 2);
- noButton->setPosition(
- yesButton->getX() + yesButton->getWidth() + 5,
- ((numRows - 1) * fontHeight) + noButton->getHeight() + 2);
+ setContentSize(mTextBox->getMinWidth() + fontHeight, height + fontHeight +
+ noButton->getHeight());
+ mTextArea->setDimension(gcn::Rectangle(4, 5, width + 2 * getPadding(),
+ height + getPadding()));
+
+ // 8 is the padding that GUIChan adds to button widgets
+ // (top and bottom combined)
+ yesButton->setPosition((width - inWidth) / 2, height + 8);
+ noButton->setPosition(yesButton->getX() + inWidth - noButton->getWidth(),
+ height + 8);
add(mTextArea);
add(yesButton);
add(noButton);
+ setLocationRelativeTo(getParent());
+
if (getParent())
- {
- setLocationRelativeTo(getParent());
getParent()->moveToTop(this);
- }
+
setVisible(true);
yesButton->requestFocus();
}