summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorAndrew Dyukov <adyukov@productengine.com>2010-09-13 16:42:33 +0300
committerAndrew Dyukov <adyukov@productengine.com>2010-09-13 16:42:33 +0300
commit5a4728d25a141866ee0e712e48824067d26fc696 (patch)
tree5cff19fe78536c79646d45a17ff75bdac5a7d3c6 /indra
parent807aec7bafe19fca75a8f3980bd621fad7c8338e (diff)
STORM-99 FIXED Fixed wrong name of item shown in confirmation popup when sharing items from undocked sidetray inventory.
I couldn't repro situation when select was disabled, but problem with wrong items reproduced for me all the time. It happened because all detached tab floaters were getting name "floater", so couldn't be found by sidetray's getPanel(), and even if inventory could be found is_inventorysp_active() in LLInventoryPanel::getActiveInventoryPanel() would not let us reach point of getting it. - Added setting name of floater to sidebar tab's name on it's detach. - Added search of detached inventory tab to LLInventoryPanel::getActiveInventoryPanel() and if it is detached, inventory panel is found there, and z-order of floater is stored and later compared with z-orders of "inventory" floaters(the ones that are opened via Ctrl+Shift+I).
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llinventorypanel.cpp21
-rw-r--r--indra/newview/llsidetray.cpp1
2 files changed, 20 insertions, 2 deletions
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 820520df9e..50adae09c0 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -916,6 +916,8 @@ BOOL is_inventorysp_active()
// static
LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
{
+ S32 z_min = S32_MAX;
+ LLInventoryPanel* res = NULL;
// A. If the inventory side panel is open, use that preferably.
if (is_inventorysp_active())
{
@@ -925,11 +927,26 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
return inventorySP->getActivePanel();
}
}
+ // or if it is in floater undocked from sidetray get it and remember z order of floater to later compare it
+ // with other inventory floaters order.
+ else if (!LLSideTray::getInstance()->isTabAttached("sidebar_inventory"))
+ {
+ LLSidepanelInventory *inventorySP =
+ dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+ LLFloater* inv_floater = LLFloaterReg::findInstance("side_bar_tab", LLSD("sidebar_inventory"));
+ if (inventorySP && inv_floater)
+ {
+ res = inventorySP->getActivePanel();
+ z_min = gFloaterView->getZOrder(inv_floater);
+ }
+ else
+ {
+ llwarns << "Inventory tab is detached from sidetray, but either panel or floater were not found!" << llendl;
+ }
+ }
// B. Iterate through the inventory floaters and return whichever is on top.
LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");
- S32 z_min = S32_MAX;
- LLInventoryPanel* res = NULL;
for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
{
LLFloaterInventory* iv = dynamic_cast<LLFloaterInventory*>(*iter);
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index 1d32b58948..054de66600 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -314,6 +314,7 @@ void LLSideTrayTab::undock(LLFloater* floater_tab)
floater_tab->addChild(this);
floater_tab->setTitle(mTabTitle);
+ floater_tab->setName(getName());
// Reshape the floater if needed.
LLRect floater_rect;