From 3c4661726f9321e91037291fcf628a54b993c4ec Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Tue, 5 May 2009 23:48:45 +0200 Subject: 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. --- src/gui/itempopup.cpp | 8 ++++++++ src/gui/itempopup.h | 7 ++++++- src/gui/widgets/popup.h | 14 ++++++++------ 3 files changed, 22 insertions(+), 7 deletions(-) (limited to 'src') 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 + 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 */ -- cgit v1.2.3-70-g09d2 From 45296672d98ca04cd2e659d5a733bff906342d80 Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Tue, 5 May 2009 15:51:17 -0600 Subject: Fix selling stacked items --- src/gui/sell.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/sell.cpp b/src/gui/sell.cpp index c9b9d649..28288ef4 100644 --- a/src/gui/sell.cpp +++ b/src/gui/sell.cpp @@ -182,16 +182,17 @@ void SellDialog::action(const gcn::ActionEvent &event) { // Attempt sell ShopItem *item = mShopItems->at(selectedItem); - int sellCount; + int sellCount, itemIndex; mPlayerMoney += mAmountItems * mShopItems->at(selectedItem)->getPrice(); mMaxItems -= mAmountItems; while (mAmountItems > 0) { // This order is important, item->getCurrentInvIndex() would return // the inventory index of the next Duplicate otherwise. + itemIndex = item->getCurrentInvIndex(); sellCount = item->sellCurrentDuplicate(mAmountItems); + Net::getNpcHandler()->sellItem(current_npc, itemIndex, sellCount); mAmountItems -= sellCount; - Net::getNpcHandler()->sellItem(current_npc, item->getCurrentInvIndex(), sellCount); } mPlayerMoney += -- cgit v1.2.3-70-g09d2