From fe59ec9659a58bb91fd1d6c7babb26e5584f7cc3 Mon Sep 17 00:00:00 2001 From: Simon Robertshaw Date: Tue, 14 Aug 2012 12:15:28 +0100 Subject: Only call button actions if the mouse is released inside the button. Fixes #96 diff --git a/src/game/GameView.cpp b/src/game/GameView.cpp index 352d9e5..c03ccf5 100644 --- a/src/game/GameView.cpp +++ b/src/game/GameView.cpp @@ -49,7 +49,7 @@ public: void SetShowSplit(bool split) { showSplit = split; } SplitButtonAction * GetSplitActionCallback() { return splitActionCallback; } void SetSplitActionCallback(SplitButtonAction * newAction) { splitActionCallback = newAction; } - virtual void OnMouseUp(int x, int y, unsigned int button) + virtual void OnMouseUnclick(int x, int y, unsigned int button) { if(isButtonDown) { @@ -58,7 +58,7 @@ public: else if(rightDown) DoRightAction(); } - ui::Button::OnMouseUp(x, y, button); + ui::Button::OnMouseUnclick(x, y, button); } virtual void OnMouseMovedInside(int x, int y, int dx, int dy) diff --git a/src/interface/Button.cpp b/src/interface/Button.cpp index d5cc382..c6ebd79 100644 --- a/src/interface/Button.cpp +++ b/src/interface/Button.cpp @@ -142,7 +142,7 @@ void Button::Draw(const Point& screenPos) } } -void Button::OnMouseUp(int x, int y, unsigned int button) +void Button::OnMouseUnclick(int x, int y, unsigned int button) { if(button != 1) { @@ -183,6 +183,7 @@ void Button::OnMouseEnter(int x, int y) void Button::OnMouseLeave(int x, int y) { isMouseInside = false; + isButtonDown = false; } void Button::DoAction() diff --git a/src/interface/Button.h b/src/interface/Button.h index 2358d49..6b7fb96 100644 --- a/src/interface/Button.h +++ b/src/interface/Button.h @@ -34,7 +34,7 @@ public: bool Enabled; virtual void OnMouseClick(int x, int y, unsigned int button); - virtual void OnMouseUp(int x, int y, unsigned int button); + virtual void OnMouseUnclick(int x, int y, unsigned int button); //virtual void OnMouseUp(int x, int y, unsigned int button); virtual void OnMouseEnter(int x, int y); -- cgit v0.9.2-21-gd62e