diff --git a/indra/llmessage/message.h b/indra/llmessage/message.h
index 6f6bff6bf6fcf5c826f17e589d09d5eb45a008d5..ec76e1f755b9f7d468275fce4490200ec10d82e3 100644
--- a/indra/llmessage/message.h
+++ b/indra/llmessage/message.h
@@ -731,7 +731,7 @@ class LLMessageSystem
 	static F32 mTimeDecodesSpamThreshold;  // If mTimeDecodes is on, all this many seconds for each msg decode before spamming
 	static BOOL mTimeDecodes;  // Measure time for all message decodes if TRUE;
 
-	void LLMessageSystem::init(); // ctor shared initialisation.
+	void init(); // ctor shared initialisation.
 };
 
 
diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h
index f8c6a008eb2a29b03c815aa675b1a3efad125232..4f6a11c2d942b455dbf435ef5d8f7842530ea1f1 100644
--- a/indra/llrender/llimagegl.h
+++ b/indra/llrender/llimagegl.h
@@ -150,7 +150,7 @@ class LLImageGL : public LLThreadSafeRefCount
 
 	// STATICS
 public:	
-	static std::set<LLImageGL*> LLImageGL::sImageList;
+	static std::set<LLImageGL*> sImageList;
 	static S32 sCount;
 	
 	static F32 sLastFrameTime;
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index d682c7a36a57b9f8cbe225204ba6817cbe449d4f..c9ebd64c282f8fdd6f609c1a6de162c03c2601bb 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -288,8 +288,8 @@ class LLFloaterView : public LLUICtrl
 	void			getMinimizePosition( S32 *left, S32 *bottom);
 	void			restoreAll();		// un-minimize all floaters
 	typedef std::set<LLView*> skip_list_t;
-	void LLFloaterView::pushVisibleAll(BOOL visible, const skip_list_t& skip_list = skip_list_t());
-	void LLFloaterView::popVisibleAll(const skip_list_t& skip_list = skip_list_t());
+	void pushVisibleAll(BOOL visible, const skip_list_t& skip_list = skip_list_t());
+	void popVisibleAll(const skip_list_t& skip_list = skip_list_t());
 
 	void			setCycleMode(BOOL mode);
 	BOOL			getCycleMode();
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 650596c7f746a398b870b13db1e50a718373fb99..8607d1d752522ddc1afa866a182fe6c85d7f3af9 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -528,8 +528,8 @@ void LLMenuItemGL::draw( void )
 		}
 	}
 
-	// underline "jump" key
-	if (getMenu()->jumpKeysActive())
+	// underline "jump" key only when keyboard navigation has been initiated
+	if (getMenu()->jumpKeysActive() && LLMenuGL::getKeyboardMode())
 	{
 		LLString upper_case_label = mLabel.getString();
 		LLString::toUpper(upper_case_label);
@@ -1792,8 +1792,8 @@ void LLMenuItemBranchDownGL::draw( void )
 				   LLFontGL::HCENTER, LLFontGL::BOTTOM, font_style );
 
 
-	// underline navigation key
-	if (getMenu()->jumpKeysActive())
+	// underline navigation key only when keyboard navigation has been initiated
+	if (getMenu()->jumpKeysActive() && LLMenuGL::getKeyboardMode())
 	{
 		LLString upper_case_label = mLabel.getString();
 		LLString::toUpper(upper_case_label);
@@ -4281,6 +4281,7 @@ BOOL LLMenuBarGL::handleHover( S32 x, S32 y, MASK mask )
 					((LLMenuItemGL*)viewp)->doIt();
 					LLMenuGL::setKeyboardMode(FALSE);
 				}
+				LLMenuGL::setKeyboardMode(FALSE);
 			}
 		}
 
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 0dca8f2550f65ad966877d4bef2f4f87b7b9dd6e..c15f417e657ed7fccf4f84212f0bc802fbd5f0fd 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -410,7 +410,7 @@ class LLMenuGL
 	virtual void drawBackground(LLMenuItemGL* itemp, LLColor4& color);
 	virtual void setVisible(BOOL visible);
 
-	virtual BOOL LLMenuGL::handleAcceleratorKey(KEY key, MASK mask);
+	virtual BOOL handleAcceleratorKey(KEY key, MASK mask);
 
 	LLMenuGL* getChildMenuByName(const LLString& name, BOOL recurse) const;
 	
