summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/widgets/button.cpp9
-rw-r--r--src/gui/widgets/button.h5
-rw-r--r--src/gui/windowmenu.cpp20
-rw-r--r--src/gui/windowmenu.h3
4 files changed, 25 insertions, 12 deletions
diff --git a/src/gui/widgets/button.cpp b/src/gui/widgets/button.cpp
index b2fa9e89..6770c180 100644
--- a/src/gui/widgets/button.cpp
+++ b/src/gui/widgets/button.cpp
@@ -83,15 +83,14 @@ Button::Button(const std::string &caption, const std::string &actionEventId,
adjustSize();
}
-void Button::setButtonIcon(const std::string& iconFile, int frameHeight,
- int frameWidth)
+void Button::setButtonIcon(const std::string& iconFile)
{
// We clean up possible older references.
if (mButtonIcon)
removeButtonIcon();
// If nothing relevant was set, we can quit now.
- if (iconFile.empty() || !frameWidth || !frameHeight)
+ if (iconFile.empty())
return;
// Load the icon frames.
@@ -99,6 +98,10 @@ void Button::setButtonIcon(const std::string& iconFile, int frameHeight,
if (!btnIcons)
return;
+ // Compute the sub images size.
+ int frameWidth = btnIcons->getWidth() / 4;
+ int frameHeight = btnIcons->getHeight();
+
if (btnIcons->getWidth() > 0 && btnIcons->getHeight() > 0)
{
mButtonIcon = new Image*[BUTTON_COUNT];
diff --git a/src/gui/widgets/button.h b/src/gui/widgets/button.h
index cfc5043e..39b3eb75 100644
--- a/src/gui/widgets/button.h
+++ b/src/gui/widgets/button.h
@@ -72,15 +72,14 @@ class Button : public gcn::Button
* Standard, Highlighted, Pressed, and Disabled.
* If the image is too short, the missing states won't be loaded.
*/
- void setButtonIcon(const std::string& iconFile = std::string(),
- int frameHeight = 0, int frameWidth = 0);
+ void setButtonIcon(const std::string& iconFile = std::string());
/**
* Set the button popup text when hovering it for a few seconds.
*
* @note: An empty text will disable the popup.
*/
- void setButtonPopupText(const std::string& text = "");
+ void setButtonPopupText(const std::string& text = std::string());
void logic();
void mouseMoved(gcn::MouseEvent &event);
diff --git a/src/gui/windowmenu.cpp b/src/gui/windowmenu.cpp
index 7011c82a..5f7aefa7 100644
--- a/src/gui/windowmenu.cpp
+++ b/src/gui/windowmenu.cpp
@@ -61,7 +61,7 @@ WindowMenu::WindowMenu():
// if (specialsWindow->hasSpecials())
addButton(N_("Specials"), x, h);
- addButton(N_("Social"), x, h);
+ addButton(N_("Social"), x, h, "button-icon-social.png");
addButton(N_("Shortcut"), x, h);
addButton(N_("Setup"), x, h);
@@ -156,12 +156,22 @@ void WindowMenu::valueChanged(const gcn::SelectionEvent &event)
}
}
-void WindowMenu::addButton(const char* text, int &x, int &h)
+void WindowMenu::addButton(const std::string& text, int &x, int &h,
+ const std::string& iconPath)
{
- Button *btn = new Button(gettext(text), text, this);
- btn->setButtonPopupText(gettext(text));
+ Button *btn = new Button("", text, this);
+ if (!iconPath.empty())
+ {
+ btn->setButtonPopupText(gettext(text.c_str()));
+ btn->setButtonIcon(iconPath);
+ }
+ else
+ {
+ btn->setCaption(gettext(text.c_str()));
+ }
+
btn->setPosition(x, 0);
add(btn);
x += btn->getWidth() + 3;
- h = btn->getHeight();
+ h = std::max(h, btn->getHeight());
}
diff --git a/src/gui/windowmenu.h b/src/gui/windowmenu.h
index 2bb3e764..b4b0446d 100644
--- a/src/gui/windowmenu.h
+++ b/src/gui/windowmenu.h
@@ -48,7 +48,8 @@ class WindowMenu : public Container,
void valueChanged(const gcn::SelectionEvent &event);
private:
- inline void addButton(const char* text, int &x, int &h);
+ inline void addButton(const std::string& text, int &x, int &h,
+ const std::string& iconPath = std::string());
EmotePopup *mEmotePopup;
};