summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2009-05-05 23:48:45 +0200
committerBjørn Lindeijer <bjorn@lindeijer.nl>2009-05-05 23:51:09 +0200
commit3c4661726f9321e91037291fcf628a54b993c4ec (patch)
treed2024fecd35a0f769a538bebdafd4aa5340f7b6a
parent5a9759680427154f379499cb3268f307bb860c22 (diff)
downloadmana-3c4661726f9321e91037291fcf628a54b993c4ec.tar.gz
mana-3c4661726f9321e91037291fcf628a54b993c4ec.tar.bz2
mana-3c4661726f9321e91037291fcf628a54b993c4ec.tar.xz
mana-3c4661726f9321e91037291fcf628a54b993c4ec.zip
Hide the item popup when the mouse moves on top of it
Makes the popup a lot less annoying. Still sticks around in some cases when it shouldn't, which seems to be because of missing mouseExited events from Guichan.
-rw-r--r--src/gui/itempopup.cpp8
-rw-r--r--src/gui/itempopup.h7
-rw-r--r--src/gui/widgets/popup.h14
3 files changed, 22 insertions, 7 deletions
diff --git a/src/gui/itempopup.cpp b/src/gui/itempopup.cpp
index 2a45a06a..e1822e03 100644
--- a/src/gui/itempopup.cpp
+++ b/src/gui/itempopup.cpp
@@ -66,6 +66,8 @@ ItemPopup::ItemPopup():
add(mItemEffect);
add(mItemWeight);
+ addMouseListener(this);
+
loadPopupConfiguration();
}
@@ -178,3 +180,9 @@ void ItemPopup::view(int x, int y)
setVisible(true);
requestMoveToTop();
}
+
+void ItemPopup::mouseMoved(gcn::MouseEvent &event)
+{
+ // When the mouse moved on top of the popup, hide it
+ setVisible(false);
+}
diff --git a/src/gui/itempopup.h b/src/gui/itempopup.h
index 6140e4dd..e4bef371 100644
--- a/src/gui/itempopup.h
+++ b/src/gui/itempopup.h
@@ -27,12 +27,15 @@
#include "resources/iteminfo.h"
+#include <guichan/mouselistener.hpp>
+
class TextBox;
/**
* A popup that displays information about an item.
*/
-class ItemPopup : public Popup
+class ItemPopup : public Popup,
+ public gcn::MouseListener
{
public:
/**
@@ -55,6 +58,8 @@ class ItemPopup : public Popup
*/
void view(int x, int y);
+ void mouseMoved(gcn::MouseEvent &mouseEvent);
+
private:
gcn::Label *mItemName;
TextBox *mItemDesc;
diff --git a/src/gui/widgets/popup.h b/src/gui/widgets/popup.h
index 895484b0..119ed841 100644
--- a/src/gui/widgets/popup.h
+++ b/src/gui/widgets/popup.h
@@ -32,12 +32,14 @@ class Skin;
class WindowContainer;
/**
- * A rather reduced down version of the Window class that is particularly suited
- * for popup type functionality that doesn't need to be resized or moved around
- * by the mouse once created, but only needs to display some simple content,
- * like a static message. Popups, in general, shouldn't also need to update
- * their content once created, although this is not an explicit requirement to
- * use the popup class.
+ * A light version of the Window class. Particularly suited for popup type
+ * functionality that doesn't need to be resized or moved around by the mouse
+ * once created, but only needs to display some simple content, like a static
+ * message.
+ *
+ * Popups, in general, shouldn't also need to update their content once
+ * created, although this is not an explicit requirement to use the popup
+ * class.
*
* \ingroup GUI
*/