diff --git a/indra/lscript/lscript_library/lscript_library.cpp b/indra/lscript/lscript_library/lscript_library.cpp
index 62183d079f10a3a4860566734d5d5a25bcf2be0e..2c2cdbabdc744c6c7feb63a776c0db55affa9da5 100644
--- a/indra/lscript/lscript_library/lscript_library.cpp
+++ b/indra/lscript/lscript_library/lscript_library.cpp
@@ -208,7 +208,7 @@ void LLScriptLibrary::init()
 	addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llCollisionSprite", NULL, "s", "llCollisionSprite(string impact_sprite)\nSuppress default collision sprites, replace default impact sprite with impact_sprite (empty string to just suppress)"));
 	addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetAnimation", "s", "k", "string llGetAnimation(key id)\nGet the currently playing locomotion animation for avatar id"));
 	addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llResetScript", NULL, NULL, "llResetScript()\nResets the script"));
-	addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llMessageLinked", NULL, "iisk", "llMessageLinked(integer linknum, integer num, string str, key id)\nSends num, str, and id to members of the link set(LINK_SET sends to all tasks,\nLINK_ALL_OTHERS to all other tasks,\nLINK_ALL_CHILDREN to all children"));
+	addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llMessageLinked", NULL, "iisk", "llMessageLinked(integer linknum, integer num, string str, key id)\nSends num, str, and id to members of the link set (LINK_ROOT sends to root task in a linked set,\nLINK_SET sends to all tasks,\nLINK_ALL_OTHERS to all other tasks,\nLINK_ALL_CHILDREN to all children,\nLINK_THIS to the task the script it is in)"));
 	addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llPushObject", NULL, "kvvi", "llPushObject(key id, vector impulse, vector ang_impulse, integer local)\nApplies impulse and ang_impulse to object id"));
 	addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llPassCollisions", NULL, "i", "llPassCollisions(integer pass)\nif pass == TRUE, collisions are passed from children on to parents (default is FALSE)"));
 	addFunction(new LLScriptLibraryFunction(10.f, 0.f, dummy_func, "llGetScriptName", "s", NULL, "llGetScriptName()\nReturns the script name"));
diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
index 1af40f89327bb9680b540cbf003c7b5b285b95cc..fae089486e15b677f43f2d9b80eaeb831a4ea729 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -75,6 +75,7 @@ NVIDIA GeForce 7300				.*NVIDIA.*GeForce 73.*					3
 NVIDIA GeForce 7600				.*NVIDIA.*GeForce 76.*					3
 NVIDIA GeForce 7800				.*NVIDIA.*GeForce 78.*					3
 NVIDIA GeForce 7900				.*NVIDIA.*GeForce 79.*					3
+NVIDIA GeForce 8800				.*NVIDIA.*GeForce 88.*					3
 NVIDIA GeForce FX 5100			.*NVIDIA.*GeForce FX 51.*				1
 NVIDIA GeForce FX 5200			.*NVIDIA.*GeForce FX 52.*				1
 NVIDIA GeForce FX 5500			.*NVIDIA.*GeForce FX 55.*				1
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index e958bd215201abcca1dbd5f36655ada80f1a8feb..34c178f50983a10f60aeed4aad2a6cedd8f2de27 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -132,6 +132,11 @@ BOOL LLChatBar::postBuild()
 	childSetAction("Say", onClickSay, this);
 	childSetAction("Shout", onClickShout, this);
 	childSetCommitCallback("Gesture", onCommitGesture, this);
+	LLButton * sayp = static_cast<LLButton*>(getChildByName("Say"));
+	if(sayp)
+	{
+		setDefaultBtn(sayp);
+	}
 
 	return TRUE;
 }
@@ -271,8 +276,8 @@ void LLChatBar::refresh()
 		gAgent.stopTyping();
 	}
 
-	childSetEnabled("Say", mInputEditor->getText().size());
-	childSetEnabled("Shout", mInputEditor->getText().size());
+	childSetEnabled("Say", mInputEditor->getText().size() > 0);
+	childSetEnabled("Shout", mInputEditor->getText().size() > 0);
 
 }
 
diff --git a/indra/newview/lldynamictexture.h b/indra/newview/lldynamictexture.h
index 6ff457e9a98468d6d611540f1275df8ae159cbc5..75a37aaa297c50756336abbf63c3d987f616ee69 100644
--- a/indra/newview/lldynamictexture.h
+++ b/indra/newview/lldynamictexture.h
@@ -60,7 +60,7 @@ class LLDynamicTexture
 	LLCoordGL mOrigin;
 
 	LLCamera mCamera;
