From 9626a5ce823fe94970b04dc504993583996e6074 Mon Sep 17 00:00:00 2001
From: Stijn Buys <ingar@osirion.org>
Date: Tue, 6 Jan 2015 21:38:33 +0000
Subject: Fixed target selection in the map window.

---
 src/client/galaxymapwidget.cc | 11 ++++++-----
 src/client/galaxymapwidget.h  | 19 ++++++++++++++-----
 src/client/mapwidget.cc       | 10 ++++++----
 src/client/mapwidget.h        | 22 ++++++++++++++++------
 4 files changed, 42 insertions(+), 20 deletions(-)

diff --git a/src/client/galaxymapwidget.cc b/src/client/galaxymapwidget.cc
index a49e004..47d1f79 100644
--- a/src/client/galaxymapwidget.cc
+++ b/src/client/galaxymapwidget.cc
@@ -36,10 +36,10 @@ void GalaxyMapWidget::set_zone(core::Zone *zone)
 	galaxymapwidget_zone = zone;
 }
 
-bool GalaxyMapWidget::on_keypress(const int key, const unsigned int modifier)
+bool GalaxyMapWidget::on_mousepress(const unsigned int button)
 {
-	if (key == 512 + SDL_BUTTON_LEFT) {
-		if (has_mouse_focus() && hover()) {
+	if (button == SDL_BUTTON_LEFT) {
+		if (hover()) {
 			if (zone() && (zone()->id() == hover())) {
 				emit(ui::Widget::EventDoubleClicked);
 			} else {
@@ -48,9 +48,10 @@ bool GalaxyMapWidget::on_keypress(const int key, const unsigned int modifier)
 			}
 		}
 		return true;
-
 	}
+
 	return false;
+
 }
 
 void GalaxyMapWidget::draw()
@@ -105,7 +106,7 @@ void GalaxyMapWidget::draw()
 	// draw map icons
 	/*
 	 * Note: the galactic coordinate system differs from the zone coordinate system:
-	 * positive X-axis runs left-to-right on the screen and the positive U-axis runs bottom-to-top on the screen.
+	 * positive X-axis runs left-to-right on the screen and the positive Y-axis runs bottom-to-top on the screen.
 	 * 
 	 * This is because I'm lazy and I just copy the coordinates from the SVG starsystem roadmap as shown in Inkscape.
 	 */
diff --git a/src/client/galaxymapwidget.h b/src/client/galaxymapwidget.h
index 3e74903..a3cc01d 100644
--- a/src/client/galaxymapwidget.h
+++ b/src/client/galaxymapwidget.h
@@ -10,7 +10,8 @@
 #include "core/zone.h"
 #include "ui/widget.h"
 
-namespace client {
+namespace client
+{
 	
 class GalaxyMapWidget : public ui::Widget
 {
@@ -23,19 +24,26 @@ public:
 	
 	void set_zone(core::Zone *zone);
 	
-	inline unsigned int hover() const {
+	inline unsigned int hover() const
+	{
 		return galaxymapwidget_hover_id;
 	}
 		
-	inline core::Zone *zone() const {
+	inline core::Zone *zone() const
+	{
 		return galaxymapwidget_zone;
 	}
 
 protected:
+	/**
+	 * @brief draw event handler
+	 * */
 	virtual void draw();
 	
-	/// called when the widget receives a key press
-	virtual bool on_keypress(const int key, const unsigned int modifier);
+	/**
+	 * @brief mouse button press event handler
+	 * */
+	virtual bool on_mousepress(const unsigned int button);
 	
 private:	
 	float			galaxymapwidget_zoom;
@@ -46,4 +54,5 @@ private:
 }; // class GalaxyMapWidget
 
 } // namespace client
+
 #endif // __INCLUDED_CLIENT_GALAXYMAPWIDGET_H__
diff --git a/src/client/mapwidget.cc b/src/client/mapwidget.cc
index 52fe074..54e109e 100644
--- a/src/client/mapwidget.cc
+++ b/src/client/mapwidget.cc
@@ -45,10 +45,10 @@ void MapWidget::set_zone(core::Zone *zone)
 	mapwidget_zone = zone;
 }
 
-bool MapWidget::on_keypress(const int key, const unsigned int modifier)
+bool MapWidget::on_mousepress(const unsigned int button)
 {
-	if (key == 512 + SDL_BUTTON_LEFT) {
-		if (mapwidget_zone && has_mouse_focus() && hover()) {
+	if (button == SDL_BUTTON_LEFT) {
+		if (mapwidget_zone && hover()) {
 			core::Entity *target = mapwidget_zone->find_entity(hover());
 			
 			if (targets::is_valid_map_target(target)) {
@@ -57,10 +57,12 @@ bool MapWidget::on_keypress(const int key, const unsigned int modifier)
 			}
 		}
 		return true;
+	}
 
-	}	
 	return false;
+
 }
+
 void MapWidget::draw()
 {
 	if (!mapwidget_zone)
diff --git a/src/client/mapwidget.h b/src/client/mapwidget.h
index 0482330..38485fd 100644
--- a/src/client/mapwidget.h
+++ b/src/client/mapwidget.h
@@ -10,7 +10,8 @@
 #include "core/zone.h"
 #include "ui/widget.h"
 
-namespace client {
+namespace client
+{
 	
 class MapWidget : public ui::Widget
 {
@@ -25,23 +26,31 @@ public:
 	
 	void set_target(const core::Entity *entity);
 	
-	inline unsigned int hover() const {
+	inline unsigned int hover() const
+	{
 		return mapwidget_hover_id;
 	}
 	
-	inline const core::Entity *target() const {
+	inline const core::Entity *target() const
+	{
 		return mapwidget_target;
 	}
 	
-	inline core::Zone *zone() const {
+	inline core::Zone *zone() const
+	{
 		return mapwidget_zone;
 	}
 
 protected:
+	/**
+	 * @brief draw event handler
+	 * */
 	virtual void draw();
 	
-	/// called when the widget receives a key press
-	virtual bool on_keypress(const int key, const unsigned int modifier);
+	/**
+	 * @brief mouse button press event handler
+	 * */
+	virtual bool on_mousepress(const unsigned int button);
 	
 private:	
 	float			mapwidget_zoom;
@@ -53,4 +62,5 @@ private:
 }; // class MapWidget
 
 } // namespace client
+
 #endif // __INCLUDED_CLIENT_MAPWIDGET_H__
-- 
cgit v1.2.3