From 521f3baa9f56d964a52099894e4b80f82bdf4649 Mon Sep 17 00:00:00 2001
From: Allanis <allanis@saracraft.net>
Date: Wed, 27 Feb 2013 23:19:40 +0000
Subject: [PATCH] [Add] Allow toolkit to block input if needed.

---
 src/input.c   | 3 ++-
 src/toolkit.c | 7 +++++--
 src/toolkit.h | 2 +-
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/input.c b/src/input.c
index 747c229..301ee55 100644
--- a/src/input.c
+++ b/src/input.c
@@ -302,7 +302,8 @@ static void input_keyup(SDLKey key) {
 void input_handle(SDL_Event* event) {
 	if(toolkit)
 		// Toolkit is handled seperately.
-		toolkit_input(event);
+		if(toolkit_input(event))
+			return; // We don't process it if toolkit grabs it.
 
   switch(event->type) {
     case SDL_JOYAXISMOTION:
diff --git a/src/toolkit.c b/src/toolkit.c
index ad4750b..7fd0686 100644
--- a/src/toolkit.c
+++ b/src/toolkit.c
@@ -693,14 +693,17 @@ void toolkit_render(void) {
 
 }
 
-void toolkit_input(SDL_Event* event) {
+// Toolkit input is handled here.
+// If we return 1, the input isn't passed.
+int toolkit_input(SDL_Event* event) {
 	switch(event->type) {
 		case SDL_MOUSEMOTION:
 		case SDL_MOUSEBUTTONDOWN:
 		case SDL_MOUSEBUTTONUP:
 			toolkit_mouseEvent(event);
-			break;
+			return 1; // Block input.
 	}
+	return 0; // Don't block unput.
 }
 
 // Input.
diff --git a/src/toolkit.h b/src/toolkit.h
index a697c53..1c576ff 100644
--- a/src/toolkit.h
+++ b/src/toolkit.h
@@ -34,7 +34,7 @@ void window_destroyWidget(unsigned wid, const char* wgtname);
 void toolkit_render(void);
 
 // Input.
-void toolkit_input(SDL_Event* event);
+int toolkit_input(SDL_Event* event);
 
 // Init/Exit.
 int toolkit_init(void);