summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorLeslie Linden <leslie@lindenlab.com>2011-12-13 16:42:14 -0800
committerLeslie Linden <leslie@lindenlab.com>2011-12-13 16:42:14 -0800
commitbb39e3fa3cc2cd9617d63b93bcf1d6da364cd917 (patch)
treef41b7691135d41d848e880fe6c5aa68060a30e7a /indra
parentd7fabfee19e536dd8df356fd4531437ccb3630d5 (diff)
EXP-1718 FIX -- Drag and drop within the outbox can result in folders being out of order
* Outbox updates now result in a resort to keep drag and drop items and folders properly sorted * New icon for merchant outbox * New behavior to accept drag and drop files over the entire merchant outbox floater
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llfloateroutbox.cpp38
-rw-r--r--indra/newview/llfolderview.cpp6
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/outbox.pngbin2987 -> 1521 bytes
3 files changed, 29 insertions, 15 deletions
diff --git a/indra/newview/llfloateroutbox.cpp b/indra/newview/llfloateroutbox.cpp
index eb11933368..984f47abb0 100644
--- a/indra/newview/llfloateroutbox.cpp
+++ b/indra/newview/llfloateroutbox.cpp
@@ -159,14 +159,6 @@ void LLFloaterOutbox::onClose(bool app_quitting)
void LLFloaterOutbox::onOpen(const LLSD& key)
{
//
- // Initialize the marketplace import API
- //
-
- LLMarketplaceInventoryImporter::getInstance()->initialize();
- LLMarketplaceInventoryImporter::getInstance()->setStatusChangedCallback(boost::bind(&LLFloaterOutbox::importStatusChanged, this, _1));
- LLMarketplaceInventoryImporter::getInstance()->setStatusReportCallback(boost::bind(&LLFloaterOutbox::importReportResults, this, _1, _2));
-
- //
// Look for an outbox and set up the inventory API
//
@@ -224,6 +216,7 @@ void LLFloaterOutbox::setupOutbox(const LLUUID& outboxId)
{
gInventory.removeObserver(mCategoryAddedObserver);
delete mCategoryAddedObserver;
+ mCategoryAddedObserver = NULL;
}
// Create observer for outbox modifications
@@ -252,6 +245,14 @@ void LLFloaterOutbox::setupOutbox(const LLUUID& outboxId)
mOutboxInventoryPanel->getFilter()->markDefault();
fetchOutboxContents();
+
+ //
+ // Initialize the marketplace import API
+ //
+
+ LLMarketplaceInventoryImporter::getInstance()->initialize();
+ LLMarketplaceInventoryImporter::getInstance()->setStatusChangedCallback(boost::bind(&LLFloaterOutbox::importStatusChanged, this, _1));
+ LLMarketplaceInventoryImporter::getInstance()->setStatusReportCallback(boost::bind(&LLFloaterOutbox::importReportResults, this, _1, _2));
}
void LLFloaterOutbox::updateItemCount()
@@ -350,12 +351,20 @@ BOOL LLFloaterOutbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
BOOL handled = (childrenHandleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg) != NULL);
// Pass drag and drop to this floater to the outbox inventory control if no other children handle it
- if (!handled)
+ if (!handled || (*accept == ACCEPT_NO))
{
- S32 local_x = x - mOutboxInventoryPanel->getRect().mLeft;
- S32 local_y = y - mOutboxInventoryPanel->getRect().mBottom;
+ S32 local_x;
+ S32 local_y;
+
+ LLFolderView * outbox_root_folder = mOutboxInventoryPanel->getRootFolder();
+ localPointToOtherView(x, y, &local_x, &local_y, outbox_root_folder);
- handled = mOutboxInventoryPanel->handleDragAndDrop(local_x, local_y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+ const LLRect& outbox_rect = outbox_root_folder->getRect();
+
+ local_x = llclamp(local_x, outbox_rect.mLeft + 1, outbox_rect.mRight - 1);
+ local_y = llclamp(local_y, outbox_rect.mBottom + 1, outbox_rect.mTop - 1);
+
+ handled = outbox_root_folder->LLFolderViewFolder::handleDragAndDrop(local_x, local_y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
}
return handled;
@@ -371,6 +380,11 @@ void LLFloaterOutbox::onImportButtonClicked()
void LLFloaterOutbox::onOutboxChanged()
{
llassert(!mOutboxId.isNull());
+
+ if (mOutboxInventoryPanel)
+ {
+ mOutboxInventoryPanel->requestSort();
+ }
fetchOutboxContents();
updateView();
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 6ec2598e44..b8515c2953 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -1945,9 +1945,9 @@ BOOL LLFolderView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
if (!handled)
{
if (getListener()->getUUID().notNull())
- {
- handled = LLFolderViewFolder::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
- }
+ {
+ handled = LLFolderViewFolder::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+ }
else
{
if (!mFolders.empty())
diff --git a/indra/newview/skins/default/textures/toolbar_icons/outbox.png b/indra/newview/skins/default/textures/toolbar_icons/outbox.png
index 9fcf46794d..0f3db1c47c 100644
--- a/indra/newview/skins/default/textures/toolbar_icons/outbox.png
+++ b/indra/newview/skins/default/textures/toolbar_icons/outbox.png
Binary files differ