diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp
index 56e0c4f0f87f50d538e29af5a59a441b980e9aca..341ddb83f3473d7f99b1fed34f0f5c9cd51b58f1 100644
--- a/indra/llui/llkeywords.cpp
+++ b/indra/llui/llkeywords.cpp
@@ -501,7 +501,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 		{
 			if( *cur == '\n' )
 			{
-				LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(cur-base);
+				LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(style, cur-base);
 				text_segment->setToken( 0 );
 				insertSegment( *seg_list, text_segment, text_len, style, editor);
 				cur++;
@@ -712,7 +712,7 @@ void LLKeywords::insertSegments(const LLWString& wtext, std::vector<LLTextSegmen
 			insertSegment( seg_list, text_segment, text_len, style, editor);
 		}
 
-		LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(pos);
+		LLTextSegmentPtr text_segment = new LLLineBreakTextSegment(style, pos);
 		text_segment->setToken( cur_token );
 		insertSegment( seg_list, text_segment, text_len, style, editor);
 
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 33c4b6ec737cb6312378ba33e54ce7ebfae8f844..99dbdcf7751dc4075cf89627bce23db790d9ea7d 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -1777,7 +1777,8 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p)
 	mNeedsArrange(FALSE),
 	mAlwaysShowMenu(FALSE),
 	mResetScrollPositionOnShow(true),
-	mShortcutPad(p.shortcut_pad)
+	mShortcutPad(p.shortcut_pad),
+    mFont(p.font)
 {
 	typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
 	boost::char_separator<char> sep("_");
@@ -3636,6 +3637,7 @@ BOOL LLMenuBarGL::appendMenu( LLMenuGL* menu )
 	p.disabled_color=LLUIColorTable::instance().getColor("MenuItemDisabledColor");
 	p.highlight_bg_color=LLUIColorTable::instance().getColor("MenuItemHighlightBgColor");
 	p.highlight_fg_color=LLUIColorTable::instance().getColor("MenuItemHighlightFgColor");
+    p.font = menu->getFont();
 
 	LLMenuItemBranchDownGL* branch = LLUICtrlFactory::create<LLMenuItemBranchDownGL>(p);
 	success &= branch->addToAcceleratorList(&mAccelerators);
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 9d3be8d94f95488e5d86147a30a26db0603b3c76..8194501f79668c84f468573d8709db50c98f6ceb 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -555,7 +555,9 @@ class LLMenuGL
 	// add a context menu branch
 	BOOL appendContextSubMenu(LLMenuGL *menu);
 
-protected:
+    const LLFontGL *getFont() const { return mFont; }
+
+  protected:
 	void createSpilloverBranch();
 	void cleanupSpilloverBranch();
 	// Add the menu item to this menu.
@@ -587,6 +589,9 @@ class LLMenuGL
 	BOOL			mKeepFixedSize;
 	BOOL			mNeedsArrange;
 
+    // Font for top menu items only
+    const LLFontGL* mFont;
+
 private:
 
 
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 6a82a3b35d51ad1f57246374f7455f2315ee16b3..d935c01eb85b0387ea4b2f4c91d6180beb738036 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -960,9 +960,15 @@ void LLTaskLSLBridge::openItem()
 		LLSD floater_key;
 		floater_key["taskid"] = mPanel->getTaskUUID();
 		floater_key["itemid"] = mUUID;
+
 		LLLiveLSLEditor* preview = LLFloaterReg::showTypedInstance<LLLiveLSLEditor>("preview_scriptedit", floater_key, TAKE_FOCUS_YES);
 		if (preview)
 		{
+            LLSelectNode *node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode(NULL, TRUE);
+            if (node && node->mValid)
+            {
+                preview->setObjectName(node->mName);
+            }
 			preview->setObjectID(mPanel->getTaskUUID());
 		}
 	}
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index 2add126b2d55230967e8bedb15f08995ab8ccdb5..62281d58f899db931f3efd94f0f915319f0ad623 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -324,6 +324,38 @@ void LLFloaterScriptSearch::onSearchBoxCommit()
 	}
 }
 
