diff options
author | Leslie Linden <leslie@lindenlab.com> | 2011-09-13 11:17:02 -0700 |
---|---|---|
committer | Leslie Linden <leslie@lindenlab.com> | 2011-09-13 11:17:02 -0700 |
commit | 201d0659192977071ff0fc2219a28ecbc3025171 (patch) | |
tree | b7e0161cda7545624cac6ebc294001f25f3fb2c2 | |
parent | ba96fb5c2b6801398481a30189f991cff98fed8b (diff) |
EXP-1071 FIX -- User can drag items to Received Items folder under Recent Tab
* Inventory panel now has an optional "accepts_drag_and_drop" parameter set to
true by default.
* Recent Inventory Panel sets "accepts_drag_and_drop" to false.
* Items can still be dragged out of Recent to a second inventory panel.
Reviewed by Leyla.
-rw-r--r-- | indra/newview/llinventorypanel.cpp | 26 | ||||
-rw-r--r-- | indra/newview/llinventorypanel.h | 5 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_main_inventory.xml | 5 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/widgets/inventory_panel.xml | 11 |
4 files changed, 29 insertions, 18 deletions
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 173e5c6ae6..615d3aefde 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -129,6 +129,7 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) : mScroller(NULL), mSortOrderSetting(p.sort_order_setting), mInventory(p.inventory), + mAcceptsDragAndDrop(p.accepts_drag_and_drop), mAllowMultiSelect(p.allow_multi_select), mShowItemLinkOverlays(p.show_item_link_overlays), mShowLoadStatus(p.show_load_status), @@ -824,19 +825,24 @@ BOOL LLInventoryPanel::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EAcceptance* accept, std::string& tooltip_msg) { - BOOL handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); + BOOL handled = FALSE; - // If folder view is empty the (x, y) point won't be in its rect - // so the handler must be called explicitly. - // but only if was not handled before. See EXT-6746. - if (!handled && !mFolderRoot->hasVisibleChildren()) + if (mAcceptsDragAndDrop) { - handled = mFolderRoot->handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); - } + handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); - if (handled) - { - mFolderRoot->setDragAndDropThisFrame(); + // If folder view is empty the (x, y) point won't be in its rect + // so the handler must be called explicitly. + // but only if was not handled before. See EXT-6746. + if (!handled && !mFolderRoot->hasVisibleChildren()) + { + handled = mFolderRoot->handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg); + } + + if (handled) + { + mFolderRoot->setDragAndDropThisFrame(); + } } return handled; diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index cfb84bf4b7..8635ebc5c8 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -86,6 +86,7 @@ public: Optional<bool> use_label_suffix; Optional<bool> show_load_status; Optional<LLScrollContainer::Params> scroll; + Optional<bool> accepts_drag_and_drop; Params() : sort_order_setting("sort_order_setting"), @@ -96,7 +97,8 @@ public: start_folder("start_folder"), use_label_suffix("use_label_suffix", true), show_load_status("show_load_status"), - scroll("scroll") + scroll("scroll"), + accepts_drag_and_drop("accepts_drag_and_drop") {} }; @@ -181,6 +183,7 @@ protected: LLInventoryModel* mInventory; LLInventoryObserver* mInventoryObserver; LLInvPanelComplObserver* mCompletionObserver; + BOOL mAcceptsDragAndDrop; BOOL mAllowMultiSelect; BOOL mShowItemLinkOverlays; // Shows link graphic over inventory item icons BOOL mShowLoadStatus; diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index 888230a00e..e6c5110999 100644 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -82,10 +82,11 @@ left="0" name="All Items" sort_order_setting="InventorySortOrder" - show_item_link_overlays="true" + show_item_link_overlays="true" top="16" width="288" /> <recent_inventory_panel + accepts_drag_and_drop="false" bg_opaque_color="DkGray2" bg_alpha_color="DkGray2" background_visible="true" @@ -99,7 +100,7 @@ layout="topleft" left_delta="0" name="Recent Items" - show_item_link_overlays="true" + show_item_link_overlays="true" width="290" /> </tab_container> <layout_stack diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml index 00f4c43915..eaf148c5e4 100644 --- a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml @@ -4,11 +4,12 @@ background_visible="true" background_opaque="true" show_load_status="true" + accepts_drag_and_drop="true" > <scroll - name="Inventory Scroller" - follows="all" - reserve_scroll_corner="true" - tab_stop="true" - /> + name="Inventory Scroller" + follows="all" + reserve_scroll_corner="true" + tab_stop="true" + /> </panel> |