-	static LLLinkedList<LLDynamicTexture> LLDynamicTexture::sInstances[ LLDynamicTexture::ORDER_COUNT ];
+	static LLLinkedList<LLDynamicTexture> sInstances[ LLDynamicTexture::ORDER_COUNT ];
 	static S32 sNumRenders;
 };
 
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 3c0ba7ae28de796435d16db7ee29350bab2db971..cf041c4bfbd9564a3a23a7d75a727b222b4ee3ca 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -3242,18 +3242,20 @@ void LLFolderView::removeSelectedItems( void )
 			{
 				new_selection = item_to_delete->getPreviousOpenNode(FALSE);
 			}
-			if (new_selection)
-			{
-				setSelectionFromRoot(new_selection, new_selection->isOpen(), gViewerWindow->childHasKeyboardFocus(this));
-			}
-			else
-			{
-				setSelectionFromRoot(NULL, gViewerWindow->childHasKeyboardFocus(this));
-			}
-
 			if(parent)
 			{
-				parent->removeItem(item_to_delete);
+				if (parent->removeItem(item_to_delete))
+				{
+					// change selection on successful delete
+					if (new_selection)
+					{
+						setSelectionFromRoot(new_selection, new_selection->isOpen(), gViewerWindow->childHasKeyboardFocus(this));
+					}
+					else
+					{
+						setSelectionFromRoot(NULL, gViewerWindow->childHasKeyboardFocus(this));
+					}
+				}
 			}
 			arrangeAll();
 		}
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 47ab6e6b87b08ebee03e6f7cdfe3816a60207bed..a0f098790f29d3e881fd61eba27ffa9b59902d5b 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -676,6 +676,7 @@ void LLItemBridge::performAction(LLFolderView* folder, LLInventoryModel* model,
 		LLInventoryObject* obj = model->getObject(mUUID);
 		if(!obj) return;
 		obj->removeFromServer();
+		LLPreview::hide(mUUID);
 		model->deleteObject(mUUID);
 		model->notifyObservers();
 	}
diff --git a/indra/newview/lljoystickbutton.h b/indra/newview/lljoystickbutton.h
index a9a8acdfafb20468db8f3ec797ad917d00670068..8b0a5665d428ee16edb539e35e97e5af0d911f2c 100644
--- a/indra/newview/lljoystickbutton.h
+++ b/indra/newview/lljoystickbutton.h
@@ -75,7 +75,7 @@ class LLJoystickAgentTurn
 
 	virtual void	onHeldDown();
 
-	static LLView* LLJoystickAgentTurn::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
+	static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
 
 };
 
@@ -96,7 +96,7 @@ class LLJoystickAgentSlide
 	virtual void	onHeldDown();
 	virtual void	onMouseUp();
 
-	static LLView* LLJoystickAgentSlide::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
+	static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
 };
 
 
diff --git a/indra/newview/llpanelcontents.h b/indra/newview/llpanelcontents.h
index 273ab20bc7115448646b976ae2431cfb8a1c545e..7701a2a5f2e1c5ac6e3729547d47b48a761f1662 100644
--- a/indra/newview/llpanelcontents.h
+++ b/indra/newview/llpanelcontents.h
@@ -21,7 +21,7 @@ class LLSpinCtrl;
 class LLPanelContents : public LLPanel
 {
 public:
-	virtual	BOOL LLPanelContents::postBuild();
+	virtual	BOOL postBuild();
 	LLPanelContents(const std::string& name);
 	virtual ~LLPanelContents();
 
diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp
index 82974da634fadbcf8bbf5e59109ba1cb2101b96a..23f5b381ca8bd25168b245f61b6e64e96d1bcc7c 100644
--- a/indra/newview/llpreview.cpp
+++ b/indra/newview/llpreview.cpp
@@ -286,12 +286,7 @@ void LLPreview::hide(const LLUUID& item_uuid)
 	if(found_it != LLPreview::sInstances.end())
 	{
 		LLPreview* instance = found_it->second;
-		if( instance->getParent() )
-		{
-			instance->getParent()->removeChild( instance );
-		}
-
-		delete instance;
+		instance->close();
 	}
 }
 
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index a50ded3b53b7828a99a45b89d7381fc431e2dccb..d1817c8cdae4083045cfaece0c8c8a9edac138a8 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -157,9 +157,12 @@ void LLPreviewTexture::init()
 	{
 		LLInventoryItem* item = getItem();
 		
-		childSetCommitCallback("desc", LLPreview::onText, this);
-		childSetText("desc", item->getDescription());
-		childSetPrevalidate("desc", &LLLineEditor::prevalidatePrintableNotPipe);
+		if (item)
+		{
+			childSetCommitCallback("desc", LLPreview::onText, this);
+			childSetText("desc", item->getDescription());
+			childSetPrevalidate("desc", &LLLineEditor::prevalidatePrintableNotPipe);
+		}
 	}
 }
 
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index a2698763f0782ac770589bec9dc803ef59d950e9..8f4df36f59051a0086fba42a1d0dadf189260647 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -3899,6 +3899,7 @@ void LLSelectMgr::sendAttach(U8 attachment_point)
 		return;
 	}
 
