From bb39e3fa3cc2cd9617d63b93bcf1d6da364cd917 Mon Sep 17 00:00:00 2001 From: Leslie Linden Date: Tue, 13 Dec 2011 16:42:14 -0800 Subject: [PATCH] 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 --- indra/newview/llfloateroutbox.cpp | 38 ++++++++++++------ indra/newview/llfolderview.cpp | 6 +-- .../default/textures/toolbar_icons/outbox.png | Bin 2987 -> 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 @@ -158,14 +158,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; - handled = mOutboxInventoryPanel->handleDragAndDrop(local_x, local_y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); + LLFolderView * outbox_root_folder = mOutboxInventoryPanel->getRootFolder(); + localPointToOtherView(x, y, &local_x, &local_y, outbox_root_folder); + + 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 9fcf46794d1374c08e3b0407515867289a6c3f90..0f3db1c47c7861a8eb6e4337fde23357b17be16d 100644 GIT binary patch delta 1518 zcmV!iBL{Q4GJ0x0000DNk~Le0000I0000I2nGNE09MY9R{#J4?rB3q zP)S2WAW(8|W@&6?004Lag;dXL6G0UIHg2iVA_!V*4zhTVB1u`RXhqaE{Sjho4BH>J zMUZ4ON!D&Q>+UACrHJI>(JJ0W?V$(%fF64AWG_mET16;--m55Lp%*Rj&2CJ#rRu=W ze)HZp?|pA}-vAAA(lqse1mq3JQlb%QYF?d;52?cdeSzwweco{XpPHn%OF_?-y|jSrP(>Jl~-y$8-qaN`i2ZILc&UfOA?%PuEOt__~LG1$`#h6R+ZTR#D-3j}vF!)ZOnz z+5)dI4jl{{44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8 zlUGN7maKVtyqfG9KkQeRG3J6bkHmAZ`|&MbmCTnZj1*+m zF3&Et)^n|ii#JxAmuLNINc--pyp!ft`A=T;@%(4a#AD(qF(!73=OKxg#V+xZ*h{Mm z;$UsZ2%VLNDbj6``Xtq0V4A%3FI_)dc)dn{e+>0elo`y@REhV0!YX7mow*Kg`j6Yk z{1@c+iszpw0xxXf$eFrrQ*rMQp=G6RbFKmxztMg0wr*>qemMLDSUjs1tx`3gAiMz_ zc87W%=qZ@fmX^&qQim*`le+23Vp7ad+e1=P*Cp3wOBS=4RbuIO*qPHEZXBUGLifZW zr%Gj$`mga3u>G)7`T49;*?vwM)`6G$Z@|3$MZkEAiIE`}e*&pVL_t(I5tUR+t5Q)E zKIiyIvCu0bf(DM{3L>|_21(#Rn)DYg&YL$6l5iG54I)Sp<01&rL}w;y*2FjBQCFL+Qi6zXe{m44&94f8nRYgxxq1ZTEs8TrQW(%lUjh;9x{AiISjDD9*H6?RU&U;CBf&Su(_a zfuUQiR*#fQWvJ8XREou7UZ>ODrW2;q>CA4o>s&6^^M1d7cQ%`S)Mzv#gm?_9;+hOu zbaBeouoq|}ilRK$YuUF2VZrnK6HKHbM>7XT69$vdf9IpQTIqULx}$;p_GK<8rzD080^rB{o?k5b*$o2?UdU>yW%|wOY+UAn+FD-ys0X)0#}C z_sL}PA>q08Ei)F2MeB4r=?0G)#3s!k+4Na9oBfnZrGD!5dY8xJdE<7w&q!?9kc~JR zjYznoe}+;?*jvcNhXY-~VDO$wrIO5M^Zj@{{*E--8q)s%7Pj8K1;rPrLc}xCfLyMi z-EN!ri1t1?*pT2vg6sbZ;rU1;@|06>e`~c`)$jL5x237oY7VKM)CeRiXkmm_ue@F_ zV=x%X?N*K1`>d@hE^ldiVf2P0S#&xW(Zaf}OOQli^t|o>RcpZE% z!r^cekUuhzz>P*Dvsf&mv_59NUhmgnFnEpFgyM-rg4%`2WHK6>mAI`R5bnZiwfb-p zGnq^_&z`mn{R4oLj7H-*-s(9tl5o3o=p^@?&*z&#KbF0^x-u0C1uyzYjiwaPV@i72 zM7st*9U!8aMGz{w-7cF>r`yBf@Efv`!F%1m`|(ZJBsM+5lMnF}A&NmV*X>1^f3lCY UJV$j)g#Z8m07*qoM6N<$f_a1I?*IS* literal 2987 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