summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorandreykproductengine <andreykproductengine@lindenlab.com>2018-10-12 18:12:51 +0300
committerandreykproductengine <andreykproductengine@lindenlab.com>2018-10-12 18:12:51 +0300
commit4d94cbd392886ee68a6a181d1fe321483db5ce37 (patch)
tree5af1ab3e95cd9455ec180dfb882b184abee03e9e /indra
parenta209d207d3f716329af06eaddb16e9fa72467ecd (diff)
SL-9733 Implemented drag and drop support for presorted panel
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llinventorypanel.cpp31
-rw-r--r--indra/newview/llinventorypanel.h2
2 files changed, 31 insertions, 2 deletions
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 43904675d4..0dd37b6161 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -48,6 +48,7 @@
#include "llsidepanelinventory.h"
#include "llstartup.h"
#include "lltrans.h"
+#include "llviewerassettype.h"
#include "llviewerattachmenu.h"
#include "llviewerfoldertype.h"
#include "llvoavatarself.h"
@@ -1762,11 +1763,17 @@ public:
void initFromParams(const Params& p);
protected:
- LLAssetFilteredInventoryPanel(const Params& p) : LLInventoryPanel(p) { mAcceptsDragAndDrop = false; }
+ LLAssetFilteredInventoryPanel(const Params& p) : LLInventoryPanel(p) {}
friend class LLUICtrlFactory;
public:
~LLAssetFilteredInventoryPanel() {}
+ /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg) override;
+
protected:
/*virtual*/ LLFolderViewItem* buildNewViews(const LLUUID& id) override;
/*virtual*/ void itemChanged(const LLUUID& item_id, U32 mask, const LLInventoryObject* model_item) override;
@@ -1786,6 +1793,28 @@ void LLAssetFilteredInventoryPanel::initFromParams(const Params& p)
getFilter().setFilterNoMarketplaceFolder();
}
+BOOL LLAssetFilteredInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ EDragAndDropType cargo_type,
+ void* cargo_data,
+ EAcceptance* accept,
+ std::string& tooltip_msg)
+{
+ BOOL result = FALSE;
+
+ if (mAcceptsDragAndDrop)
+ {
+ EDragAndDropType allow_type = LLViewerAssetType::lookupDragAndDropType(mAssetType);
+ // Don't allow DAD_CATEGORY here since it can contain other items besides required assets
+ // We should see everything we drop!
+ if (allow_type == cargo_type)
+ {
+ result = LLInventoryPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+ }
+ }
+
+ return result;
+}
+
LLFolderViewItem* LLAssetFilteredInventoryPanel::buildNewViews(const LLUUID& id)
{
LLInventoryObject const* objectp = gInventory.getObject(id);
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index b968b19d9a..97e1c37a31 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -155,7 +155,7 @@ public:
void draw();
/*virtual*/ BOOL handleKeyHere( KEY key, MASK mask );
BOOL handleHover(S32 x, S32 y, MASK mask);
- BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+ /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
EDragAndDropType cargo_type,
void* cargo_data,
EAcceptance* accept,