1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-05 06:40:09 +00:00

refactor, use dragItem method

This commit is contained in:
lukago 2017-10-19 17:17:14 +02:00
parent 43f94a8890
commit a3225364ff
2 changed files with 11 additions and 14 deletions

View File

@ -1,7 +1,5 @@
#include "inventorywindow.hpp" #include "inventorywindow.hpp"
#include <stdexcept>
#include <MyGUI_Window.h> #include <MyGUI_Window.h>
#include <MyGUI_ImageBox.h> #include <MyGUI_ImageBox.h>
#include <MyGUI_RenderManager.h> #include <MyGUI_RenderManager.h>
@ -26,7 +24,6 @@
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/action.hpp" #include "../mwworld/action.hpp"
#include "../mwscript/interpretercontext.hpp" #include "../mwscript/interpretercontext.hpp"
#include "../mwrender/characterpreview.hpp"
#include "../mwmechanics/actorutil.hpp" #include "../mwmechanics/actorutil.hpp"
#include "../mwmechanics/creaturestats.hpp" #include "../mwmechanics/creaturestats.hpp"
@ -213,13 +210,11 @@ namespace MWGui
void InventoryWindow::onItemSelected (int index) void InventoryWindow::onItemSelected (int index)
{ {
onItemSelectedFromSourceModel (mSortModel->mapToSource(index), false); onItemSelectedFromSourceModel (mSortModel->mapToSource(index));
} }
void InventoryWindow::onItemSelectedFromSourceModel (int index, bool takeMaxItemCount) void InventoryWindow::onItemSelectedFromSourceModel (int index)
{ {
mLastItemIndex = index;
if (mDragAndDrop->mIsOnDragAndDrop) if (mDragAndDrop->mIsOnDragAndDrop)
{ {
mDragAndDrop->drop(mTradeModel, mItemView); mDragAndDrop->drop(mTradeModel, mItemView);
@ -230,10 +225,9 @@ namespace MWGui
std::string sound = item.mBase.getClass().getDownSoundId(item.mBase); std::string sound = item.mBase.getClass().getDownSoundId(item.mBase);
MWWorld::Ptr object = item.mBase; MWWorld::Ptr object = item.mBase;
bool shift = MyGUI::InputManager::getInstance().isShiftPressed();
int count = item.mCount; int count = item.mCount;
bool shift = takeMaxItemCount ? true : MyGUI::InputManager::getInstance().isShiftPressed();
if (MyGUI::InputManager::getInstance().isControlPressed()) if (MyGUI::InputManager::getInstance().isControlPressed())
count = 1; count = 1;
@ -540,11 +534,15 @@ namespace MWGui
// Move item to the player's inventory // Move item to the player's inventory
ptr = mDragAndDrop->mSourceModel->moveItem(mDragAndDrop->mItem, mDragAndDrop->mDraggedCount, mTradeModel); ptr = mDragAndDrop->mSourceModel->moveItem(mDragAndDrop->mItem, mDragAndDrop->mDraggedCount, mTradeModel);
} }
useItem(ptr); useItem(ptr);
if ((itemType == MWWorld::ContainerStore::Type_Ingredient || itemType == MWWorld::ContainerStore::Type_Potion) && mDragAndDrop->mDraggedCount > 1) // If item is ingredient or potion don't stop drag and drop to simplify action of taking more than one 1 item
if ((itemType == MWWorld::ContainerStore::Type_Ingredient
|| itemType == MWWorld::ContainerStore::Type_Potion)
&& mDragAndDrop->mDraggedCount > 1)
{ {
onItemSelectedFromSourceModel(mLastItemIndex, true); dragItem (nullptr, mDragAndDrop->mDraggedCount - 1);
} }
} }
@ -561,7 +559,7 @@ namespace MWGui
{ {
if (mTradeModel->getItem(i).mBase == itemSelected) if (mTradeModel->getItem(i).mBase == itemSelected)
{ {
onItemSelectedFromSourceModel(i, false); onItemSelectedFromSourceModel(i);
return; return;
} }
} }

View File

@ -69,7 +69,6 @@ namespace MWGui
DragAndDrop* mDragAndDrop; DragAndDrop* mDragAndDrop;
int mSelectedItem; int mSelectedItem;
int mLastItemIndex;
MWWorld::Ptr mPtr; MWWorld::Ptr mPtr;
@ -104,7 +103,7 @@ namespace MWGui
bool mTrading; bool mTrading;
void onItemSelected(int index); void onItemSelected(int index);
void onItemSelectedFromSourceModel(int index, bool takeMaxCount); void onItemSelectedFromSourceModel(int index);
void onBackgroundSelected(); void onBackgroundSelected();