summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-08-14 20:50:08 +0300
committerAndrei Karas <akaras@inbox.ru>2016-08-14 22:54:59 +0300
commit0204a75a049d6819719cf41ac92116012ed50d86 (patch)
treed2723719f22628a612c17b0f977054610c5720fd
parent3fc421539bc81f27262b91554694509f3e47f865 (diff)
downloadmanaplus-0204a75a049d6819719cf41ac92116012ed50d86.tar.gz
manaplus-0204a75a049d6819719cf41ac92116012ed50d86.tar.bz2
manaplus-0204a75a049d6819719cf41ac92116012ed50d86.tar.xz
manaplus-0204a75a049d6819719cf41ac92116012ed50d86.zip
Allow drag cast type from skills window into shortcuts.
-rw-r--r--src/dragdrop.h12
-rw-r--r--src/gui/shortcut/itemshortcut.h4
-rw-r--r--src/gui/widgets/itemshortcutcontainer.cpp5
-rw-r--r--src/gui/widgets/skilllistbox.h3
4 files changed, 24 insertions, 0 deletions
diff --git a/src/dragdrop.h b/src/dragdrop.h
index d684110ee..729a96bc4 100644
--- a/src/dragdrop.h
+++ b/src/dragdrop.h
@@ -42,6 +42,7 @@ class DragDrop final
const DragDropSourceT source) :
mItemImage(item ? item->getImage() : nullptr),
mText(),
+ mItemData(),
mSource(source),
mItem(item ? item->getId() : 0),
mSelItem(0),
@@ -73,6 +74,12 @@ class DragDrop final
Image *getItemImage()
{ return mItemImage; }
+ void setItemData(const std::string &data)
+ { mItemData = data; }
+
+ std::string getItemData()
+ { return mItemData; }
+
DragDropSourceT getSource() const
{ return mSource; }
@@ -83,6 +90,7 @@ class DragDrop final
if (mItemImage)
mItemImage->decRef();
+ mItemData.clear();
mText.clear();
if (item)
{
@@ -113,6 +121,7 @@ class DragDrop final
mItemImage->decRef();
mItem = 0;
mItemColor = ItemColor_one;
+ mItemData.clear();
if (command)
{
@@ -151,6 +160,7 @@ class DragDrop final
mItemImage = nullptr;
mSource = DragDropSource::Empty;
mTag = -1;
+ mItemData.clear();
if (info)
{
const SkillData *const data = info->data;
@@ -178,6 +188,7 @@ class DragDrop final
mItemImage = nullptr;
mSource = DragDropSource::Empty;
mText.clear();
+ mItemData.clear();
mTag = -1;
}
@@ -241,6 +252,7 @@ class DragDrop final
private:
Image *mItemImage;
std::string mText;
+ std::string mItemData;
DragDropSourceT mSource;
int mItem;
int mSelItem;
diff --git a/src/gui/shortcut/itemshortcut.h b/src/gui/shortcut/itemshortcut.h
index 4f223478f..2f1b10569 100644
--- a/src/gui/shortcut/itemshortcut.h
+++ b/src/gui/shortcut/itemshortcut.h
@@ -73,6 +73,10 @@ class ItemShortcut final
ItemColor getItemColor(const int index) const A_WARN_UNUSED
{ return mItemColors[index]; }
+ void setItemData(const int index,
+ const std::string &data)
+ { mItemData[index] = data; }
+
std::string getItemData(const int index) const A_WARN_UNUSED
{ return mItemData[index]; }
diff --git a/src/gui/widgets/itemshortcutcontainer.cpp b/src/gui/widgets/itemshortcutcontainer.cpp
index 7b6df7644..60519699e 100644
--- a/src/gui/widgets/itemshortcutcontainer.cpp
+++ b/src/gui/widgets/itemshortcutcontainer.cpp
@@ -432,12 +432,15 @@ void ItemShortcutContainer::mouseDragged(MouseEvent &event)
= skillDialog->getSkillByItem(itemId);
if (skill)
{
+ const std::string itemData = selShortcut->getItemData(
+ index);
selShortcut->removeItem(index);
dragDrop.dragSkill(skill,
DragDropSource::Shortcuts,
index);
dragDrop.setItem(itemId);
dragDrop.setItemColor(itemColor);
+ dragDrop.setItemData(itemData);
}
else
{
@@ -522,6 +525,8 @@ void ItemShortcutContainer::mouseReleased(MouseEvent &event)
}
else
{
+ selShortcut->setItemData(index,
+ dragDrop.getItemData());
selShortcut->setItem(index, dragDrop.getItem(),
dragDrop.getItemColor());
}
diff --git a/src/gui/widgets/skilllistbox.h b/src/gui/widgets/skilllistbox.h
index 533d12b5e..ab45c5122 100644
--- a/src/gui/widgets/skilllistbox.h
+++ b/src/gui/widgets/skilllistbox.h
@@ -220,6 +220,9 @@ class SkillListBox final : public ListBox
return;
dragDrop.dragSkill(skill, DragDropSource::Skills);
dragDrop.setItem(skill->id + SKILL_MIN_ID);
+ // +++ using only cast type in data
+ dragDrop.setItemData(toString(CAST_S32(
+ skill->customCastType)));
}
ListBox::mouseDragged(event);
}