diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 2a0dcaf333655e367d1c300914ac44b76f78bd7f..bf965e8e28e6760693cced9fe41cdb1af0917548 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -2526,8 +2526,12 @@ void LLFloaterView::pushVisibleAll(BOOL visible, const skip_list_t& skip_list)
 
 void LLFloaterView::popVisibleAll(const skip_list_t& skip_list)
 {
-	for (child_list_const_iter_t child_iter = getChildList()->begin();
-		 child_iter != getChildList()->end(); ++child_iter)
+	// make a copy of the list since some floaters change their
+	// order in the childList when changing visibility.
+	child_list_t child_list_copy = *getChildList();
+
+	for (child_list_const_iter_t child_iter = child_list_copy.begin();
+		 child_iter != child_list_copy.end(); ++child_iter)
 	{
 		LLView *view = *child_iter;
 		if (skip_list.find(view) == skip_list.end())
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 7a540a45c4c7079472fa049c0638887046185b44..e658b9af6a23fa875724e35efac107f3ee057642 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -2810,7 +2810,11 @@ void LLAgent::endAnimationUpdateUI()
 			LLFloaterReg::restoreVisibleInstances();
 #else // Use this for now
 			LLFloaterView::skip_list_t skip_list;
-			skip_list.insert(LLFloaterReg::findInstance("mini_map"));
+			if (LLFloaterReg::findInstance("mini_map"))
+			{
+				skip_list.insert(LLFloaterReg::findInstance("mini_map"));
+			}
+		
 			gFloaterView->popVisibleAll(skip_list);
 #endif
 			mViewsPushed = FALSE;
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index b1fbf789c692cca7e49137231e65baa6de63dffd..dbe0ec3b86e9c8f98719815afd5b42836f38468a 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -1158,10 +1158,17 @@ void LLTaskLSLBridge::openItem()
 	{
 		return;
 	}
-	LLLiveLSLEditor* preview = LLFloaterReg::showTypedInstance<LLLiveLSLEditor>("preview_scriptedit", LLSD(mUUID), TAKE_FOCUS_YES);
-	if (preview && (object->permModify() || gAgent.isGodlike()))
+	if (object->permModify() || gAgent.isGodlike())
 	{
-		preview->setObjectID(mPanel->getTaskUUID());
+		LLLiveLSLEditor* preview = LLFloaterReg::showTypedInstance<LLLiveLSLEditor>("preview_scriptedit", LLSD(mUUID), TAKE_FOCUS_YES);
+		if (preview)
+		{
+			preview->setObjectID(mPanel->getTaskUUID());
+		}
+	}
+	else
+	{	
+		LLNotifications::instance().add("CannotOpenScriptObjectNoMod");
 	}
 }
 
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 6a6aa1061dc6adad47b78785bde490d34cb7588c..c67af994a42a3ff8e4d7a35e182f64406bf8dfb5 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -2733,15 +2733,26 @@ bool enable_object_edit()
 	// there.  Eventually this needs to be replaced with code that only 
 	// lets you edit objects if you have permission to do so (edit perms,
 	// group edit, god).  See also lltoolbar.cpp.  JC
-	bool enable = true;
+	bool enable = false;
 	if (gAgent.inPrelude())
 	{
 		enable = LLViewerParcelMgr::getInstance()->agentCanBuild()
 			|| LLSelectMgr::getInstance()->getSelection()->isAttachment();
+	} 
+	else if (LLSelectMgr::getInstance()->selectGetModify())
+	{
+		enable = true;
 	}
+
 	return enable;
 }
 
+// mutually exclusive - show either edit option or build in menu
+bool enable_object_build()
+{
+	return !enable_object_edit();
+}
+
 class LLSelfRemoveAllAttachments : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -8023,6 +8034,8 @@ void initialize_menus()
 	visible.add("VisiblePayObject", boost::bind(&enable_pay_object));
 	enable.add("EnablePayAvatar", boost::bind(&enable_pay_avatar));
 	enable.add("EnableEdit", boost::bind(&enable_object_edit));
+	visible.add("VisibleBuild", boost::bind(&enable_object_build));
+	visible.add("VisibleEdit", boost::bind(&enable_object_edit));
 	visible.add("Object.VisibleEdit", boost::bind(&enable_object_edit));
 
 	view_listener_t::addMenu(new LLFloaterVisible(), "FloaterVisible");
diff --git a/indra/newview/skins/default/xui/en/floater_report_abuse.xml b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
index 696233676cd19dd4343b77d76f32fb9014b4f4c9..91ca3ef27ad0e5edd4f26591b3484f11517d8c0d 100644
--- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml
+++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml
@@ -18,7 +18,7 @@
      height="150"
      layout="topleft"
      left="60"
-     name=""
+     name="screenshot"
      top="15"
      width="220" />
     <check_box
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 0d1ed6fc649d06b1d4d83b3de0eaf21cb3b6dcaa..d955e875a7c9f76b50e340d83474ca7a3fd87ef1 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -1434,6 +1434,13 @@ Not able to perform &apos;reset&apos;.
 Select objects with scripts that you have permission to modify.
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="CannotOpenScriptObjectNoMod"
+   type="alertmodal">
+    Unable to open script in object without modify permissions.
+  </notification>
+
   <notification
    icon="alertmodal.tga"
    name="CannotSetRunningSelectObjectsNoScripts"