diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index 4ba1d007fee0f1f5f6bdf6b2ce4a53f89c09705e..d0bb93d1b6096f94c8d4ecc394e580a3ace5ef0d 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -53,6 +53,7 @@
 #include "llvfs.h"
 #include "llviewerinventory.h"
 #include "llviewermenu.h"	// gMenuHolder
+#include "llviewerparcelmgr.h"
 #include "llviewerregion.h"
 #include "llviewerstats.h"
 #include "llviewerwindow.h"
@@ -102,6 +103,14 @@ class LLMeshEnabled : public view_listener_t
 	}
 };
 
+class LLMeshUploadVisible : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		return LLViewerParcelMgr::getInstance()->allowAgentBuild() && !gAgent.getRegion()->getCapability("ObjectAdd").empty();
+	}
+};
+
 LLMutex* LLFilePickerThread::sMutex = NULL;
 std::queue<LLFilePickerThread*> LLFilePickerThread::sDeadQ;
 
@@ -1390,6 +1399,7 @@ void init_menu_file()
 	view_listener_t::addEnable(new LLFileEnableUpload(), "File.EnableUpload");
 	view_listener_t::addEnable(new LLFileEnableUploadModel(), "File.EnableUploadModel");
 	view_listener_t::addMenu(new LLMeshEnabled(), "File.MeshEnabled");
+	view_listener_t::addMenu(new LLMeshUploadVisible(), "File.VisibleUploadModel");
 
 	// "File.SaveTexture" moved to llpanelmaininventory so that it can be properly handled.
 }
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
index e0e6567872f275f069cc8eebf7d4354653e7581c..62db15d45664241561070cb43e006c2d4ebc05ee 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
@@ -52,7 +52,7 @@
                 <menu_item_call.on_enable
                  function="File.EnableUploadModel" />
                 <menu_item_call.on_visible
-                function="File.MeshEnabled"/>
+                function="File.VisibleUploadModel"/>
                 </menu_item_call>
                 <menu_item_call
                  label="Bulk (L$[COST] per file)..."
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index cb2cbbe033c97f558c5bb99ffe01452eff70017e..8e2c5840ee16141cd0f779e1bb6040f83dbc4e63 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -970,7 +970,7 @@
             <menu_item_call.on_enable
              function="File.EnableUploadModel" />
             <menu_item_call.on_visible
-            function="File.MeshEnabled"/>
+            function="File.VisibleUploadModel"/>
             </menu_item_call>
 			<menu_item_call
            label="Model Wizard..."
@@ -982,7 +982,7 @@
 				<menu_item_call.on_enable
 				 function="File.EnableUploadModel" />
 				<menu_item_call.on_visible
-				function="File.MeshEnabled"/>
+				function="File.VisibleUploadModel"/>
 			</menu_item_call>
             <menu_item_call
              label="Bulk (L$[COST] per file)..."