+	BOOL build_mode = gToolMgr->inEdit();
 	// Special case: Attach to default location for this object.
 	if (0 == attachment_point)
 	{
@@ -3908,6 +3909,10 @@ void LLSelectMgr::sendAttach(U8 attachment_point)
 			packObjectIDAndRotation, 
 			&attachment_point, 
 			SEND_ONLY_ROOTS );
+		if (!build_mode)
+		{
+			deselectAll();
+		}
 	}
 	else
 	{
@@ -3945,6 +3950,10 @@ void LLSelectMgr::sendAttach(U8 attachment_point)
 				packObjectIDAndRotation,
 				&attachment_point,
 				SEND_ONLY_ROOTS );
+			if (!build_mode)
+			{
+				deselectAll();
+			}
 		}
 	}
 }
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 8ab2b52a50d2190cbfd51dcb98e976cc656caf53..a305c1cfa4497b257b64a6132c9edd879174967f 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -6828,7 +6828,6 @@ void near_attach_object(BOOL success, void *user_data)
 	}
 	
 	gSelectMgr->sendAttach(attachment_id);
-	gSelectMgr->deselectTransient();
 }
 
 class LLObjectAttachToAvatar : public view_listener_t
@@ -6866,6 +6865,7 @@ void confirm_replace_attachment(S32 option, void* user_data)
 {
 	if (option == 0/*YES*/)
 	{
+		gSelectMgr->convertTransient();
 		LLViewerObject* selectedObject = gSelectMgr->getFirstRootObject();
 		if (selectedObject)
 		{
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 16ba5d29ea477db21b82ae89b78badd67f6af2ad..7d04f04528bd318820429eefd96440f983799d38 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -386,7 +386,7 @@ void LLEmbeddedItems::markSaved()
 class LLTextCmdInsertEmbeddedItem : public LLTextCmd
 {
 public:
-	LLTextCmdInsertEmbeddedItem::LLTextCmdInsertEmbeddedItem( S32 pos, LLInventoryItem* item )
+	LLTextCmdInsertEmbeddedItem( S32 pos, LLInventoryItem* item )
 		: LLTextCmd(pos, FALSE), 
 		  mExtCharValue(0)
 	{
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index df396c93be3ed3fb99e686a76e4590bd97a1c518..74a239e827dcb36269929b74a59121e0355db176 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -899,6 +899,12 @@ void LLViewerWindow::handleFocusLost(LLWindow *window)
 	}
 	gFocusMgr.setMouseCapture( NULL, NULL );
 
+	if (gMenuBarView)
+	{
+		// stop ALT-key access to menu
+		gMenuBarView->resetMenuTrigger();
+	}
+
 	// restore mouse cursor
 	gViewerWindow->showCursor();
 	gViewerWindow->getWindow()->setMouseClipping(FALSE);
@@ -2671,8 +2677,7 @@ BOOL LLViewerWindow::handlePerFrameHover()
 	if (gParcelMgr
 		&& !LLFloaterLand::floaterVisible()
 		&& !LLFloaterBuyLand::isOpen()
-		&& (!gFloaterTools || !gFloaterTools->getVisible())
-		&& !gToolMgr)
+		&& (!gFloaterTools || !gFloaterTools->getVisible()))
 	{
 		gParcelMgr->deselectLand();
 	}
diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h
index d2dcd764d5d37c4f5d4c6c8630c05a3cc67a4916..22572981a3491d58ed6b06c220b0c7bb543be549 100644
--- a/indra/newview/llwearable.h
+++ b/indra/newview/llwearable.h
@@ -112,8 +112,8 @@ class LLWearable
 	LLPtrSkipMap<S32, F32*>	mVisualParamMap;	// maps visual param id to weight
 	LLPtrSkipMap<S32, LLUUID*>	mTEMap;				// maps TE to Image ID
 
-	static const char* LLWearable::sTypeName[ WT_COUNT ];
-	static const char* LLWearable::sTypeLabel[ WT_COUNT ];
+	static const char* sTypeName[ WT_COUNT ];
+	static const char* sTypeLabel[ WT_COUNT ];
 };
 
 #endif  // LL_LLWEARABLE_H