From d9eab6bbcd939f1238283ac9bbe003e06de4169c Mon Sep 17 00:00:00 2001
From: Erik Schilling <ablu.erikschilling@googlemail.com>
Date: Sun, 18 Sep 2011 02:39:48 +0800
Subject: Fixed item popup still visible after closing inventory window.

Reviewed-by: Bertram.

Conflicts:

	src/gui/widgets/itemcontainer.cpp
---
 src/gui/inventorywindow.cpp       | 6 ++++++
 src/gui/inventorywindow.h         | 5 +++++
 src/gui/widgets/itemcontainer.cpp | 5 +++++
 src/gui/widgets/itemcontainer.h   | 2 ++
 src/gui/widgets/window.h          | 2 +-
 5 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp
index 35165a16a..d6377e4dd 100644
--- a/src/gui/inventorywindow.cpp
+++ b/src/gui/inventorywindow.cpp
@@ -375,6 +375,12 @@ Item *InventoryWindow::getSelectedItem() const
     return mItems->getSelectedItem();
 }
 
+void InventoryWindow::widgetHidden(const gcn::Event &event)
+{
+    Window::widgetHidden(event);
+    mItems->hidePopup();
+}
+
 void InventoryWindow::mouseClicked(gcn::MouseEvent &event)
 {
     Window::mouseClicked(event);
diff --git a/src/gui/inventorywindow.h b/src/gui/inventorywindow.h
index 5592b9449..959f65d7c 100644
--- a/src/gui/inventorywindow.h
+++ b/src/gui/inventorywindow.h
@@ -84,6 +84,11 @@ class InventoryWindow : public Window,
          */
         Item* getSelectedItem() const;
 
+        /**
+         * Handles closing of the window
+         */
+        virtual void widgetHidden(const gcn::Event &event);
+
         /**
          * Handles the mouse clicks.
          */
diff --git a/src/gui/widgets/itemcontainer.cpp b/src/gui/widgets/itemcontainer.cpp
index 2cc80ee8b..de8b3c277 100644
--- a/src/gui/widgets/itemcontainer.cpp
+++ b/src/gui/widgets/itemcontainer.cpp
@@ -327,6 +327,11 @@ void ItemContainer::distributeValueChangedEvent()
     }
 }
 
+void ItemContainer::hidePopup()
+{
+    mItemPopup->setVisible(false);
+}
+
 void ItemContainer::keyPressed(gcn::KeyEvent &event A_UNUSED)
 {
     /*switch (event.getKey().getValue())
diff --git a/src/gui/widgets/itemcontainer.h b/src/gui/widgets/itemcontainer.h
index 845bfb3a9..e4188f54b 100644
--- a/src/gui/widgets/itemcontainer.h
+++ b/src/gui/widgets/itemcontainer.h
@@ -73,6 +73,8 @@ class ItemContainer : public gcn::Widget,
          */
         virtual ~ItemContainer();
 
+        void hidePopup();
+
         /**
          * Necessary for checking how full the inventory is.
          */
diff --git a/src/gui/widgets/window.h b/src/gui/widgets/window.h
index cc7c6e6a1..ffc27ab10 100644
--- a/src/gui/widgets/window.h
+++ b/src/gui/widgets/window.h
@@ -120,7 +120,7 @@ class Window : public gcn::Window, gcn::WidgetListener
         /**
          * Called whenever the widget is hidden.
          */
-        virtual void widgetHidden(const gcn::Event& event);
+        virtual void widgetHidden(const gcn::Event &event);
 
         /**
          * Sets whether or not the window has a close button.
-- 
cgit v1.2.3-70-g09d2