From 67185e19b423ccd31242d220a625eb4f593d4410 Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Wed, 16 Jun 2010 16:40:48 -0400
Subject: [PATCH] EXT-5342 FIXED Open in Inventory contents does nothing for
 certain item types

"Open" is added conditionally based on item type.
---
 indra/newview/llpanelobjectinventory.cpp | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index da809b7baaa..26f32d656fd 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -114,6 +114,7 @@ class LLTaskInvFVBridge : public LLFolderViewEventListener
 	virtual time_t getCreationDate() const;
 	virtual LLUIImagePtr getIcon() const;
 	virtual void openItem();
+	virtual BOOL canOpenItem() const { return FALSE; }
 	virtual void closeItem() {}
 	virtual void previewItem();
 	virtual void selectItem() {}
@@ -677,7 +678,7 @@ void LLTaskInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			}
 		}
 	}
-	else
+	else if (canOpenItem())
 	{
 		items.push_back(std::string("Task Open"));
 		if (!isItemCopyable())
@@ -723,6 +724,7 @@ class LLTaskCategoryBridge : public LLTaskInvFVBridge
 	virtual BOOL dragOrDrop(MASK mask, BOOL drop,
 							EDragAndDropType cargo_type,
 							void* cargo_data);
+	virtual BOOL canOpenItem() const { return TRUE; }
 };
 
 LLTaskCategoryBridge::LLTaskCategoryBridge(
@@ -874,6 +876,7 @@ class LLTaskTextureBridge : public LLTaskInvFVBridge
 						const std::string& name) :
 		LLTaskInvFVBridge(panel, uuid, name) {}
 
+	virtual BOOL canOpenItem() const { return TRUE; }
 	virtual void openItem();
 };
 
@@ -900,6 +903,7 @@ class LLTaskSoundBridge : public LLTaskInvFVBridge
 					  const std::string& name) :
 		LLTaskInvFVBridge(panel, uuid, name) {}
 
+	virtual BOOL canOpenItem() const { return TRUE; }
 	virtual void openItem();
 	virtual void performAction(LLInventoryModel* model, std::string action);
 	virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
@@ -976,9 +980,8 @@ void LLTaskSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			}
 		}
 	}
-	else
+	else if (canOpenItem())
 	{
-		items.push_back(std::string("Task Open")); 
 		if (!isItemCopyable())
 		{
 			disabled_items.push_back(std::string("Task Open"));
@@ -1063,6 +1066,7 @@ class LLTaskLSLBridge : public LLTaskScriptBridge
 					const std::string& name) :
 		LLTaskScriptBridge(panel, uuid, name) {}
 
+	virtual BOOL canOpenItem() const { return TRUE; }
 	virtual void openItem();
 	virtual BOOL removeItem();
 	//virtual void buildContextMenu(LLMenuGL& menu);
@@ -1124,6 +1128,7 @@ class LLTaskNotecardBridge : public LLTaskInvFVBridge
 						 const std::string& name) :
 		LLTaskInvFVBridge(panel, uuid, name) {}
 
+	virtual BOOL canOpenItem() const { return TRUE; }
 	virtual void openItem();
 	virtual BOOL removeItem();
 };
@@ -1163,6 +1168,7 @@ class LLTaskGestureBridge : public LLTaskInvFVBridge
 						const std::string& name) :
 	LLTaskInvFVBridge(panel, uuid, name) {}
 
+	virtual BOOL canOpenItem() const { return TRUE; }
 	virtual void openItem();
 	virtual BOOL removeItem();
 };
@@ -1196,6 +1202,7 @@ class LLTaskAnimationBridge : public LLTaskInvFVBridge
 						  const std::string& name) :
 		LLTaskInvFVBridge(panel, uuid, name) {}
 
+	virtual BOOL canOpenItem() const { return TRUE; }
 	virtual void openItem();
 	virtual BOOL removeItem();
 };
-- 
GitLab