From 4d12f969b8fa40497b60a6e15873b1b3af924dda Mon Sep 17 00:00:00 2001 From: Dees_Troy Date: Fri, 19 Oct 2012 13:13:15 -0400 Subject: Add ability for buttons to have highlights on touch --- gui/button.cpp | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'gui/button.cpp') diff --git a/gui/button.cpp b/gui/button.cpp index 72e2fe905..b9d1b52dc 100644 --- a/gui/button.cpp +++ b/gui/button.cpp @@ -107,7 +107,7 @@ int GUIButton::Update(void) int ret = 0, ret2 = 0; - if (mButtonImg) ret = mButtonImg->Update(); + if (mButtonImg) ret = mButtonImg->Update(); if (ret < 0) return ret; if (ret == 0) @@ -188,7 +188,30 @@ int GUIButton::SetRenderPos(int x, int y, int w, int h) int GUIButton::NotifyTouch(TOUCH_STATE state, int x, int y) { - if (!isConditionTrue()) return -1; + static int last_state = 0; + + if (!isConditionTrue()) return -1; + if (x < mRenderX || x - mRenderX > mRenderW || y < mRenderY || y - mRenderY > mRenderH || state == TOUCH_RELEASE) { + if (last_state == 1) { + last_state = 0; + if (mButtonLabel != NULL) + mButtonLabel->isHighlighted = false; + if (mButtonImg != NULL) + mButtonImg->isHighlighted = false; + mRendered = false; + } + } else { + if (last_state == 0) { + last_state = 1; + if (mButtonLabel != NULL) + mButtonLabel->isHighlighted = true; + if (mButtonImg != NULL) + mButtonImg->isHighlighted = true; + mRendered = false; + } + } + if (x < mRenderX || x - mRenderX > mRenderW || y < mRenderY || y - mRenderY > mRenderH) + return 0; return (mAction ? mAction->NotifyTouch(state, x, y) : 1); } -- cgit v1.2.3