diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llinventoryfunctions.cpp | 43 | ||||
| -rw-r--r-- | indra/newview/llsidepanelinventory.h | 7 | 
2 files changed, 36 insertions, 14 deletions
| diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 68fc86467c..de24bd92d0 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -335,24 +335,34 @@ void show_item_profile(const LLUUID& item_uuid)  void show_item_original(const LLUUID& item_uuid)  { +	//sidetray inventory panel +	LLSidepanelInventory *sidepanel_inventory = +		dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory")); +  	bool reset_inventory_filter = !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory");  	LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(); -	if (!active_panel) return; +	if (!active_panel)  +	{ +		//this may happen when there is no floatera and other panel is active in inventory tab + +		if	(sidepanel_inventory) +		{ +			sidepanel_inventory->showInventoryPanel(); +		} +	} +	 +	active_panel = LLInventoryPanel::getActiveInventoryPanel(); +	if (!active_panel)  +	{ +		return; +	}  	active_panel->setSelection(gInventory.getLinkedItemID(item_uuid), TAKE_FOCUS_NO);  	if(reset_inventory_filter)  	{ -		LLSidepanelInventory *sidepanel_inventory = -			dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory")); -		if(sidepanel_inventory) -		{ -			LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel(); - -			main_inventory->onFilterEdit(""); -		} - -		//now for inventory floater +		//inventory floater +		bool floater_inventory_visible = false;  		LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");  		for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter) @@ -364,8 +374,19 @@ void show_item_original(const LLUUID& item_uuid)  				main_inventory->onFilterEdit("");  			} + +			if(floater_inventory->getVisible()) +			{ +				floater_inventory_visible = true; +			} +  		} +		if(sidepanel_inventory && !floater_inventory_visible) +		{ +			LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel(); +			main_inventory->onFilterEdit(""); +		}  	}  } diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h index a038f99853..13275d14c0 100644 --- a/indra/newview/llsidepanelinventory.h +++ b/indra/newview/llsidepanelinventory.h @@ -54,6 +54,10 @@ public:  	LLPanelMainInventory* getMainInventoryPanel() const { return mPanelMainInventory; }  	BOOL isMainInventoryPanelActive() const; +	void showItemInfoPanel(); +	void showTaskInfoPanel(); +	void showInventoryPanel(); +  protected:  	// Tracks highlighted (selected) item in inventory panel.  	LLInventoryItem *getSelectedItem(); @@ -63,9 +67,6 @@ protected:  	void performActionOnSelection(const std::string &action);  	bool canShare(); -	void showItemInfoPanel(); -	void showTaskInfoPanel(); -	void showInventoryPanel();  	void updateVerbs();  	// | 
