diff options
author | Leslie Linden <leslie@lindenlab.com> | 2012-01-13 16:06:58 -0800 |
---|---|---|
committer | Leslie Linden <leslie@lindenlab.com> | 2012-01-13 16:06:58 -0800 |
commit | d6add298d7c793eda1fee2c03b2ccf91df7f6102 (patch) | |
tree | 9b79c2b76690684a3a9f3a485ddfde5829210694 | |
parent | ba41aea4b2813ac96cad2bae7c82da6e5eefd63a (diff) |
EXP-1802 FIX -- Create labeled drop target region at bottom of merchant outbox floater for easy top level drop access
* Added generic drop zone that highlights green when its functionality will be used.
-rw-r--r-- | indra/newview/llfloateroutbox.cpp | 34 | ||||
-rw-r--r-- | indra/newview/llfloateroutbox.h | 3 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_merchant_outbox.xml | 241 |
3 files changed, 167 insertions, 111 deletions
diff --git a/indra/newview/llfloateroutbox.cpp b/indra/newview/llfloateroutbox.cpp index 597602d5ab..297736f3bd 100644 --- a/indra/newview/llfloateroutbox.cpp +++ b/indra/newview/llfloateroutbox.cpp @@ -111,6 +111,7 @@ LLFloaterOutbox::LLFloaterOutbox(const LLSD& key) , mOutboxId(LLUUID::null) , mOutboxInventoryPanel(NULL) , mOutboxItemCount(0) + , mOutboxTopLevelDropZone(NULL) , mWindowShade(NULL) { } @@ -140,7 +141,9 @@ BOOL LLFloaterOutbox::postBuild() mImportButton = getChild<LLButton>("outbox_import_btn"); mImportButton->setCommitCallback(boost::bind(&LLFloaterOutbox::onImportButtonClicked, this)); - + + mOutboxTopLevelDropZone = getChild<LLPanel>("outbox_generic_drag_target"); + LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLFloaterOutbox::onFocusReceived, this)); return TRUE; @@ -353,6 +356,11 @@ void LLFloaterOutbox::updateView() } } +bool isAccepted(EAcceptance accept) +{ + return (accept >= ACCEPT_YES_COPY_SINGLE); +} + BOOL LLFloaterOutbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void* cargo_data, @@ -370,7 +378,7 @@ BOOL LLFloaterOutbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, BOOL handled = (handled_view != NULL); // Pass all drag and drop for this floater to the outbox inventory control - if (!handled || (*accept == ACCEPT_NO)) + if (!handled || !isAccepted(*accept)) { // Always assume we are going to move the drag and drop operation to the outbox root folder bool move_to_root = true; @@ -394,11 +402,33 @@ BOOL LLFloaterOutbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, handled = root_folder->handleDragAndDropToThisFolder(mask, drop, cargo_type, cargo_data, accept, tooltip_msg); } + + if (mOutboxTopLevelDropZone) + { + mOutboxTopLevelDropZone->setBackgroundVisible(handled && !drop && isAccepted(*accept)); + } + } + else + { + if (mOutboxTopLevelDropZone) + { + mOutboxTopLevelDropZone->setBackgroundVisible(FALSE); + } } return handled; } +void LLFloaterOutbox::onMouseLeave(S32 x, S32 y, MASK mask) +{ + if (mOutboxTopLevelDropZone) + { + mOutboxTopLevelDropZone->setBackgroundVisible(FALSE); + } + + LLFloater::onMouseLeave(x, y, mask); +} + void LLFloaterOutbox::onImportButtonClicked() { mOutboxInventoryPanel->clearSelection(); diff --git a/indra/newview/llfloateroutbox.h b/indra/newview/llfloateroutbox.h index 58b7d6ec98..796c533059 100644 --- a/indra/newview/llfloateroutbox.h +++ b/indra/newview/llfloateroutbox.h @@ -66,6 +66,8 @@ public: void showNotification(const LLSD& notify); + void onMouseLeave(S32 x, S32 y, MASK mask); + protected: void fetchOutboxContents(); @@ -103,6 +105,7 @@ private: LLUUID mOutboxId; LLInventoryPanel * mOutboxInventoryPanel; U32 mOutboxItemCount; + LLPanel * mOutboxTopLevelDropZone; LLWindowShade * mWindowShade; }; diff --git a/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml index c0f26413cb..498a9b6ce0 100644 --- a/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml +++ b/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml @@ -1,24 +1,24 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <floater - open_positioning="cascading" - can_close="true" - can_resize="true" - height="440" - help_topic="floater_merchant_outbox" - min_width="300" - min_height="200" - name="floater_merchant_outbox" - save_rect="true" - save_visibility="false" - reuse_instance="true" - title="MERCHANT OUTBOX" - width="333" > - <string name="OutboxFolderCount0"></string> - <string name="OutboxFolderCount1">1 folder</string> - <string name="OutboxFolderCountN">[NUM] folders</string> - <string name="OutboxImporting">Sending folders...</string> - <string name="OutboxInitializing">Initializing...</string> - <panel + open_positioning="cascading" + can_close="true" + can_resize="true" + height="440" + help_topic="floater_merchant_outbox" + min_width="300" + min_height="200" + name="floater_merchant_outbox" + save_rect="true" + save_visibility="false" + reuse_instance="true" + title="MERCHANT OUTBOX" + width="333"> + <string name="OutboxFolderCount0"></string> + <string name="OutboxFolderCount1">1 folder</string> + <string name="OutboxFolderCountN">[NUM] folders</string> + <string name="OutboxImporting">Sending folders...</string> + <string name="OutboxInitializing">Initializing...</string> + <panel follows="all" layout="topleft" left="0" @@ -26,104 +26,127 @@ label="" height="440" width="333"> - <panel + <panel follows="all" left="10" - bottom="400" + bottom="370" width="313" top="0" - bg_opaque_color="InventoryBackgroundColor" - > - <panel - name="outbox_inventory_placeholder_panel" - follows="all" - layout="topleft" - top="0" - left="0" - width="308" - height="400" - bg_opaque_color="InventoryBackgroundColor" - > - <text - name="outbox_inventory_placeholder_title" - type="string" - follows="top|left|right" - layout="topleft" - top="10" - left="0" - width="308" - height="25" - wrap="true" - halign="center" - font="SansSerifBold"> - Loading... - </text> - <text - name="outbox_inventory_placeholder_text" - type="string" - follows="top|left|right" - layout="topleft" - top="35" - left="0" - width="308" - height="130" - wrap="true" - halign="left" /> - </panel> + bg_opaque_color="InventoryBackgroundColor"> + <panel + name="outbox_inventory_placeholder_panel" + follows="all" + layout="topleft" + top="0" + left="0" + width="308" + height="370" + bg_opaque_color="InventoryBackgroundColor"> + <text + name="outbox_inventory_placeholder_title" + type="string" + follows="top|left|right" + layout="topleft" + top="10" + left="0" + width="308" + height="25" + wrap="true" + halign="center" + font="SansSerifBold"> + Loading... + </text> + <text + name="outbox_inventory_placeholder_text" + type="string" + follows="top|left|right" + layout="topleft" + top="35" + left="0" + width="308" + height="130" + wrap="true" + halign="left" /> + </panel> </panel> - <panel + <panel follows="bottom|left|right" left="10" bottom="435" width="313" - top="405" - bg_opaque_color="InventoryBackgroundColor" - > - <text - name="outbox_folder_count" - type="string" - follows="all" - layout="topleft" - top="10" - left="5" - width="150" - height="20" - wrap="true" - halign="left" - valign="bottom" - font="SansSerif" /> - <button - label="Send to Marketplace" - tool_tip="Push to my Marketplace Storefront" - is_toggle="false" - name="outbox_import_btn" - follows="bottom|right" - tab_stop="false" - halign="center" - top="3" - left="160" - height="25" - width="150" - enabled="false" /> + top="370"> + <panel + name="outbox_generic_drag_target" + mouse_opaque="false" + follows="all" + top="5" + left="5" + width="303" + height="25" + background_visible="false" + bg_alpha_color="EmphasisColor_35" + border="true" + bevel_style="in" + visible="true"> + <text + type="string" + follows="all" + layout="topleft" + top="6" + height="20" + left="5" + width="293" + halign="center" + font="SansSerifMedium" + font_shadow="hard" + valign="bottom"> + Drag items here to create folders + </text> + </panel> + <text + name="outbox_folder_count" + type="string" + follows="all" + layout="topleft" + top="40" + left="5" + width="150" + height="20" + wrap="true" + halign="left" + valign="bottom" + font="SansSerif" /> + <button + label="Send to Marketplace" + tool_tip="Push to my Marketplace Storefront" + is_toggle="false" + name="outbox_import_btn" + follows="bottom|right" + tab_stop="false" + halign="center" + top="37" + left="160" + height="25" + width="150" + enabled="false" /> </panel> - <layout_stack name="import_progress_indicator" orientation="vertical" left="0" height="440" top="0" width="333" follows="all" visible="false"> - <layout_panel /> - <layout_panel height="45" auto_resize="false"> - <layout_stack orientation="horizontal" left="0" height="45" top="0" width="333" follows="all"> - <layout_panel width="0" /> - <layout_panel width="45" auto_resize="false"> - <loading_indicator - height="45" - layout="topleft" - left="0" - top="0" - width="45" - /> - </layout_panel> - <layout_panel width="0" /> - </layout_stack> - </layout_panel> - <layout_panel /> - </layout_stack> - </panel> + <layout_stack name="import_progress_indicator" orientation="vertical" left="0" height="440" top="0" width="333" follows="all" visible="false"> + <layout_panel /> + <layout_panel height="45" auto_resize="false"> + <layout_stack orientation="horizontal" left="0" height="45" top="0" width="333" follows="all"> + <layout_panel width="0" /> + <layout_panel width="45" auto_resize="false"> + <loading_indicator + height="45" + layout="topleft" + left="0" + top="0" + width="45" /> + </layout_panel> + <layout_panel width="0" /> + </layout_stack> + </layout_panel> + <layout_panel /> + </layout_stack> + </panel> </floater> |