+/// ---------------------------------------------------------------------------
+
+class LLScriptMovedObserver : public LLInventoryObserver
+{
+  public:
+    LLScriptMovedObserver(LLPreviewLSL *floater) : mPreview(floater) { gInventory.addObserver(this); }
+    virtual ~LLScriptMovedObserver() { gInventory.removeObserver(this); }
+    virtual void changed(U32 mask);
+
+  private:
+    LLPreviewLSL *mPreview;
+};
+
+void LLScriptMovedObserver::changed(U32 mask)
+{
+    const std::set<LLUUID> &mChangedItemIDs = gInventory.getChangedIDs();
+    std::set<LLUUID>::const_iterator it;
+
+    const LLUUID &item_id = mPreview->getScriptID();
+
+    for (it = mChangedItemIDs.begin(); it != mChangedItemIDs.end(); it++)
+    {
+        if (*it == item_id)
+        {
+            if ((mask & (LLInventoryObserver::STRUCTURE)) != 0)
+            {
+                mPreview->setDirty();
+            }
+        }
+    }
+}
+
 /// ---------------------------------------------------------------------------
 /// LLScriptEdCore
 /// ---------------------------------------------------------------------------
@@ -1554,6 +1586,14 @@ LLPreviewLSL::LLPreviewLSL(const LLSD& key )
 	mPendingUploads(0)
 {
 	mFactoryMap["script panel"] = LLCallbackMap(LLPreviewLSL::createScriptEdPanel, this);
+
+    mItemObserver = new LLScriptMovedObserver(this);
+}
+
+LLPreviewLSL::~LLPreviewLSL() 
+{ 
+    delete mItemObserver;
+    mItemObserver = NULL;
 }
 
 // virtual
@@ -1584,7 +1624,12 @@ void LLPreviewLSL::draw()
 		setTitle(LLTrans::getString("ScriptWasDeleted"));
 		mScriptEd->setItemRemoved(TRUE);
 	}
-
+    if (mDirty) 
+    {
+        std::string item_path = get_category_path(item->getParentUUID());
+        getChild<LLUICtrl>("path_txt")->setValue(item_path);
+        getChild<LLUICtrl>("path_txt")->setToolTip(item_path);
+    }
 	LLPreview::draw();
 }
 // virtual
@@ -1870,7 +1915,8 @@ LLLiveLSLEditor::LLLiveLSLEditor(const LLSD& key) :
 	mPendingUploads(0),
 	mIsModifiable(FALSE),
 	mIsNew(false),
-	mIsSaving(FALSE)
+	mIsSaving(FALSE),
+    mObjectName("")
 {
 	mFactoryMap["script ed panel"] = LLCallbackMap(LLLiveLSLEditor::createScriptEdPanel, this);
 }
@@ -2007,6 +2053,7 @@ void LLLiveLSLEditor::loadAsset()
 			}
 
 			refreshFromItem();
