diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/setup.cpp | 20 | ||||
-rw-r--r-- | src/gui/setup.h | 3 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/gui/setup.cpp b/src/gui/setup.cpp index 777bdc752..659571d67 100644 --- a/src/gui/setup.cpp +++ b/src/gui/setup.cpp @@ -83,6 +83,7 @@ Setup::Setup(): for (const char ** curBtn = buttonNames; *curBtn; ++ curBtn) { Button *const btn = new Button(this, gettext(*curBtn), *curBtn, this); + mButtons.push_back(btn); x -= btn->getWidth() + buttonPadding; btn->setPosition(x, height - btn->getHeight() - buttonPadding); add(btn); @@ -139,6 +140,7 @@ Setup::Setup(): Setup::~Setup() { delete_all(mTabs); + mButtons.clear(); } void Setup::action(const gcn::ActionEvent &event) @@ -213,4 +215,22 @@ void Setup::setVisible(bool visible) Window::setVisible(visible); } +void Setup::widgetResized(const gcn::Event &event) +{ + Window::widgetResized(event); + + const gcn::Rectangle area = getChildrenArea(); + int x = area.width; + const int height = area.height; + const int width = area.width; + const int buttonPadding = getOption("buttonPadding", 5); + mPanel->setDimension(gcn::Rectangle(5, 5, width - 10, height - 40)); + FOR_EACH (std::vector<Button*>::iterator, it, mButtons) + { + Button *const btn = *it; + x -= btn->getWidth() + buttonPadding; + btn->setPosition(x, height - btn->getHeight() - buttonPadding); + } +} + Setup *setupWindow; diff --git a/src/gui/setup.h b/src/gui/setup.h index 69ab79970..860bd5a33 100644 --- a/src/gui/setup.h +++ b/src/gui/setup.h @@ -78,9 +78,12 @@ class Setup final : public Window, public gcn::ActionListener void setVisible(bool visible) override; + void widgetResized(const gcn::Event &event) override; + private: std::list<SetupTab*> mTabs; std::list<Window*> mWindowsToReset; + std::vector<Button*> mButtons; Button *mResetWindows; TabbedArea *mPanel; }; |