From 031a455d23a5b04bb2bcd32e43a946fd60be7c6a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 18 Oct 2013 01:27:00 +0300 Subject: move virtual member calls from editdialog constuctor into postInit. --- src/gui/widgets/setupitem.cpp | 2 ++ src/gui/windows/editdialog.cpp | 16 +++++++++++----- src/gui/windows/editdialog.h | 4 +++- 3 files changed, 16 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/widgets/setupitem.cpp b/src/gui/widgets/setupitem.cpp index 6d1c38d48..862fc11d6 100644 --- a/src/gui/widgets/setupitem.cpp +++ b/src/gui/widgets/setupitem.cpp @@ -345,6 +345,7 @@ void SetupItemTextField::action(const gcn::ActionEvent &event) { mEditDialog = new EditDialog(mText, mTextField->getText(), mEventName + "_EDIT_OK"); + mEditDialog->postInit(); mEditDialog->addActionListener(this); } else if (eventId == mEventName + "_EDIT_OK") @@ -472,6 +473,7 @@ void SetupItemIntTextField::action(const gcn::ActionEvent &event) { mEditDialog = new EditDialog(mText, mTextField->getText(), mEventName + "_EDIT_OK"); + mEditDialog->postInit(); mEditDialog->addActionListener(this); } else if (eventId == mEventName + "_EDIT_OK") diff --git a/src/gui/windows/editdialog.cpp b/src/gui/windows/editdialog.cpp index acd5d9f72..f3c583d00 100644 --- a/src/gui/windows/editdialog.cpp +++ b/src/gui/windows/editdialog.cpp @@ -36,21 +36,27 @@ EditDialog::EditDialog(const std::string &title, const std::string &msg, Window(title, modal, parent, "edit.xml"), gcn::ActionListener(), mEventOk(eventOk), - mTextField(new TextField(this)) + mTextField(new TextField(this)), + mDefaultWidth(width) { mTextField->setText(msg); +} + +void EditDialog::postInit() +{ // TRANSLATORS: edit dialog label Button *const okButton = new Button(this, _("OK"), mEventOk, this); const int numRows = 1; const int fontHeight = getFont()->getHeight(); const int height = numRows * fontHeight; + const int pad = getPadding(); - setContentSize(width, height + fontHeight + okButton->getHeight()); - mTextField->setPosition(getPadding(), getPadding()); - mTextField->setWidth(width - (2 * getPadding())); + setContentSize(mDefaultWidth, height + fontHeight + okButton->getHeight()); + mTextField->setPosition(pad, pad); + mTextField->setWidth(mDefaultWidth - 2 * pad); - okButton->setPosition((width - okButton->getWidth()) / 2, + okButton->setPosition((mDefaultWidth - okButton->getWidth()) / 2, height + getOption("buttonPadding", 8)); add(mTextField); diff --git a/src/gui/windows/editdialog.h b/src/gui/windows/editdialog.h index 4199b6791..ce5160906 100644 --- a/src/gui/windows/editdialog.h +++ b/src/gui/windows/editdialog.h @@ -52,6 +52,8 @@ class EditDialog final : public Window, public gcn::ActionListener A_DELETE_COPY(EditDialog) + void postInit() override; + /** * Called when receiving actions from the widgets. */ @@ -62,8 +64,8 @@ class EditDialog final : public Window, public gcn::ActionListener private: std::string mEventOk; - TextField *mTextField; + int mDefaultWidth; }; #endif // GUI_WINDOWS_EDITDIALOG_H -- cgit v1.2.3-70-g09d2