Add ability for buttons to have highlights on touch
diff --git a/gui/button.cpp b/gui/button.cpp
index 72e2fe9..b9d1b52 100644
--- a/gui/button.cpp
+++ b/gui/button.cpp
@@ -107,7 +107,7 @@
 
     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::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);
 }