diff options
author | Andrew Dyukov <adyukov@productengine.com> | 2010-09-13 16:42:33 +0300 |
---|---|---|
committer | Andrew Dyukov <adyukov@productengine.com> | 2010-09-13 16:42:33 +0300 |
commit | 5a4728d25a141866ee0e712e48824067d26fc696 (patch) | |
tree | 5cff19fe78536c79646d45a17ff75bdac5a7d3c6 /indra | |
parent | 807aec7bafe19fca75a8f3980bd621fad7c8338e (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.cpp | 21 | ||||
-rw-r--r-- | indra/newview/llsidetray.cpp | 1 |
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; |