+            getChild<LLUICtrl>("obj_name")->setValue(mObjectName);
 			// This is commented out, because we don't completely
 			// handle script exports yet.
 			/*
diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h
index 2e5b8ad9bb138400259472ee46f49a72e7d9cc6a..36e5253fb6da4365bcd08039b655bf7b7d11e430 100644
--- a/indra/newview/llpreviewscript.h
+++ b/indra/newview/llpreviewscript.h
@@ -53,6 +53,7 @@ class LLViewerInventoryItem;
 class LLScriptEdContainer;
 class LLFloaterGotoLine;
 class LLFloaterExperienceProfile;
+class LLScriptMovedObserver;
 
 class LLLiveLSLFile : public LLLiveFile
 {
@@ -227,6 +228,12 @@ class LLPreviewLSL : public LLScriptEdContainer
 {
 public:
 	LLPreviewLSL(const LLSD& key );
+    ~LLPreviewLSL();
+
+    LLUUID getScriptID() { return mItemUUID; }
+
+    void setDirty() { mDirty = true; }
+
 	virtual void callbackLSLCompileSucceeded();
 	virtual void callbackLSLCompileFailed(const LLSD& compile_errors);
 
@@ -257,6 +264,8 @@ class LLPreviewLSL : public LLScriptEdContainer
 	// Can safely close only after both text and bytecode are uploaded
 	S32 mPendingUploads;
 
+    LLScriptMovedObserver* mItemObserver;
+
 };
 
 
@@ -289,6 +298,8 @@ class LLLiveLSLEditor : public LLScriptEdContainer
 	void requestExperiences();
 	void experienceChanged();
 	void addAssociatedExperience(const LLSD& experience);
+
+    void setObjectName(std::string name) { mObjectName = name; }
 	
 private:
 	virtual BOOL canClose();
@@ -347,6 +358,7 @@ class LLLiveLSLEditor : public LLScriptEdContainer
 	LLSD			mExperienceIds;
 
 	LLHandle<LLFloater> mExperienceProfile;
+    std::string mObjectName;
 };
 
 #endif  // LL_LLPREVIEWSCRIPT_H
diff --git a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
index e8826034f611219053767c1927d720ab4a400ccc..88173e68faa32ea868902026d5375f40cb53401c 100644
--- a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
@@ -4,7 +4,7 @@
   bevel_style="none"
   border_style="line"
   can_resize="true"
-  height="582"
+  height="607"
   layout="topleft"
   min_height="271"
   min_width="328"
@@ -45,6 +45,21 @@
     name="loading">
     Loading...
   </floater.string>
+  <text
+   type="string"
+   length="1"
+   follows="left|top|right"
+   width="490"
+   use_ellipses="true"
+   font="SansSerif"
+   height="18"
+   layout="topleft"
+   left="13"
+   name="obj_name"
+   text_color="white"
+   top="21">
+    Object name
+  </text>
   <panel
     bevel_style="none"
      
@@ -54,7 +69,7 @@
     layout="topleft"
     left="10"
     name="script ed panel"
-    top="16"
+    top_pad="2"
     width="501" />
   <button
     follows="left|bottom"
diff --git a/indra/newview/skins/default/xui/en/floater_script_preview.xml b/indra/newview/skins/default/xui/en/floater_script_preview.xml
index 5bec45e666959b743af888af40c3c6140e58c5e4..91c18035dbff17826f6828e6489cbdaf6e5389f1 100644
--- a/indra/newview/skins/default/xui/en/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_preview.xml
@@ -40,7 +40,7 @@
      width="490"
      use_ellipses="true"
      font="SansSerif"
-     height="19"
+     height="18"
      layout="topleft"
      left="13"
      name="path_txt"
diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml
index be20cfd880bd9ffe0222dd4a3bea22b80acd53b8..4ea4a4f38deebd5c53520506de5ed8486e1e2567 100644
--- a/indra/newview/skins/default/xui/en/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml
@@ -44,6 +44,7 @@
       layout="topleft"
       left="0"
       mouse_opaque="false"
+      font="SansSerif"
       name="File"
       width="138">
       <menu_item_call
@@ -74,6 +75,7 @@
       label="Edit"
       layout="topleft"
       mouse_opaque="false"
+      font="SansSerif"
       name="Edit"
       width="139">
       <menu_item_call
@@ -134,6 +136,7 @@
       label="Help"
       layout="topleft"
       mouse_opaque="false"
+      font="SansSerif"
       name="Help"
       width="112">
       <menu_item_call
diff --git a/indra/newview/skins/default/xui/en/widgets/menu.xml b/indra/newview/skins/default/xui/en/widgets/menu.xml
index 13ac84beb2787d81f16c95016ad0407edd3c7f44..0e2b478aa56303855ea8e260cafd5167e3950bf9 100644
--- a/indra/newview/skins/default/xui/en/widgets/menu.xml
+++ b/indra/newview/skins/default/xui/en/widgets/menu.xml
@@ -4,5 +4,6 @@
       bg_visible="true"
       drop_shadow="true"
       tear_off="false"
+      font="SansSerifSmall" 
       shortcut_pad="15">
 </menu>