diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-10-11 02:48:10 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-10-11 02:48:10 +0300 |
commit | 0b20f61d590d82468d14e564da14444a80ab2c76 (patch) | |
tree | e9f549a57ee2a83d5643388f24f5352208a1c2fd | |
parent | 62a7ad8a4f8cc297c8a0eb6468fb27086de368d0 (diff) | |
download | mv-0b20f61d590d82468d14e564da14444a80ab2c76.tar.gz mv-0b20f61d590d82468d14e564da14444a80ab2c76.tar.bz2 mv-0b20f61d590d82468d14e564da14444a80ab2c76.tar.xz mv-0b20f61d590d82468d14e564da14444a80ab2c76.zip |
Add support for double click in buy and sell dialog.
-rw-r--r-- | src/gui/buydialog.cpp | 27 | ||||
-rw-r--r-- | src/gui/selldialog.cpp | 22 | ||||
-rw-r--r-- | src/gui/widgets/listbox.cpp | 1 |
3 files changed, 28 insertions, 22 deletions
diff --git a/src/gui/buydialog.cpp b/src/gui/buydialog.cpp index 30eed9ae2..fd2e3a5f3 100644 --- a/src/gui/buydialog.cpp +++ b/src/gui/buydialog.cpp @@ -119,6 +119,10 @@ void BuyDialog::init() mSlider->setActionEventId("slider"); mSlider->addActionListener(this); + + mShopItemList->setDistributeMousePressed(false); + mShopItemList->setActionEventId("buy"); + mShopItemList->addActionListener(this); mShopItemList->addSelectionListener(this); ContainerPlacer placer; @@ -184,49 +188,47 @@ void BuyDialog::addItem(const int id, const unsigned char color, void BuyDialog::action(const gcn::ActionEvent &event) { - if (event.getId() == "quit") + const std::string &eventId = event.getId(); + + if (eventId == "quit") { close(); return; } - const int selectedItem = mShopItemList->getSelected(); // The following actions require a valid selection - if (selectedItem < 0 || - selectedItem >= mShopItems->getNumberOfElements()) - { + if (selectedItem < 0 || selectedItem >= mShopItems->getNumberOfElements()) return; - } - if (event.getId() == "slider") + if (eventId == "slider") { mAmountItems = static_cast<int>(mSlider->getValue()); mAmountField->setValue(mAmountItems); updateButtonsAndLabels(); } - else if (event.getId() == "inc" && mAmountItems < mMaxItems) + else if (eventId == "inc" && mAmountItems < mMaxItems) { mAmountItems++; mSlider->setValue(mAmountItems); mAmountField->setValue(mAmountItems); updateButtonsAndLabels(); } - else if (event.getId() == "dec" && mAmountItems > 1) + else if (eventId == "dec" && mAmountItems > 1) { mAmountItems--; mSlider->setValue(mAmountItems); mAmountField->setValue(mAmountItems); updateButtonsAndLabels(); } - else if (event.getId() == "max") + else if (eventId == "max") { mAmountItems = mMaxItems; mSlider->setValue(mAmountItems); mAmountField->setValue(mAmountItems); updateButtonsAndLabels(); } - else if (event.getId() == "amount") + else if (eventId == "amount") { mAmountItems = mAmountField->getValue(); mSlider->setValue(mAmountItems); @@ -235,8 +237,7 @@ void BuyDialog::action(const gcn::ActionEvent &event) // TODO: Actually we'd have a bug elsewhere if this check for the number // of items to be bought ever fails, Bertram removed the assertions, is // there a better way to ensure this fails in an _obvious_ way in C++? - else if (event.getId() == "buy" && mAmountItems > 0 && - mAmountItems <= mMaxItems) + else if (eventId == "buy" && mAmountItems > 0 && mAmountItems <= mMaxItems) { if (mNpcId != -1) { diff --git a/src/gui/selldialog.cpp b/src/gui/selldialog.cpp index 06b622930..e299362cc 100644 --- a/src/gui/selldialog.cpp +++ b/src/gui/selldialog.cpp @@ -105,8 +105,12 @@ void SellDialog::init() mSellButton->setEnabled(false); mSlider->setEnabled(false); + mShopItemList->setDistributeMousePressed(false); mShopItemList->setPriceCheck(false); mShopItemList->addSelectionListener(this); + mShopItemList->setActionEventId("sell"); + mShopItemList->addActionListener(this); + mSlider->setActionEventId("slider"); mSlider->addActionListener(this); @@ -174,7 +178,9 @@ void SellDialog::addItem(const int id, const unsigned char color, void SellDialog::action(const gcn::ActionEvent &event) { - if (event.getId() == "quit") + const std::string &eventId = event.getId(); + + if (eventId == "quit") { close(); return; @@ -183,36 +189,36 @@ void SellDialog::action(const gcn::ActionEvent &event) const int selectedItem = mShopItemList->getSelected(); // The following actions require a valid item selection - if (selectedItem == -1 || - selectedItem >= mShopItems->getNumberOfElements()) + if (selectedItem == -1 + || selectedItem >= mShopItems->getNumberOfElements()) { return; } - if (event.getId() == "slider") + if (eventId == "slider") { mAmountItems = static_cast<int>(mSlider->getValue()); updateButtonsAndLabels(); } - else if (event.getId() == "inc" && mAmountItems < mMaxItems) + else if (eventId == "inc" && mAmountItems < mMaxItems) { mAmountItems++; mSlider->setValue(mAmountItems); updateButtonsAndLabels(); } - else if (event.getId() == "dec" && mAmountItems > 1) + else if (eventId == "dec" && mAmountItems > 1) { mAmountItems--; mSlider->setValue(mAmountItems); updateButtonsAndLabels(); } - else if (event.getId() == "max") + else if (eventId == "max") { mAmountItems = mMaxItems; mSlider->setValue(mAmountItems); updateButtonsAndLabels(); } - else if (event.getId() == "sell" && mAmountItems > 0 + else if (eventId == "sell" && mAmountItems > 0 && mAmountItems <= mMaxItems) { if (mNpcId != -1) diff --git a/src/gui/widgets/listbox.cpp b/src/gui/widgets/listbox.cpp index 978907f78..499d7b07c 100644 --- a/src/gui/widgets/listbox.cpp +++ b/src/gui/widgets/listbox.cpp @@ -145,7 +145,6 @@ void ListBox::mouseWheelMovedDown(gcn::MouseEvent &mouseEvent A_UNUSED) void ListBox::mousePressed(gcn::MouseEvent &event) { - if (mDistributeMousePressed) { gcn::ListBox::mousePressed(event); |