diff options
-rw-r--r-- | src/gui/inventorywindow.cpp | 1 | ||||
-rw-r--r-- | src/gui/inventorywindow.h | 4 | ||||
-rw-r--r-- | src/gui/itemshortcutcontainer.cpp | 33 |
3 files changed, 30 insertions, 8 deletions
diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp index fe3300dc..e0e496f7 100644 --- a/src/gui/inventorywindow.cpp +++ b/src/gui/inventorywindow.cpp @@ -33,6 +33,7 @@ #include "itemcontainer.h" #include "progressbar.h" #include "scrollarea.h" +#include "textbox.h" #include "viewport.h" #include "widgets/layout.h" diff --git a/src/gui/inventorywindow.h b/src/gui/inventorywindow.h index 93b9c572..2c19ce26 100644 --- a/src/gui/inventorywindow.h +++ b/src/gui/inventorywindow.h @@ -25,7 +25,6 @@ #include <guichan/actionlistener.hpp> #include <guichan/selectionlistener.hpp> -#include "textbox.h" #include "window.h" #include "../guichanfwd.h" @@ -34,6 +33,7 @@ class Item; class ItemContainer; class ProgressBar; +class TextBox; /** * Inventory dialog. @@ -41,7 +41,7 @@ class ProgressBar; * \ingroup Interface */ class InventoryWindow : public Window, gcn::ActionListener, - gcn::SelectionListener + gcn::SelectionListener { public: /** diff --git a/src/gui/itemshortcutcontainer.cpp b/src/gui/itemshortcutcontainer.cpp index 8803ab15..83d8c9fb 100644 --- a/src/gui/itemshortcutcontainer.cpp +++ b/src/gui/itemshortcutcontainer.cpp @@ -20,8 +20,10 @@ */ #include <SDL_mouse.h> +#include "gui.h" #include "itemshortcutcontainer.h" #include "itempopup.h" +#include "viewport.h" #include "../configuration.h" #include "../graphics.h" @@ -172,14 +174,33 @@ void ItemShortcutContainer::mousePressed(gcn::MouseEvent &event) if (index == -1) return; - // Stores the selected item if theirs one. - if (itemShortcut->isItemSelected()) + if (event.getButton() == gcn::MouseEvent::LEFT) { - itemShortcut->setItem(index); - itemShortcut->setItemSelected(-1); + + // Stores the selected item if theirs one. + if (itemShortcut->isItemSelected()) + { + itemShortcut->setItem(index); + itemShortcut->setItemSelected(-1); + } + else if (itemShortcut->getItem(index)) + mItemClicked = true; + } + else if (event.getButton() == gcn::MouseEvent::RIGHT) + { + Item *item = player_node->getInventory()-> + findItem(itemShortcut->getItem(index)); + + if (!item) + return; + + /* Convert relative to the window coordinates to absolute screen + * coordinates. + */ + int mx, my; + SDL_GetMouseState(&mx, &my); + viewport->showPopup(mx, my, item); } - else if (itemShortcut->getItem(index)) - mItemClicked = true; } void ItemShortcutContainer::mouseReleased(gcn::MouseEvent &event) |