From fce52249abdba7a865f03c88692a45e8ff972763 Mon Sep 17 00:00:00 2001
From: Eugene Kondrashev <ekondrashev@productengine.com>
Date: Wed, 18 Nov 2009 16:04:41 +0200
Subject: [PATCH] Particial fix for normal bug EXT-2410- Accepting an Offered
 Notecard Should Open the Side Bar Inventory Tab. Added select command while
 opening inventory sidetray panel

--HG--
branch : product-engine
---
 indra/newview/llsidepanelinventory.cpp | 11 ++++++++---
 indra/newview/llsidepanelinventory.h   |  1 +
 indra/newview/llviewermessage.cpp      |  5 +++++
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 6aa5c53194f..58962b67d66 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -46,7 +46,8 @@ static LLRegisterPanelClassWrapper<LLSidepanelInventory> t_inventory("sidepanel_
 
 LLSidepanelInventory::LLSidepanelInventory()
 	:	LLPanel(),
-		mItemPanel(NULL)
+		mItemPanel(NULL),
+		mPanelMainInventory(NULL)
 {
 
 	//LLUICtrlFactory::getInstance()->buildPanel(this, "panel_inventory.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder()
@@ -80,8 +81,8 @@ BOOL LLSidepanelInventory::postBuild()
 		mOverflowBtn = mInventoryPanel->getChild<LLButton>("overflow_btn");
 		mOverflowBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onOverflowButtonClicked, this));
 		
-		LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
-		panel_main_inventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2));
+		mPanelMainInventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory");
+		mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2));
 	}
 
 	// UI elements from item panel
@@ -127,6 +128,10 @@ void LLSidepanelInventory::onOpen(const LLSD& key)
 			mTaskPanel->setObjectSelection(LLSelectMgr::getInstance()->getSelection());
 		showTaskInfoPanel();
 	}
+	if (key.has("select"))
+	{
+		mPanelMainInventory->getPanel()->setSelection(key["select"].asUUID(), TAKE_FOCUS_NO);
+	}
 }
 
 void LLSidepanelInventory::onInfoButtonClicked()
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index 681af7fafab..9eba77b5c3f 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -68,6 +68,7 @@ class LLSidepanelInventory : public LLPanel
 	LLPanel*					mInventoryPanel; // Main inventory view
 	LLSidepanelItemInfo*		mItemPanel; // Individual item view
 	LLSidepanelTaskInfo*		mTaskPanel; // Individual in-world object view
+	LLPanelMainInventory*		mPanelMainInventory;
 
 protected:
 	void 						onInfoButtonClicked();
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index ef6a621323b..11b2f07f1bd 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -939,6 +939,11 @@ void open_offer(const std::vector<LLUUID>& items, const std::string& from_name)
 		   !from_name.empty())
 		{
 			view = LLFloaterInventory::showAgentInventory();
+			//TODO:this should be moved to the end of method after all the checks,
+			//but first decide what to do with active inventory if any (EK)
+			LLSD key;
+			key["select"] = item->getUUID();
+			LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
 		}
 		else
 		{
-- 
GitLab