diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 68fc86467c9305fb3e0ed49e0b6f8ae0c2a17619..de24bd92d0c0b06ecd9497cac2003d27034d44c3 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 a038f9985347c2c04bbe679da9bc6dc8e08b2f6b..13275d14c05a3bb096df824e05d88b40f67c8c2e 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -54,6 +54,10 @@ class LLSidepanelInventory : public LLPanel
 	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 @@ class LLSidepanelInventory : public LLPanel
 	void performActionOnSelection(const std::string &action);
 	bool canShare();
 
-	void showItemInfoPanel();
-	void showTaskInfoPanel();
-	void showInventoryPanel();
 	void updateVerbs();
 
 	//