summaryrefslogtreecommitdiff
path: root/src/interface/Button.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/interface/Button.cpp')
-rw-r--r--src/interface/Button.cpp44
1 files changed, 32 insertions, 12 deletions
diff --git a/src/interface/Button.cpp b/src/interface/Button.cpp
index fbf9b54..4b9c5d9 100644
--- a/src/interface/Button.cpp
+++ b/src/interface/Button.cpp
@@ -156,26 +156,38 @@ void Button::Draw(const Point& screenPos)
void Button::OnMouseUnclick(int x, int y, unsigned int button)
{
- if(button != 1)
+ if(button == 1)
{
- return;
+ if(isButtonDown)
+ {
+ isButtonDown = false;
+ DoAction();
+ }
}
-
- if(isButtonDown)
+ else if(button == 3)
{
- isButtonDown = false;
- DoAction();
- }
+ if(isAltButtonDown)
+ {
+ isAltButtonDown = false;
+ DoAltAction();
+ }
+ }
}
void Button::OnMouseClick(int x, int y, unsigned int button)
{
- if(button != 1) return;
- if(isTogglable)
- {
- toggle = !toggle;
+ if(button == 1)
+ {
+ if(isTogglable)
+ {
+ toggle = !toggle;
+ }
+ isButtonDown = true;
+ }
+ else if(button == 3)
+ {
+ isAltButtonDown = true;
}
- isButtonDown = true;
}
void Button::OnMouseEnter(int x, int y)
@@ -206,6 +218,14 @@ void Button::DoAction()
actionCallback->ActionCallback(this);
}
+void Button::DoAltAction()
+{
+ if(!Enabled)
+ return;
+ if(actionCallback)
+ actionCallback->AltActionCallback(this);
+}
+
void Button::SetActionCallback(ButtonAction * action)
{
if(actionCallback)