From 836f24b04713217fea569c240b1cd6cb922d5091 Mon Sep 17 00:00:00 2001
From: taiyu <taiyu.len@gmail.com>
Date: Fri, 28 Aug 2015 23:43:52 -0700
Subject: [PATCH] #149 change focus before pointer_mode

---
 sway/handlers.c | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/sway/handlers.c b/sway/handlers.c
index fa5c6c93..d0b129e8 100644
--- a/sway/handlers.c
+++ b/sway/handlers.c
@@ -447,19 +447,8 @@ static bool handle_pointer_button(wlc_handle view, uint32_t time, const struct w
 		pointer_mode_set(button, !(modifiers->mods ^ config->floating_mod));
 	}
 
-	// Return if mode has been set
-	if (pointer_state.mode) {
-		return EVENT_HANDLED;
-	}
-
-	// Always send mouse release
-	if (state == WLC_BUTTON_STATE_RELEASED) {
-		return EVENT_PASSTHROUGH;
-	}
-
 	// Check whether to change focus
 	swayc_t *pointer = pointer_state.view;
-	sway_log(L_DEBUG, "pointer:%p",pointer);
 	if (pointer) {
 		if (focused != pointer) {
 			set_focused_container(pointer_state.view);
@@ -478,6 +467,16 @@ static bool handle_pointer_button(wlc_handle view, uint32_t time, const struct w
 		}
 	}
 
+	// Return if mode has been set
+	if (pointer_state.mode) {
+		return EVENT_HANDLED;
+	}
+
+	// Always send mouse release
+	if (state == WLC_BUTTON_STATE_RELEASED) {
+		return EVENT_PASSTHROUGH;
+	}
+
 	// Finally send click
 	return EVENT_PASSTHROUGH;
 }