diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-06-17 23:07:29 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-06-17 23:07:29 +0300 |
commit | 1ec82e44a0ec44a3d342a68b42b318e4413410dc (patch) | |
tree | f3010c20fd90440c81921c612267d8a58e4f1ee3 /src/gui/widgets | |
parent | 1f66ae673801e76f3574944628a7980b9bfbabda (diff) | |
download | manaverse-1ec82e44a0ec44a3d342a68b42b318e4413410dc.tar.gz manaverse-1ec82e44a0ec44a3d342a68b42b318e4413410dc.tar.bz2 manaverse-1ec82e44a0ec44a3d342a68b42b318e4413410dc.tar.xz manaverse-1ec82e44a0ec44a3d342a68b42b318e4413410dc.zip |
Fix double click support in gui class.
Add double click support to inventory and storage windows.
Diffstat (limited to 'src/gui/widgets')
-rw-r--r-- | src/gui/widgets/itemcontainer.cpp | 9 | ||||
-rw-r--r-- | src/gui/widgets/itemcontainer.h | 4 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/gui/widgets/itemcontainer.cpp b/src/gui/widgets/itemcontainer.cpp index 5994b1e1a..3f3bbe937 100644 --- a/src/gui/widgets/itemcontainer.cpp +++ b/src/gui/widgets/itemcontainer.cpp @@ -30,6 +30,7 @@ #include "logger.h" #include "gui/chatwindow.h" +#include "gui/gui.h" #include "gui/itempopup.h" #include "gui/outfitwindow.h" #include "gui/palette.h" @@ -167,6 +168,7 @@ ItemContainer::ItemContainer(Inventory *inventory, bool forceQuantity): mSortType(0), mItemPopup(new ItemPopup), mShowMatrix(nullptr), + mClicks(1), mEquipedColor(Theme::getThemeColor(Theme::ITEM_EQUIPPED)), mUnEquipedColor(Theme::getThemeColor(Theme::ITEM_NOT_EQUIPPED)) { @@ -347,6 +349,8 @@ void ItemContainer::mousePressed(gcn::MouseEvent &event) return; const int button = event.getButton(); + mClicks = event.getClickCount(); + if (button == gcn::MouseEvent::LEFT || button == gcn::MouseEvent::RIGHT) { const int index = getSlotIndex(event.getX(), event.getY()); @@ -359,7 +363,7 @@ void ItemContainer::mousePressed(gcn::MouseEvent &event) if (item && mDescItems && chatWindow) chatWindow->addItemText(item->getInfo().getName()); - if (mSelectedIndex == index) + if (mSelectedIndex == index && mClicks != 2) { mSelectionStatus = SEL_DESELECTING; } @@ -400,6 +404,9 @@ void ItemContainer::mouseDragged(gcn::MouseEvent &event) void ItemContainer::mouseReleased(gcn::MouseEvent &event) { + if (mClicks == 2) + return; + switch (mSelectionStatus) { case SEL_SELECTING: diff --git a/src/gui/widgets/itemcontainer.h b/src/gui/widgets/itemcontainer.h index ae6e4a35d..0ad95fd1b 100644 --- a/src/gui/widgets/itemcontainer.h +++ b/src/gui/widgets/itemcontainer.h @@ -126,6 +126,9 @@ class ItemContainer : public gcn::Widget, void updateMatrix(); + bool getClickCount() + { return mClicks; } + private: enum Direction { @@ -197,6 +200,7 @@ class ItemContainer : public gcn::Widget, ItemPopup *mItemPopup; int *mShowMatrix; + int mClicks; typedef std::list<gcn::SelectionListener*> SelectionListenerList; typedef SelectionListenerList::iterator SelectionListenerIterator; |