From 70a0dbe8f8466438e12a45e70d0f901b9324f228 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Fri, 20 Nov 2009 22:57:59 +0200
Subject: Renamed classes and files for "Me" task panel for better readability.

Renamed files:
- indra/newview/llpanelmeprofile.{cpp,h} to llpanelme.{cpp,h}
- panel_me_profile.xml to panel_me.xml
- panel_profile_user.xml to panel_my_profile.xml

Renamed classes:
- LLPanelAvatarMeProfile to LLPanelMyProfile
- LLPanelMeProfile to LLPanelMe
- LLPanelMeProfileEdit to LLPanelMyProfileEdit

--HG--
branch : product-engine
---
 indra/newview/CMakeLists.txt                       |   4 +-
 indra/newview/llavataractions.cpp                  |   2 +-
 indra/newview/llpanelavatar.cpp                    |  22 +-
 indra/newview/llpanelavatar.h                      |   8 +-
 indra/newview/llpanelme.cpp                        | 233 +++++++++++
 indra/newview/llpanelme.h                          | 110 ++++++
 indra/newview/llpanelpicks.h                       |   2 +-
 indra/newview/llpanelprofile.h                     |   2 +-
 indra/newview/skins/default/xui/de/panel_me.xml    |   7 +
 indra/newview/skins/default/xui/en/panel_me.xml    |  52 +++
 .../skins/default/xui/en/panel_my_profile.xml      | 426 +++++++++++++++++++++
 .../skins/default/xui/en/panel_side_tray.xml       |   4 +-
 indra/newview/skins/default/xui/fr/panel_me.xml    |   7 +
 indra/newview/skins/default/xui/ja/panel_me.xml    |   7 +
 14 files changed, 864 insertions(+), 22 deletions(-)
 create mode 100644 indra/newview/llpanelme.cpp
 create mode 100644 indra/newview/llpanelme.h
 create mode 100644 indra/newview/skins/default/xui/de/panel_me.xml
 create mode 100644 indra/newview/skins/default/xui/en/panel_me.xml
 create mode 100644 indra/newview/skins/default/xui/en/panel_my_profile.xml
 create mode 100644 indra/newview/skins/default/xui/fr/panel_me.xml
 create mode 100644 indra/newview/skins/default/xui/ja/panel_me.xml

(limited to 'indra/newview')

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index e7458529be..3681f3eb93 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -324,7 +324,7 @@ set(viewer_SOURCE_FILES
     llpanelmediasettingsgeneral.cpp
     llpanelmediasettingspermissions.cpp
     llpanelmediasettingssecurity.cpp
-    llpanelmeprofile.cpp
+    llpanelme.cpp
     llpanelobject.cpp
     llpanelobjectinventory.cpp
     llpaneloutfitsinventory.cpp
@@ -818,7 +818,7 @@ set(viewer_HEADER_FILES
     llpanelmediasettingsgeneral.h
     llpanelmediasettingspermissions.h
     llpanelmediasettingssecurity.h
-    llpanelmeprofile.h
+    llpanelme.h
     llpanelobject.h
     llpanelobjectinventory.h
     llpaneloutfitsinventory.h
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 0844cca766..130f729df0 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -297,7 +297,7 @@ void LLAvatarActions::showProfile(const LLUUID& id)
 		//Show own profile
 		if(gAgent.getID() == id)
 		{
-			LLSideTray::getInstance()->showPanel("panel_me_profile", params);
+			LLSideTray::getInstance()->showPanel("panel_me", params);
 		}
 		//Show other user profile
 		else
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 2254684f21..146be0df7f 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -119,7 +119,7 @@ BOOL LLDropTarget::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 static LLDefaultChildRegistry::Register<LLDropTarget> r("drop_target");
 
 static LLRegisterPanelClassWrapper<LLPanelAvatarProfile> t_panel_profile("panel_profile");
-static LLRegisterPanelClassWrapper<LLPanelAvatarMeProfile> t_panel_me_profile("panel_me_profile");
+static LLRegisterPanelClassWrapper<LLPanelMyProfile> t_panel_my_profile("panel_my_profile");
 static LLRegisterPanelClassWrapper<LLPanelAvatarNotes> t_panel_notes("panel_notes");
 
 //-----------------------------------------------------------------------------
@@ -585,19 +585,19 @@ void LLPanelAvatarProfile::onOverflowButtonClicked()
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 
-LLPanelAvatarMeProfile::LLPanelAvatarMeProfile()
+LLPanelMyProfile::LLPanelMyProfile()
 : LLPanelAvatarProfile()
 {
 }
 
-BOOL LLPanelAvatarMeProfile::postBuild()
+BOOL LLPanelMyProfile::postBuild()
 {
 	LLPanelAvatarProfile::postBuild();
 
 	mStatusCombobox = getChild<LLComboBox>("status_combo");
 
-	childSetCommitCallback("status_combo", boost::bind(&LLPanelAvatarMeProfile::onStatusChanged, this), NULL);
-	childSetCommitCallback("status_me_message_text", boost::bind(&LLPanelAvatarMeProfile::onStatusMessageChanged, this), NULL);
+	childSetCommitCallback("status_combo", boost::bind(&LLPanelMyProfile::onStatusChanged, this), NULL);
+	childSetCommitCallback("status_me_message_text", boost::bind(&LLPanelMyProfile::onStatusMessageChanged, this), NULL);
 
 	resetControls();
 	resetData();
@@ -605,12 +605,12 @@ BOOL LLPanelAvatarMeProfile::postBuild()
 	return TRUE;
 }
 
-void LLPanelAvatarMeProfile::onOpen(const LLSD& key)
+void LLPanelMyProfile::onOpen(const LLSD& key)
 {
 	LLPanelProfileTab::onOpen(key);
 }
 
-void LLPanelAvatarMeProfile::processProfileProperties(const LLAvatarData* avatar_data)
+void LLPanelMyProfile::processProfileProperties(const LLAvatarData* avatar_data)
 {
 	fillCommonData(avatar_data);
 
@@ -621,7 +621,7 @@ void LLPanelAvatarMeProfile::processProfileProperties(const LLAvatarData* avatar
 	fillAccountStatus(avatar_data);
 }
 
-void LLPanelAvatarMeProfile::fillStatusData(const LLAvatarData* avatar_data)
+void LLPanelMyProfile::fillStatusData(const LLAvatarData* avatar_data)
 {
 	std::string status;
 	if (gAgent.getAFK())
@@ -640,7 +640,7 @@ void LLPanelAvatarMeProfile::fillStatusData(const LLAvatarData* avatar_data)
 	mStatusCombobox->setValue(status);
 }
 
-void LLPanelAvatarMeProfile::resetControls()
+void LLPanelMyProfile::resetControls()
 {
 	childSetVisible("status_panel", false);
 	childSetVisible("profile_buttons_panel", false);
@@ -650,7 +650,7 @@ void LLPanelAvatarMeProfile::resetControls()
 	childSetVisible("profile_me_buttons_panel", true);
 }
 
-void LLPanelAvatarMeProfile::onStatusChanged()
+void LLPanelMyProfile::onStatusChanged()
 {
 	LLSD::String status = mStatusCombobox->getValue().asString();
 
@@ -672,7 +672,7 @@ void LLPanelAvatarMeProfile::onStatusChanged()
 	}
 }
 
-void LLPanelAvatarMeProfile::onStatusMessageChanged()
+void LLPanelMyProfile::onStatusMessageChanged()
 {
 	updateData();
 }
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index a0caf0c915..f2a744dde0 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -47,7 +47,7 @@ enum EOnlineStatus
 };
 
 /**
-* Base class for any Profile View or Me Profile Panel.
+* Base class for any Profile View or My Profile Panel.
 */
 class LLPanelProfileTab
 	: public LLPanel
@@ -148,7 +148,7 @@ protected:
 	virtual void processGroupProperties(const LLAvatarGroups* avatar_groups);
 
 	/**
-	 * Fills common for Avatar profile and Me Profile fields.
+	 * Fills common for Avatar profile and My Profile fields.
 	 */
 	virtual void fillCommonData(const LLAvatarData* avatar_data);
 
@@ -190,11 +190,11 @@ private:
 /**
  * Panel for displaying own first and second life related info.
  */
-class LLPanelAvatarMeProfile
+class LLPanelMyProfile
 	: public LLPanelAvatarProfile
 {
 public:
-	LLPanelAvatarMeProfile();
+	LLPanelMyProfile();
 
 	/*virtual*/ BOOL postBuild();
 
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
new file mode 100644
index 0000000000..0c7da30b03
--- /dev/null
+++ b/indra/newview/llpanelme.cpp
@@ -0,0 +1,233 @@
+/** 
+ * @file llpanelme.cpp
+ * @brief Side tray "Me" (My Profile) panel
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * 
+ * Copyright (c) 2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llpanelprofile.h"
+#include "llavatarconstants.h"
+#include "llpanelme.h"
+#include "llagent.h"
+#include "llagentwearables.h"
+#include "lliconctrl.h"
+#include "lltabcontainer.h"
+#include "lltexturectrl.h"
+
+#define PICKER_SECOND_LIFE "2nd_life_pic"
+#define PICKER_FIRST_LIFE "real_world_pic"
+#define PANEL_PROFILE "panel_profile"
+
+static LLRegisterPanelClassWrapper<LLPanelMyProfileEdit> t_panel_me_profile_edit("edit_profile_panel");
+static LLRegisterPanelClassWrapper<LLPanelMe> t_panel_me_profile("panel_me_profile_view");
+
+LLPanelMe::LLPanelMe(void) 
+ : LLPanelProfile()
+ , mEditPanel(NULL)
+{
+	setAvatarId(gAgent.getID());
+}
+
+BOOL LLPanelMe::postBuild()
+{
+	LLPanelProfile::postBuild();
+
+	getTabContainer()[PANEL_PROFILE]->childSetAction("edit_profile_btn", boost::bind(&LLPanelMe::onEditProfileClicked, this), this);
+	getTabContainer()[PANEL_PROFILE]->childSetAction("edit_appearance_btn", boost::bind(&LLPanelMe::onEditAppearanceClicked, this), this);
+
+	return TRUE;
+}
+
+void LLPanelMe::onOpen(const LLSD& key)
+{
+	LLPanelProfile::onOpen(key);
+}
+
+void LLPanelMe::buildEditPanel()
+{
+	if (NULL == mEditPanel)
+	{
+		mEditPanel = new LLPanelMyProfileEdit();
+		mEditPanel->childSetAction("save_btn", boost::bind(&LLPanelMe::onSaveChangesClicked, this), this);
+		mEditPanel->childSetAction("cancel_btn", boost::bind(&LLPanelMe::onCancelClicked, this), this);
+	}
+}
+
+
+void LLPanelMe::onEditProfileClicked()
+{
+	buildEditPanel();
+	togglePanel(mEditPanel);
+	mEditPanel->onOpen(getAvatarId());
+}
+
+void LLPanelMe::onEditAppearanceClicked()
+{
+	if (gAgentWearables.areWearablesLoaded())
+	{
+		gAgent.changeCameraToCustomizeAvatar();
+	}
+}
+
+void LLPanelMe::onSaveChangesClicked()
+{
+	LLAvatarData data = LLAvatarData();
+	data.avatar_id = gAgent.getID();
+	data.image_id = mEditPanel->getChild<LLTextureCtrl>(PICKER_SECOND_LIFE)->getImageAssetID();
+	data.fl_image_id = mEditPanel->getChild<LLTextureCtrl>(PICKER_FIRST_LIFE)->getImageAssetID();
+	data.about_text = mEditPanel->childGetValue("sl_description_edit").asString();
+	data.fl_about_text = mEditPanel->childGetValue("fl_description_edit").asString();
+	data.profile_url = mEditPanel->childGetValue("homepage_edit").asString();
+	data.allow_publish = mEditPanel->childGetValue("show_in_search_checkbox");
+
+	LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesUpdate(&data);
+	togglePanel(mEditPanel);
+	onOpen(getAvatarId());
+}
+
+void LLPanelMe::onCancelClicked()
+{
+	togglePanel(mEditPanel);
+}
+
+//////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+
+LLPanelMyProfileEdit::LLPanelMyProfileEdit() 
+ : LLPanelMyProfile()
+{
+	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_edit_profile.xml");
+
+	setAvatarId(gAgent.getID());
+}
+
+void LLPanelMyProfileEdit::onOpen(const LLSD& key)
+{
+	resetData();
+
+	// Disable editing until data is loaded, or edited fields will be overwritten when data
+	// is loaded.
+	enableEditing(false);
+	LLPanelMyProfile::onOpen(getAvatarId());
+}
+
+void LLPanelMyProfileEdit::processProperties(void* data, EAvatarProcessorType type)
+{
+	if(APT_PROPERTIES == type)
+	{
+		const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data);
+		if(avatar_data && getAvatarId() == avatar_data->avatar_id)
+		{
+			// *TODO dzaporozhan
+			// Workaround for ticket EXT-1099, waiting for fix for ticket EXT-1128
+			enableEditing(true);
+			processProfileProperties(avatar_data);
+			LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this);
+		}
+	}
+}
+
+void LLPanelMyProfileEdit::processProfileProperties(const LLAvatarData* avatar_data)
+{
+	fillCommonData(avatar_data);
+
+	fillOnlineStatus(avatar_data);
+
+	fillPartnerData(avatar_data);
+
+	fillAccountStatus(avatar_data);
+
+	childSetValue("show_in_search_checkbox", (BOOL)(avatar_data->flags & AVATAR_ALLOW_PUBLISH));
+
+	std::string first, last;
+	BOOL found = gCacheName->getName(avatar_data->avatar_id, first, last);
+	if (found)
+	{
+		childSetTextArg("name_text", "[FIRST]", first);
+		childSetTextArg("name_text", "[LAST]", last);
+	}
+}
+
+BOOL LLPanelMyProfileEdit::postBuild()
+{
+	initTexturePickerMouseEvents();
+
+	childSetTextArg("partner_edit_link", "[URL]", getString("partner_edit_link_url"));
+
+	return LLPanelAvatarProfile::postBuild();
+}
+/**
+ * Inits map with texture picker and appropriate edit icon.
+ * Sets callbacks of Mouse Enter and Mouse Leave signals of Texture Pickers 
+ */
+void LLPanelMyProfileEdit::initTexturePickerMouseEvents()
+{
+	LLTextureCtrl* text_pic = getChild<LLTextureCtrl>(PICKER_SECOND_LIFE);	
+	LLIconCtrl* text_icon = getChild<LLIconCtrl>("2nd_life_edit_icon");
+	mTextureEditIconMap[text_pic->getName()] = text_icon;
+	text_pic->setMouseEnterCallback(boost::bind(&LLPanelMyProfileEdit::onTexturePickerMouseEnter, this, _1));
+	text_pic->setMouseLeaveCallback(boost::bind(&LLPanelMyProfileEdit::onTexturePickerMouseLeave, this, _1));
+	text_icon->setVisible(FALSE);
+
+	text_pic = getChild<LLTextureCtrl>(PICKER_FIRST_LIFE);
+	text_icon = getChild<LLIconCtrl>("real_world_edit_icon");
+	mTextureEditIconMap[text_pic->getName()] = text_icon;
+	text_pic->setMouseEnterCallback(boost::bind(&LLPanelMyProfileEdit::onTexturePickerMouseEnter, this, _1));
+	text_pic->setMouseLeaveCallback(boost::bind(&LLPanelMyProfileEdit::onTexturePickerMouseLeave, this, _1));
+	text_icon->setVisible(FALSE);
+}
+
+void LLPanelMyProfileEdit::resetData()
+{
+	LLPanelMyProfile::resetData();
+
+	childSetTextArg("name_text", "[FIRST]", LLStringUtil::null);
+	childSetTextArg("name_text", "[LAST]", LLStringUtil::null);
+}
+
+void LLPanelMyProfileEdit::onTexturePickerMouseEnter(LLUICtrl* ctrl)
+{
+	mTextureEditIconMap[ctrl->getName()]->setVisible(TRUE);
+}
+void LLPanelMyProfileEdit::onTexturePickerMouseLeave(LLUICtrl* ctrl)
+{
+	mTextureEditIconMap[ctrl->getName()]->setVisible(FALSE);
+}
+
+void LLPanelMyProfileEdit::enableEditing(bool enable)
+{
+	childSetEnabled("2nd_life_pic", enable);
+	childSetEnabled("real_world_pic", enable);
+	childSetEnabled("sl_description_edit", enable);
+	childSetEnabled("fl_description_edit", enable);
+	childSetEnabled("homepage_edit", enable);
+	childSetEnabled("show_in_search_checkbox", enable);
+}
diff --git a/indra/newview/llpanelme.h b/indra/newview/llpanelme.h
new file mode 100644
index 0000000000..e16532a445
--- /dev/null
+++ b/indra/newview/llpanelme.h
@@ -0,0 +1,110 @@
+/** 
+ * @file llpanelme.h
+ * @brief Side tray "Me" (My Profile) panel
+ *
+ * $LicenseInfo:firstyear=2009&license=viewergpl$
+ * 
+ * Copyright (c) 2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLPANELMEPROFILE_H
+#define LL_LLPANELMEPROFILE_H
+
+#include "llpanel.h"
+#include "llpanelavatar.h"
+
+class LLPanelMyProfileEdit;
+class LLPanelProfile;
+class LLIconCtrl;
+
+/**
+* Panel for displaying Agent's profile, it consists of two sub panels - Profile
+* and Picks. 
+* LLPanelMe allows user to edit his profile and picks.
+*/
+class LLPanelMe : public LLPanelProfile
+{
+	LOG_CLASS(LLPanelMe);
+
+public:
+
+	LLPanelMe();
+
+	/*virtual*/ void onOpen(const LLSD& key);
+
+	/*virtual*/ BOOL postBuild();
+
+private:
+
+	void buildEditPanel();
+
+	void onEditProfileClicked();
+	void onEditAppearanceClicked();
+	void onSaveChangesClicked();
+	void onCancelClicked();
+
+	LLPanelMyProfileEdit *  mEditPanel;
+
+};
+
+class LLPanelMyProfileEdit : public LLPanelMyProfile
+{
+	LOG_CLASS(LLPanelMyProfileEdit);
+
+public:
+
+	LLPanelMyProfileEdit();
+
+	/*virtual*/void processProperties(void* data, EAvatarProcessorType type);
+	
+	/*virtual*/BOOL postBuild();
+
+	/*virtual*/ void onOpen(const LLSD& key);
+
+protected:	
+
+	/*virtual*/void resetData();
+
+	void processProfileProperties(const LLAvatarData* avatar_data);
+
+private:
+	void initTexturePickerMouseEvents();
+	void onTexturePickerMouseEnter(LLUICtrl* ctrl);
+	void onTexturePickerMouseLeave(LLUICtrl* ctrl);
+
+	/**
+	 * Enabled/disables controls to prevent overwriting edited data upon receiving
+	 * current data from server.
+	 */
+	void enableEditing(bool enable);
+
+private:
+	// map TexturePicker name => Edit Icon pointer should be visible while hovering Texture Picker
+	typedef std::map<std::string, LLIconCtrl*> texture_edit_icon_map_t;
+	texture_edit_icon_map_t mTextureEditIconMap;
+};
+
+#endif // LL_LLPANELMEPROFILE_H
diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h
index 4b90ea5048..b17b6d6fe9 100644
--- a/indra/newview/llpanelpicks.h
+++ b/indra/newview/llpanelpicks.h
@@ -83,7 +83,7 @@ public:
 	LLClassifiedItem* getSelectedClassifiedItem();
 
 	//*NOTE top down approch when panel toggling is done only by 
-	// parent panels failed to work (picks related code was in me profile panel)
+	// parent panels failed to work (picks related code was in my profile panel)
 	void setProfilePanel(LLPanelProfile* profile_panel);
 
 private:
diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h
index e0b827c986..e216eb70f2 100644
--- a/indra/newview/llpanelprofile.h
+++ b/indra/newview/llpanelprofile.h
@@ -40,7 +40,7 @@
 class LLTabContainer;
 
 /**
-* Base class for Profile View and Me Profile.
+* Base class for Profile View and My Profile.
 */
 class LLPanelProfile : public LLPanel
 {
diff --git a/indra/newview/skins/default/xui/de/panel_me.xml b/indra/newview/skins/default/xui/de/panel_me.xml
new file mode 100644
index 0000000000..a685a430f0
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_me.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ich" name="panel_me">
+	<tab_container name="tabs">
+		<panel label="Mein Profil" name="panel_profile"/>
+		<panel label="Auswahl" name="panel_picks"/>
+	</tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml
new file mode 100644
index 0000000000..a99777848b
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_me.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ background_visible="true"
+ border="false"
+ follows="all"
+ height="570"
+ label="My Profile"
+ layout="topleft"
+ left="0"
+ name="panel_me"
+ top="0"
+ width="333">
+   <!--<text
+    type="string"
+    follows="top|left|right"
+    font="SansSerifHugeBold"
+    height="20"
+    layout="topleft"
+    left="15"
+    name="user_name"
+    text_color="white"
+    top="0"
+    mouse_opaque="true"
+    width="280">
+          (Loading...)
+   </text> -->
+    <tab_container
+     follows="all"
+     height="575"
+     halign="center"
+     layout="topleft"
+     left="10"
+     name="tabs"
+     tab_min_width="95"
+     tab_height="30"
+     tab_position="top"
+     top_pad="10"
+     width="313">
+      <panel
+         class="panel_my_profile"
+         filename="panel_my_profile.xml"
+         label="PROFILE"
+         help_topic="panel_my_profile_tab"
+         name="panel_profile" />
+      <panel
+         class="panel_picks"
+         filename="panel_picks.xml"
+         label="PICKS"
+         help_topic="panel_my_picks_tab"
+         name="panel_picks" />
+    </tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml
new file mode 100644
index 0000000000..e04eda9464
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_my_profile.xml
@@ -0,0 +1,426 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ follows="all"
+ height="535"
+ label="Profile"
+ layout="topleft"
+ left="0"
+ name="panel_profile"
+ top="0"
+ width="313">
+    <string
+     name="CaptionTextAcctInfo">
+        [ACCTTYPE]
+[PAYMENTINFO] [AGEVERIFICATION]
+    </string>
+    <string
+     name="payment_update_link_url">
+        http://www.secondlife.com/account/billing.php?lang=en
+    </string>
+    <string
+     name="partner_edit_link_url">
+        http://www.secondlife.com/account/partners.php?lang=en
+    </string>
+    <string
+     name="my_account_link_url"
+     value="http://secondlife.com/account" />
+    <string
+     name="no_partner_text"
+     value="None" />
+ <scroll_container
+     color="DkGray2"
+     follows="all"
+     height="485"
+     layout="topleft"
+     name="profile_scroll"
+     reserve_scroll_corner="true"
+     opaque="true"
+     top="0"
+     width="313">
+      <panel
+         name="scroll_content_panel"
+         follows="left|top|right"
+          height="485"
+         layout="topleft"
+         top="0"
+         left="0"
+         width="313">
+	 <panel
+         follows="left|top"
+         height="117"
+         layout="topleft"
+         left="10"
+         name="second_life_image_panel"
+         top="0"
+         width="280">
+            <texture_picker
+             allow_no_texture="true"
+             default_image_name="None"
+             enabled="false"
+             follows="top|left"
+             height="117"
+             layout="topleft"
+             left="0"
+             name="2nd_life_pic"
+             top="10"
+             width="102" />
+           <icon
+           height="102"
+           image_name="Blank"
+           layout="topleft"
+           name="2nd_life_edit_icon"
+           label=""
+           left="0"
+           tool_tip="Click the Edit Profile button below to change image"
+           top="10"
+           width="102" />
+            <text
+             follows="left|top|right"
+	     font.style="BOLD"
+             height="15"
+             layout="topleft"
+             left_pad="10"
+             name="title_sl_descr_text"
+             text_color="white"
+             top_delta="0"
+             value="[SECOND_LIFE]:"
+             width="165" />
+            <expandable_text
+             follows="left|top|right"
+             height="95"
+             layout="topleft"
+             left="107"
+             textbox.max_length="512"
+             name="sl_description_edit"
+             top_pad="-3"
+             width="173"
+             expanded_bg_visible="true"
+             expanded_bg_color="DkGray">
+                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
+            </expandable_text>
+        </panel>
+        <panel
+         follows="left|top"
+         height="117"
+         layout="topleft"
+	 top_pad="10"
+         left="10"
+         name="first_life_image_panel"
+         width="280">
+            <texture_picker
+             allow_no_texture="true"
+             default_image_name="None"
+             enabled="false"
+             follows="top|left"
+             height="117"
+             layout="topleft"
+             left="0"
+             name="real_world_pic"
+             width="102" />
+           <icon
+           height="102"
+           image_name="Blank"
+           layout="topleft"
+           name="real_world_edit_icon"
+           label=""
+           left="0"
+           tool_tip="Click the Edit Profile button below to change image"
+           top="4"
+           width="102" />
+            <text
+             follows="left|top|right"
+	     font.style="BOLD"
+             height="15"
+             layout="topleft"
+             left_pad="10"
+             name="title_rw_descr_text"
+             text_color="white"
+             top_delta="0"
+             value="Real World:"
+             width="165" />
+            <expandable_text
+             follows="left|top|right"
+             height="95"
+             layout="topleft"
+             left="107"
+             textbox.max_length="512"
+             name="fl_description_edit"
+             top_pad="-3"
+             width="173"
+             expanded_bg_visible="true"
+             expanded_bg_color="DkGray">
+                Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
+            </expandable_text>
+        </panel>
+	
+	
+	<!-- <panel
+       name="lifes_images_panel"
+         follows="left|top|right"
+         height="244"
+         layout="topleft"
+         top="0"
+         left="0"
+         width="285">
+	 <panel
+         follows="left|top"
+         height="117"
+         layout="topleft"
+         left="10"
+         name="second_life_image_panel"
+         top="0"
+         width="285">
+          <text
+             follows="left|top|right"
+	     font.style="BOLD"
+             height="15"
+             layout="topleft"
+             left="0"
+            name="second_life_photo_title_text"
+             text_color="white"
+             value="[SECOND_LIFE]:"
+             width="170" />
+            <texture_picker
+             allow_no_texture="true"
+             default_image_name="None"
+             enabled="false"
+             follows="top|left"
+             height="117"
+             layout="topleft"
+             left="0"
+             name="2nd_life_pic"
+             top_pad="0"
+             width="102" />
+          </panel>
+           <icon
+           height="18"
+           image_name="AddItem_Off"
+           layout="topleft"
+           name="2nd_life_edit_icon"
+           label=""
+           left="87"
+           tool_tip="Click to select an image"
+           top="25"
+           width="18" />
+      </panel> -->
+	
+	
+	
+	
+        <text
+         type="string"
+         follows="left|top"
+         font="SansSerifSmall"
+	 font.style="BOLD"
+         height="15"
+         layout="topleft"
+         left="10"
+         name="me_homepage_text"
+         text_color="white"
+         top_pad="0"
+         width="280">
+             Homepage:
+        </text>
+        <text
+         follows="left|top"
+         height="15"
+         layout="topleft"
+         left="10"
+         name="homepage_edit"
+         top_pad="0"
+         value="http://librarianavengers.org"
+         width="280"
+         word_wrap="false"
+         use_ellipses="true"
+         />
+        <text
+         follows="left|top"
+	 font.style="BOLD"
+         height="10"
+         layout="topleft"
+         left="10"
+         name="title_member_text"
+         text_color="white"
+         top_pad="10"
+         value="Member Since:"
+         width="280" />
+        <text
+         follows="left|top"
+         height="15"
+         layout="topleft"
+         left="10"
+         name="register_date"
+         value="05/31/1976"
+         width="280"
+         word_wrap="true" />
+        <text
+         follows="left|top"
+	 font.style="BOLD"
+         height="15"
+         layout="topleft"
+         left="10"
+         name="title_acc_status_text"
+         text_color="white"
+         top_pad="10"
+         value="Account Status:"
+         width="280" />
+       <!-- <text
+         type="string"
+         follows="left|top"
+         font="SansSerifSmall"
+         height="15"
+         layout="topleft"
+         left_pad="10"
+         name="my_account_link"
+         top_delta="0"
+	 value="Go to Dashboard"
+         width="100"/> -->
+        <text
+         follows="left|top"
+         height="20"
+         layout="topleft"
+         left="10"
+         name="acc_status_text"
+         top_pad="0"
+         value="Resident. No payment info on file."
+         width="280"
+         word_wrap="true" />
+        <text
+         follows="left|top"
+	 font.style="BOLD"
+         height="15"
+         layout="topleft"
+         left="10"
+         name="title_partner_text"
+         text_color="white"
+         top_pad="5"
+         value="Partner:"
+         width="280" />
+        <panel
+         follows="left|top"
+         height="15"
+         layout="topleft"
+         left="10"
+         name="partner_data_panel"
+         top_pad="0"
+         width="280">
+            <text
+             follows="left|top"
+             height="10"
+             layout="topleft"
+             left="0"
+             name="partner_text"
+             top="0"
+             value="[FIRST] [LAST]"
+         width="280"
+             word_wrap="true" />
+         </panel>
+        <text
+         follows="left|top"
+	 font.style="BOLD"
+         height="15"
+         layout="topleft"
+         left="10"
+         name="title_groups_text"
+         text_color="white"
+         top_pad="8"
+         value="Groups:"
+         width="280" />
+                     <expandable_text
+         follows="left|top|bottom"
+         height="60"
+         layout="topleft"
+         left="10"
+             name="sl_groups"
+       top_pad="0"
+         width="280"
+             expanded_bg_visible="true"
+             expanded_bg_color="DkGray">
+            Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
+        </expandable_text>
+      </panel>
+ </scroll_container>
+ <panel
+     follows="bottom|left"
+     layout="topleft"
+     left="0"
+     name="profile_buttons_panel"
+     top_pad="2"
+     bottom="10"
+     height="19"
+     width="303">
+        <button
+         follows="bottom|left"
+         height="19"
+         label="Add Friend"
+         layout="topleft"
+         left="0"
+         mouse_opaque="false"
+         name="add_friend"
+         top="5"
+         width="75" />
+        <button
+         follows="bottom|left"
+         height="19"
+         label="IM"
+         layout="topleft"
+         name="im"
+         top="5"
+         left_pad="5"
+         width="45" />
+        <button
+         follows="bottom|left"
+         height="19"
+         label="Call"
+         layout="topleft"
+         name="call"
+         left_pad="5"
+         top="5"
+         width="45" />
+        <button
+         enabled="false"
+         follows="bottom|left"
+         height="19"
+         label="Map"
+         layout="topleft"
+         name="show_on_map_btn"
+         top="5"
+         left_pad="5"
+         width="45" />
+        <button
+         follows="bottom|left"
+         height="19"
+         label="Teleport"
+         layout="topleft"
+         name="teleport"
+         left_pad="5"
+         top="5"
+         width="80" />
+ </panel>
+ <panel
+     follows="bottom|left"
+     layout="topleft"
+     left="0"
+     top_pad="-17"
+     name="profile_me_buttons_panel"
+     visible="false"
+     height="19"
+     width="303">
+        <button
+         follows="bottom|right"
+         font="SansSerifSmall"
+         height="19"
+         left="10"
+         label="Edit Profile"
+         name="edit_profile_btn"
+         width="130" />
+        <button
+         follows="bottom|right"
+         height="19"
+         label="Edit Appearance"
+         left_pad="10"
+         name="edit_appearance_btn"
+         right="-10"
+         width="130" />
+ </panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml
index d02354a647..c4c8fa8145 100644
--- a/indra/newview/skins/default/xui/en/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml
@@ -103,8 +103,8 @@
   >
       <panel
         class="panel_me_profile_view"
-        name="panel_me_profile"
-        filename="panel_me_profile.xml"
+        name="panel_me"
+        filename="panel_me.xml"
         label="Me"
       />
   </sidetray_tab>
diff --git a/indra/newview/skins/default/xui/fr/panel_me.xml b/indra/newview/skins/default/xui/fr/panel_me.xml
new file mode 100644
index 0000000000..5bedee4616
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_me.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Moi" name="panel_me">
+	<tab_container name="tabs">
+		<panel label="Mon Profil" name="panel_profile"/>
+		<panel label="Préférences" name="panel_picks"/>
+	</tab_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_me.xml b/indra/newview/skins/default/xui/ja/panel_me.xml
new file mode 100644
index 0000000000..84151f43cf
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_me.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="ミー" name="panel_me">
+	<tab_container name="tabs">
+		<panel label="プロフィール" name="panel_profile"/>
+		<panel label="ピック" name="panel_picks"/>
+	</tab_container>
+</panel>
-- 
cgit v1.2.3


From a3930c7ff754e09a686d4ec0eaeca0a7f752c008 Mon Sep 17 00:00:00 2001
From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com>
Date: Fri, 20 Nov 2009 19:27:33 -0500
Subject: Inventory Offer changes and clickable inventory slurls

---
 indra/newview/llinventoryobserver.h                |   2 +-
 indra/newview/llviewerinventory.cpp                |  32 ++++
 indra/newview/llviewermessage.cpp                  | 196 +++++++++++----------
 indra/newview/llviewermessage.h                    |   5 +-
 .../skins/default/xui/en/menu_url_inventory.xml    |  28 +++
 .../newview/skins/default/xui/en/notifications.xml |  32 ++--
 6 files changed, 192 insertions(+), 103 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/en/menu_url_inventory.xml

(limited to 'indra/newview')

diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h
index 384e6292e8..e908506b33 100644
--- a/indra/newview/llinventoryobserver.h
+++ b/indra/newview/llinventoryobserver.h
@@ -113,7 +113,7 @@ public:
 
 	bool isEverythingComplete() const;
 	void fetchItems(const item_ref_t& ids);
-	virtual void done() = 0;
+	virtual void done() {};
 
 protected:
 	item_ref_t mComplete;
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 1d62ead843..bbdccad67b 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -56,11 +56,43 @@
 #include "lltrans.h"
 #include "llappearancemgr.h"
 #include "llfloatercustomize.h"
+#include "llcommandhandler.h"
+#include "llviewermessage.h"
 
 ///----------------------------------------------------------------------------
 /// Local function declarations, constants, enums, and typedefs
 ///----------------------------------------------------------------------------
 
+class LLInventoryHandler : public LLCommandHandler
+{
+public:
+	// requires trusted browser to trigger
+	LLInventoryHandler() : LLCommandHandler("inventory", UNTRUSTED_THROTTLE) { }
+	
+	bool handle(const LLSD& params, const LLSD& query_map,
+				LLMediaCtrl* web)
+	{
+		if (params.size() < 2) return false;
+		LLUUID inventory_id;
+		if (!inventory_id.set(params[0], FALSE))
+		{
+			return false;
+		}
+		
+		const std::string verb = params[1].asString();
+		if (verb == "select")
+		{
+			std::vector<LLUUID> items_to_open;
+			items_to_open.push_back(inventory_id);
+			open_inventory_offer(items_to_open, "");
+			return true;
+		}
+		
+		return false;
+	}
+};
+LLInventoryHandler gInventoryHandler;
+
 ///----------------------------------------------------------------------------
 /// Class LLViewerInventoryItem
 ///----------------------------------------------------------------------------
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index ef6a621323..d824b1d708 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -726,7 +726,7 @@ public:
 	LLOpenAgentOffer(const std::string& from_name) : mFromName(from_name) {}
 	/*virtual*/ void done()
 	{
-		open_offer(mComplete, mFromName);
+		open_inventory_offer(mComplete, mFromName);
 		gInventory.removeObserver(this);
 		delete this;
 	}
@@ -875,7 +875,7 @@ bool check_offer_throttle(const std::string& from_name, bool check_only)
 	}
 }
  
-void open_offer(const std::vector<LLUUID>& items, const std::string& from_name)
+void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& from_name)
 {
 	std::vector<LLUUID>::const_iterator it = items.begin();
 	std::vector<LLUUID>::const_iterator end = items.end();
@@ -1060,22 +1060,8 @@ LLSD LLOfferInfo::asLLSD()
 	return sd;
 }
 
-bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& response)
- {
-	LLChat chat;
-	std::string log_message;
-	S32 button = LLNotification::getSelectedOption(notification, response);
-
-	// For muting, we need to add the mute, then decline the offer.
-	// This must be done here because:
-	// * callback may be called immediately,
-	// * adding the mute sends a message,
-	// * we can't build two messages at once.
-	if (2 == button)
-	{
-		gCacheName->get(mFromID, mFromGroup, &inventory_offer_mute_callback);
-	}
-
+void LLOfferInfo::send_auto_receive_response(void)
+{	
 	LLMessageSystem* msg = gMessageSystem;
 	msg->newMessageFast(_PREHASH_ImprovedInstantMessage);
 	msg->nextBlockFast(_PREHASH_AgentData);
@@ -1094,6 +1080,31 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 	msg->addU32Fast(_PREHASH_ParentEstateID, 0);
 	msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null);
 	msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent());
+	
+	// Auto Receive Message. The math for the dialog works, because the accept
+	// for inventory_offered, task_inventory_offer or
+	// group_notice_inventory is 1 greater than the offer integer value.
+	// Generates IM_INVENTORY_ACCEPTED, IM_TASK_INVENTORY_ACCEPTED, 
+	// or IM_GROUP_NOTICE_INVENTORY_ACCEPTED
+	msg->addU8Fast(_PREHASH_Dialog, (U8)(mIM + 1));
+	msg->addBinaryDataFast(_PREHASH_BinaryBucket, &(mFolderID.mData),
+						   sizeof(mFolderID.mData));
+	// send the message
+	msg->sendReliable(mHost);
+	
+	if(IM_INVENTORY_OFFERED == mIM)
+	{
+		// add buddy to recent people list
+		LLRecentPeople::instance().add(mFromID);
+	}
+}
+
+bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& response)
+{
+	LLChat chat;
+	std::string log_message;
+	S32 button = LLNotification::getSelectedOption(notification, response);
+	
 	LLInventoryObserver* opener = NULL;
 	LLViewerInventoryCategory* catp = NULL;
 	catp = (LLViewerInventoryCategory*)gInventory.getCategory(mObjectID);
@@ -1102,6 +1113,16 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 	{
 		itemp = (LLViewerInventoryItem*)gInventory.getItem(mObjectID);
 	}
+	 
+	// For muting, we need to add the mute, then decline the offer.
+	// This must be done here because:
+	// * callback may be called immediately,
+	// * adding the mute sends a message,
+	// * we can't build two messages at once.
+	if (2 == button)
+	{
+		gCacheName->get(mFromID, mFromGroup, &inventory_offer_mute_callback);
+	}
 
 	std::string from_string; // Used in the pop-up.
 	std::string chatHistory_string;  // Used in chat history.
@@ -1152,64 +1173,54 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 	
 	switch(button)
 	{
-	case IOR_ACCEPT:
-		// ACCEPT. The math for the dialog works, because the accept
-		// for inventory_offered, task_inventory_offer or
-		// group_notice_inventory is 1 greater than the offer integer value.
-		// Generates IM_INVENTORY_ACCEPTED, IM_TASK_INVENTORY_ACCEPTED, 
-		// or IM_GROUP_NOTICE_INVENTORY_ACCEPTED
-		msg->addU8Fast(_PREHASH_Dialog, (U8)(mIM + 1));
-		msg->addBinaryDataFast(_PREHASH_BinaryBucket, &(mFolderID.mData),
-					 sizeof(mFolderID.mData));
-		// send the message
-		msg->sendReliable(mHost);
-
-		//don't spam them if they are getting flooded
-		if (check_offer_throttle(mFromName, true))
-		{
-			log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString(".");
- 			chat.mText = log_message;
- 			LLFloaterChat::addChatHistory(chat);
-		}
-
+	case IOR_SHOW:
 		// we will want to open this item when it comes back.
 		LL_DEBUGS("Messaging") << "Initializing an opener for tid: " << mTransactionID
 				 << LL_ENDL;
 		switch (mIM)
 		{
 		case IM_INVENTORY_OFFERED:
-		{
-			// This is an offer from an agent. In this case, the back
-			// end has already copied the items into your inventory,
-			// so we can fetch it out of our inventory.
-			LLInventoryFetchObserver::item_ref_t items;
-			items.push_back(mObjectID);
-			LLOpenAgentOffer* open_agent_offer = new LLOpenAgentOffer(from_string);
-			open_agent_offer->fetchItems(items);
-			if(catp || (itemp && itemp->isComplete()))
-			{
-				open_agent_offer->done();
-			}
-			else
 			{
-				opener = open_agent_offer;
+				// This is an offer from an agent. In this case, the back
+				// end has already copied the items into your inventory,
+				// so we can fetch it out of our inventory.
+				LLInventoryFetchObserver::item_ref_t items;
+				items.push_back(mObjectID);
+				LLOpenAgentOffer* open_agent_offer = new LLOpenAgentOffer(from_string);
+				open_agent_offer->fetchItems(items);
+				if(catp || (itemp && itemp->isComplete()))
+				{
+					open_agent_offer->done();
+				}
+				else
+				{
+					opener = open_agent_offer;
+				}
 			}
-		}
 			break;
 		case IM_TASK_INVENTORY_OFFERED:
 		case IM_GROUP_NOTICE:
 		case IM_GROUP_NOTICE_REQUESTED:
-		{
 			// This is an offer from a task or group.
 			// We don't use a new instance of an opener
 			// We instead use the singular observer gOpenTaskOffer
 			// Since it already exists, we don't need to actually do anything
-		}
-		break;
+			break;
 		default:
 			LL_WARNS("Messaging") << "inventory_offer_callback: unknown offer type" << LL_ENDL;
 			break;
 		}	// end switch (mIM)
+			
+		// Show falls through to accept.
+			
+	case IOR_ACCEPT:
+		//don't spam them if they are getting flooded
+		if (check_offer_throttle(mFromName, true))
+		{
+			log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString(".");
+			chat.mText = log_message;
+			LLFloaterChat::addChatHistory(chat);
+		}
 		break;
 
 	case IOR_BUSY:
@@ -1218,31 +1229,15 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 	case IOR_MUTE:
 		// MUTE falls through to decline
 	case IOR_DECLINE:
-		// DECLINE. The math for the dialog works, because the decline
-		// for inventory_offered, task_inventory_offer or
-		// group_notice_inventory is 2 greater than the offer integer value.
-		// Generates IM_INVENTORY_DECLINED, IM_TASK_INVENTORY_DECLINED,
-		// or IM_GROUP_NOTICE_INVENTORY_DECLINED
-	default:
-		// close button probably (or any of the fall-throughs from above)
-		msg->addU8Fast(_PREHASH_Dialog, (U8)(mIM + 2));
-		msg->addBinaryDataFast(_PREHASH_BinaryBucket, EMPTY_BINARY_BUCKET, EMPTY_BINARY_BUCKET_SIZE);
-		// send the message
-		msg->sendReliable(mHost);
-
-		log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +".";
-		chat.mText = log_message;
-		if( LLMuteList::getInstance()->isMuted(mFromID ) && ! LLMuteList::getInstance()->isLinden(mFromName) )  // muting for SL-42269
-		{
-			chat.mMuted = TRUE;
-		}
-		LLFloaterChat::addChatHistory(chat);
-
-		// If it's from an agent, we have to fetch the item to throw
-		// it away. If it's from a task or group, just denying the 
-		// request will suffice to discard the item.
-		if(IM_INVENTORY_OFFERED == mIM)
 		{
+			log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +".";
+			chat.mText = log_message;
+			if( LLMuteList::getInstance()->isMuted(mFromID ) && ! LLMuteList::getInstance()->isLinden(mFromName) )  // muting for SL-42269
+			{
+				chat.mMuted = TRUE;
+			}
+			LLFloaterChat::addChatHistory(chat);
+			
 			LLInventoryFetchComboObserver::folder_ref_t folders;
 			LLInventoryFetchComboObserver::item_ref_t items;
 			items.push_back(mObjectID);
@@ -1258,20 +1253,21 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 				opener = discard_agent_offer;
 			}
 			
+			
+			if (busy &&	(!mFromGroup && !mFromObject))
+			{
+				busy_message(gMessageSystem, mFromID);
+			}
+			break;
 		}
-		if (busy &&	(!mFromGroup && !mFromObject))
-		{
-			busy_message(msg,mFromID);
-		}
+	default:
+		// close button probably
+		// The item has already been fetched and is in your inventory, we simply won't highlight it
+		// OR delete it if the notification gets killed, since we don't want that to be a vector for 
+		// losing inventory offers.
 		break;
 	}
 
-	if(IM_INVENTORY_OFFERED == mIM)
-	{
-		// add buddy to recent people list
-		LLRecentPeople::instance().add(mFromID);
-	}
-
 	if(opener)
 	{
 		gInventory.addObserver(opener);
@@ -1382,7 +1378,25 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task)
 	{
 		p.name = "UserGiveItem";
 	}
-
+	
+	// Prefetch the item into your local inventory.
+	LLInventoryFetchObserver::item_ref_t items;
+	items.push_back(info->mObjectID);
+	LLInventoryFetchObserver* fetch_item = new LLInventoryFetchObserver();
+	fetch_item->fetchItems(items);
+	if(fetch_item->isEverythingComplete())
+	{
+		fetch_item->done();
+	}
+	else
+	{
+		gInventory.addObserver(fetch_item);
+	}
+	
+	// In viewer 2 we're now auto receiving inventory offers and messaging as such (not sending reject messages).
+	info->send_auto_receive_response();
+	
+	// Pop up inv offer notification and let the user accept (keep), or reject (and silently delete) the inventory.
 	LLNotifications::instance().add(p);
 }
 
diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h
index e24da2013d..2d8930d2fe 100644
--- a/indra/newview/llviewermessage.h
+++ b/indra/newview/llviewermessage.h
@@ -59,7 +59,8 @@ enum InventoryOfferResponse
 	IOR_ACCEPT,
 	IOR_DECLINE,
 	IOR_MUTE,
-	IOR_BUSY
+	IOR_BUSY,
+	IOR_SHOW
 };
 
 BOOL can_afford_transaction(S32 cost);
@@ -197,6 +198,7 @@ void invalid_message_callback(LLMessageSystem*, void*, EMessageException);
 
 void process_initiate_download(LLMessageSystem* msg, void**);
 void start_new_inventory_observer();
+void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& from_name);
 
 struct LLOfferInfo
 {
@@ -218,6 +220,7 @@ struct LLOfferInfo
 	LLHost mHost;
 
 	LLSD asLLSD();
+	void send_auto_receive_response(void);
 	bool inventory_offer_callback(const LLSD& notification, const LLSD& response);
 
 };
diff --git a/indra/newview/skins/default/xui/en/menu_url_inventory.xml b/indra/newview/skins/default/xui/en/menu_url_inventory.xml
new file mode 100644
index 0000000000..cf9d1d5881
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_url_inventory.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<context_menu
+ layout="topleft"
+ name="Url Popup">
+    <menu_item_call
+     label="Show Inventory Item"
+     layout="topleft"
+     name="show_item">
+        <menu_item_call.on_click
+         function="Url.Execute" />
+    </menu_item_call>
+    <menu_item_separator
+     layout="topleft" />
+    <menu_item_call
+     label="Copy Name to clipboard"
+     layout="topleft"
+     name="url_copy_label">
+        <menu_item_call.on_click
+         function="Url.CopyLabel" />
+    </menu_item_call>
+    <menu_item_call
+     label="Copy SLurl to clipboard"
+     layout="topleft"
+     name="url_copy">
+        <menu_item_call.on_click
+         function="Url.CopyUrl" />
+    </menu_item_call>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 56cb54c975..f9715050ab 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4487,7 +4487,7 @@ You don&apos;t have permission to copy this.
    icon="notifytip.tga"
    name="InventoryAccepted"
    type="notifytip">
-[NAME] accepted your inventory offer.
+[NAME] received your inventory offer.
   </notification>
 
   <notification
@@ -4959,17 +4959,21 @@ No valid parcel could be found.
    icon="notify.tga"
    name="ObjectGiveItem"
    type="offer">
-An object named [OBJECTFROMNAME] owned by [NAME] has offered you [OBJECTTYPE]:
+An object named [OBJECTFROMNAME] owned by [NAME] has given you [OBJECTTYPE]:
 [ITEM_SLURL]
     <form name="form">
       <button
        index="0"
        name="Keep"
-       text="OK"/>
+       text="Keep"/>
+	  <button
+       index="4"
+       name="Show"
+       text="Show"/> 
       <button
        index="1"
        name="Discard"
-       text="Cancel"/>
+       text="Discard"/>
       <button
        index="2"
        name="Mute"
@@ -4986,11 +4990,15 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you a
       <button
        index="0"
        name="Keep"
-       text="OK"/>
+       text="Keep"/>
+	  <button
+       index="4"
+       name="Show"
+       text="Show"/> 
       <button
        index="1"
        name="Discard"
-       text="Cancel"/>
+       text="Discard"/>
       <button
        index="2"
        name="Mute"
@@ -5002,17 +5010,21 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you a
    icon="notify.tga"
    name="UserGiveItem"
    type="offer">
-[NAME] has offered you [OBJECTTYPE]:
+[NAME] has given you [OBJECTTYPE]:
 [ITEM_SLURL]
     <form name="form">
       <button
        index="0"
        name="Keep"
-       text="Accept"/>
+       text="Keep"/>
+      <button
+       index="4"
+       name="Show"
+       text="Show"/> 
       <button
        index="1"
        name="Discard"
-       text="No, thanks"/>
+       text="Discard"/>
     </form>
   </notification>
 
@@ -5747,7 +5759,7 @@ Are you sure you want to delete your teleport history?
    name="BottomTrayButtonCanNotBeShown"
    type="alert">
 Selected button can not be shown right now.
-The button will be shown when there is enough space for it.
+The button will be shown when there is enough space for it.
   </notification>
 
 
-- 
cgit v1.2.3


From e367e2efc23321d94ec4a4ae0264f885b4f0333b Mon Sep 17 00:00:00 2001
From: angela <angela@lindenlab.com>
Date: Mon, 23 Nov 2009 13:52:40 +0800
Subject: EXT-2159 Create Vertical Slider to use for zoom in / out controls in
 view

---
 .../newview/skins/default/xui/en/floater_test_slider.xml  | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_test_slider.xml b/indra/newview/skins/default/xui/en/floater_test_slider.xml
index 86ff82e01f..85d8bb2bb1 100644
--- a/indra/newview/skins/default/xui/en/floater_test_slider.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_slider.xml
@@ -2,7 +2,7 @@
 <floater
  legacy_header_height="18"
  can_resize="true"
- height="400"
+ height="500"
  layout="topleft"
  name="floater_test_slider"
  help_topic="floater_test_slider"
@@ -84,4 +84,17 @@
      name="red_slider"
      text_color="red"
      text_width="40" />
+	<slider
+	 width ="140"
+     bottom="490"
+     decimal_digits="1"
+     height="100"
+	 left="20"
+     label="Red Slider Vertical"
+     label_width="100"
+     layout="topleft"
+     name="red_slider_vertical"
+     text_color="red"
+	 orientation="vertical"
+     text_width="20" /> 
 </floater>
-- 
cgit v1.2.3


From dd9b1f819de025f1a6caa37cfbd4fd3394f9fa9e Mon Sep 17 00:00:00 2001
From: angela <angela@lindenlab.com>
Date: Mon, 23 Nov 2009 17:33:03 +0800
Subject: EXT-2297 Functionality Loss - Ability to copy (control+c) residents
 name from their profile & local chat

---
 indra/newview/llchathistory.cpp                    |  3 ++-
 indra/newview/llpanelprofileview.cpp               |  3 ++-
 .../skins/default/xui/en/panel_chat_header.xml     | 23 +++++++++++-----------
 .../skins/default/xui/en/panel_profile_view.xml    |  7 ++++---
 4 files changed, 20 insertions(+), 16 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 4ce3b50ed5..a95234099c 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -34,6 +34,7 @@
 #include "llchathistory.h"
 #include "llpanel.h"
 #include "lltextbox.h"
+#include "lltexteditor.h"
 #include "lluictrlfactory.h"
 #include "llscrollcontainer.h"
 #include "llavatariconctrl.h"
@@ -185,7 +186,7 @@ public:
 			mSourceType = CHAT_SOURCE_SYSTEM;
 		}
 
-		LLTextBox* userName = getChild<LLTextBox>("user_name");
+		LLTextEditor* userName = getChild<LLTextEditor>("user_name");
 
 		LLUIColor color = style_params.color;
 		userName->setReadOnlyColor(color);
diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp
index d4ab5013f9..c7c2484be3 100644
--- a/indra/newview/llpanelprofileview.cpp
+++ b/indra/newview/llpanelprofileview.cpp
@@ -43,6 +43,7 @@
 #include "llpanelpicks.h"
 #include "llpanelprofile.h"
 #include "llsidetraypanelcontainer.h"
+#include "lltexteditor.h"
 
 static LLRegisterPanelClassWrapper<LLPanelProfileView> t_panel_target_profile("panel_profile_view");
 
@@ -190,7 +191,7 @@ void LLPanelProfileView::processOnlineStatus(bool online)
 void LLPanelProfileView::onAvatarNameCached(const LLUUID& id, const std::string& first_name, const std::string& last_name, BOOL is_group)
 {
 	llassert(getAvatarId() == id);
-	getChild<LLTextBox>("user_name", FALSE)->setValue(first_name + " " + last_name);
+	getChild<LLTextEditor>("user_name", FALSE)->setValue(first_name + " " + last_name);
 }
 
 void LLPanelProfileView::togglePanel(LLPanel* panel)
diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml
index 7a3eae35a9..da175a75cd 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
-      background_visible="true"
+	 background_visible="true"
      bevel_style="in"
      bg_alpha_color="black"
      follows="top|left|right"
      height="24"
      label="im_header"
-     layout="topleft"
+	 layout="topleft"
      name="im_header"
      width="300">
-            <avatar_icon
+		<avatar_icon
          follows="left"
          height="18"
          image_name="Generic_Person"
@@ -19,18 +19,19 @@
          name="avatar_icon"
          top="3"
          width="18" />
-    <text
+    <text_editor
+	 read_only = "true"
      follows="left|right"
-      font.style="BOLD"
-         height="12"
-         layout="topleft"
-         left_pad="5"
+	 font.style="BOLD"
+	 height="18"
+	 layout="topleft"
+	 left_pad="5"
      right="-50"
      name="user_name"
      text_color="white"
-         top="8"
-         use_ellipses="true"
-         value="Erica Vader" />
+	 top="5"
+	 use_ellipses="true"
+	 value="Erica Vader" />
     <text
             font="SansSerifSmall"
          follows="right"
diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml
index b015346a79..8e683bffc1 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml
@@ -25,10 +25,11 @@
      tab_stop="false"
      top="2"
      width="23" />
-    <text
+    <text_editor
+	 read_only = "true"
      follows="top|left|right"
      font="SansSerifHugeBold"
-     height="26"
+     height="29"
      layout="topleft"
      left_pad="10"
      name="user_name"
@@ -52,7 +53,7 @@
      halign="center"
      layout="topleft"
      left="10"
- min_width="333"
+	 min_width="333"
      name="tabs"
      tab_min_width="80"
      tab_height="30"
-- 
cgit v1.2.3


From c889fa9ee1b4fd033a9dab40c19a7d21eb00c82b Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Mon, 23 Nov 2009 20:12:00 +0200
Subject: Renamed Me panel XUI class from "panel_me_profile_view" to
 "panel_me".

--HG--
branch : product-engine
---
 indra/newview/llpanelme.cpp                            | 2 +-
 indra/newview/skins/default/xui/en/panel_side_tray.xml | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index 0c7da30b03..e12da97f3b 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -46,7 +46,7 @@
 #define PANEL_PROFILE "panel_profile"
 
 static LLRegisterPanelClassWrapper<LLPanelMyProfileEdit> t_panel_me_profile_edit("edit_profile_panel");
-static LLRegisterPanelClassWrapper<LLPanelMe> t_panel_me_profile("panel_me_profile_view");
+static LLRegisterPanelClassWrapper<LLPanelMe> t_panel_me_profile("panel_me");
 
 LLPanelMe::LLPanelMe(void) 
  : LLPanelProfile()
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml
index c4c8fa8145..95242a9639 100644
--- a/indra/newview/skins/default/xui/en/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml
@@ -102,7 +102,7 @@
     background_visible="true"
   >
       <panel
-        class="panel_me_profile_view"
+        class="panel_me"
         name="panel_me"
         filename="panel_me.xml"
         label="Me"
-- 
cgit v1.2.3


From dc6216e77e84369450d3a9e2269bf4d03436a23d Mon Sep 17 00:00:00 2001
From: "Justin C. Rounds (Chuck)" <chuck@lindenlab.com>
Date: Mon, 23 Nov 2009 13:56:01 -0500
Subject: "Fit and finish" issues with bottom bar. See comments in JIRAs for
 details. http://jira.secondlife.com/browse/EXT-2537
 http://jira.secondlife.com/browse/EXT-2352

---
 .../default/textures/bottomtray/Notices_Unread.png | Bin 333 -> 331 bytes
 indra/newview/skins/default/textures/textures.xml  |  11 ++++-
 .../default/textures/widgets/Arrow_Small_Left.png  | Bin 0 -> 223 bytes
 .../default/textures/widgets/Arrow_Small_Right.png | Bin 0 -> 217 bytes
 .../default/textures/widgets/Arrow_Small_Up.png    | Bin 0 -> 382 bytes
 .../widgets/ComboButton_Up_On_Selected.png         | Bin 0 -> 482 bytes
 .../skins/default/xui/en/panel_bottomtray.xml      |  53 ++++++++++++++-------
 .../skins/default/xui/en/panel_nearby_chat_bar.xml |  12 +++--
 .../default/xui/en/widgets/gesture_combo_box.xml   |   4 +-
 .../skins/default/xui/en/widgets/talk_button.xml   |  11 ++++-
 10 files changed, 64 insertions(+), 27 deletions(-)
 create mode 100644 indra/newview/skins/default/textures/widgets/Arrow_Small_Left.png
 create mode 100644 indra/newview/skins/default/textures/widgets/Arrow_Small_Right.png
 create mode 100644 indra/newview/skins/default/textures/widgets/Arrow_Small_Up.png
 create mode 100644 indra/newview/skins/default/textures/widgets/ComboButton_Up_On_Selected.png

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png b/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png
index 98f1f04b9a..aa3898ca99 100644
Binary files a/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png and b/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index f4a239be62..8469cf9e2d 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -50,8 +50,12 @@ with the same filename but different name
   <texture name="Arrow_Right_Off" file_name="navbar/Arrow_Right_Off.png" preload="true" />
   <texture name="Arrow_Right_Press" file_name="navbar/Arrow_Right_Press.png" preload="true" />
 
-  <texture name="Arrow_Up" file_name="widgets/Arrow_Up.png" preload="true" />
-  <texture name="Arrow_Down" file_name="widgets/Arrow_Down.png" preload="true" />
+  <texture name="Arrow_Left" file_name="widgets/Arrow_Left.png" preload="true" />
+  <texture name="Arrow_Right" file_name="widgets/Arrow_Right.png" preload="true" />
+
+  <texture name="Arrow_Small_Up" file_name="widgets/Arrow_Small_Up.png" preload="true" />
+  <texture name="Arrow_Small_Left" file_name="widgets/Arrow_Small_Left.png" preload="true" />
+  <texture name="Arrow_Small_Right" file_name="widgets/Arrow_Small_Right.png" preload="true" />
 
   <texture name="AudioMute_Off" file_name="icons/AudioMute_Off.png" preload="false" />
   <texture name="AudioMute_Over" file_name="icons/AudioMute_Over.png" preload="false" />
@@ -120,6 +124,7 @@ with the same filename but different name
   <texture name="ComboButton_Press" file_name="widgets/ComboButton_Press.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_UpSelected" file_name="widgets/ComboButton_UpSelected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
+  <texture name="ComboButton_Up_On_Selected" file_name="widgets/ComboButton_Up_On_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_Off" file_name="widgets/ComboButton_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_UpOff" file_name="widgets/ComboButton_UpOff.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="Container" file_name="containers/Container.png" preload="false" />
@@ -439,6 +444,7 @@ with the same filename but different name
   <texture name="Search" file_name="navbar/Search.png" preload="false" />
 
   <texture name="SegmentedBtn_Left_Off" file_name="widgets/SegmentedBtn_Left_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
+  <texture name="SegmentedBtn_Left_Over" file_name="widgets/SegmentedBtn_Left_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Left_Press" file_name="widgets/SegmentedBtn_Left_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Left_Disabled" file_name="widgets/SegmentedBtn_Left_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Left_Selected" file_name="widgets/SegmentedBtn_Left_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
@@ -453,6 +459,7 @@ with the same filename but different name
   <texture name="SegmentedBtn_Middle_Selected_Disabled" file_name="widgets/SegmentedBtn_Middle_Selected_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
 
   <texture name="SegmentedBtn_Right_Off" file_name="widgets/SegmentedBtn_Right_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
+  <texture name="SegmentedBtn_Right_Over" file_name="widgets/SegmentedBtn_Right_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Right_Press" file_name="widgets/SegmentedBtn_Right_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Right_Disabled" file_name="widgets/SegmentedBtn_Right_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Right_Selected" file_name="widgets/SegmentedBtn_Right_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Small_Left.png b/indra/newview/skins/default/textures/widgets/Arrow_Small_Left.png
new file mode 100644
index 0000000000..2d624c3779
Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/Arrow_Small_Left.png differ
diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Small_Right.png b/indra/newview/skins/default/textures/widgets/Arrow_Small_Right.png
new file mode 100644
index 0000000000..91c03c426e
Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/Arrow_Small_Right.png differ
diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Small_Up.png b/indra/newview/skins/default/textures/widgets/Arrow_Small_Up.png
new file mode 100644
index 0000000000..38aac0e5ca
Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/Arrow_Small_Up.png differ
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_Up_On_Selected.png b/indra/newview/skins/default/textures/widgets/ComboButton_Up_On_Selected.png
new file mode 100644
index 0000000000..fd1d11dd0b
Binary files /dev/null and b/indra/newview/skins/default/textures/widgets/ComboButton_Up_On_Selected.png differ
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index 00711a29e0..a8e659259e 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -46,7 +46,7 @@
          left="0"
          min_height="23"
          width="310"
-         top="0"
+         top="4"
          min_width="192"
          name="chat_bar"
          user_resize="false"
@@ -58,9 +58,9 @@
          height="28"
          layout="topleft"
          min_height="28"
-         width="104"
+         width="100"
          top_delta="0"
-         min_width="104"
+         min_width="100"
          name="speak_panel"
          user_resize="false">
           <talk_button
@@ -71,7 +71,7 @@
            layout="topleft"
            left="0"
            name="talk"
-           top="3"
+           top="4"
           width="100" />
         </layout_panel>
         <icon
@@ -104,7 +104,7 @@
           layout="topleft"
           name="Gesture"
           left="0"
-          top="3"
+          top="4"
           width="82"
           tool_tip="Shows/hides gestures">
              <gesture_combo_box.drop_down_button
@@ -137,6 +137,9 @@
          width="80"
          min_width="49">
             <button
+                 image_selected="PushButton_Selected_Press"
+                 image_pressed="PushButton_Press"
+		 image_pressed_selected="PushButton_Selected_Press"
              follows="left|right"
              height="23"
              use_ellipses="true"
@@ -145,7 +148,7 @@
              layout="topleft"
              name="movement_btn"
              tool_tip="Shows/hides movement controls"
-             top="3"
+             top="4"
              width="80">
                 <button.init_callback
                  function="Button.SetDockableFloaterToggle"
@@ -176,6 +179,9 @@
          user_resize="false"
          width="80">
             <button
+                 image_selected="PushButton_Selected_Press"
+                 image_pressed="PushButton_Press"
+		 image_pressed_selected="PushButton_Selected_Press"
              follows="left|right"
              height="23"
              use_ellipses="true"
@@ -184,7 +190,7 @@
              layout="topleft"
              left="0"
              tool_tip="Shows/hides camera controls"
-             top="3"
+             top="4"
              name="camera_btn"
              width="80">
                 <button.init_callback
@@ -221,7 +227,7 @@
              layout="topleft"
              name="snapshots"
              width="36"
-             top="3"
+             top="4"
              image_overlay="Snapshot_Off"
              tool_tip="Take snapshot">
 				<button.commit_callback
@@ -245,37 +251,47 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
             <chiclet_panel
 	    mouse_opaque="false"
              follows="left|right"
-             height="28"
+             height="23"
              layout="topleft"
              left="0"
              min_width="180"
              name="chiclet_list"
-             top="0"
-             chiclet_padding="3"
+             top="4"
+             chiclet_padding="4"
              scrolling_offset="40"
              width="189">
                 <button
                  auto_resize="true"
                  follows="right"
                  height="23"
-                 image_selected="BottomTray_Scroll_Left"
-                 image_unselected="BottomTray_Scroll_Left"
+                 image_selected="SegmentedBtn_Left_Off"
+                 image_unselected="SegmentedBtn_Left_Off"
+		 image_hover_selected="SegmentedBtn_Left_Over"
+		 image_hover_unselected="SegmentedBtn_Left_Over"
+		 image_pressed="SegmentedBtn_Left_Press"
+		 image_pressed_selected="SegmentedBtn_Left_Press"
+		 image_overlay="Arrow_Small_Left"
                  layout="topleft"
                  name="chicklet_left_scroll_button"
                  tab_stop="false"
-                 top="3"
+                 top="0"
                  visible="false"
                  width="20" />
                 <button
                  auto_resize="true"
                  follows="right"
                  height="23"
-                 image_selected="BottomTray_Scroll_Right"
-                 image_unselected="BottomTray_Scroll_Right"
+                 image_selected="SegmentedBtn_Right_Off"
+                 image_unselected="SegmentedBtn_Right_Off"
+		 image_hover_selected="SegmentedBtn_Right_Over"
+		 image_hover_unselected="SegmentedBtn_Right_Over"
+		 image_pressed="SegmentedBtn_Right_Press"
+		 image_pressed_selected="SegmentedBtn_Right_Press"
+		 image_overlay="Arrow_Small_Right"
                  layout="topleft"
                  name="chicklet_right_scroll_button"
                  tab_stop="false"
-                 top="3"
+                 top="0"
                  visible="false"
                  width="20" />
             </chiclet_panel>
@@ -311,6 +327,9 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
              top="4"
              width="54">
               <button
+                 image_selected="PushButton_Selected_Press"
+                 image_pressed="PushButton_Press"
+		 image_pressed_selected="PushButton_Selected_Press"
               auto_resize="true"
                halign="right"
                height="23"
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
index ecf35523cd..de612fbbc3 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml
@@ -26,7 +26,7 @@
      max_length="512"
      name="chat_box"
      tool_tip="Press Enter to say, Ctrl+Enter to shout"
-     top="0"
+     top="1"
      width="279" />
     <output_monitor
      auto_update="true"
@@ -37,19 +37,21 @@
      left_pad="-24"
      mouse_opaque="true"
      name="chat_zone_indicator"
-     top="4"
+     top="1"
      visible="true"
      width="20" />
     <button
      follows="right"
      is_toggle="true"
      width="20"
-     top="0"
+     top="1"
      layout="topleft"
-     left_pad="4           "
+     left_pad="4"
      image_disabled="ComboButton_UpOff"
      image_unselected="ComboButton_UpOff"
-     image_selected="ComboButton_UpSelected"
+     image_selected="ComboButton_Up_On_Selected"
+     image_pressed="ComboButton_UpSelected"
+     image_pressed_selected="ComboButton_Up_On_Selected"
      height="23"
      name="show_nearby_chat"
      tool_tip="Shows/hides nearby chat log">
diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
index 6171be034f..6ac654f14e 100644
--- a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
+++ b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
@@ -19,8 +19,10 @@
                               hover_glow_amount="0.15"
                               font="SansSerif"
                               scale_image="true"
+                 image_selected="PushButton_Selected_Press"
+                 image_pressed="PushButton_Press"
+		 image_pressed_selected="PushButton_Selected_Press"
                               image_unselected="PushButton_Off"
-                              image_selected="PushButton_Selected"
                               image_disabled="PushButton_Disabled"
                               image_disabled_selected="PushButton_Selected_Disabled" />
   <gesture_combo_box.combo_list bg_writeable_color="MenuDefaultBgColor"
diff --git a/indra/newview/skins/default/xui/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml
index 1d8257fbc8..bbc508de08 100644
--- a/indra/newview/skins/default/xui/en/widgets/talk_button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/talk_button.xml
@@ -6,6 +6,10 @@
     image_unselected="SegmentedBtn_Left_Off"
   -->
   <speak_button
+                 image_selected="SegmentedBtn_Left_Selected_Press"
+                 image_unselected="SegmentedBtn_Left_Off"
+		 image_pressed="SegmentedBtn_Left_Selected_Press"
+		 image_pressed_selected="SegmentedBtn_Left_Selected_Press"
     name="left"
     label="Speak"
     label_selected="Speak"
@@ -21,8 +25,11 @@
     bottom="0"
     tab_stop="false"
     is_toggle="true"
-    image_selected="ComboButton_UpSelected"
-    image_unselected="ComboButton_UpOff"
+                 image_selected="SegmentedBtn_Right_Selected_Press"
+                 image_unselected="SegmentedBtn_Right_Off"
+		 image_pressed="SegmentedBtn_Right_Press"
+		 image_pressed_selected="SegmentedBtn_Right_Selected_Press"
+		 image_overlay="Arrow_Small_Up"
     />
   <monitor
     name="monitor"
-- 
cgit v1.2.3


From 8ef1dcf72ad2b425e7e849edb4e47d86bff23a0b Mon Sep 17 00:00:00 2001
From: "Justin C. Rounds (Chuck)" <chuck@lindenlab.com>
Date: Mon, 23 Nov 2009 14:16:31 -0500
Subject: Scrollbar was too dark and not matching other scrollbars. Switched
 scroll_bar_bg_visible attribute to false in gesture_combo_box.xml to fix.
 http://jira.secondlife.com/browse/EXT-1451

---
 indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
index 6ac654f14e..b61f9fffff 100644
--- a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
+++ b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
@@ -26,7 +26,7 @@
                               image_disabled="PushButton_Disabled"
                               image_disabled_selected="PushButton_Selected_Disabled" />
   <gesture_combo_box.combo_list bg_writeable_color="MenuDefaultBgColor"
-                                scroll_bar_bg_visible="true" />
+                                scroll_bar_bg_visible="false" />
   <gesture_combo_box.combo_editor name="Combo Text Entry"
                           select_on_focus="true"
                           font="SansSerifSmall" />
-- 
cgit v1.2.3


From 7fd1488c6218ddbd82de0eea86297e65f2561bc7 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Mon, 23 Nov 2009 11:42:32 -0800
Subject: convert signals to allocate on demand in order to speed up widget
 construction reviewed by James

---
 indra/newview/llchiclet.cpp           | 9 ++++++---
 indra/newview/llfavoritesbar.cpp      | 6 ++++--
 indra/newview/llfloaterbuyland.cpp    | 2 +-
 indra/newview/llfloaterchat.cpp       | 2 +-
 indra/newview/llfloaterchatterbox.cpp | 2 +-
 indra/newview/llfloaterland.cpp       | 2 +-
 indra/newview/llimpanel.cpp           | 2 +-
 indra/newview/llmediactrl.cpp         | 2 +-
 indra/newview/llpanelavatartag.cpp    | 2 +-
 indra/newview/llpanelpeople.cpp       | 2 +-
 indra/newview/llpreviewgesture.cpp    | 2 +-
 11 files changed, 19 insertions(+), 14 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 9845664c74..5fd4dcd343 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -163,7 +163,7 @@ LLChiclet::~LLChiclet()
 boost::signals2::connection LLChiclet::setLeftButtonClickCallback(
 	const commit_callback_t& cb)
 {
-	return mCommitSignal.connect(cb);
+	return setCommitCallback(cb);
 }
 
 BOOL LLChiclet::handleMouseDown(S32 x, S32 y, MASK mask)
@@ -972,7 +972,10 @@ void LLChicletPanel::onChicletSizeChanged(LLChiclet* ctrl, const LLSD& param)
 
 void LLChicletPanel::onChicletClick(LLUICtrl*ctrl,const LLSD&param)
 {
-	mCommitSignal(ctrl,param);
+	if (mCommitSignal)
+	{
+		(*mCommitSignal)(ctrl,param);
+	}
 }
 
 void LLChicletPanel::removeChiclet(chiclet_list_t::iterator it)
@@ -1277,7 +1280,7 @@ void LLChicletPanel::onRightScrollHeldDown()
 boost::signals2::connection LLChicletPanel::setChicletClickedCallback(
 	const commit_callback_t& cb)
 {
-	return mCommitSignal.connect(cb);
+	return setCommitCallback(cb);
 }
 
 BOOL LLChicletPanel::handleScrollWheel(S32 x, S32 y, S32 clicks)
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index ae5be8cc7c..8406ddeeca 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -232,13 +232,15 @@ public:
 
 	virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask)
 	{
-		mMouseDownSignal(this, x, y, mask);
+		if (mMouseDownSignal)
+			(*mMouseDownSignal)(this, x, y, mask);
 		return LLMenuItemCallGL::handleMouseDown(x, y, mask);
 	}
 
 	virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask)
 	{
-		mMouseUpSignal(this, x, y, mask);
+		if (mMouseUpSignal)
+			(*mMouseUpSignal)(this, x, y, mask);
 		return LLMenuItemCallGL::handleMouseUp(x, y, mask);
 	}
 
diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp
index 467796b4a3..976aaf8044 100644
--- a/indra/newview/llfloaterbuyland.cpp
+++ b/indra/newview/llfloaterbuyland.cpp
@@ -903,7 +903,7 @@ void LLFloaterBuyLandUI::tellUserError(
 // virtual
 BOOL LLFloaterBuyLandUI::postBuild()
 {
-	mVisibleSignal.connect(boost::bind(&LLFloaterBuyLandUI::onVisibilityChange, this, _2));
+	setVisibleCallback(boost::bind(&LLFloaterBuyLandUI::onVisibilityChange, this, _2));
 	
 	mCurrency.prepare();
 	
diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp
index 58025ef78b..57bb93d81a 100644
--- a/indra/newview/llfloaterchat.cpp
+++ b/indra/newview/llfloaterchat.cpp
@@ -129,7 +129,7 @@ void LLFloaterChat::draw()
 BOOL LLFloaterChat::postBuild()
 {
 	// Hide the chat overlay when our history is visible.
-	mVisibleSignal.connect(boost::bind(&LLFloaterChat::updateConsoleVisibility, this));
+	setVisibleCallback(boost::bind(&LLFloaterChat::updateConsoleVisibility, this));
 	
 	mPanel = (LLPanelActiveSpeakers*)getChild<LLPanel>("active_speakers_panel");
 
diff --git a/indra/newview/llfloaterchatterbox.cpp b/indra/newview/llfloaterchatterbox.cpp
index fbf09207fe..1b14ca573a 100644
--- a/indra/newview/llfloaterchatterbox.cpp
+++ b/indra/newview/llfloaterchatterbox.cpp
@@ -114,7 +114,7 @@ LLFloaterChatterBox::~LLFloaterChatterBox()
 
 BOOL LLFloaterChatterBox::postBuild()
 {
-	mVisibleSignal.connect(boost::bind(&LLFloaterChatterBox::onVisibilityChange, this, _2));
+	setVisibleCallback(boost::bind(&LLFloaterChatterBox::onVisibilityChange, this, _2));
 	
 	if (gSavedSettings.getBOOL("ContactsTornOff"))
 	{
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 22d6098d5b..d855ab1dfa 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -239,7 +239,7 @@ LLFloaterLand::LLFloaterLand(const LLSD& seed)
 
 BOOL LLFloaterLand::postBuild()
 {	
-	mVisibleSignal.connect(boost::bind(&LLFloaterLand::onVisibilityChange, this, _2));
+	setVisibleCallback(boost::bind(&LLFloaterLand::onVisibilityChange, this, _2));
 	
 	LLTabContainer* tab = getChild<LLTabContainer>("landtab");
 
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp
index 87b801d73b..e6ded5f371 100644
--- a/indra/newview/llimpanel.cpp
+++ b/indra/newview/llimpanel.cpp
@@ -216,7 +216,7 @@ LLFloaterIMPanel::~LLFloaterIMPanel()
 
 BOOL LLFloaterIMPanel::postBuild() 
 {
-	mVisibleSignal.connect(boost::bind(&LLFloaterIMPanel::onVisibilityChange, this, _2));
+	setVisibleCallback(boost::bind(&LLFloaterIMPanel::onVisibilityChange, this, _2));
 	
 	mInputEditor = getChild<LLLineEditor>("chat_editor");
 	mInputEditor->setFocusReceivedCallback( boost::bind(onInputEditorFocusReceived, _1, this) );
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 5cd40273f6..2376a3581d 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -356,7 +356,7 @@ void LLMediaCtrl::onFocusLost()
 //
 BOOL LLMediaCtrl::postBuild ()
 {
-	mVisibleSignal.connect(boost::bind(&LLMediaCtrl::onVisibilityChange, this, _2));
+	setVisibleCallback(boost::bind(&LLMediaCtrl::onVisibilityChange, this, _2));
 	return TRUE;
 }
 
diff --git a/indra/newview/llpanelavatartag.cpp b/indra/newview/llpanelavatartag.cpp
index 03ad19f911..7563cc7f61 100644
--- a/indra/newview/llpanelavatartag.cpp
+++ b/indra/newview/llpanelavatartag.cpp
@@ -92,7 +92,7 @@ void LLPanelAvatarTag::setAvatarId(const LLUUID& avatar_id)
 boost::signals2::connection LLPanelAvatarTag::setLeftButtonClickCallback(
 																  const commit_callback_t& cb)
 {
-	return mCommitSignal.connect(cb);
+	return setCommitCallback(cb);
 }
 
 BOOL LLPanelAvatarTag::handleMouseDown(S32 x, S32 y, MASK mask)
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 4dc8872557..03421ce4f0 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -483,7 +483,7 @@ void LLPanelPeople::onFriendsAccordionExpandedCollapsed(const LLSD& param, LLAva
 
 BOOL LLPanelPeople::postBuild()
 {
-	mVisibleSignal.connect(boost::bind(&LLPanelPeople::onVisibilityChange, this, _2));
+	setVisibleCallback(boost::bind(&LLPanelPeople::onVisibilityChange, this, _2));
 	
 	mFilterEditor = getChild<LLFilterEditor>("filter_input");
 	mFilterEditor->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 49a2a3723d..3d2c529dda 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -355,7 +355,7 @@ LLPreviewGesture::~LLPreviewGesture()
 
 BOOL LLPreviewGesture::postBuild()
 {
-	mVisibleSignal.connect(boost::bind(&LLPreviewGesture::onVisibilityChange, this, _2));
+	setVisibleCallback(boost::bind(&LLPreviewGesture::onVisibilityChange, this, _2));
 	
 	LLLineEditor* edit;
 	LLComboBox* combo;
-- 
cgit v1.2.3


From d4dc4cfddcc3faf17df992fd0ffae9ea18adf19f Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Mon, 23 Nov 2009 11:46:35 -0800
Subject: EXT-2460 - mouselook mode - remove unused UI elements EXT-2504 -
 black bars present at top and bottom when in mouselook

reviewed by Leyla
---
 indra/newview/llagent.cpp                        |   6 +-
 indra/newview/llmoveview.cpp                     |   3 +-
 indra/newview/llnavigationbar.cpp                |  10 +++
 indra/newview/llnavigationbar.h                  |   1 +
 indra/newview/llsidetray.cpp                     |   3 +-
 indra/newview/llsidetray.h                       |   8 +-
 indra/newview/llviewerwindow.cpp                 |   3 +-
 indra/newview/pipeline.cpp                       | 101 +++++++++++++++++------
 indra/newview/pipeline.h                         |   5 ++
 indra/newview/skins/default/xui/en/main_view.xml |  32 ++++---
 10 files changed, 126 insertions(+), 46 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 4dd569e2fa..eb5d172ff7 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -2795,7 +2795,8 @@ void LLAgent::endAnimationUpdateUI()
 
 		LLBottomTray::getInstance()->setVisible(TRUE);
 
-		LLSideTray::getInstance()->setVisible(TRUE);
+		LLSideTray::getInstance()->getButtonsPanel()->setVisible(TRUE);
+		LLSideTray::getInstance()->updateSidetrayVisibility();
 
 		LLPanelStandStopFlying::getInstance()->setVisible(TRUE);
 
@@ -2893,7 +2894,8 @@ void LLAgent::endAnimationUpdateUI()
 
 		LLBottomTray::getInstance()->setVisible(FALSE);
 
-		LLSideTray::getInstance()->setVisible(FALSE);
+		LLSideTray::getInstance()->getButtonsPanel()->setVisible(FALSE);
+		LLSideTray::getInstance()->updateSidetrayVisibility();
 
 		LLPanelStandStopFlying::getInstance()->setVisible(FALSE);
 
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 93db337053..9e46a4422a 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -586,7 +586,8 @@ void LLPanelStandStopFlying::setVisible(BOOL visible)
 		updatePosition();
 	}
 
-	LLPanel::setVisible(visible);
+	//change visibility of parent layout_panel to animate in/out
+	if (getParent()) getParent()->setVisible(visible);
 }
 
 BOOL LLPanelStandStopFlying::handleToolTip(S32 x, S32 y, MASK mask)
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index 114d26af8a..c1bd4dd580 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -230,6 +230,16 @@ BOOL LLNavigationBar::postBuild()
 	return TRUE;
 }
 
+void LLNavigationBar::setVisible(BOOL visible)
+{
+	// change visibility of grandparent layout_panel to animate in and out
+	if (getParent() && getParent()->getParent()) 
+	{
+		getParent()->getParent()->setVisible(visible);	
+	}
+}
+
+
 void LLNavigationBar::fillSearchComboBox()
 {
 	if(!mSearchComboBox)
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 52f5a827e4..6f5175d1ae 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -56,6 +56,7 @@ public:
 	/*virtual*/ void	draw();
 	/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
 	/*virtual*/ BOOL	postBuild();
+	/*virtual*/ void	setVisible(BOOL visible);
 
 	void handleLoginComplete();
 	void clearHistoryCache();
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index 7711f3c733..2f98435b83 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -34,6 +34,7 @@
 
 #include "lltextbox.h"
 
+#include "llagent.h"
 #include "llbottomtray.h"
 #include "llsidetray.h"
 #include "llviewerwindow.h"
@@ -700,7 +701,7 @@ void	LLSideTray::updateSidetrayVisibility()
 	// set visibility of parent container based on collapsed state
 	if (getParent())
 	{
-		getParent()->setVisible(!mCollapsed);
+		getParent()->setVisible(!mCollapsed && !gAgent.cameraMouselook());
 	}
 }
 
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
index 54652c1108..7321574681 100644
--- a/indra/newview/llsidetray.h
+++ b/indra/newview/llsidetray.h
@@ -120,7 +120,7 @@ public:
 
 	void		setVisible(BOOL visible)
 	{
-		LLPanel::setVisible(visible);
+		if (getParent()) getParent()->setVisible(visible);
 	}
 
 	LLPanel*	getButtonsPanel() { return mButtonsPanel; }
@@ -141,6 +141,7 @@ public:
 
 	void		processTriState ();
 	
+	void		updateSidetrayVisibility();
 
 protected:
 	LLSideTrayTab* getTab		(const std::string& name);
@@ -153,10 +154,6 @@ protected:
 
 	void		toggleTabButton	(LLSideTrayTab* tab);
 
-	void		updateSidetrayVisibility();
-
-	
-
 private:
 	// Implementation of LLDestroyClass<LLSideTray>
 	static void destroyClass()
@@ -166,7 +163,6 @@ private:
 			LLSideTray::getInstance()->setEnabled(FALSE);
 	}
 	
-
 private:
 
 	LLPanel*						mButtonsPanel;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index db66faef81..29d40d073c 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1573,7 +1573,8 @@ void LLViewerWindow::initWorldUI()
 	LLPanel* side_tray_container = getRootView()->getChild<LLPanel>("side_tray_container");
 	LLSideTray* sidetrayp = LLSideTray::getInstance();
 	sidetrayp->setShape(side_tray_container->getLocalRect());
-	sidetrayp->setFollowsAll();
+	// don't follow right edge to avoid spurious resizes, since we are using a fixed width layout
+	sidetrayp->setFollows(FOLLOWS_LEFT|FOLLOWS_TOP|FOLLOWS_BOTTOM);
 	side_tray_container->addChild(sidetrayp);
 	side_tray_container->setVisible(FALSE);
 	
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 507c726e02..5aad87630d 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -344,7 +344,12 @@ LLPipeline::LLPipeline() :
 	mWLSkyPool(NULL),
 	mLightMask(0),
 	mLightMovingMask(0),
-	mLightingDetail(0)
+	mLightingDetail(0),
+	mScreenWidth(0),
+	mScreenHeight(0),
+	mViewportWidth(0),
+	mViewportHeight(0)
+
 {
 	mNoiseMap = 0;
 	mTrueNoiseMap = 0;
@@ -518,13 +523,29 @@ void LLPipeline::resizeScreenTexture()
 		GLuint view_height = gViewerWindow->getWorldViewHeightRaw();
 	
 		allocateScreenBuffer(resX, resY, view_width, view_height);
-
-		llinfos << "RESIZED SCREEN TEXTURE: " << resX << "x" << resY << llendl;
 	}
 }
 
 void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 viewport_width, U32 viewport_height)
 {
+	bool screen_size_changed = resX != mScreenWidth || resY != mScreenHeight;
+	bool viewport_size_changed = viewport_width != mViewportWidth || viewport_height != mViewportHeight;
+
+	if (!screen_size_changed
+		&& !viewport_size_changed)
+	{
+		// nothing to do
+		return;
+	}
+
+	// remember these dimensions
+	mScreenWidth = resX;
+	mScreenHeight = resY;
+	mViewportWidth = viewport_width;
+	mViewportHeight = viewport_height;
+
+	llinfos << "RESIZED SCREEN TEXTURE: " << resX << "x" << resY << llendl;
+
 	U32 samples = gSavedSettings.getU32("RenderFSAASamples");
 
 	U32 res_mod = gSavedSettings.getU32("RenderResolutionDivisor");
@@ -534,7 +555,8 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 viewport_width, U3
 		resY /= res_mod;
 	}
 
-	if (gSavedSettings.getBOOL("RenderUIBuffer"))
+	if (gSavedSettings.getBOOL("RenderUIBuffer") 
+		&& screen_size_changed)
 	{
 		mUIScreen.allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);
 	}	
@@ -542,25 +564,39 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 viewport_width, U3
 	if (LLPipeline::sRenderDeferred)
 	{
 		//allocate deferred rendering color buffers
-		mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE);
-		mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);
+		if (screen_size_changed)
+		{
+			mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE);
+			mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);
+			addDeferredAttachments(mDeferredScreen);
+		}
+		// always set viewport to desired size, since allocate resets the viewport
 		mDeferredScreen.setViewport(viewport_width, viewport_height);
 		mDeferredDepth.setViewport(viewport_width, viewport_height);
-		addDeferredAttachments(mDeferredScreen);
-		mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);		
-		mEdgeMap.allocate(resX, resY, GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);
+
+		if (screen_size_changed)
+		{
+			mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);		
+			mEdgeMap.allocate(resX, resY, GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE);
+		}
 		mScreen.setViewport(viewport_width, viewport_height);
 		mEdgeMap.setViewport(viewport_width, viewport_height);
 
 		for (U32 i = 0; i < 3; i++)
 		{
-			mDeferredLight[i].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE);
+			if (screen_size_changed)
+			{
+				mDeferredLight[i].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE);
+			}
 			mDeferredLight[i].setViewport(viewport_width, viewport_height);
 		}
 
 		for (U32 i = 0; i < 2; i++)
 		{
-			mGIMapPost[i].allocate(resX,resY, GL_RGB, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE);
+			if (screen_size_changed)
+			{
+				mGIMapPost[i].allocate(resX,resY, GL_RGB, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE);
+			}
 			mGIMapPost[i].setViewport(viewport_width, viewport_height);
 		}
 
@@ -568,7 +604,10 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 viewport_width, U3
 
 		for (U32 i = 0; i < 4; i++)
 		{
-			mShadow[i].allocate(U32(resX*scale),U32(resY*scale), 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE);
+			if (screen_size_changed)
+			{
+				mShadow[i].allocate(U32(resX*scale),U32(resY*scale), 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE);
+			}
 			mShadow[i].setViewport(viewport_width, viewport_height);
 		}
 
@@ -578,7 +617,10 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 viewport_width, U3
 
 		for (U32 i = 4; i < 6; i++)
 		{
-			mShadow[i].allocate(width, height, 0, TRUE, FALSE);
+			if (screen_size_changed)
+			{
+				mShadow[i].allocate(width, height, 0, TRUE, FALSE);
+			}
 			mShadow[i].setViewport(viewport_width, viewport_height);
 		}
 
@@ -586,32 +628,41 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 viewport_width, U3
 
 		width = nhpo2(resX)/2;
 		height = nhpo2(resY)/2;
-		mLuminanceMap.allocate(width,height, GL_RGBA, FALSE, FALSE);
+		if (screen_size_changed)
+		{
+			mLuminanceMap.allocate(width,height, GL_RGBA, FALSE, FALSE);
+		}
 		mLuminanceMap.setViewport(viewport_width, viewport_height);
 	}
 	else
 	{
-		mScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE);		
+		if (screen_size_changed)
+		{
+			mScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE);		
+		}
 		mScreen.setViewport(viewport_width, viewport_height);
 	}
 	
 
 	if (gGLManager.mHasFramebufferMultisample && samples > 1)
 	{
-		mSampleBuffer.allocate(resX,resY,GL_RGBA,TRUE,TRUE,LLTexUnit::TT_RECT_TEXTURE,FALSE,samples);
-		mSampleBuffer.setViewport(viewport_width, viewport_height);
-		mScreen.setSampleBuffer(&mSampleBuffer);
-
-		if (LLPipeline::sRenderDeferred)
+		if (screen_size_changed)
 		{
-			addDeferredAttachments(mSampleBuffer);
-			mDeferredScreen.setSampleBuffer(&mSampleBuffer);
+			mSampleBuffer.allocate(resX,resY,GL_RGBA,TRUE,TRUE,LLTexUnit::TT_RECT_TEXTURE,FALSE,samples);
+			if (LLPipeline::sRenderDeferred)
+			{
+				addDeferredAttachments(mSampleBuffer);
+				mDeferredScreen.setSampleBuffer(&mSampleBuffer);
+			}
 		}
+		mSampleBuffer.setViewport(viewport_width, viewport_height);
+		mScreen.setSampleBuffer(&mSampleBuffer);
 
 		stop_glerror();
 	}
 	
-	if (LLPipeline::sRenderDeferred)
+	if (LLPipeline::sRenderDeferred 
+		&& screen_size_changed)
 	{ //share depth buffer between deferred targets
 		mDeferredScreen.shareDepthBuffer(mScreen);
 		for (U32 i = 0; i < 3; i++)
@@ -726,6 +777,10 @@ void LLPipeline::createGLBuffers()
 			mGlow[i].allocate(512,glow_res,GL_RGBA,FALSE,FALSE);
 		}
 
+		// force reallocation of buffers by clearing known dimensions
+		mScreenWidth = 0;
+		mScreenHeight = 0;
+
 		allocateScreenBuffer(resX,resY, viewport_width, viewport_height);
 	}
 	
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 9193e19bb1..11b7b55f20 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -467,6 +467,11 @@ public:
 	static F32				sMinRenderSize;
 
 	//screen texture
+	U32 					mScreenWidth;
+	U32 					mScreenHeight;
+	U32 					mViewportWidth;
+	U32 					mViewportHeight;
+
 	LLRenderTarget			mScreen;
 	LLRenderTarget			mUIScreen;
 	LLRenderTarget			mDeferredScreen;
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index 14a4949df7..3bf7f50a2c 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -15,19 +15,19 @@
                 orientation="vertical"
                 top="0">
     <layout_panel auto_resize="false"
-                  min_height="19"
+                  height="84"
                   mouse_opaque="false"
-                  name="status_bar_container"
-                  height="19"
+                  name="nav_and_status_bar_region"
                   width="1024"
-                  visible="false"/>
-    <layout_panel auto_resize="false"
-                  height="65"
-                  mouse_opaque="false"
-                  name="nav_bar_container"
-                  width="1024"
-                  visible="false"/>
-    <panel        auto_resize="true"
+                  visible="false">
+      <panel follows="left|right|bottom"
+             left="0"
+             name="nav_bar_container"
+             right="1024"
+             top="19"
+             height="65"/>
+    </layout_panel>
+    <layout_panel auto_resize="true"
                   follows="all"
                   height="500"
                   layout="topleft"
@@ -124,8 +124,16 @@
                   height="500"
                   name="DebugView"
                   width="1024"/>
-  </panel>
+    </layout_panel>
   </layout_stack>
+  <panel mouse_opaque="false"
+         follows="left|right|top" 
+         name="status_bar_container"
+         height="19"
+         left="0" 
+         top="0" 
+         width="1024"
+         visible="false"/>
   <notify_box_view top="0"
                    follows="all"
                    height="768"
-- 
cgit v1.2.3


From a8126a82cfa5e5f6625d78ecdb1199a88f512b91 Mon Sep 17 00:00:00 2001
From: "Justin C. Rounds (Chuck)" <chuck@lindenlab.com>
Date: Mon, 23 Nov 2009 15:21:59 -0500
Subject: Removed font references to SansSerifSmall.
 http://jira.secondlife.com/browse/EXT-1315

---
 indra/newview/skins/default/xui/en/panel_bottomtray.xml          | 1 -
 indra/newview/skins/default/xui/en/widgets/button.xml            | 1 -
 indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml | 7 ++-----
 indra/newview/skins/default/xui/en/widgets/menu_item.xml         | 4 +---
 indra/newview/skins/default/xui/en/widgets/talk_button.xml       | 1 -
 5 files changed, 3 insertions(+), 11 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index a8e659259e..91e041fd7c 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -108,7 +108,6 @@
           width="82"
           tool_tip="Shows/hides gestures">
              <gesture_combo_box.drop_down_button
-              font="SansSerifSmall"
               pad_right="10" 
               use_ellipses="true" />
          </gesture_combo_box>
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
index 6b11e72247..7c54e618ef 100644
--- a/indra/newview/skins/default/xui/en/widgets/button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/button.xml
@@ -15,7 +15,6 @@
         image_color="ButtonImageColor"
         image_color_disabled="ButtonImageColor"
         flash_color="ButtonFlashBgColor"
-        font="SansSerifSmall"
         hover_glow_amount="0.15"
         halign="center"
         scale_image="true">
diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
index b61f9fffff..4229f34c09 100644
--- a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
+++ b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<gesture_combo_box font="SansSerifSmall"
+<gesture_combo_box
            label="Gestures" 
            list_position="below"
            max_chars="20"
@@ -7,7 +7,6 @@
   <gesture_combo_box.combo_button name="Combobox Button"
                           label=""
                           hover_glow_amount="0.15"
-                          font="SansSerifSmall"
                           scale_image="true"
                           image_unselected="ComboButton_Off"
                           image_selected="ComboButton_Selected"
@@ -17,7 +16,6 @@
                               label=""
                               halign="center"
                               hover_glow_amount="0.15"
-                              font="SansSerif"
                               scale_image="true"
                  image_selected="PushButton_Selected_Press"
                  image_pressed="PushButton_Press"
@@ -28,6 +26,5 @@
   <gesture_combo_box.combo_list bg_writeable_color="MenuDefaultBgColor"
                                 scroll_bar_bg_visible="false" />
   <gesture_combo_box.combo_editor name="Combo Text Entry"
-                          select_on_focus="true"
-                          font="SansSerifSmall" />
+                          select_on_focus="true" />
 </gesture_combo_box>
diff --git a/indra/newview/skins/default/xui/en/widgets/menu_item.xml b/indra/newview/skins/default/xui/en/widgets/menu_item.xml
index c98e9cb6b8..2bbaa6233f 100644
--- a/indra/newview/skins/default/xui/en/widgets/menu_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/menu_item.xml
@@ -1,6 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <!-- Use this for the top-level menu styling -->
-<menu_item
-  font="SansSerifSmall"
-  >
+<menu_item>
 </menu_item>
diff --git a/indra/newview/skins/default/xui/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml
index bbc508de08..ea0a213c79 100644
--- a/indra/newview/skins/default/xui/en/widgets/talk_button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/talk_button.xml
@@ -13,7 +13,6 @@
     name="left"
     label="Speak"
     label_selected="Speak"
-    font="SansSerifSmall"
     tab_stop="false"
     />
   <show_button
-- 
cgit v1.2.3


From 347562844dc2be598f39138a39eaacaff6b4e323 Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Mon, 23 Nov 2009 14:23:51 -0800
Subject: Initial implementation of parcel property icons and maturity string
 on nav bar Added new LLAgentUI location format, renamed unclear old one
 Renamed ShowCoordinatesOption to NavBarShowCoordinates Extended
 LLLocationInputCtrl to show icons. Reviewed with Rick

---
 indra/newview/app_settings/settings.xml            |   2 +-
 indra/newview/llagentui.cpp                        |  19 +++-
 indra/newview/llagentui.h                          |   9 +-
 indra/newview/llglsandbox.cpp                      |   5 +-
 indra/newview/lllocationinputctrl.cpp              | 112 +++++++++++++++++----
 indra/newview/lllocationinputctrl.h                |  27 ++++-
 indra/newview/llnavigationbar.cpp                  |   2 +-
 indra/newview/llteleporthistory.cpp                |   4 +-
 indra/newview/llteleporthistory.h                  |   3 +-
 indra/newview/lltoolmgr.cpp                        |   2 +-
 indra/newview/llviewermenu.cpp                     |   4 +-
 indra/newview/llviewerparcelmgr.cpp                |  42 ++++++--
 indra/newview/llviewerparcelmgr.h                  |  30 ++++--
 .../default/xui/en/widgets/location_input.xml      |  48 ++++++++-
 14 files changed, 256 insertions(+), 53 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index c7279a2e33..21ccf2ac91 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7709,7 +7709,7 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>ShowCoordinatesOption</key>
+    <key>NavBarShowCoordinates</key>
     <map>
       <key>Comment</key>
       <string>Show Coordinates in  Location Input Field</string>
diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp
index 568ac4164a..7404fe5bc4 100644
--- a/indra/newview/llagentui.cpp
+++ b/indra/newview/llagentui.cpp
@@ -130,6 +130,7 @@ BOOL LLAgentUI::buildLocationString(std::string& str, ELocationFormat fmt,const
 	// create a default name and description for the landmark
 	std::string parcel_name = LLViewerParcelMgr::getInstance()->getAgentParcelName();
 	std::string region_name = region->getName();
+	std::string sim_access_string = region->getSimAccessString();
 	std::string buffer;
 	if( parcel_name.empty() )
 	{
@@ -142,7 +143,13 @@ BOOL LLAgentUI::buildLocationString(std::string& str, ELocationFormat fmt,const
 		case LOCATION_FORMAT_NORMAL:
 			buffer = llformat("%s", region_name.c_str());
 			break;
-		case LOCATION_FORMAT_WITHOUT_SIM:
+		case LOCATION_FORMAT_NO_COORDS:
+			buffer = llformat("%s%s%s",
+				region_name.c_str(),
+				sim_access_string.empty() ? "" : " - ",
+				sim_access_string.c_str());
+			break;
+		case LOCATION_FORMAT_NO_MATURITY:
 		case LOCATION_FORMAT_FULL:
 			buffer = llformat("%s (%d, %d, %d)",
 				region_name.c_str(),
@@ -161,14 +168,20 @@ BOOL LLAgentUI::buildLocationString(std::string& str, ELocationFormat fmt,const
 		case LOCATION_FORMAT_NORMAL:
 			buffer = llformat("%s, %s", parcel_name.c_str(), region_name.c_str());
 			break;
-		case LOCATION_FORMAT_WITHOUT_SIM:
+		case LOCATION_FORMAT_NO_MATURITY:
 			buffer = llformat("%s, %s (%d, %d, %d)",
 				parcel_name.c_str(),
 				region_name.c_str(),
 				pos_x, pos_y, pos_z);
 			break;
+		case LOCATION_FORMAT_NO_COORDS:
+			buffer = llformat("%s, %s%s%s",
+							  parcel_name.c_str(),
+							  region_name.c_str(),
+							  sim_access_string.empty() ? "" : " - ",
+							  sim_access_string.c_str());
+				break;
 		case LOCATION_FORMAT_FULL:
-			std::string sim_access_string = region->getSimAccessString();
 			buffer = llformat("%s, %s (%d, %d, %d)%s%s",
 				parcel_name.c_str(),
 				region_name.c_str(),
diff --git a/indra/newview/llagentui.h b/indra/newview/llagentui.h
index c7aafb71e7..3478793e38 100644
--- a/indra/newview/llagentui.h
+++ b/indra/newview/llagentui.h
@@ -38,10 +38,11 @@ class LLAgentUI
 public:
 	enum ELocationFormat
 	{
-		LOCATION_FORMAT_NORMAL,
-		LOCATION_FORMAT_LANDMARK,
-		LOCATION_FORMAT_WITHOUT_SIM,
-		LOCATION_FORMAT_FULL,
+		LOCATION_FORMAT_NORMAL,			// Parcel
+		LOCATION_FORMAT_LANDMARK,		// Parcel, Region
+		LOCATION_FORMAT_NO_MATURITY,	// Parcel, Region (x, y, z)
+		LOCATION_FORMAT_NO_COORDS,		// Parcel, Region - Maturity
+		LOCATION_FORMAT_FULL,			// Parcel, Region (x, y, z) - Maturity
 	};
 
 	static void buildName(std::string& name);
diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp
index 43fbe362d5..750a9d478f 100644
--- a/indra/newview/llglsandbox.cpp
+++ b/indra/newview/llglsandbox.cpp
@@ -67,7 +67,10 @@
 #include "llresmgr.h"
 #include "pipeline.h"
 #include "llspatialpartition.h"
- 
+
+// Height of the yellow selection highlight posts for land
+const F32 PARCEL_POST_HEIGHT = 0.666f;
+
 BOOL LLAgent::setLookAt(ELookAtType target_type, LLViewerObject *object, LLVector3 position)
 {
 	if(object && object->isAttachment())
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 7e35cfa04c..be96d7b43a 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -157,15 +157,21 @@ LLLocationInputCtrl::Params::Params()
 	add_landmark_image_disabled("add_landmark_image_disabled"),
 	add_landmark_image_hover("add_landmark_image_hover"),
 	add_landmark_image_selected("add_landmark_image_selected"),
+	icon_hpad("icon_hpad", 0),
 	add_landmark_button("add_landmark_button"),
-	add_landmark_hpad("add_landmark_hpad", 0),
-	info_button("info_button")
+	info_button("info_button"),
+	voice_icon("voice_icon"),
+	fly_icon("fly_icon"),
+	push_icon("push_icon"),
+	build_icon("build_icon"),
+	scripts_icon("scripts_icon"),
+	damage_icon("damage_icon")
 {
 }
 
 LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 :	LLComboBox(p),
-	mAddLandmarkHPad(p.add_landmark_hpad),
+	mIconHPad(p.icon_hpad),
 	mInfoBtn(NULL),
 	mLocationContextMenu(NULL),
 	mAddLandmarkBtn(NULL),
@@ -230,6 +236,32 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 	mAddLandmarkBtn = LLUICtrlFactory::create<LLButton>(al_params);
 	enableAddLandmarkButton(true);
 	addChild(mAddLandmarkBtn);
+
+	// Parcel property icons
+	LLIconCtrl::Params voice_icon = p.voice_icon;
+	mParcelIcon[VOICE_ICON] = LLUICtrlFactory::create<LLIconCtrl>(voice_icon);
+	addChild(mParcelIcon[VOICE_ICON]);
+
+	LLIconCtrl::Params fly_icon = p.fly_icon;
+	mParcelIcon[FLY_ICON] = LLUICtrlFactory::create<LLIconCtrl>(fly_icon);
+	addChild(mParcelIcon[FLY_ICON]);
+
+	LLIconCtrl::Params push_icon = p.push_icon;
+	mParcelIcon[PUSH_ICON] = LLUICtrlFactory::create<LLIconCtrl>(push_icon);
+	addChild(mParcelIcon[PUSH_ICON]);
+
+	LLIconCtrl::Params build_icon = p.build_icon;
+	mParcelIcon[BUILD_ICON] = LLUICtrlFactory::create<LLIconCtrl>(build_icon);
+	addChild(mParcelIcon[BUILD_ICON]);
+
+	LLIconCtrl::Params scripts_icon = p.scripts_icon;
+	mParcelIcon[SCRIPTS_ICON] = LLUICtrlFactory::create<LLIconCtrl>(scripts_icon);
+	addChild(mParcelIcon[SCRIPTS_ICON]);
+
+	LLIconCtrl::Params damage_icon = p.damage_icon;
+	mParcelIcon[DAMAGE_ICON] = LLUICtrlFactory::create<LLIconCtrl>(damage_icon);
+	addChild(mParcelIcon[DAMAGE_ICON]);
+	// TODO: health number?
 	
 	// Register callbacks and load the location field context menu (NB: the order matters).
 	LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Navbar.Action", boost::bind(&LLLocationInputCtrl::onLocationContextMenuItemClicked, this, _2));
@@ -410,9 +442,10 @@ void LLLocationInputCtrl::onFocusLost()
 		mTextEntry->deselect();
 	}
 }
-void	LLLocationInputCtrl::draw(){
-	
-	if(!hasFocus() && gSavedSettings.getBOOL("ShowCoordinatesOption")){
+
+void LLLocationInputCtrl::draw()
+{	
+	if(!hasFocus() && gSavedSettings.getBOOL("NavBarShowCoordinates")){
 		refreshLocation();
 	}
 	LLComboBox::draw();
@@ -532,6 +565,7 @@ void LLLocationInputCtrl::onTextEditorRightClicked(S32 x, S32 y, MASK mask)
 void LLLocationInputCtrl::refresh()
 {
 	refreshLocation();			// update location string
+	refreshParcelIcons();
 	updateAddLandmarkButton();	// indicate whether current parcel has been landmarked 
 }
 
@@ -548,13 +582,57 @@ void LLLocationInputCtrl::refreshLocation()
 
 	// Update location field.
 	std::string location_name;
-	LLAgentUI::ELocationFormat format =  (gSavedSettings.getBOOL("ShowCoordinatesOption") ? 
-			LLAgentUI::LOCATION_FORMAT_WITHOUT_SIM: LLAgentUI::LOCATION_FORMAT_NORMAL);
+	LLAgentUI::ELocationFormat format =
+		(gSavedSettings.getBOOL("NavBarShowCoordinates")
+			? LLAgentUI::LOCATION_FORMAT_FULL
+			: LLAgentUI::LOCATION_FORMAT_NO_COORDS);
 
-	if (!LLAgentUI::buildLocationString(location_name, format)) location_name = "Unknown";
+	if (!LLAgentUI::buildLocationString(location_name, format)) 
+	{
+		location_name = "???";
+	}
 	setText(location_name);
 }
 
+void LLLocationInputCtrl::refreshParcelIcons()
+{
+	LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
+	// *TODO buy
+	//bool allow_buy      = vpm->canAgentBuyParcel( vpm->getAgentParcel(), false);
+	bool allow_voice	= vpm->allowAgentVoice();
+	bool allow_fly		= vpm->allowAgentFly();
+	bool allow_push		= vpm->allowAgentPush();
+	bool allow_build	= vpm->allowAgentBuild();
+	bool allow_scripts	= vpm->allowAgentScripts();
+	bool allow_damage	= vpm->allowAgentDamage();
+
+	// Most icons are "block this ability"
+	mParcelIcon[VOICE_ICON]->setVisible(   !allow_voice );
+	mParcelIcon[FLY_ICON]->setVisible(     !allow_fly );
+	mParcelIcon[PUSH_ICON]->setVisible(    !allow_push );
+	mParcelIcon[BUILD_ICON]->setVisible(   !allow_build );
+	mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
+	mParcelIcon[DAMAGE_ICON]->setVisible(  allow_damage );
+	// *TODO damage meter
+
+	// Slide the parcel icons rect from right to left, adjusting rectangles of
+	// visible icons.  Assumes all icon rects are the same.
+	LLRect icon_rect = mParcelIcon[0]->getRect();
+	S32 icon_width = icon_rect.getWidth();
+	icon_rect.mRight = mAddLandmarkBtn->getRect().mLeft - mIconHPad;
+	icon_rect.mLeft = icon_rect.mRight - icon_width;
+	
+	for (S32 i = 0; i < ICON_COUNT; ++i)
+	{
+		if (mParcelIcon[i]->getVisible())
+		{
+			mParcelIcon[i]->setRect( icon_rect );
+			icon_rect.translate( -icon_width - mIconHPad, 0);
+		}
+	}
+	// *TODO: health meter
+}
+
 void LLLocationInputCtrl::rebuildLocationHistory(std::string filter)
 {
 	LLLocationHistory::location_list_t filtered_items;
@@ -651,13 +729,11 @@ void LLLocationInputCtrl::updateWidgetlayout()
 	mInfoBtn->setRect(info_btn_rect);
 
 	// "Add Landmark" button
-	{
-		LLRect al_btn_rect = mAddLandmarkBtn->getRect();
-		al_btn_rect.translate(
-			hist_btn_rect.mLeft - mAddLandmarkHPad - al_btn_rect.getWidth(),
-			(rect.getHeight() - al_btn_rect.getHeight()) / 2);
-		mAddLandmarkBtn->setRect(al_btn_rect);
-	}
+	LLRect al_btn_rect = mAddLandmarkBtn->getRect();
+	al_btn_rect.translate(
+		hist_btn_rect.mLeft - mIconHPad - al_btn_rect.getWidth(),
+		(rect.getHeight() - al_btn_rect.getHeight()) / 2);
+	mAddLandmarkBtn->setRect(al_btn_rect);
 }
 
 void LLLocationInputCtrl::changeLocationPresentation()
@@ -680,7 +756,7 @@ void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata)
 
 	if (item == std::string("show_coordinates"))
 	{
-		gSavedSettings.setBOOL("ShowCoordinatesOption",!gSavedSettings.getBOOL("ShowCoordinatesOption"));
+		gSavedSettings.setBOOL("NavBarShowCoordinates",!gSavedSettings.getBOOL("NavBarShowCoordinates"));
 	}
 	else if (item == std::string("landmark"))
 	{
@@ -744,7 +820,7 @@ bool LLLocationInputCtrl::onLocationContextMenuItemEnabled(const LLSD& userdata)
 	}
 	else if(item == std::string("show_coordinates")){
 	
-		return gSavedSettings.getBOOL("ShowCoordinatesOption");
+		return gSavedSettings.getBOOL("NavBarShowCoordinates");
 	}
 
 	return false;
diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h
index 44dc0cb251..fefd0f7fec 100644
--- a/indra/newview/lllocationinputctrl.h
+++ b/indra/newview/lllocationinputctrl.h
@@ -33,7 +33,8 @@
 #ifndef LL_LLLOCATIONINPUTCTRL_H
 #define LL_LLLOCATIONINPUTCTRL_H
 
-#include <llcombobox.h>
+#include "llcombobox.h"
+#include "lliconctrl.h"		// Params
 
 class LLLandmark;
 
@@ -63,9 +64,15 @@ public:
 											add_landmark_image_disabled,
 											add_landmark_image_hover,
 											add_landmark_image_selected;
-		Optional<S32>						add_landmark_hpad;
+		Optional<S32>						icon_hpad;
 		Optional<LLButton::Params>			add_landmark_button,
 											info_button;
+		Optional<LLIconCtrl::Params>		voice_icon,
+											fly_icon,
+											push_icon,
+											build_icon,
+											scripts_icon,
+											damage_icon;
 		Params();
 	};
 
@@ -103,6 +110,7 @@ private:
 	void					enableAddLandmarkButton(bool val);
 	void					refresh();
 	void					refreshLocation();
+	void					refreshParcelIcons();
 	void					rebuildLocationHistory(std::string filter = "");
 	bool 					findTeleportItemsByTitle(const LLTeleportHistoryItem& item, const std::string& filter);
 	void					setText(const LLStringExplicit& text);
@@ -126,7 +134,20 @@ private:
 	LLMenuGL*				mLocationContextMenu;
 	LLButton*				mAddLandmarkBtn;
 	LLButton*				mInfoBtn;
-	S32						mAddLandmarkHPad;
+	S32						mIconHPad;
+	
+	enum EParcelIcon
+	{
+		VOICE_ICON = 0,
+		FLY_ICON,
+		PUSH_ICON,
+		BUILD_ICON,
+		SCRIPTS_ICON,
+		DAMAGE_ICON,
+		ICON_COUNT
+	};
+	LLIconCtrl*	mParcelIcon[ICON_COUNT];
+	// TODO: Health meter?
 
 	LLAddLandmarkObserver*		mAddLandmarkObserver;
 	LLRemoveLandmarkObserver*	mRemoveLandmarkObserver;
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index 114d26af8a..46d64c3416 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -413,7 +413,7 @@ void LLNavigationBar::onTeleportFinished(const LLVector3d& global_agent_pos, con
 	 * At this moment gAgent.getPositionAgent() contains previous coordinates.
 	 * according to EXT-65 agent position is being reseted on each frame.  
 	 */
-		LLAgentUI::buildLocationString(location, LLAgentUI::LOCATION_FORMAT_WITHOUT_SIM,
+		LLAgentUI::buildLocationString(location, LLAgentUI::LOCATION_FORMAT_NO_MATURITY,
 					gAgent.getPosAgentFromGlobal(global_agent_pos));
 	std::string tooltip (LLSLURL::buildSLURLfromPosGlobal(gAgent.getRegion()->getName(), global_agent_pos, false));
 	
diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp
index bc886d5743..cc4689062e 100644
--- a/indra/newview/llteleporthistory.cpp
+++ b/indra/newview/llteleporthistory.cpp
@@ -52,7 +52,7 @@
 
 const std::string& LLTeleportHistoryItem::getTitle() const
 {
-	return gSavedSettings.getBOOL("ShowCoordinatesOption") ? mFullTitle : mTitle;
+	return gSavedSettings.getBOOL("NavBarShowCoordinates") ? mFullTitle : mTitle;
 }
 
 //////////////////////////////////////////////////////////////////////////////
@@ -177,7 +177,7 @@ void LLTeleportHistory::purgeItems()
 std::string LLTeleportHistory::getCurrentLocationTitle(bool full, const LLVector3& local_pos_override)
 {
 	std::string location_name;
-	LLAgentUI::ELocationFormat fmt = full ? LLAgentUI::LOCATION_FORMAT_WITHOUT_SIM : LLAgentUI::LOCATION_FORMAT_NORMAL;
+	LLAgentUI::ELocationFormat fmt = full ? LLAgentUI::LOCATION_FORMAT_NO_MATURITY : LLAgentUI::LOCATION_FORMAT_NORMAL;
 
 	if (!LLAgentUI::buildLocationString(location_name, fmt, local_pos_override)) location_name = "Unknown";
 	return location_name;
diff --git a/indra/newview/llteleporthistory.h b/indra/newview/llteleporthistory.h
index 9f5563ed0b..a82bec7c4f 100644
--- a/indra/newview/llteleporthistory.h
+++ b/indra/newview/llteleporthistory.h
@@ -57,7 +57,8 @@ public:
 	{}
 
 	/**
-	 * @return title formatted according to the current value of the ShowCoordinatesOption setting.
+	 * @return title formatted according to the current value of the 
+	 * NavBarShowCoordinates setting.
 	 */
 	const std::string& getTitle() const;
 	
diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp
index ded83debad..26b3bdb82e 100644
--- a/indra/newview/lltoolmgr.cpp
+++ b/indra/newview/lltoolmgr.cpp
@@ -247,7 +247,7 @@ bool LLToolMgr::inEdit()
 
 bool LLToolMgr::canEdit()
 {
-	return LLViewerParcelMgr::getInstance()->agentCanBuild();
+	return LLViewerParcelMgr::getInstance()->allowAgentBuild();
 }
 
 void LLToolMgr::toggleBuildMode()
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index c67af994a4..ee1a469bbd 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -2736,7 +2736,7 @@ bool enable_object_edit()
 	bool enable = false;
 	if (gAgent.inPrelude())
 	{
-		enable = LLViewerParcelMgr::getInstance()->agentCanBuild()
+		enable = LLViewerParcelMgr::getInstance()->allowAgentBuild()
 			|| LLSelectMgr::getInstance()->getSelection()->isAttachment();
 	} 
 	else if (LLSelectMgr::getInstance()->selectGetModify())
@@ -6096,7 +6096,7 @@ class LLAttachmentEnableDrop : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-		BOOL can_build   = gAgent.isGodlike() || (LLViewerParcelMgr::getInstance()->agentCanBuild());
+		BOOL can_build   = gAgent.isGodlike() || (LLViewerParcelMgr::getInstance()->allowAgentBuild());
 
 		//Add an inventory observer to only allow dropping the newly attached item
 		//once it exists in your inventory.  Look at Jira 2422.
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index aa0987aa7d..fcaf49c884 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -650,7 +650,7 @@ LLParcel *LLViewerParcelMgr::getAgentParcel() const
 }
 
 // Return whether the agent can build on the land they are on
-bool LLViewerParcelMgr::agentCanBuild() const
+bool LLViewerParcelMgr::allowAgentBuild() const
 {
 	if (mAgentParcel)
 	{
@@ -664,19 +664,47 @@ bool LLViewerParcelMgr::agentCanBuild() const
 	}
 }
 
-BOOL LLViewerParcelMgr::agentCanTakeDamage() const
+bool LLViewerParcelMgr::allowAgentVoice() const
 {
-	return mAgentParcel->getAllowDamage();
+	LLViewerRegion* region = gAgent.getRegion();
+	return region && region->isVoiceEnabled()
+		&& mAgentParcel	&& mAgentParcel->getParcelFlagAllowVoice();
 }
 
-BOOL LLViewerParcelMgr::agentCanFly() const
+bool LLViewerParcelMgr::allowAgentFly() const
 {
-	return TRUE;
+	LLViewerRegion* region = gAgent.getRegion();
+	return region && !region->getBlockFly()
+		&& mAgentParcel && mAgentParcel->getAllowFly();
 }
 
-F32 LLViewerParcelMgr::agentDrawDistance() const
+// Can the agent be pushed around by LLPushObject?
+bool LLViewerParcelMgr::allowAgentPush() const
 {
-	return 512.f;
+	LLViewerRegion* region = gAgent.getRegion();
+	return region && !region->getRestrictPushObject()
+		&& mAgentParcel && !mAgentParcel->getRestrictPushObject();
+}
+
+bool LLViewerParcelMgr::allowAgentScripts() const
+{
+	LLViewerRegion* region = gAgent.getRegion();
+	// *NOTE: This code does not take into account group-owned parcels
+	// and the flag to allow group-owned scripted objects to run.
+	// This mirrors the traditional menu bar parcel icon code, but is not
+	// technically correct.
+	return region
+		&& !(region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS)
+		&& !(region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS)
+		&& mAgentParcel
+		&& mAgentParcel->getAllowOtherScripts();
+}
+
+bool LLViewerParcelMgr::allowAgentDamage() const
+{
+	LLViewerRegion* region = gAgent.getRegion();
+	return region && region->getAllowDamage()
+		&& mAgentParcel && mAgentParcel->getAllowDamage();
 }
 
 BOOL LLViewerParcelMgr::isOwnedAt(const LLVector3d& pos_global) const
diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h
index 1c8fe23dba..379190789b 100644
--- a/indra/newview/llviewerparcelmgr.h
+++ b/indra/newview/llviewerparcelmgr.h
@@ -56,9 +56,6 @@ class LLViewerRegion;
 //							  | EAST_MASK 
 //							  | WEST_MASK);
 
-const F32 PARCEL_POST_HEIGHT = 0.666f;
-//const F32 PARCEL_POST_HEIGHT = 20.f;
-
 // Specify the type of land transfer taking place
 //enum ELandTransferType
 //{
@@ -171,10 +168,29 @@ public:
 
 	LLParcel*	getCollisionParcel() const;
 
-	BOOL	agentCanTakeDamage() const;
-	BOOL	agentCanFly() const;
-	F32		agentDrawDistance() const;
-	bool	agentCanBuild() const;
+	// Can this agent build on the parcel he is on?
+	// Used for parcel property icons in nav bar.
+	bool	allowAgentBuild() const;
+	
+	// Can this agent speak on the parcel he is on?
+	// Used for parcel property icons in nav bar.
+	bool	allowAgentVoice() const;
+	
+	// Can this agent start flying on this parcel?
+	// Used for parcel property icons in nav bar.
+	bool	allowAgentFly() const;
+	
+	// Can this agent be pushed by llPushObject() on this parcel?
+	// Used for parcel property icons in nav bar.
+	bool	allowAgentPush() const;
+	
+	// Can scripts written by non-parcel-owners run on the agent's current
+	// parcel?  Used for parcel property icons in nav bar.
+	bool	allowAgentScripts() const;
+	
+	// Can the agent be damaged here?
+	// Used for parcel property icons in nav bar.
+	bool	allowAgentDamage() const;
 
 	F32		getHoverParcelWidth() const		
 				{ return F32(mHoverEastNorth.mdV[VX] - mHoverWestSouth.mdV[VX]); }
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index d88bcfab1d..1fed1c075a 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -11,7 +11,7 @@
                 add_landmark_image_disabled="Favorite_Star_Off"
                 add_landmark_image_hover="Favorite_Star_Over"
                 add_landmark_image_selected="Favorite_Star_Press"
-                add_landmark_hpad="2"
+                icon_hpad="2"
                 allow_text_entry="true"
                 list_position="below"
       	        show_text_as_tentative="false"
@@ -38,7 +38,51 @@
                           scale_image="false"
 			  top="19"
 			  left="-3" />
-  <combo_button name="Location History"
+  <voice_icon
+    name="voice_icon"
+    width="22"
+    height="18"
+	top="21"
+    image_name="parcel_lght_VoiceNo"
+    />
+  <fly_icon
+    name="fly_icon"
+    width="22"
+    height="18"
+	top="21"
+    image_name="parcel_lght_FlyNo"
+    />
+  <push_icon
+    name="push_icon"
+    width="22"
+    height="18"
+	top="21"
+    image_name="parcel_lght_PushNo"
+    />
+  <build_icon
+    name="build_icon"
+    width="22"
+    height="18"
+	top="21"
+    image_name="parcel_lght_BuildNo"
+    />
+  <scripts_icon
+    name="scripts_icon"
+    width="22"
+    height="18"
+	top="21"
+    image_name="parcel_lght_ScriptsNo"
+    />
+  <!-- NOTE: Placeholder icon, there is no dark grayscale version -->
+  <damage_icon
+    name="damage_icon"
+    width="22"
+    height="18"
+	top="21"
+    image_name="parcel_lght_Damage"
+    />
+
+    <combo_button name="Location History"
                           label=""
                           pad_right="0"/>
   <combo_list bg_writeable_color="MenuDefaultBgColor" page_lines="10"
-- 
cgit v1.2.3


From a19d849e9b47a517b296c582126eda6a8b4cea49 Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Mon, 23 Nov 2009 14:50:26 -0800
Subject: DEV-43298 Expand widgets slightly in EN: 
 floater_animation_preview.xml

---
 .../default/xui/en/floater_animation_preview.xml      | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_animation_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_preview.xml
index ebce758d3d..41b1f99d41 100644
--- a/indra/newview/skins/default/xui/en/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_animation_preview.xml
@@ -163,7 +163,7 @@ Maximum animation length is [MAX_LENGTH] seconds.
      follows="top|left|right"
      height="23"
      layout="topleft"
-     left="85"
+     left="100"
      name="name_form"
      right="-10" />
     <text
@@ -182,7 +182,7 @@ Maximum animation length is [MAX_LENGTH] seconds.
      follows="top|left|right"
      height="23"
      layout="topleft"
-     left="85"
+     left="100"
      name="description_form"
      right="-10" />
     <spinner
@@ -192,7 +192,7 @@ Maximum animation length is [MAX_LENGTH] seconds.
      increment="1"
      initial_value="0"
      label="Priority"
-     label_width="90"
+     label_width="88"
      layout="topleft"
      left="10"
      max_val="4"
@@ -214,14 +214,14 @@ Maximum animation length is [MAX_LENGTH] seconds.
      increment="1"
      initial_value="0"
      label="In(%)"
-     label_width="35"
+     label_width="49"
      layout="topleft"
      top_pad="5"
      left="30"
      max_val="100"
      name="loop_in_point"
      tool_tip="Sets point in animation that looping returns to"
-     width="110" />
+     width="115" />
     <spinner
      bottom_delta="0"
      follows="left|top"
@@ -234,8 +234,8 @@ Maximum animation length is [MAX_LENGTH] seconds.
      max_val="100"
      name="loop_out_point"
      tool_tip="Sets point in animation that ends a loop"
-     label_width="45"
-     width="120" />
+     label_width="49"
+     width="115" />
     <text
      type="string"
      length="1"
@@ -243,6 +243,7 @@ Maximum animation length is [MAX_LENGTH] seconds.
      follows="top|left"
      height="23"
      width="110"
+     word_wrap="true"
      layout="topleft"
      left="10"
      name="hand_label">
@@ -315,6 +316,7 @@ Maximum animation length is [MAX_LENGTH] seconds.
      follows="top|left"
      height="23"
      width="110"
+     word_wrap="true"
      layout="topleft"
      left="10"
      name="emote_label">
@@ -395,6 +397,7 @@ Maximum animation length is [MAX_LENGTH] seconds.
      follows="top|left"
      height="23"
      width="110"
+     word_wrap="true"
      layout="topleft"
      left="10"
      name="preview_label">
@@ -482,6 +485,8 @@ Maximum animation length is [MAX_LENGTH] seconds.
     <text
      type="string"
      length="1"
+     height="72"
+     word_wrap="true"
      top_pad="5"
      text_color="EmphasisColor"
      follows="top|left"
-- 
cgit v1.2.3


From 78bbe3f5b1791484ed02408015f5277596f37db4 Mon Sep 17 00:00:00 2001
From: "Justin C. Rounds (Chuck)" <chuck@lindenlab.com>
Date: Mon, 23 Nov 2009 17:51:32 -0500
Subject: Updated graphic from 80/20. Changed references in xml.
 http://jira.secondlife.com/browse/EXT-2642

---
 .../skins/default/textures/bottomtray/Unread_IM.png     | Bin 297 -> 416 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/textures/bottomtray/Unread_IM.png b/indra/newview/skins/default/textures/bottomtray/Unread_IM.png
index a355917fca..598342ea80 100644
Binary files a/indra/newview/skins/default/textures/bottomtray/Unread_IM.png and b/indra/newview/skins/default/textures/bottomtray/Unread_IM.png differ
-- 
cgit v1.2.3


From fef0d16a158a8b534a0008b9d62da4bfeb7da4e9 Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Mon, 23 Nov 2009 14:57:01 -0800
Subject: DEV-43298 Expand widgets slightly in EN:  floater_build_options.xml

---
 indra/newview/skins/default/xui/en/floater_build_options.xml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_build_options.xml b/indra/newview/skins/default/xui/en/floater_build_options.xml
index f0e678af00..56230e912c 100644
--- a/indra/newview/skins/default/xui/en/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/en/floater_build_options.xml
@@ -15,14 +15,14 @@
      height="23"
      initial_value="1"
      label="Grid Units (meters)"
-     label_width="130"
+     label_width="160"
      layout="topleft"
      left="10"
      max_val="5"
      min_val="0.01"
      name="GridResolution"
      top="25"
-     width="200" />
+     width="230" />
     <spinner
      control_name="GridDrawSize"
      decimal_digits="1"
@@ -31,14 +31,14 @@
      increment="0.5"
      initial_value="5"
      label="Grid Extents (meters)"
-     label_width="130"
+     label_width="160"
      layout="topleft"
      left_delta="0"
      max_val="50"
      min_val="1"
      name="GridDrawSize"
      top_pad="0"
-     width="200" />
+     width="230" />
     <check_box
      control_name="GridSubUnit"
      height="16"
-- 
cgit v1.2.3


From 47f9da8544a22657a6d3efa7b63604399c45e398 Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Mon, 23 Nov 2009 15:18:12 -0800
Subject: DEV-43298 Expand widgets slightly in EN:  floater_image_preview.xml

---
 indra/newview/skins/default/xui/en/floater_image_preview.xml | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_image_preview.xml b/indra/newview/skins/default/xui/en/floater_image_preview.xml
index 2562daf4b3..6f8f272128 100644
--- a/indra/newview/skins/default/xui/en/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_image_preview.xml
@@ -47,9 +47,11 @@
     <text
      type="string"
      length="1"
-     bottom_delta="20"
+     bottom_delta="30"
      follows="top|left"
-     height="15"
+     height="25"
+     width="105"
+     word_wrap="true"
      layout="topleft"
      name="preview_label">
         Preview image as:
@@ -96,7 +98,9 @@
     <text
      type="string"
      length="1"
-     bottom="190"
+     bottom="225"
+     height="45"
+     word_wrap="true"
      follows="top|left"
      layout="topleft"
      left="10"
@@ -114,7 +118,7 @@ Try saving image as 24 bit Targa (.tga).
      layout="topleft"
      left_delta="2"
      name="lossless_check"
-     top_pad="197"
+     top_pad="162"
      width="280" />
     <button
      follows="bottom|right"
-- 
cgit v1.2.3


From 2ede27a5e266794fc3d034f12344a580260a3546 Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Mon, 23 Nov 2009 15:29:01 -0800
Subject: Context menu item to show/hide nav bar parcel property icons.

---
 indra/newview/app_settings/settings.xml            | 13 ++++++-
 indra/newview/lllocationinputctrl.cpp              | 44 +++++++++++++++-------
 indra/newview/skins/default/xui/en/menu_navbar.xml | 17 +++++----
 3 files changed, 51 insertions(+), 23 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 21ccf2ac91..85a465c073 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7712,7 +7712,7 @@
     <key>NavBarShowCoordinates</key>
     <map>
       <key>Comment</key>
-      <string>Show Coordinates in  Location Input Field</string>
+      <string>Show coordinates in navigation bar</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -7720,6 +7720,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>NavBarShowParcelProperties</key>
+    <map>
+      <key>Comment</key>
+      <string>Show parcel property icons in navigation bar</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
     <key>ShowCrosshairs</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index be96d7b43a..5d2a0aa382 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -596,6 +596,16 @@ void LLLocationInputCtrl::refreshLocation()
 
 void LLLocationInputCtrl::refreshParcelIcons()
 {
+	static LLUICachedControl<bool> show_properties("NavBarShowParcelProperties", false);
+	if (!show_properties)
+	{
+		for (S32 i = 0; i < ICON_COUNT; ++i)
+		{
+			mParcelIcon[i]->setVisible(false);
+		}
+		return;
+	}
+	
 	LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
 	// *TODO buy
 	//bool allow_buy      = vpm->canAgentBuyParcel( vpm->getAgentParcel(), false);
@@ -754,11 +764,17 @@ void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata)
 {
 	std::string item = userdata.asString();
 
-	if (item == std::string("show_coordinates"))
+	if (item == "show_coordinates")
 	{
 		gSavedSettings.setBOOL("NavBarShowCoordinates",!gSavedSettings.getBOOL("NavBarShowCoordinates"));
 	}
-	else if (item == std::string("landmark"))
+	else if (item == "show_properties")
+	{
+		gSavedSettings.setBOOL("NavBarShowParcelProperties",
+			!gSavedSettings.getBOOL("NavBarShowParcelProperties"));
+		refreshParcelIcons();
+	}
+	else if (item == "landmark")
 	{
 		LLViewerInventoryItem* landmark = LLLandmarkActions::findLandmarkForAgentPos();
 		
@@ -772,23 +788,23 @@ void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata)
 					LLSD().insert("type", "landmark").insert("id",landmark->getUUID()));
 		}
 	}
-	else if (item == std::string("cut"))
+	else if (item == "cut")
 	{
 		mTextEntry->cut();
 	}
-	else if (item == std::string("copy"))
+	else if (item == "copy")
 	{
 		mTextEntry->copy();
 	}
-	else if (item == std::string("paste"))
+	else if (item == "paste")
 	{
 		mTextEntry->paste();
 	}
-	else if (item == std::string("delete"))
+	else if (item == "delete")
 	{
 		mTextEntry->deleteSelection();
 	}
-	else if (item == std::string("select_all"))
+	else if (item == "select_all")
 	{
 		mTextEntry->selectAll();
 	}
@@ -798,28 +814,28 @@ bool LLLocationInputCtrl::onLocationContextMenuItemEnabled(const LLSD& userdata)
 {
 	std::string item = userdata.asString();
 	
-	if (item == std::string("can_cut"))
+	if (item == "can_cut")
 	{
 		return mTextEntry->canCut();
 	}
-	else if (item == std::string("can_copy"))
+	else if (item == "can_copy")
 	{
 		return mTextEntry->canCopy();
 	}
-	else if (item == std::string("can_paste"))
+	else if (item == "can_paste")
 	{
 		return mTextEntry->canPaste();
 	}
-	else if (item == std::string("can_delete"))
+	else if (item == "can_delete")
 	{
 		return mTextEntry->canDeselect();
 	}
-	else if (item == std::string("can_select_all"))
+	else if (item == "can_select_all")
 	{
 		return mTextEntry->canSelectAll();
 	}
-	else if(item == std::string("show_coordinates")){
-	
+	else if(item == "show_coordinates")
+	{
 		return gSavedSettings.getBOOL("NavBarShowCoordinates");
 	}
 
diff --git a/indra/newview/skins/default/xui/en/menu_navbar.xml b/indra/newview/skins/default/xui/en/menu_navbar.xml
index 89469fb013..e17eeb46f6 100644
--- a/indra/newview/skins/default/xui/en/menu_navbar.xml
+++ b/indra/newview/skins/default/xui/en/menu_navbar.xml
@@ -10,7 +10,6 @@
  width="128">
     <menu_item_check
          label="Show Coordinates"
-         layout="topleft"
          name="Show Coordinates">
            <menu_item_check.on_click
              function="Navbar.Action"
@@ -19,22 +18,28 @@
              function="Navbar.EnableMenuItem"
              parameter="show_coordinates" />
     </menu_item_check>
+    <menu_item_check
+      label="Show Parcel Properties"
+      name="Show Parcel Properties">
+      <menu_item_check.on_click
+        function="Navbar.Action"
+        parameter="show_properties" />
+      <menu_item_check.on_check
+        control="NavBarShowParcelProperties" />
+    </menu_item_check>
     <!-- Label of 'Landmark' item is changing in runtime, 
     see  AddLandmarkNavBarMenu/EditLandmarkNavBarMenu in strings.xml -->
     <menu_item_call
      label="Landmark"
-     layout="topleft"
      name="Landmark">
         <menu_item_call.on_click
          function="Navbar.Action"
          parameter="landmark" />
     </menu_item_call>
     <menu_item_separator
-     layout="topleft"
      name="Separator" />
     <menu_item_call
      label="Cut"
-     layout="topleft"
      name="Cut">
         <menu_item_call.on_click
          function="Navbar.Action"
@@ -45,7 +50,6 @@
     </menu_item_call>
     <menu_item_call
      label="Copy"
-     layout="topleft"
      name="Copy">
         <menu_item_call.on_click
          function="Navbar.Action"
@@ -56,7 +60,6 @@
     </menu_item_call>
     <menu_item_call
      label="Paste"
-     layout="topleft"
      name="Paste">
         <menu_item_call.on_click
          function="Navbar.Action"
@@ -67,7 +70,6 @@
     </menu_item_call>
     <menu_item_call
      label="Delete"
-     layout="topleft"
      name="Delete">
         <menu_item_call.on_click
          function="Navbar.Action"
@@ -78,7 +80,6 @@
     </menu_item_call>
     <menu_item_call
      label="Select All"
-     layout="topleft"
      name="Select All">
         <menu_item_call.on_click
          function="Navbar.Action"
-- 
cgit v1.2.3


From c9a1d3040e4ec8fde7bc1d69ea0509f0f7d288a1 Mon Sep 17 00:00:00 2001
From: Lis Pardi <lis@lindenlab.com>
Date: Mon, 23 Nov 2009 18:35:21 -0500
Subject: http://jira.secondlife.com/browse/EXT-2557 Buttons should not be
 bolded-- This Jira also illuminated that buttons should be Medium, instead of
 Small

---
 .../skins/default/xui/en/floater_about_land.xml      | 20 +-------------------
 .../skins/default/xui/en/floater_customize.xml       | 17 -----------------
 .../skins/default/xui/en/floater_env_settings.xml    |  3 ---
 .../skins/default/xui/en/floater_god_tools.xml       | 15 ---------------
 .../xui/en/floater_inventory_item_properties.xml     |  2 --
 .../skins/default/xui/en/floater_moveview.xml        |  3 +--
 .../skins/default/xui/en/floater_openobject.xml      |  2 --
 .../default/xui/en/floater_preview_animation.xml     |  2 --
 .../skins/default/xui/en/floater_preview_sound.xml   |  1 -
 .../skins/default/xui/en/floater_sell_land.xml       |  4 ----
 .../skins/default/xui/en/floater_snapshot.xml        |  2 --
 .../newview/skins/default/xui/en/floater_telehub.xml |  4 ----
 .../skins/default/xui/en/floater_test_button.xml     |  1 -
 .../skins/default/xui/en/floater_texture_ctrl.xml    |  3 ---
 indra/newview/skins/default/xui/en/floater_tools.xml |  4 ----
 .../skins/default/xui/en/floater_url_entry.xml       |  3 ---
 .../skins/default/xui/en/floater_whitelist_entry.xml |  4 ++--
 .../skins/default/xui/en/floater_world_map.xml       |  1 -
 .../skins/default/xui/en/panel_classified_info.xml   |  3 ---
 .../skins/default/xui/en/panel_group_invite.xml      |  4 ----
 .../skins/default/xui/en/panel_navigation_bar.xml    |  3 ---
 indra/newview/skins/default/xui/en/panel_people.xml  |  7 -------
 .../newview/skins/default/xui/en/panel_pick_info.xml |  3 ---
 indra/newview/skins/default/xui/en/panel_picks.xml   |  4 ----
 indra/newview/skins/default/xui/en/panel_places.xml  |  7 -------
 indra/newview/skins/default/xui/en/panel_profile.xml |  2 --
 .../skins/default/xui/en/panel_region_covenant.xml   |  1 -
 .../skins/default/xui/en/panel_region_debug.xml      |  7 -------
 .../skins/default/xui/en/panel_status_bar.xml        |  1 -
 .../skins/default/xui/en/sidepanel_appearance.xml    |  2 --
 .../skins/default/xui/en/sidepanel_inventory.xml     |  5 -----
 .../skins/default/xui/en/sidepanel_item_info.xml     |  5 -----
 .../skins/default/xui/en/sidepanel_task_info.xml     |  7 -------
 33 files changed, 4 insertions(+), 148 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 615d1bf18d..4f1024f56d 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  can_tear_off="false"
  height="420"
@@ -215,7 +215,6 @@ Go to World menu &gt; About Land or select another parcel to show its details.
             </text>
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Profile..."
              label_selected="Profile..."
@@ -247,7 +246,6 @@ Go to World menu &gt; About Land or select another parcel to show its details.
              width="250" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Set..."
              label_selected="Set..."
@@ -269,7 +267,6 @@ Go to World menu &gt; About Land or select another parcel to show its details.
             <button
              enabled="false"
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Deed..."
              label_selected="Deed..."
@@ -928,7 +925,6 @@ Go to World menu &gt; About Land or select another parcel to show its details.
              bottom="100"
              enabled="false"
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Show"
              label_selected="Show"
@@ -940,7 +936,6 @@ Go to World menu &gt; About Land or select another parcel to show its details.
              bottom="100"
              enabled="false"
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Return..."
              label_selected="Return..."
@@ -977,7 +972,6 @@ Go to World menu &gt; About Land or select another parcel to show its details.
              bottom="120"
              enabled="false"
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Show"
              label_selected="Show"
@@ -989,7 +983,6 @@ Go to World menu &gt; About Land or select another parcel to show its details.
              bottom="120"
              enabled="false"
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Return..."
              label_selected="Return..."
@@ -1026,7 +1019,6 @@ Go to World menu &gt; About Land or select another parcel to show its details.
              bottom="140"
              enabled="false"
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Show"
              label_selected="Show"
@@ -1038,7 +1030,6 @@ Go to World menu &gt; About Land or select another parcel to show its details.
              bottom="140"
              enabled="false"
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Return..."
              label_selected="Return..."
@@ -1108,7 +1099,6 @@ Go to World menu &gt; About Land or select another parcel to show its details.
             </text>
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Refresh List"
              label_selected="Refresh List"
@@ -1120,7 +1110,6 @@ Go to World menu &gt; About Land or select another parcel to show its details.
             <button
              enabled="false"
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Return objects..."
              label_selected="Return objects..."
@@ -1531,7 +1520,6 @@ Only large parcels can be listed in search.
             </text>
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Set"
              label_selected="Set"
@@ -1543,7 +1531,6 @@ Only large parcels can be listed in search.
              width="50" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Clear"
              label_selected="Clear"
@@ -1654,7 +1641,6 @@ Only large parcels can be listed in search.
              text_readonly_color="0.576471 0.662745 0.835294 1" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Set..."
              label_selected="Set..."
@@ -1685,7 +1671,6 @@ Only large parcels can be listed in search.
              width="300" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Reset..."
              label_selected="Reset..."
@@ -2119,7 +2104,6 @@ Texture:
              width="80" />
             <button
              follows="bottom"
-             font="SansSerifSmall"
              height="16"
              label="Remove"
              label_selected="Remove"
@@ -2155,7 +2139,6 @@ Texture:
              width="195" />
             <button
              follows="bottom"
-             font="SansSerifSmall"
              height="16"
              label="Add..."
              label_selected="Add..."
@@ -2167,7 +2150,6 @@ Texture:
             <button
              enabled="false"
              follows="bottom"
-             font="SansSerifSmall"
              height="16"
              label="Remove"
              label_selected="Remove"
diff --git a/indra/newview/skins/default/xui/en/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml
index 9d2a811d9f..275ab5bb8b 100644
--- a/indra/newview/skins/default/xui/en/floater_customize.xml
+++ b/indra/newview/skins/default/xui/en/floater_customize.xml
@@ -64,7 +64,6 @@
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Body"
              label_selected="Body"
@@ -75,7 +74,6 @@
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Head"
              label_selected="Head"
@@ -86,7 +84,6 @@
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Eyes"
              label_selected="Eyes"
@@ -97,7 +94,6 @@
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Ears"
              label_selected="Ears"
@@ -108,7 +104,6 @@
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Nose"
              label_selected="Nose"
@@ -119,7 +114,6 @@
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Mouth"
              label_selected="Mouth"
@@ -130,7 +124,6 @@
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Chin"
              label_selected="Chin"
@@ -141,7 +134,6 @@
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Torso"
              label_selected="Torso"
@@ -152,7 +144,6 @@
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Legs"
              label_selected="Legs"
@@ -351,7 +342,6 @@ scratch and wear it.
              width="16" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Skin Color"
              label_selected="Skin Color"
@@ -362,7 +352,6 @@ scratch and wear it.
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Face Detail"
              label_selected="Face Detail"
@@ -373,7 +362,6 @@ scratch and wear it.
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Makeup"
              label_selected="Makeup"
@@ -384,7 +372,6 @@ scratch and wear it.
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Body Detail"
              label_selected="Body Detail"
@@ -606,7 +593,6 @@ scratch and wear it.
              width="16" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Color"
              label_selected="Color"
@@ -617,7 +603,6 @@ scratch and wear it.
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Style"
              label_selected="Style"
@@ -628,7 +613,6 @@ scratch and wear it.
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Eyebrows"
              label_selected="Eyebrows"
@@ -639,7 +623,6 @@ scratch and wear it.
              width="82" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="16"
              label="Facial"
              label_selected="Facial"
diff --git a/indra/newview/skins/default/xui/en/floater_env_settings.xml b/indra/newview/skins/default/xui/en/floater_env_settings.xml
index 5233cb023d..5e78037ee1 100644
--- a/indra/newview/skins/default/xui/en/floater_env_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_env_settings.xml
@@ -136,7 +136,6 @@
      width="210" />
     <button
      follows="left|top"
-     font="SansSerifSmall"
      height="20"
      label="Use Estate Time"
      layout="topleft"
@@ -146,7 +145,6 @@
      width="137" />
     <button
      follows="left|top"
-     font="SansSerifSmall"
      height="20"
      label="Advanced Sky"
      layout="topleft"
@@ -156,7 +154,6 @@
      width="137" />
     <button
      follows="left|top"
-     font="SansSerifSmall"
      height="20"
      label="Advanced Water"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_god_tools.xml b/indra/newview/skins/default/xui/en/floater_god_tools.xml
index 79eed52fbf..b01c0edc8b 100644
--- a/indra/newview/skins/default/xui/en/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_god_tools.xml
@@ -191,7 +191,6 @@
 			</check_box>
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="22"
              label="Bake Terrain"
              label_selected="Bake Terrain"
@@ -206,7 +205,6 @@
 			</button>
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="22"
              label="Revert Terrain"
              label_selected="Revert Terrain"
@@ -220,7 +218,6 @@
 			</button>
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="22"
              label="Swap Terrain"
              label_selected="Swap Terrain"
@@ -419,7 +416,6 @@
 
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="22"
              label="Refresh"
              label_selected="Refresh"
@@ -434,7 +430,6 @@
 			</button>
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="22"
              label="Apply"
              label_selected="Apply"
@@ -449,7 +444,6 @@
 			</button>
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="22"
              label="Select Region"
              label_selected="Select Region"
@@ -464,7 +458,6 @@
 			</button>
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="22"
              label="Autosave now"
              label_selected="Autosave now"
@@ -556,7 +549,6 @@
 			</check_box>
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="22"
              label="Apply"
              label_selected="Apply"
@@ -571,7 +563,6 @@
 			</button>
 			<button
              follows="top|right"
-             font="SansSerifSmall"
              height="22"
              label="Set Target"
              label_selected="Set Target"
@@ -598,7 +589,6 @@
             </text>
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="22"
              label="Delete Target&apos;s Scripted Objects On Others Land"
              label_selected="Delete Target&apos;s Scripted Objects On Others Land"
@@ -613,7 +603,6 @@
 			</button>
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="22"
              label="Delete Target&apos;s Scripted Objects On *Any* Land"
              label_selected="Delete Target&apos;s Scripted Objects On *Any* Land"
@@ -628,7 +617,6 @@
 			</button>
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="22"
              label="Delete *ALL* Of Target&apos;s Objects"
              label_selected="Delete *ALL* Of Target&apos;s Objects"
@@ -643,7 +631,6 @@
 			</button>
 			<button
              follows="top|right"
-             font="SansSerifSmall"
              height="20"
              label="Get Top Colliders"
              label_selected="Get Top Colliders"
@@ -658,7 +645,6 @@
 			</button>
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="20"
              label="Get Top Scripts"
              label_selected="Get Top Scripts"
@@ -673,7 +659,6 @@
 			</button>
             <button
              follows="top|right"
-             font="SansSerifSmall"
              height="20"
              label="Scripts digest"
              label_selected="Scripts digest"
diff --git a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
index 4ca6002c13..d34820347d 100644
--- a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
@@ -111,7 +111,6 @@
     </text>
     <button
      follows="top|right"
-     font="SansSerifSmall"
      height="16"
      label="Profile..."
      layout="topleft"
@@ -145,7 +144,6 @@
     </text>
     <button
      follows="top|right"
-     font="SansSerifSmall"
      height="16"
      label="Profile..."
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index 5a8ffcebea..cff0c29dfc 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -151,8 +151,7 @@
          top="2"
          width="31" />
         <button
-         follows="left|bottom"
-         font="SansSerifSmall" 
+         follows="left|bottom" 
          height="23"
          image_overlay="Move_Run_Off"
          image_selected="PushButton_Selected_Press" 
diff --git a/indra/newview/skins/default/xui/en/floater_openobject.xml b/indra/newview/skins/default/xui/en/floater_openobject.xml
index 3fd118df1c..41a440aaa0 100644
--- a/indra/newview/skins/default/xui/en/floater_openobject.xml
+++ b/indra/newview/skins/default/xui/en/floater_openobject.xml
@@ -38,7 +38,6 @@
      width="284" />
     <button
      follows="bottom|left"
-     font="SansSerifSmall"
      height="23"
      label="Copy To Inventory"
      label_selected="Copy To Inventory"
@@ -53,7 +52,6 @@
     </button>
     <button
      follows="bottom|left"
-     font="SansSerifSmall"
      height="23"
      label="Copy And Wear"
      label_selected="Copy And Wear"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_animation.xml b/indra/newview/skins/default/xui/en/floater_preview_animation.xml
index 3b84358484..bbfb362337 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_animation.xml
@@ -38,7 +38,6 @@
      width="170" />
     <button
      height="20"
-     font="SansSerifSmall"
      label="Play in World"
      label_selected="Stop"
      layout="topleft"
@@ -49,7 +48,6 @@
      width="125" />
     <button
      height="20"
-     font="SansSerifSmall"
      label="Play Locally"
      label_selected="Stop"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_sound.xml b/indra/newview/skins/default/xui/en/floater_preview_sound.xml
index 95347f0dff..68a78d5017 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_sound.xml
@@ -50,7 +50,6 @@
     <button
      follows="left|top"
      height="22"
-     font="SansSerifSmall"
      label="Play Locally"
      label_selected="Play Locally"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_sell_land.xml b/indra/newview/skins/default/xui/en/floater_sell_land.xml
index 2cf800fb15..e6a78563f3 100644
--- a/indra/newview/skins/default/xui/en/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_sell_land.xml
@@ -205,7 +205,6 @@
      width="130" />
     <button
      height="20"
-     font="SansSerifSmall"
      label="Select"
      layout="topleft"
      left_pad="5"
@@ -267,7 +266,6 @@
     </radio_group>
     <button
      height="20"
-     font="SansSerifSmall"
      label="Show Objects"
      layout="topleft"
      name="show_objects"
@@ -290,7 +288,6 @@
     <button
      follows="bottom|left"
      height="20"
-     font="SansSerifSmall"
      label="Set Land For Sale"
      layout="topleft"
      left_delta="0"
@@ -300,7 +297,6 @@
     <button
      follows="bottom|right"
      height="20"
-     font="SansSerifSmall"
      label="Cancel"
      layout="topleft"
      left_pad="30"
diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml
index 95a40e27f7..8860ac1e50 100644
--- a/indra/newview/skins/default/xui/en/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml
@@ -120,7 +120,6 @@
      width="85" />
     <button
      follows="left|top"
-     font="SansSerifSmall"
      height="20"
      label="More &gt;&gt;"
      layout="topleft"
@@ -131,7 +130,6 @@
      width="80" />
     <button
      follows="left|top"
-     font="SansSerifSmall"
      height="20"
      label="&lt;&lt; Less"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_telehub.xml b/indra/newview/skins/default/xui/en/floater_telehub.xml
index cc0ab8c57e..374f014908 100644
--- a/indra/newview/skins/default/xui/en/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/en/floater_telehub.xml
@@ -57,7 +57,6 @@
     </text>
     <button
      follows="top|left"
-     font="SansSerifSmall"
      height="20"
      label="Connect Telehub"
      layout="topleft"
@@ -67,7 +66,6 @@
      width="110" />
     <button
      follows="top|left"
-     font="SansSerifSmall"
      height="20"
      label="Disconnect"
      layout="topleft"
@@ -97,7 +95,6 @@
      width="230" />
     <button
      follows="top|left"
-     font="SansSerifSmall"
      height="20"
      label="Add Spawn"
      layout="topleft"
@@ -107,7 +104,6 @@
      width="110" />
     <button
      follows="top|left"
-     font="SansSerifSmall"
      height="20"
      label="Remove Spawn"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml
index 2bd0d1a0fa..8c6ad5c0f7 100644
--- a/indra/newview/skins/default/xui/en/floater_test_button.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_button.xml
@@ -23,7 +23,6 @@
      name="bottom_delta_button" />
     <button
      bottom_delta="30"
-     font="SansSerifSmall"
      height="23"
      label="SansSerifSmall"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
index 4679ae467d..113da9ea4d 100644
--- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml
@@ -49,7 +49,6 @@
     <button
      enabled="false"
      follows="left|bottom"
-     font="SansSerifSmall"
      height="20"
      label="Default"
      label_selected="Default"
@@ -61,7 +60,6 @@
     <button
      enabled="false"
      follows="left|bottom"
-     font="SansSerifSmall"
      height="20"
      label="None"
      label_selected="None"
@@ -72,7 +70,6 @@
      width="80" />
     <button
      follows="left|bottom"
-     font="SansSerifSmall"
      height="20"
      label="Blank"
      label_selected="Blank"
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 8b6f0f03fe..636e9d465a 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -701,7 +701,6 @@
     </slider_bar>
     <button
      follows="left|top"
-     font="SansSerifSmall"
      height="19"
      label="Apply"
      label_selected="Apply"
@@ -927,7 +926,6 @@
              width="150" />
             <button
              follows="top|left"
-             font="SansSerifSmall"
              height="20"
              label="Deed"
              label_selected="Deed"
@@ -2606,7 +2604,6 @@ even though the user gets a free copy.
              width="170" />
             <button
              follows="left|top"
-             font="SansSerifSmall"
              height="19"
              label="Apply"
              label_selected="Apply"
@@ -2742,7 +2739,6 @@ even though the user gets a free copy.
         decouple_texture_size="true" />
      <button
 			 follows="left|top"
-			 font="SansSerifSmall"
 			 height="19"
 			 label="Align"
 			 label_selected="Align Media"
diff --git a/indra/newview/skins/default/xui/en/floater_url_entry.xml b/indra/newview/skins/default/xui/en/floater_url_entry.xml
index 1ab42cb140..29fb29fabf 100644
--- a/indra/newview/skins/default/xui/en/floater_url_entry.xml
+++ b/indra/newview/skins/default/xui/en/floater_url_entry.xml
@@ -32,7 +32,6 @@
     <button
      follows="top|left"
      height="20"
-     font="SansSerifSmall"
      label="OK"
      layout="topleft"
      left="10"
@@ -42,7 +41,6 @@
     <button
      follows="top|left"
      height="20"
-     font="SansSerifSmall"
      label="Cancel"
      layout="topleft"
      left_pad="5"
@@ -52,7 +50,6 @@
     <button
      follows="top|right"
      height="20"
-     font="SansSerifSmall"
      label="Clear"
      layout="topleft"
      left_pad="65"
diff --git a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml
index ef68d03a45..4ece0fa3ba 100644
--- a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml
+++ b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml
@@ -17,9 +17,9 @@
 	     tool_tip="Enter a URL or URL pattern to White List"
 	     width="350" />
 
-  <button follows="top|left" height="20" font="SansSerifSmall" label="OK"
+  <button follows="top|left" height="20" label="OK"
      layout="topleft" left="10" name="ok_btn" bottom_delta="28" width="64" />
   
-  <button follows="top|left" height="20" font="SansSerifSmall" label="Cancel"
+  <button follows="top|left" height="20" label="Cancel"
      layout="topleft" left_pad="5" name="cancel_btn" bottom_delta="0" width="64" />
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml
index c60cc163c8..e3db0972ec 100644
--- a/indra/newview/skins/default/xui/en/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_world_map.xml
@@ -116,7 +116,6 @@
     </text>
     <button
      follows="top|right"
-     font="SansSerifSmall"
      height="16"
      label="Go Home"
      label_selected="Go Home"
diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml
index bdca8531dc..df889e87c3 100644
--- a/indra/newview/skins/default/xui/en/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml
@@ -151,7 +151,6 @@
      name="buttons">
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          height="19"
          label="Teleport"
          layout="topleft"
@@ -161,7 +160,6 @@
          width="90" />
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          height="19"
          label="Map"
          layout="topleft"
@@ -171,7 +169,6 @@
          width="90" />
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          height="19"
          label="Edit"
          layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_group_invite.xml b/indra/newview/skins/default/xui/en/panel_group_invite.xml
index 1996977acb..37578eae70 100644
--- a/indra/newview/skins/default/xui/en/panel_group_invite.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_invite.xml
@@ -33,7 +33,6 @@ invite to your group. Click &apos;Open
 Resident Chooser&apos; to start.
     </text>
     <button
-     font="SansSerifSmall"
      height="20"
      label="Open Resident Chooser"
      layout="topleft"
@@ -53,7 +52,6 @@ Resident Chooser&apos; to start.
      top_pad="4"
      width="200" />
     <button
-     font="SansSerifSmall"
      height="20"
      label="Remove Selected from List"
      layout="topleft"
@@ -82,7 +80,6 @@ Resident Chooser&apos; to start.
      top_delta="16"
      width="196" />
     <button
-     font="SansSerifSmall"
      height="20"
      label="Send Invitations"
      layout="topleft"
@@ -91,7 +88,6 @@ Resident Chooser&apos; to start.
      top="356"
      width="130" />
     <button
-     font="SansSerifSmall"
      height="20"
      label="Cancel"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index a90337d31a..bf33b752d9 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -41,7 +41,6 @@
 	 width="600">
 	     <button
 	     follows="left|top"
-	     font="SansSerifSmall"
 	     height="23"
 	     image_disabled="PushButton_Disabled"
 	     image_disabled_selected="PushButton_Disabled"
@@ -58,7 +57,6 @@
 
 	    <button
 	     follows="left|top"
-	     font="SansSerifSmall"
 	     height="23"
 	     image_disabled="PushButton_Disabled"
 	     image_disabled_selected="PushButton_Disabled"
@@ -74,7 +72,6 @@
 	     width="31" />
 	    <button
 	     follows="left|top"
-	     font="SansSerifSmall"
 	     height="23"
 	     image_disabled="PushButton_Disabled"
 	     image_disabled_selected="PushButton_Disabled"
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index a370b450e9..87861e7901 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -344,7 +344,6 @@ background_visible="true"
      width="313">
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          top="4"
          left="0"
          height="19"
@@ -355,7 +354,6 @@ background_visible="true"
          width="70" />
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          top="4"
          left_pad="2"
          height="19"
@@ -366,7 +364,6 @@ background_visible="true"
          width="45" />
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          top="4"
          left_pad="2"
          height="19"
@@ -377,7 +374,6 @@ background_visible="true"
          width="50" />
         <button
          follows="left|top"
-         font="SansSerifSmall"
          top="4"
          left_pad="2"
          height="19"
@@ -387,7 +383,6 @@ background_visible="true"
          width="60" />
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          top="4"
          left_pad="2"
          height="19"
@@ -398,7 +393,6 @@ background_visible="true"
          width="75" />
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          top="4"
          left="0"
          height="19"
@@ -409,7 +403,6 @@ background_visible="true"
          width="110" />
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          top="4"
          left_pad="2"
          height="19"
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index cf18aa2d39..0cf2a7afc3 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -103,7 +103,6 @@
      name="buttons">
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          height="19"
          label="Teleport"
          layout="topleft"
@@ -113,7 +112,6 @@
          width="90" />
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          height="19"
          label="Map"
          layout="topleft"
@@ -123,7 +121,6 @@
          width="90" />
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          height="19"
          label="Edit"
          layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml
index 5cefe3e4ab..69a81adecd 100644
--- a/indra/newview/skins/default/xui/en/panel_picks.xml
+++ b/indra/newview/skins/default/xui/en/panel_picks.xml
@@ -131,7 +131,6 @@
        <button
          enabled="false"
          follows="bottom|left"
-         font="SansSerifSmall"
          height="25"
          label="Info"
          layout="topleft"
@@ -143,7 +142,6 @@
         <button
          enabled="false"
          follows="bottom|left"
-         font="SansSerifSmall"
          height="25"
          label="Teleport"
          layout="topleft"
@@ -155,7 +153,6 @@
         <button
          enabled="false"
          follows="bottom|left"
-         font="SansSerifSmall"
          height="25"
          label="Map"
          layout="topleft"
@@ -167,7 +164,6 @@
         <button
          enabled="false"
          follows="bottom|right"
-         font="SansSerifSmall"
          height="25"
          label="▼"
          layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 5efacb68be..88df529ec1 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -72,7 +72,6 @@ background_visible="true"
      width="313">
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          height="19"
          label="Teleport"
          layout="topleft"
@@ -82,7 +81,6 @@ background_visible="true"
          width="100" />
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          height="19"
          label="Map"
          layout="topleft"
@@ -92,7 +90,6 @@ background_visible="true"
          width="70" />
         <button
          follows="bottom|left"
-         font="SansSerifSmall"
          height="19"
          label="Edit"
          layout="topleft"
@@ -102,7 +99,6 @@ background_visible="true"
          width="70" />
         <button
          follows="bottom|right"
-         font="SansSerifSmall"
          height="19"
          image_disabled="ForwardArrow_Off"
          image_selected="ForwardArrow_Press"
@@ -114,7 +110,6 @@ background_visible="true"
          width="18" />
         <button
          follows="bottom|right"
-         font="SansSerifSmall"
          height="19"
          label="Close"
          layout="topleft"
@@ -124,7 +119,6 @@ background_visible="true"
          width="60" />
         <button
          follows="bottom|right"
-         font="SansSerifSmall"
          height="19"
          label="Cancel"
          layout="topleft"
@@ -134,7 +128,6 @@ background_visible="true"
          width="60" />
         <button
          follows="bottom|right"
-         font="SansSerifSmall"
          height="19"
          label="Save"
          layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index bf1d46451b..d2feaeba31 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -324,7 +324,6 @@
          width="64" />
         <button
          follows="bottom|right"
-         font="SansSerifSmall"
          height="19"
          label="▼"
          layout="topleft"
@@ -344,7 +343,6 @@
      width="303">
         <button
          follows="bottom|right"
-         font="SansSerifSmall"
          height="19"
          left="10"
          label="Edit Profile"
diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
index 49fc930cd8..75d7d85505 100644
--- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
@@ -119,7 +119,6 @@
     </text_editor>
     <button
      follows="left|top"
-     font="SansSerifSmall"
      height="18"
      label="Reset"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_region_debug.xml b/indra/newview/skins/default/xui/en/panel_region_debug.xml
index a1bca4229d..e07585d285 100644
--- a/indra/newview/skins/default/xui/en/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_debug.xml
@@ -61,7 +61,6 @@
     <button
      enabled="false"
      follows="left|top"
-     font="SansSerifSmall"
      height="20"
      label="Apply"
      layout="topleft"
@@ -109,7 +108,6 @@
     <button
      follows="left|top"
      height="20"
-     font="SansSerifSmall"
      label="Choose"
      layout="topleft"
      left_pad="5"
@@ -156,7 +154,6 @@
     <button
      follows="left|top"
      height="20"
-     font="SansSerifSmall"
      label="Return"
      layout="topleft"
      left="20"
@@ -165,7 +162,6 @@
      width="80" />
     <button
      follows="left|top"
-     font="SansSerifSmall"
      height="20"
      label="Get Top Colliders..."
      layout="topleft"
@@ -176,7 +172,6 @@
      width="150" />
     <button
      follows="left|top"
-     font="SansSerifSmall"
      height="20"
      label="Get Top Scripts..."
      layout="topleft"
@@ -187,7 +182,6 @@
      width="150" />
     <button
      follows="left|top"
-     font="SansSerifSmall"
      height="20"
      label="Restart Region"
      layout="topleft"
@@ -198,7 +192,6 @@
      width="130" />
     <button
      follows="left|top"
-     font="SansSerifSmall"
      height="20"
      label="Delay Restart"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index b1afe76500..65bc48265d 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -43,7 +43,6 @@
      auto_resize="true"
      halign="right"
      follows="right|bottom"
-     font="SansSerifSmall"
      image_selected="BuyArrow_Over"
      image_unselected="BuyArrow_Off"
      image_pressed="BuyArrow_Press"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index b9a89a2ebc..4dae8e48a0 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -71,7 +71,6 @@
   	     width="313" />
     <button
   	     follows="bottom|left"
-     font="SansSerifSmall"
   	     height="25"
   	     label="Wear"
   	     layout="topleft"
@@ -81,7 +80,6 @@
        	 width="80" />
     <button
     	 follows="bottom|left"
-     font="SansSerifSmall"
   	     height="25"
   	     label="New Outfit"
   	     layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index b8b3d993bd..51b74307c8 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -41,7 +41,6 @@
 			<button
 				 enabled="true"
 				 follows="bottom|left"
-				 font="SansSerifSmall"
 				 height="25"
 				 label="Info"
 				 layout="topleft"
@@ -52,7 +51,6 @@
 			<button
 				 enabled="true"
 				 follows="bottom|left"
-				 font="SansSerifSmall"
 				 height="25"
 				 label="Share"
 				 layout="topleft"
@@ -63,7 +61,6 @@
 			<button
 				 enabled="false"
 				 follows="bottom|left"
-				 font="SansSerifSmall"
 				 height="25"
 				 label="Wear"
 				 layout="topleft"
@@ -74,7 +71,6 @@
 			<button
 				 enabled="false"
 				 follows="bottom|left"
-				 font="SansSerifSmall"
 				 height="25"
 				 label="Play"
 				 layout="topleft"
@@ -85,7 +81,6 @@
 			<button
 				 enabled="false"
 				 follows="bottom|left"
-				 font="SansSerifSmall"
 				 height="25"
 				 label="Teleport"
 				 layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index 6ae2477304..544d91fc51 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -131,7 +131,6 @@
 	     </text>
 	     <button
 			 follows="top|right"
-			 font="SansSerifSmall"
 			 height="16"
 			 label="Profile..."
 			 layout="topleft"
@@ -165,7 +164,6 @@
 	     </text>
 	     <button
 			 follows="top|right"
-			 font="SansSerifSmall"
 			 height="16"
 			 label="Profile..."
 			 layout="topleft"
@@ -479,7 +477,6 @@
 		 width="313">
 	    <button
 		     follows="bottom|left"
-		     font="SansSerifSmall"
 		     height="25"
 		     label="Edit"
 		     layout="topleft"
@@ -489,7 +486,6 @@
 		     width="50" />
 	    <button
 		     follows="bottom|right"
-		     font="SansSerifSmall"
 		     height="25"
 		     label="Cancel"
 		     layout="topleft"
@@ -499,7 +495,6 @@
 		     width="70" />
 	    <button
 		     follows="bottom|right"
-		     font="SansSerifSmall"
 		     height="25"
 		     label="Save"
 		     layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
index 7647be7830..348f0dfc09 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -203,7 +203,6 @@
              width="150" />
             <button
              follows="top|left"
-             font="SansSerifSmall"
              height="20"
              label="Deed"
              label_selected="Deed"
@@ -485,7 +484,6 @@
 		 width="313">
 	    <button
 		     follows="bottom|left"
-		     font="SansSerifSmall"
 		     height="25"
 		     label="Edit"
 		     layout="topleft"
@@ -495,7 +493,6 @@
 		     width="50" />
 	    <button
 		     follows="bottom|left"
-		     font="SansSerifSmall"
 		     height="25"
 		     label="Open"
 		     layout="topleft"
@@ -505,7 +502,6 @@
 		     width="60" />
 	    <button
 		     follows="bottom|left"
-		     font="SansSerifSmall"
 		     height="25"
 		     label="Pay"
 		     layout="topleft"
@@ -515,7 +511,6 @@
 		     width="50" />
 	    <button
 		     follows="bottom|left"
-		     font="SansSerifSmall"
 		     height="25"
 		     label="Buy"
 		     layout="topleft"
@@ -525,7 +520,6 @@
 		     width="60" />
 	    <button
 		     follows="bottom|right"
-		     font="SansSerifSmall"
 		     height="25"
 		     label="Cancel"
 		     layout="topleft"
@@ -535,7 +529,6 @@
 		     width="70" />
 	    <button
 		     follows="bottom|right"
-		     font="SansSerifSmall"
 		     height="25"
 		     label="Save"
 		     layout="topleft"
-- 
cgit v1.2.3


From d9accaab817e9aa1a298cbdccc8b32a4098124de Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Mon, 23 Nov 2009 15:41:35 -0800
Subject: DEV-43298 Expand widgets slightly in EN, make the currency symbol
 movable to the end:  floater_inventory_item_properties.xml

---
 .../xui/en/floater_inventory_item_properties.xml   | 27 ++++++++++++++++------
 1 file changed, 20 insertions(+), 7 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
index 4ca6002c13..89e5b81da2 100644
--- a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
@@ -106,7 +106,7 @@
      left_delta="78"
      name="LabelCreatorName"
      top_delta="0"
-     width="200">
+     width="170">
         Nicole Linden
     </text>
     <button
@@ -140,7 +140,7 @@
      left_delta="78"
      name="LabelOwnerName"
      top_delta="0"
-     width="200">
+     width="170">
         Thrax Linden
     </text>
     <button
@@ -257,12 +257,13 @@
      type="string"
      length="1"
      follows="left|top"
-     height="10"
+     height="25"
      layout="topleft"
      left="10"
      name="NextOwnerLabel"
      top_pad="5"
-     width="78">
+     width="78"
+     word_wrap="true">
         Next owner:
     </text>
     <check_box
@@ -303,7 +304,7 @@
      layout="topleft"
      follows="left|top"
      name="combobox sale copy"
-     width="90">
+     width="110">
         <combo_box.item
          label="Copy"
          name="Copy"
@@ -320,13 +321,25 @@
         control_name="Edit Cost"
         name="Edit Cost"
         label="Price: L$"
-        label_width="60"
+        label_width="100"
         left="10"
-        width="180"
+        width="192"
         min_val="1"
         height="19"
         max_val="999999999"
         top_pad="5"/>
+    <text
+        type="string"
+        length="1"
+        height="15"
+        follows="left|top"
+        layout="topleft"
+        left_delta="82"
+        name="CurrencySymbol"
+        top_delta="1"
+        width="18">
+      L$
+    </text>
 
     <!--line_editor
      border_style="line"
-- 
cgit v1.2.3


From 58eab5547fcd5f665c5254f31afd778797e5c84c Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Mon, 23 Nov 2009 15:55:41 -0800
Subject: DEV-43298 Expand widgets slightly in EN, make the currency symbol
 movable to the end:  sidepanel_item_info.xml

---
 .../skins/default/xui/en/sidepanel_item_info.xml   | 31 +++++++++++++++-------
 1 file changed, 22 insertions(+), 9 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index 6ae2477304..b1a553d852 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -126,7 +126,7 @@
 		     left_delta="78"
 		     name="LabelCreatorName"
 		     top_delta="0"
-		     width="200">
+		     width="140">
 	        Nicole Linden
 	     </text>
 	     <button
@@ -160,7 +160,7 @@
 			 left_delta="78"
 			 name="LabelOwnerName"
 			 top_delta="0"
-			 width="200">
+			 width="140">
 			    Thrax Linden
 	     </text>
 	     <button
@@ -194,7 +194,7 @@
 			 left_delta="78"
 			 name="LabelAcquiredDate"
 			 top_delta="0"
-			 width="252">
+			 width="222">
 			Wed May 24 12:50:46 2006
 	    </text>
 	    <text
@@ -277,12 +277,13 @@
 			 type="string"
 			 length="1"
 			 follows="left|top"
-			 height="10"
+			 height="25"
 			 layout="topleft"
 			 left="10"
 			 name="NextOwnerLabel"
 			 top_pad="5"
-			 width="78">
+			 width="78"
+			 word_wrap="true">
 			Next owner:
 	    </text>
 	    <check_box
@@ -323,7 +324,7 @@
 			 layout="topleft"
 			 follows="left|top"
 			 name="combobox sale copy"
-			 width="90">
+			 width="110">
 			<combo_box.item
 			     label="Copy"
 			     name="Copy"
@@ -339,14 +340,26 @@
 			    increment="1"
 			    control_name="Edit Cost"
 			    name="Edit Cost"
-			    label="Price: L$"
-			    label_width="60"
+			    label="Price:"
+			    label_width="100"
 			    left="10"
-			    width="180"
+			    width="192"
 			    min_val="1"
 			    height="19"
 			    max_val="999999999"
 			    top_pad="5"/>
+	    <text
+			    type="string"
+			    length="1"
+			    height="15"
+			    follows="left|top"
+			    layout="topleft"
+			    left_delta="82"
+			    name="CurrencySymbol"
+			    top_delta="1"
+			    width="18">
+			L$
+	    </text>
 	    <!--line_editor
 			 border_style="line"
 			 border_thickness="1"
-- 
cgit v1.2.3


From 65fd784f136d4fc2183b97b6c15bd0c338bdb833 Mon Sep 17 00:00:00 2001
From: Ramzi Linden <ramzi@lindenlab.com>
Date: Mon, 23 Nov 2009 16:21:10 -0800
Subject: DEV-43298 Eliminate the second "L$" texts in my previous commit for: 
 floater_inventory_item_properties.xml

---
 .../newview/skins/default/xui/en/floater_inventory_item_properties.xml  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
index 5287ece227..366098013b 100644
--- a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
@@ -318,7 +318,7 @@
         increment="1"
         control_name="Edit Cost"
         name="Edit Cost"
-        label="Price: L$"
+        label="Price:"
         label_width="100"
         left="10"
         width="192"
-- 
cgit v1.2.3


From 2bdf430de13577e855a7a1f400173f6cd4ab8ac6 Mon Sep 17 00:00:00 2001
From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com>
Date: Mon, 23 Nov 2009 19:59:47 -0500
Subject: small fixes for inv slurl functionality

---
 indra/newview/llviewerinventory.cpp | 2 +-
 indra/newview/llviewermessage.cpp   | 3 +--
 2 files changed, 2 insertions(+), 3 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index c6ec25c1cb..ad3828bba6 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -80,7 +80,7 @@ public:
 		}
 		
 		const std::string verb = params[1].asString();
-		if (verb == "select")
+		//if (verb == "select")
 		{
 			std::vector<LLUUID> items_to_open;
 			items_to_open.push_back(inventory_id);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index b2693c799c..7eed40589b 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -169,7 +169,6 @@ static const F32 LLREQUEST_PERMISSION_THROTTLE_INTERVAL	= 10.0f; // seconds
 extern BOOL gDebugClicks;
 
 // function prototypes
-void open_offer(const std::vector<LLUUID>& items, const std::string& from_name);
 bool check_offer_throttle(const std::string& from_name, bool check_only);
 
 //inventory offer throttle globals
@@ -744,7 +743,7 @@ class LLOpenTaskOffer : public LLInventoryAddedObserver
 protected:
 	/*virtual*/ void done()
 	{
-		open_offer(mAdded, "");
+		open_inventory_offer(mAdded, "");
 		mAdded.clear();
 	}
  };
-- 
cgit v1.2.3


From 6634d3c1ccbe13d3c0cdd17b60628eabe633ea7d Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Mon, 23 Nov 2009 18:16:03 -0800
Subject: Add damage % text to nav bar, clip text entry to avoid overlapping
 icons Fixed includes of llmenugl.h / llnotifications.h Note: Clipping is
 incorrect, I think due to line editor bug.

---
 indra/newview/llgroupmgr.cpp                       |   1 +
 indra/newview/lllocationinputctrl.cpp              | 129 ++++++++++++++-------
 indra/newview/lllocationinputctrl.h                |   7 +-
 indra/newview/llpanelobjectinventory.cpp           |   1 +
 indra/newview/llstatusbar.h                        |   1 -
 .../default/xui/en/widgets/location_input.xml      |  12 +-
 6 files changed, 105 insertions(+), 46 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 0626a5c3d3..59537c1e65 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -52,6 +52,7 @@
 #include "llviewerwindow.h"
 #include "llpanelgroup.h"
 #include "llgroupactions.h"
+#include "llnotifications.h"
 #include "lluictrlfactory.h"
 #include <boost/regex.hpp>
 
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 5d2a0aa382..063e98a811 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -52,6 +52,7 @@
 #include "llteleporthistory.h"
 #include "llsidetray.h"
 #include "llslurl.h"
+#include "llstatusbar.h"			// getHealth()
 #include "lltrans.h"
 #include "llviewerinventory.h"
 #include "llviewerparcelmgr.h"
@@ -165,7 +166,8 @@ LLLocationInputCtrl::Params::Params()
 	push_icon("push_icon"),
 	build_icon("build_icon"),
 	scripts_icon("scripts_icon"),
-	damage_icon("damage_icon")
+	damage_icon("damage_icon"),
+	damage_text("damage_text")
 {
 }
 
@@ -200,7 +202,7 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 	params.commit_on_focus_lost(false);
 	params.follows.flags(FOLLOWS_ALL);
 	mTextEntry = LLUICtrlFactory::create<LLURLLineEditor>(params);
-	this->addChild(mTextEntry);
+	addChild(mTextEntry);
 	// LLLineEditor is replaced with LLLocationLineEditor
 
 	// "Place information" button.
@@ -261,7 +263,10 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p)
 	LLIconCtrl::Params damage_icon = p.damage_icon;
 	mParcelIcon[DAMAGE_ICON] = LLUICtrlFactory::create<LLIconCtrl>(damage_icon);
 	addChild(mParcelIcon[DAMAGE_ICON]);
-	// TODO: health number?
+	
+	LLTextBox::Params damage_text = p.damage_text;
+	mDamageText = LLUICtrlFactory::create<LLTextBox>(damage_text);
+	addChild(mDamageText);
 	
 	// Register callbacks and load the location field context menu (NB: the order matters).
 	LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Navbar.Action", boost::bind(&LLLocationInputCtrl::onLocationContextMenuItemClicked, this, _2));
@@ -405,11 +410,8 @@ void LLLocationInputCtrl::onTextEntry(LLLineEditor* line_editor)
  */
 void LLLocationInputCtrl::setText(const LLStringExplicit& text)
 {
-	if (mTextEntry)
-	{
-		mTextEntry->setText(text);
-		mHasAutocompletedText = FALSE;
-	}
+	mTextEntry->setText(text);
+	mHasAutocompletedText = FALSE;
 }
 
 void LLLocationInputCtrl::setFocus(BOOL b)
@@ -444,10 +446,18 @@ void LLLocationInputCtrl::onFocusLost()
 }
 
 void LLLocationInputCtrl::draw()
-{	
-	if(!hasFocus() && gSavedSettings.getBOOL("NavBarShowCoordinates")){
+{
+	static LLUICachedControl<bool> show_coords("NavBarShowCoordinates", false);
+	if(!hasFocus() && show_coords)
+	{
 		refreshLocation();
 	}
+	
+	static LLUICachedControl<bool> show_icons("NavBarShowParcelProperties", false);
+	if (show_icons)
+	{
+		refreshHealth();
+	}
 	LLComboBox::draw();
 }
 
@@ -544,10 +554,12 @@ void LLLocationInputCtrl::onLocationPrearrange(const LLSD& data)
 	
 	mList->mouseOverHighlightNthItem(-1); // Clear highlight on the last selected item.
 }
+
 bool LLLocationInputCtrl::findTeleportItemsByTitle(const LLTeleportHistoryItem& item, const std::string& filter)
 {
 	return item.mTitle.find(filter) != std::string::npos;
 }
+
 void LLLocationInputCtrl::onTextEditorRightClicked(S32 x, S32 y, MASK mask)
 {
 	if (mLocationContextMenu)
@@ -596,51 +608,82 @@ void LLLocationInputCtrl::refreshLocation()
 
 void LLLocationInputCtrl::refreshParcelIcons()
 {
+	// Our "cursor" moving right to left
+	S32 x = mAddLandmarkBtn->getRect().mLeft - mIconHPad;
+	
 	static LLUICachedControl<bool> show_properties("NavBarShowParcelProperties", false);
-	if (!show_properties)
+	if (show_properties)
+	{
+		LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
+		// *TODO buy
+		//bool allow_buy      = vpm->canAgentBuyParcel( vpm->getAgentParcel(), false);
+		bool allow_voice	= vpm->allowAgentVoice();
+		bool allow_fly		= vpm->allowAgentFly();
+		bool allow_push		= vpm->allowAgentPush();
+		bool allow_build	= vpm->allowAgentBuild();
+		bool allow_scripts	= vpm->allowAgentScripts();
+		bool allow_damage	= vpm->allowAgentDamage();
+		
+		// Most icons are "block this ability"
+		mParcelIcon[VOICE_ICON]->setVisible(   !allow_voice );
+		mParcelIcon[FLY_ICON]->setVisible(     !allow_fly );
+		mParcelIcon[PUSH_ICON]->setVisible(    !allow_push );
+		mParcelIcon[BUILD_ICON]->setVisible(   !allow_build );
+		mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
+		mParcelIcon[DAMAGE_ICON]->setVisible(  allow_damage );
+		mDamageText->setVisible(allow_damage);
+		
+		// Slide the parcel icons rect from right to left, adjusting rectangles of
+		// visible icons.  Assumes all icon rects are the same.
+		for (S32 i = 0; i < ICON_COUNT; ++i)
+		{
+			LLIconCtrl* icon = mParcelIcon[i];
+			if (icon->getVisible())
+			{
+				LLRect r = icon->getRect();
+				r.mLeft = x - r.getWidth();
+				r.mRight = x;
+				icon->setRect( r );
+				x -= r.getWidth() + mIconHPad;
+			}
+		}
+		LLRect text_rect = mDamageText->getRect();
+		text_rect.mLeft = x - text_rect.getWidth();
+		text_rect.mRight = x;
+		mDamageText->setRect(text_rect);
+		x -= text_rect.getWidth() + mIconHPad;
+	}
+	else
 	{
 		for (S32 i = 0; i < ICON_COUNT; ++i)
 		{
 			mParcelIcon[i]->setVisible(false);
 		}
-		return;
+		mDamageText->setVisible(false);
 	}
 	
-	LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance();
-	// *TODO buy
-	//bool allow_buy      = vpm->canAgentBuyParcel( vpm->getAgentParcel(), false);
-	bool allow_voice	= vpm->allowAgentVoice();
-	bool allow_fly		= vpm->allowAgentFly();
-	bool allow_push		= vpm->allowAgentPush();
-	bool allow_build	= vpm->allowAgentBuild();
-	bool allow_scripts	= vpm->allowAgentScripts();
-	bool allow_damage	= vpm->allowAgentDamage();
-
-	// Most icons are "block this ability"
-	mParcelIcon[VOICE_ICON]->setVisible(   !allow_voice );
-	mParcelIcon[FLY_ICON]->setVisible(     !allow_fly );
-	mParcelIcon[PUSH_ICON]->setVisible(    !allow_push );
-	mParcelIcon[BUILD_ICON]->setVisible(   !allow_build );
-	mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts );
-	mParcelIcon[DAMAGE_ICON]->setVisible(  allow_damage );
-	// *TODO damage meter
-
-	// Slide the parcel icons rect from right to left, adjusting rectangles of
-	// visible icons.  Assumes all icon rects are the same.
-	LLRect icon_rect = mParcelIcon[0]->getRect();
-	S32 icon_width = icon_rect.getWidth();
-	icon_rect.mRight = mAddLandmarkBtn->getRect().mLeft - mIconHPad;
-	icon_rect.mLeft = icon_rect.mRight - icon_width;
-	
-	for (S32 i = 0; i < ICON_COUNT; ++i)
+	S32 left_pad, right_pad;
+	mTextEntry->getTextPadding(&left_pad, &right_pad);
+	right_pad = mTextEntry->getRect().mRight - x;
+	llinfos << "JAMESDEBUG text entry rect " << mTextEntry->getRect()
+	<< " x " << x << " left_pad " << left_pad << " right_pad " << right_pad << llendl;
+	mTextEntry->setTextPadding(left_pad, right_pad);
+}
+
+void LLLocationInputCtrl::refreshHealth()
+{
+	// *FIXME: Status bar owns health information, should be in agent
+	if (gStatusBar)
 	{
-		if (mParcelIcon[i]->getVisible())
+		static S32 last_health = -1;
+		S32 health = gStatusBar->getHealth();
+		if (health != last_health)
 		{
-			mParcelIcon[i]->setRect( icon_rect );
-			icon_rect.translate( -icon_width - mIconHPad, 0);
+			std::string text = llformat("%d%%", health);
+			mDamageText->setText(text);
+			last_health = health;
 		}
 	}
-	// *TODO: health meter
 }
 
 void LLLocationInputCtrl::rebuildLocationHistory(std::string filter)
diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h
index fefd0f7fec..3bd23e80a9 100644
--- a/indra/newview/lllocationinputctrl.h
+++ b/indra/newview/lllocationinputctrl.h
@@ -35,6 +35,7 @@
 
 #include "llcombobox.h"
 #include "lliconctrl.h"		// Params
+#include "lltextbox.h"		// Params
 
 class LLLandmark;
 
@@ -73,6 +74,7 @@ public:
 											build_icon,
 											scripts_icon,
 											damage_icon;
+		Optional<LLTextBox::Params>			damage_text;
 		Params();
 	};
 
@@ -111,6 +113,9 @@ private:
 	void					refresh();
 	void					refreshLocation();
 	void					refreshParcelIcons();
+	// Refresh the value in the health percentage text field
+	void					refreshHealth();
+	
 	void					rebuildLocationHistory(std::string filter = "");
 	bool 					findTeleportItemsByTitle(const LLTeleportHistoryItem& item, const std::string& filter);
 	void					setText(const LLStringExplicit& text);
@@ -147,7 +152,7 @@ private:
 		ICON_COUNT
 	};
 	LLIconCtrl*	mParcelIcon[ICON_COUNT];
-	// TODO: Health meter?
+	LLTextBox* mDamageText;
 
 	LLAddLandmarkObserver*		mAddLandmarkObserver;
 	LLRemoveLandmarkObserver*	mRemoveLandmarkObserver;
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index dbe0ec3b86..4237681c80 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -41,6 +41,7 @@
 
 #include "llpanelobjectinventory.h"
 
+#include "llmenugl.h"
 #include "roles_constants.h"
 
 #include "llagent.h"
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index 3ce3549961..bdaacce981 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -34,7 +34,6 @@
 #define LL_LLSTATUSBAR_H
 
 #include "llpanel.h"
-#include <llmenugl.h>
 
 // "Constants" loaded from settings.xml at start time
 extern S32 STATUS_BAR_HEIGHT;
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index 1fed1c075a..17b1479ec4 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -81,8 +81,18 @@
 	top="21"
     image_name="parcel_lght_Damage"
     />
+  <!-- Default text color is invisible on top of nav bar background -->
+  <damage_text
+    name="damage_text"
+	width="50"
+	height="18"
+	top="16"
+	halign="right"
+	font="SansSerifSmall"
+	text_color="TextFgColor"
+	/>
 
-    <combo_button name="Location History"
+  <combo_button name="Location History"
                           label=""
                           pad_right="0"/>
   <combo_list bg_writeable_color="MenuDefaultBgColor" page_lines="10"
-- 
cgit v1.2.3


From cfccf4d5145274f7bfe1c88b7e51c000461226e8 Mon Sep 17 00:00:00 2001
From: angela <angela@lindenlab.com>
Date: Tue, 24 Nov 2009 11:54:33 +0800
Subject:   EXT-2780  allow_scroll = false in LLTextEditor will crash the
 viewer

---
 indra/newview/llchathistory.cpp                          | 11 ++++-------
 indra/newview/llpanelprofileview.cpp                     |  3 +--
 indra/newview/skins/default/xui/en/panel_chat_header.xml |  7 ++++---
 3 files changed, 9 insertions(+), 12 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index a95234099c..24fa28c6cd 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -33,12 +33,10 @@
 #include "llviewerprecompiledheaders.h"
 #include "llchathistory.h"
 #include "llpanel.h"
-#include "lltextbox.h"
-#include "lltexteditor.h"
 #include "lluictrlfactory.h"
 #include "llscrollcontainer.h"
 #include "llavatariconctrl.h"
-
+#include "lltexteditor.h"
 #include "llimview.h"
 #include "llcallingcard.h" //for LLAvatarTracker
 #include "llagentdata.h"
@@ -188,9 +186,8 @@ public:
 
 		LLTextEditor* userName = getChild<LLTextEditor>("user_name");
 
-		LLUIColor color = style_params.color;
-		userName->setReadOnlyColor(color);
-		userName->setColor(color);
+		userName->setReadOnlyColor(style_params.readonly_color());
+		userName->setColor(style_params.color());
 		
 		if(!chat.mFromName.empty())
 		{
@@ -204,7 +201,7 @@ public:
 		}
 
 		
-		LLTextBox* timeBox = getChild<LLTextBox>("time_box");
+		LLUICtrl* timeBox = getChild<LLUICtrl>("time_box");
 		timeBox->setValue(chat.mTimeStr);
 
 		LLAvatarIconCtrl* icon = getChild<LLAvatarIconCtrl>("avatar_icon");
diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp
index c7c2484be3..bcf5b16aa6 100644
--- a/indra/newview/llpanelprofileview.cpp
+++ b/indra/newview/llpanelprofileview.cpp
@@ -43,7 +43,6 @@
 #include "llpanelpicks.h"
 #include "llpanelprofile.h"
 #include "llsidetraypanelcontainer.h"
-#include "lltexteditor.h"
 
 static LLRegisterPanelClassWrapper<LLPanelProfileView> t_panel_target_profile("panel_profile_view");
 
@@ -191,7 +190,7 @@ void LLPanelProfileView::processOnlineStatus(bool online)
 void LLPanelProfileView::onAvatarNameCached(const LLUUID& id, const std::string& first_name, const std::string& last_name, BOOL is_group)
 {
 	llassert(getAvatarId() == id);
-	getChild<LLTextEditor>("user_name", FALSE)->setValue(first_name + " " + last_name);
+	getChild<LLUICtrl>("user_name", FALSE)->setValue(first_name + " " + last_name);
 }
 
 void LLPanelProfileView::togglePanel(LLPanel* panel)
diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml
index da175a75cd..692461b1a2 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml
@@ -20,18 +20,19 @@
          top="3"
          width="18" />
     <text_editor
+	 v_pad = "0"
 	 read_only = "true"
      follows="left|right"
 	 font.style="BOLD"
-	 height="18"
+	 height="12"
 	 layout="topleft"
 	 left_pad="5"
      right="-50"
      name="user_name"
      text_color="white"
-	 top="5"
+	 top="8"
 	 use_ellipses="true"
-	 value="Erica Vader" />
+	 value="Ericag Vader" />
     <text
             font="SansSerifSmall"
          follows="right"
-- 
cgit v1.2.3


From d93cece450b0f3897fa472d86db837274d35643b Mon Sep 17 00:00:00 2001
From: angela <angela@lindenlab.com>
Date: Tue, 24 Nov 2009 15:01:51 +0800
Subject: fix crash error for missing string RegisterDateFormat in
 panel_profile_user.xml

---
 indra/newview/llchathistory.cpp                           | 1 -
 indra/newview/skins/default/xui/en/panel_edit_profile.xml | 4 ++++
 indra/newview/skins/default/xui/en/panel_profile.xml      | 5 ++++-
 3 files changed, 8 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 24fa28c6cd..1d4878dc50 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -36,7 +36,6 @@
 #include "lluictrlfactory.h"
 #include "llscrollcontainer.h"
 #include "llavatariconctrl.h"
-#include "lltexteditor.h"
 #include "llimview.h"
 #include "llcallingcard.h" //for LLAvatarTracker
 #include "llagentdata.h"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
index 2378ae518b..a833ad97d9 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
@@ -15,6 +15,10 @@
        [ACCTTYPE]
 [PAYMENTINFO] [AGEVERIFICATION]
    </string>
+   <string 
+    name="RegisterDateFormat">
+	[REG_DATE] ([AGE])
+   </string> 
    <string
     name="AcctTypeResident"
     value="Resident" />
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index d2feaeba31..947bb67152 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -27,7 +27,10 @@
     <string
      name="no_partner_text"
      value="None" />
-    <string name="RegisterDateFormat">[REG_DATE] ([AGE])</string>
+    <string 
+	 name="RegisterDateFormat">
+	 [REG_DATE] ([AGE])
+	</string>
   <scroll_container
      color="DkGray2"
      follows="all"
-- 
cgit v1.2.3


From 06f638abdfdbd0a55087fe5ce0d90e261138758e Mon Sep 17 00:00:00 2001
From: Dmitry Oleshko <doleshko@productengine.com>
Date: Tue, 24 Nov 2009 11:44:55 +0200
Subject: fixed normal bug  (EXT-2653) Undocked IM floater blinks each time
 notification toasts fade away

- reduced a number of show-hide cycles for toasts
- only toasts showed for the first time will appear in foreground now (using of mFirstLook from LLFloater)

--HG--
branch : product-engine
---
 indra/newview/llscreenchannel.cpp | 20 +++++++++++++++++---
 indra/newview/lltoast.cpp         |  2 +-
 2 files changed, 18 insertions(+), 4 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index fb9db42cf6..ce89866b41 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -358,8 +358,6 @@ void LLScreenChannel::redrawToasts()
 	if(mToastList.size() == 0 || isHovering())
 		return;
 
-	hideToastsFromScreen();
-
 	switch(mToastAlignment)
 	{
 	case NA_TOP : 
@@ -383,6 +381,8 @@ void LLScreenChannel::showToastsBottom()
 	S32		toast_margin = 0;
 	std::vector<ToastElem>::reverse_iterator it;
 
+	closeOverflowToastPanel();
+
 	for(it = mToastList.rbegin(); it != mToastList.rend(); ++it)
 	{
 		if(it != mToastList.rbegin())
@@ -408,7 +408,20 @@ void LLScreenChannel::showToastsBottom()
 		if(stop_showing_toasts)
 			break;
 
-		(*it).toast->setVisible(TRUE);	
+		if( !(*it).toast->getVisible() )
+		{
+			if((*it).toast->isFirstLook())
+			{
+				(*it).toast->setVisible(TRUE);
+			}
+			else
+			{
+				// HACK
+				// EXT-2653: it is necessary to prevent overlapping for secondary showed toasts
+				(*it).toast->setVisible(TRUE);
+				gFloaterView->sendChildToBack((*it).toast);
+			}
+		}		
 	}
 
 	if(it != mToastList.rend() && !mOverflowToastHidden)
@@ -417,6 +430,7 @@ void LLScreenChannel::showToastsBottom()
 		for(; it != mToastList.rend(); it++)
 		{
 			(*it).toast->stopTimer();
+			(*it).toast->setVisible(FALSE);
 			mHiddenToastsNum++;
 		}
 		createOverflowToast(bottom, gSavedSettings.getS32("NotificationTipToastLifeTime"));
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index ed2cedbd10..f9cbdc20d6 100644
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -227,7 +227,7 @@ void LLToast::setVisible(BOOL show)
 		}
 		LLModalDialog::setFrontmost(FALSE);
 	}
-	LLPanel::setVisible(show);
+	LLFloater::setVisible(show);
 	if(mPanel)
 	{
 		if(!mPanel->isDead())
-- 
cgit v1.2.3


From c004ddeab2b373f92f66f599ac91b0c17ac0202a Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Tue, 24 Nov 2009 12:59:02 +0200
Subject: Additional commit for low sub-task EXT-1153 (FlatListView should
 support keyboard) - implemented "default ENTER" action for teleport history
 list.

--HG--
branch : product-engine
---
 indra/newview/llpanelteleporthistory.cpp | 7 +++++++
 indra/newview/llpanelteleporthistory.h   | 1 +
 2 files changed, 8 insertions(+)

(limited to 'indra/newview')

diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 057cdde6f0..67d0e13786 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -262,6 +262,7 @@ BOOL LLTeleportHistoryPanel::postBuild()
 					fl->setCommitOnSelectionChange(true);
 					fl->setDoubleClickCallback(boost::bind(&LLTeleportHistoryPanel::onDoubleClickItem, this));
 					fl->setCommitCallback(boost::bind(&LLTeleportHistoryPanel::handleItemSelect, this, fl));
+					fl->setReturnCallback(boost::bind(&LLTeleportHistoryPanel::onReturnKeyPressed, this));
 				}
 			}
 		}
@@ -636,6 +637,12 @@ void LLTeleportHistoryPanel::handleItemSelect(LLFlatListView* selected)
 	updateVerbs();
 }
 
+void LLTeleportHistoryPanel::onReturnKeyPressed()
+{
+	// Teleport to selected region as default action on return key pressed
+	onTeleport();
+}
+
 void LLTeleportHistoryPanel::onDoubleClickItem()
 {
 	// If item got doubleclick, then that item is already selected
diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h
index b34d9e876c..a31ff34cb6 100644
--- a/indra/newview/llpanelteleporthistory.h
+++ b/indra/newview/llpanelteleporthistory.h
@@ -80,6 +80,7 @@ public:
 private:
 
 	void onDoubleClickItem();
+	void onReturnKeyPressed();
 	void onAccordionTabRightClick(LLView *view, S32 x, S32 y, MASK mask);
 	void onAccordionTabOpen(LLAccordionCtrlTab *tab);
 	void onAccordionTabClose(LLAccordionCtrlTab *tab);
-- 
cgit v1.2.3


From 67ef3059b5a0084c6e501ae088cedf79d97f4277 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Tue, 24 Nov 2009 13:20:31 +0200
Subject: Work on critical sub-task EXT-2615 (IM Chat History is severely
 broken)  -- Implemented fitting of the timestamp in Chat History header panel
 depend on time string width

--HG--
branch : product-engine
---
 indra/newview/llchathistory.cpp                    | 28 ++++++++++++++++++----
 .../skins/default/xui/en/panel_chat_header.xml     |  4 ++--
 2 files changed, 26 insertions(+), 6 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 422aae3c25..dbb8e0fef4 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -202,10 +202,8 @@ public:
 			userName->setValue(SL);
 		}
 
+		setTimeField(chat.mTimeStr);
 		
-		LLTextBox* timeBox = getChild<LLTextBox>("time_box");
-		timeBox->setValue(chat.mTimeStr);
-
 		LLAvatarIconCtrl* icon = getChild<LLAvatarIconCtrl>("avatar_icon");
 
 		if(mSourceType != CHAT_SOURCE_AGENT)
@@ -271,7 +269,29 @@ protected:
 		}
 	}
 
-	
+private:
+	void setTimeField(const std::string& time_value)
+	{
+		LLTextBox* time_box = getChild<LLTextBox>("time_box");
+
+		LLRect rect_before = time_box->getRect();
+		time_box->setValue(time_value);
+
+		// set necessary textbox width to fit all text
+		time_box->reshapeToFitText();
+		LLRect rect_after = time_box->getRect();
+
+		// move rect to the left to correct position...
+		llinfos << "WWW: " << rect_before << rect_after << llendl;
+		S32 delta_pos_x = rect_before.getWidth() - rect_after.getWidth();
+		S32 delta_pos_y = rect_before.getHeight() - rect_after.getHeight();
+		time_box->translate(delta_pos_x, delta_pos_y);
+
+		//... & change width of the name control
+		LLTextBox* user_name = getChild<LLTextBox>("user_name");
+		const LLRect& user_rect = user_name->getRect();
+		user_name->reshape(user_rect.getWidth() + delta_pos_x, user_rect.getHeight());
+	}
 
 protected:
 	LLHandle<LLView>	mPopupMenuHandleAvatar;
diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml
index 7a3eae35a9..96e5b4d413 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml
@@ -25,7 +25,7 @@
          height="12"
          layout="topleft"
          left_pad="5"
-     right="-50"
+     right="-60"
      name="user_name"
      text_color="white"
          top="8"
@@ -39,7 +39,7 @@
          layout="topleft"
          left_pad="5"
      name="time_box"
-     right="-10"
+     right="-5"
      top="8"
          value="23:30"
          width="50" />
-- 
cgit v1.2.3


From 96199e2d90eb5c8c5da04ab40b3c41ca3fd5eddc Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Tue, 24 Nov 2009 13:22:56 +0200
Subject: Remove unnecessary log message

--HG--
branch : product-engine
---
 indra/newview/llchathistory.cpp | 1 -
 1 file changed, 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index dbb8e0fef4..533940943e 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -282,7 +282,6 @@ private:
 		LLRect rect_after = time_box->getRect();
 
 		// move rect to the left to correct position...
-		llinfos << "WWW: " << rect_before << rect_after << llendl;
 		S32 delta_pos_x = rect_before.getWidth() - rect_after.getWidth();
 		S32 delta_pos_y = rect_before.getHeight() - rect_after.getHeight();
 		time_box->translate(delta_pos_x, delta_pos_y);
-- 
cgit v1.2.3


From c4a10e9a53bd8f55b63b28783fa3758c21f6a122 Mon Sep 17 00:00:00 2001
From: Alexei Arabadji <aarabadji@productengine.com>
Date: Tue, 24 Nov 2009 13:28:14 +0200
Subject: fixed EXT-2684 "Notification toasts position is incorrect"

--HG--
branch : product-engine
---
 indra/newview/llviewerwindow.cpp | 27 +++++++++++++++++++--------
 indra/newview/llviewerwindow.h   |  1 +
 2 files changed, 20 insertions(+), 8 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index db66faef81..3840f337d4 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1347,6 +1347,7 @@ LLViewerWindow::LLViewerWindow(
 
 	mDebugText = new LLDebugText(this);
 
+	mWorldViewRectScaled = calcScaledRect(mWorldViewRectRaw, mDisplayScale);
 }
 
 void LLViewerWindow::initGLDefaults()
@@ -2867,19 +2868,17 @@ void LLViewerWindow::updateWorldViewRect(bool use_full_window)
 
 	if (mWorldViewRectRaw != new_world_rect)
 	{
-		// sending a signal with a new WorldView rect
-		mOnWorldViewRectUpdated(mWorldViewRectRaw, new_world_rect);
-
+		LLRect old_world_rect = mWorldViewRectRaw;
 		mWorldViewRectRaw = new_world_rect;
 		gResizeScreenTexture = TRUE;
 		LLViewerCamera::getInstance()->setViewHeightInPixels( mWorldViewRectRaw.getHeight() );
 		LLViewerCamera::getInstance()->setAspect( getWorldViewAspectRatio() );
 
-		mWorldViewRectScaled = mWorldViewRectRaw;
-		mWorldViewRectScaled.mLeft = llround((F32)mWorldViewRectScaled.mLeft / mDisplayScale.mV[VX]);
-		mWorldViewRectScaled.mRight = llround((F32)mWorldViewRectScaled.mRight / mDisplayScale.mV[VX]);
-		mWorldViewRectScaled.mBottom = llround((F32)mWorldViewRectScaled.mBottom / mDisplayScale.mV[VY]);
-		mWorldViewRectScaled.mTop = llround((F32)mWorldViewRectScaled.mTop / mDisplayScale.mV[VY]);
+		mWorldViewRectScaled = calcScaledRect(mWorldViewRectRaw, mDisplayScale);
+
+		// sending a signal with a new WorldView rect
+		old_world_rect = calcScaledRect(old_world_rect, mDisplayScale);
+		mOnWorldViewRectUpdated(old_world_rect, mWorldViewRectScaled);
 	}
 }
 
@@ -4794,6 +4793,18 @@ void LLViewerWindow::calcDisplayScale()
 	}
 }
 
+//static
+LLRect 	LLViewerWindow::calcScaledRect(const LLRect & rect, const LLVector2& display_scale)
+{
+	LLRect res = rect;
+	res.mLeft = llround((F32)res.mLeft / display_scale.mV[VX]);
+	res.mRight = llround((F32)res.mRight / display_scale.mV[VX]);
+	res.mBottom = llround((F32)res.mBottom / display_scale.mV[VY]);
+	res.mTop = llround((F32)res.mTop / display_scale.mV[VY]);
+
+	return res;
+}
+
 S32 LLViewerWindow::getChatConsoleBottomPad()
 {
 	S32 offset = 0;
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 517993182b..747fd3b253 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -391,6 +391,7 @@ public:
 	F32				getWorldViewAspectRatio() const;
 	const LLVector2& getDisplayScale() const { return mDisplayScale; }
 	void			calcDisplayScale();
+	static LLRect 	calcScaledRect(const LLRect & rect, const LLVector2& display_scale);
 
 private:
 	bool                    shouldShowToolTipFor(LLMouseHandler *mh);
-- 
cgit v1.2.3


From b79b8f81ea55a78fbf108107fd33fcb1a7933e99 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Tue, 24 Nov 2009 15:25:23 +0200
Subject: Work on critical sub-task EXT-2615 (IM Chat History is severely
 broken)  -- updated layout for P2P IM chat

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/floater_im_session.xml | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index 7f2f37409c..645c2973d8 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -18,7 +18,7 @@
  min_height="350">
   <layout_stack
   follows="all"
-  height="350"
+  height="320"
   width="300"
   layout="topleft"
   orientation="horizontal"
@@ -35,7 +35,8 @@
     <layout_panel
        left="0"
        top="0"
-	   width="180"
+       height="200"
+	     width="185"
        user_resize="false">
         <button
           height="20"
@@ -55,10 +56,9 @@
           width="25"
           name="slide_right_btn" />
         <chat_history
-         length="1"
 	 font="SansSerifSmall"
-         follows="left|right|top"
-         height="280"
+         follows="left|right|top|bottom"
+         height="150"
          name="chat_history"
          parse_highlights="true"
          allow_html="true"
@@ -66,12 +66,13 @@
          width="180">
         </chat_history>
         <line_editor
-         follows="left|right|top"
+         bottom="0" 
+         follows="left|right|bottom"
 	 font="SansSerifSmall"
          height="20"
          label="To"
+         layout="bottomleft"
          name="chat_editor"
-         top_pad="1"
          width="180">
         </line_editor>
     </layout_panel>
-- 
cgit v1.2.3


From c4a676941f5d8625af967322a513a552715b526b Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Tue, 24 Nov 2009 15:51:31 +0200
Subject: Work on critical sub-task EXT-2615 (IM Chat History is severely
 broken)  -- updated layout for Group IM chat: added follows for left panel &
 its buttons.      Buttons were not centered when IM container was minimized &
 restored.

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/panel_group_control_panel.xml | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
index 2fee2033f6..41b210557e 100644
--- a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
  border="false"
+ follows="left|top|right|bottom"
  height="238"
  name="panel_im_control_panel"
  width="180">
@@ -22,6 +23,7 @@
 
     <button
      bottom_pad="0"
+     follows="left|right|bottom" 
      height="20"
      label="Group Info"
      left_delta="28"
@@ -32,7 +34,7 @@
      background_visible="true"
      bg_alpha_color="0.2 0.2 0.2 1"
      border="false"
-     follows="left|bottom"
+     follows="left|right|bottom"
      height="70"
      left="0"
      left_pad="0"
@@ -42,6 +44,7 @@
 
         <button
          bottom="10"
+         follows="all" 
          height="20"
          label="Call Group"
          left_delta="28"
@@ -50,6 +53,7 @@
 
         <button
          bottom="40"
+         follows="all" 
          height="20"
          label="Leave Call"
          name="end_call_btn"
@@ -59,6 +63,7 @@
         <button
          enabled="false"
          bottom="10"
+         follows="all" 
          height="20"
          label="Open Voice Controls"
          name="voice_ctrls_btn"
-- 
cgit v1.2.3


From ac52668b069deb61751c509794722a9fc1a7e86f Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Tue, 24 Nov 2009 16:00:20 +0200
Subject: Work on critical sub-task EXT-2615 (IM Chat History is severely
 broken)  -- updated layout for Ad-hoc IM chat: added follows for left panel &
 its buttons.      Buttons were not centered when IM container was minimized &
 restored.

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
index a283cff5b3..368ab17689 100644
--- a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
  border="false"
+ follows="all"
  height="215"
  name="panel_im_control_panel"
  width="180">
@@ -23,7 +24,7 @@
      bg_alpha_color="DkGray2"
      border="false"
      bottom="1"
-     follows="left|bottom"
+     follows="left|right|bottom"
      height="70"
      left="0"
      left_pad="0"
@@ -32,6 +33,7 @@
      width="180">
         <button
          bottom="10"
+         follows="all"
          height="20"
          label="Call"
          left_delta="40"
@@ -39,6 +41,7 @@
          width="100" />
         <button
          bottom="40"
+         follows="all"
          height="20"
          label="Leave Call"
          name="end_call_btn"
@@ -46,6 +49,7 @@
          width="100" />
         <button
          enabled="false"
+         follows="all"
          bottom="10"
          height="20"
          label="Voice Controls"
-- 
cgit v1.2.3


From 614865edae734d8f8c4ad6b22eee928ec0f08d61 Mon Sep 17 00:00:00 2001
From: Dmitry Oleshko <doleshko@productengine.com>
Date: Tue, 24 Nov 2009 17:38:15 +0200
Subject: fixed major bug (EXT-2748) Crash on exit from viewer without log in

When a focused control is being destroyed, focus gets passed to the login panel, that leads to crash if the panel has been destroyed already.
Made the focus manager reset keyboard focus in this case.

Found unreachable code in llstartup.cpp!

--HG--
branch : product-engine
---
 indra/newview/llpanellogin.cpp | 6 ++++--
 indra/newview/llstartup.cpp    | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 78f3469f0e..ec0f8e303c 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -391,6 +391,10 @@ LLPanelLogin::~LLPanelLogin()
 
 	//// We know we're done with the image, so be rid of it.
 	//gTextureList.deleteImage( mLogoImage );
+
+	// Controls having keyboard focus by default
+	// must reset it on destroy. (EXT-2748)
+	gFocusMgr.setDefaultKeyboardFocus(NULL);
 }
 
 // virtual
@@ -682,8 +686,6 @@ void LLPanelLogin::closePanel()
 	if (sInstance)
 	{
 		gViewerWindow->getRootView()->removeChild( LLPanelLogin::sInstance );
-		
-		gFocusMgr.setDefaultKeyboardFocus(NULL);
 
 		delete sInstance;
 		sInstance = NULL;
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index d36ff1605e..736be67710 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -2153,7 +2153,7 @@ void login_callback(S32 option, void *userdata)
 		LLStartUp::setStartupState( STATE_LOGIN_CLEANUP );
 		return;
 	}
-	else if (QUIT_OPTION == option)
+	else if (QUIT_OPTION == option) // *TODO: THIS CODE SEEMS TO BE UNREACHABLE!!!!! login_callback is never called with option equal to QUIT_OPTION
 	{
 		// Make sure we don't save the password if the user is trying to clear it.
 		std::string first, last, password;
-- 
cgit v1.2.3


From 156ced177d22623f0b5291f043636b7d32f69470 Mon Sep 17 00:00:00 2001
From: "Justin C. Rounds (Chuck)" <chuck@lindenlab.com>
Date: Tue, 24 Nov 2009 11:16:34 -0500
Subject: Set global fontsize for tabs to SansSerifSmall
 http://jira.secondlife.com/browse/EXT-2731

---
 indra/newview/skins/default/xui/en/widgets/tab_container.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
index f1401140de..477c6fb8b8 100644
--- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
@@ -2,7 +2,7 @@
 <tab_container tab_min_width="60"
                tab_max_width="150"
                font_halign="center"
-               font="SansSerif" 
+               font="SansSerifSmall" 
                tab_height="21">
   <first_tab tab_top_image_unselected="TabTop_Left_Off"
                tab_top_image_selected="TabTop_Left_Selected"
-- 
cgit v1.2.3


From b0704256918d4576730ab324e1d67fe8fdd787c0 Mon Sep 17 00:00:00 2001
From: Dmitry Oleshko <doleshko@productengine.com>
Date: Tue, 24 Nov 2009 18:22:06 +0200
Subject: No ticket. A pointer member must be initialized in constructor.

--HG--
branch : product-engine
---
 indra/newview/llscreenchannel.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index ce89866b41..24ba288c49 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -115,7 +115,9 @@ void LLScreenChannelBase::init(S32 channel_left, S32 channel_right)
 // LLScreenChannel
 //////////////////////
 //--------------------------------------------------------------------------
-LLScreenChannel::LLScreenChannel(LLUUID& id):	LLScreenChannelBase(id)
+LLScreenChannel::LLScreenChannel(LLUUID& id):	
+LLScreenChannelBase(id)
+,mStartUpToastPanel(NULL)
 {	
 }
 
-- 
cgit v1.2.3


From 417bba0957d9d0e86c28e357e8409c6ef5ce1cae Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Tue, 24 Nov 2009 19:35:24 +0200
Subject: Fixed a minor grammatical mistake.

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/panel_picks.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml
index 5cefe3e4ab..ece58180f7 100644
--- a/indra/newview/skins/default/xui/en/panel_picks.xml
+++ b/indra/newview/skins/default/xui/en/panel_picks.xml
@@ -24,7 +24,7 @@
   top="10"
   visible="false" 
   width="313">
-   There are no any picks/classifieds here
+   There are no picks/classifieds here
  </text>
  <accordion
   follows="all"
-- 
cgit v1.2.3


From c227f93b1a6f89847242261f634079d4d6bfbf08 Mon Sep 17 00:00:00 2001
From: Sergey Borushevsky <sborushevsky@productengine.com>
Date: Tue, 24 Nov 2009 20:27:56 +0200
Subject: Fixed minor bug EXT-2745 (Contents of Groups field duplicates after
 IM session has been started)

--HG--
branch : product-engine
---
 indra/newview/llpanelavatar.cpp | 30 ++++++++++++++++++------------
 indra/newview/llpanelavatar.h   |  4 +++-
 2 files changed, 21 insertions(+), 13 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 03401d934f..ed1d93db78 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -359,7 +359,7 @@ void LLPanelAvatarProfile::onOpen(const LLSD& key)
 {
 	LLPanelProfileTab::onOpen(key);
 
-	mGroups.erase();
+	mGroups.clear();
 
 	//Disable "Add Friend" button for friends.
 	childSetEnabled("add_friend", !LLAvatarActions::isFriend(getAvatarId()));
@@ -391,7 +391,7 @@ void LLPanelAvatarProfile::resetControls()
 
 void LLPanelAvatarProfile::resetData()
 {
-	mGroups.erase();
+	mGroups.clear();
 	childSetValue("2nd_life_pic",LLUUID::null);
 	childSetValue("real_world_pic",LLUUID::null);
 	childSetValue("online_status",LLStringUtil::null);
@@ -443,23 +443,29 @@ void LLPanelAvatarProfile::processGroupProperties(const LLAvatarGroups* avatar_g
 	// Group properties may arrive in two callbacks, we need to save them across
 	// different calls. We can't do that in textbox as textbox may change the text.
 
-	std::string groups = mGroups;
 	LLAvatarGroups::group_list_t::const_iterator it = avatar_groups->group_list.begin();
 	const LLAvatarGroups::group_list_t::const_iterator it_end = avatar_groups->group_list.end();
 
-	if(groups.empty() && it_end != it)
-	{
-		groups = (*it).group_name;
-		++it;
-	}
 	for(; it_end != it; ++it)
 	{
 		LLAvatarGroups::LLGroupData group_data = *it;
-		groups += ", ";
-		groups += group_data.group_name;
+
+		// Check if there is no duplicates for this group
+		if (std::find(mGroups.begin(), mGroups.end(), group_data.group_name) == mGroups.end())
+			mGroups.push_back(group_data.group_name);
+	}
+
+	// Creating string, containing group list
+	std::string groups = "";
+	for (group_list_t::const_iterator it = mGroups.begin(); it != mGroups.end(); ++it)
+	{
+		if (it != mGroups.begin())
+			groups += ", ";
+
+		groups += *it;
 	}
-	mGroups = groups;
-	childSetValue("sl_groups",mGroups);
+
+	childSetValue("sl_groups", groups);
 }
 
 void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index a0caf0c915..8e0965e0b7 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -183,7 +183,9 @@ protected:
 
 private:
 
-	std::string 			mGroups;
+	typedef std::list<std::string>	group_list_t;
+	group_list_t 			mGroups;
+
 	LLToggleableMenu*		mProfileMenu;
 };
 
-- 
cgit v1.2.3


From 240c21cc2dd82dd41a664ec225fafb24bab44ca6 Mon Sep 17 00:00:00 2001
From: Sergey Borushevsky <sborushevsky@productengine.com>
Date: Tue, 24 Nov 2009 20:34:05 +0200
Subject: Related to implementation of EXT-2517 (Add support for the viewer
 1.23 chat history style (widget-less)) - reverted changes in session
 processing code in LLIMFloater::onClose in rev. bd3f78cc1c42.

--HG--
branch : product-engine
---
 indra/newview/llimfloater.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 795770d3db..ee93a9349a 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -110,10 +110,10 @@ void LLIMFloater::onFocusReceived()
 // virtual
 void LLIMFloater::onClose(bool app_quitting)
 {
-	if (!gIMMgr->hasSession(mSessionID)) return;
-	
 	setTyping(false);
-	gIMMgr->leaveSession(mSessionID);
+	// SJB: We want the close button to hide the session window, not end it
+	// *NOTE: Yhis is functional, but not ideal - it's still closing the floater; we really want to change the behavior of the X button instead.
+	//gIMMgr->leaveSession(mSessionID);
 }
 
 /* static */
-- 
cgit v1.2.3


From 3d2fbad4cafae520f790f97dad6b4eb6a0363751 Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Tue, 24 Nov 2009 20:57:41 +0200
Subject: Fixed normal bug EXT-2570 (There is no connecting/leaving spatial
 voice chat notifications in the nearby chat)

--HG--
branch : product-engine
---
 indra/newview/llimview.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

(limited to 'indra/newview')

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index c066f1f77a..ffa943092f 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -71,6 +71,7 @@
 #include "llviewermessage.h"
 #include "llviewerwindow.h"
 #include "llnotify.h"
+#include "llnearbychat.h"
 #include "llviewerregion.h"
 #include "llvoicechannel.h"
 #include "lltrans.h"
@@ -1611,6 +1612,12 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess
 		LLChat chat(message);
 		chat.mSourceType = CHAT_SOURCE_SYSTEM;
 		LLFloaterChat::addChatHistory(chat);
+
+		LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+		if(nearby_chat)
+		{
+			nearby_chat->addMessage(chat);
+		}
 	}
 	else // going to IM session
 	{
-- 
cgit v1.2.3


From 87d7c6d6f962281f11b35e02a399e3d0e1dd9e12 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Tue, 24 Nov 2009 21:18:09 +0200
Subject: Work on task EXT-2092 (Task Panel tabs should toggle visibility of
 the panel). Made the People and Me task panels support the desired tri-state
 behavior. Until all the other task panels support that behavior, it is
 disabled.

--HG--
branch : product-engine
---
 indra/newview/llpanelme.cpp          | 47 +++++++++++++++++++++++++++++++++---
 indra/newview/llpanelme.h            |  1 +
 indra/newview/llpanelpeople.cpp      | 27 +++++++++++++++++++++
 indra/newview/llpanelpeople.h        |  4 +--
 indra/newview/llpanelprofile.cpp     | 18 ++------------
 indra/newview/llpanelprofile.h       |  2 +-
 indra/newview/llpanelprofileview.cpp |  4 ++-
 indra/newview/llpanelprofileview.h   |  2 +-
 indra/newview/llsidetray.cpp         | 39 ++++++++----------------------
 9 files changed, 90 insertions(+), 54 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index e12da97f3b..046118cf75 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -38,6 +38,7 @@
 #include "llagent.h"
 #include "llagentwearables.h"
 #include "lliconctrl.h"
+#include "llsidetray.h"
 #include "lltabcontainer.h"
 #include "lltexturectrl.h"
 
@@ -70,6 +71,45 @@ void LLPanelMe::onOpen(const LLSD& key)
 	LLPanelProfile::onOpen(key);
 }
 
+void LLPanelMe::notifyChildren(const LLSD& info)
+{
+	if (info.has("task-panel-action") && info["task-panel-action"].asString() == "handle-tri-state")
+	{
+		// Implement task panel tri-state behavior.
+		//
+		// When the button of an active open task panel is clicked, side tray
+		// calls notifyChildren() on the panel, passing task-panel-action=>handle-tri-state as an argument.
+		// The task panel is supposed to handle this by reverting to the default view,
+		// i.e. closing any dependent panels like "pick info" or "profile edit".
+
+		bool on_default_view = true;
+
+		const LLRect& task_panel_rect = getRect();
+		for (LLView* child = getFirstChild(); child; child = findNextSibling(child))
+		{
+			LLPanel* panel = dynamic_cast<LLPanel*>(child);
+			if (!panel)
+				continue;
+
+			// *HACK: implement panel stack instead (e.g. me->pick_info->pick_edit).
+			if (panel->getRect().getWidth()  == task_panel_rect.getWidth()  &&
+				panel->getRect().getHeight() == task_panel_rect.getHeight() &&
+				panel->getVisible())
+			{
+				panel->setVisible(FALSE);
+				on_default_view = false;
+			}
+		}
+		
+		if (on_default_view)
+			LLSideTray::getInstance()->collapseSideBar();
+
+		return; // this notification is only supposed to be handled by task panels 
+	}
+
+	LLPanel::notifyChildren(info);
+}
+
 void LLPanelMe::buildEditPanel()
 {
 	if (NULL == mEditPanel)
@@ -84,8 +124,7 @@ void LLPanelMe::buildEditPanel()
 void LLPanelMe::onEditProfileClicked()
 {
 	buildEditPanel();
-	togglePanel(mEditPanel);
-	mEditPanel->onOpen(getAvatarId());
+	togglePanel(mEditPanel, getAvatarId()); // open
 }
 
 void LLPanelMe::onEditAppearanceClicked()
@@ -108,13 +147,13 @@ void LLPanelMe::onSaveChangesClicked()
 	data.allow_publish = mEditPanel->childGetValue("show_in_search_checkbox");
 
 	LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesUpdate(&data);
-	togglePanel(mEditPanel);
+	togglePanel(mEditPanel); // close
 	onOpen(getAvatarId());
 }
 
 void LLPanelMe::onCancelClicked()
 {
-	togglePanel(mEditPanel);
+	togglePanel(mEditPanel); // close
 }
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llpanelme.h b/indra/newview/llpanelme.h
index e16532a445..17d367132e 100644
--- a/indra/newview/llpanelme.h
+++ b/indra/newview/llpanelme.h
@@ -54,6 +54,7 @@ public:
 	LLPanelMe();
 
 	/*virtual*/ void onOpen(const LLSD& key);
+	/*virtual*/ void notifyChildren(const LLSD& info);
 
 	/*virtual*/ BOOL postBuild();
 
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 4dc8872557..2ccd10a065 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -56,6 +56,8 @@
 #include "llgrouplist.h"
 #include "llinventoryobserver.h"
 #include "llpanelpeoplemenus.h"
+#include "llsidetray.h"
+#include "llsidetraypanelcontainer.h"
 #include "llrecentpeople.h"
 #include "llviewercontrol.h"		// for gSavedSettings
 #include "llviewermenu.h"			// for gMenuHolder
@@ -1263,6 +1265,31 @@ void	LLPanelPeople::onOpen(const LLSD& key)
 		reSelectedCurrentTab();
 }
 
+void LLPanelPeople::notifyChildren(const LLSD& info)
+{
+	if (info.has("task-panel-action") && info["task-panel-action"].asString() == "handle-tri-state")
+	{
+		LLSideTrayPanelContainer* container = dynamic_cast<LLSideTrayPanelContainer*>(getParent());
+		if (!container)
+		{
+			llwarns << "Cannot find People panel container" << llendl;
+			return;
+		}
+
+		if (container->getCurrentPanelIndex() > 0) 
+		{
+			// if not on the default panel, switch to it
+			container->onOpen(LLSD().insert(LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME, getName()));
+		}
+		else
+			LLSideTray::getInstance()->collapseSideBar();
+
+		return; // this notification is only supposed to be handled by task panels
+	}
+
+	LLPanel::notifyChildren(info);
+}
+
 void LLPanelPeople::showAccordion(const std::string name, bool show)
 {
 	if(name.empty())
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index a369bcd3e2..d9dd76f3ac 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -50,8 +50,8 @@ public:
 	virtual ~LLPanelPeople();
 
 	/*virtual*/ BOOL 	postBuild();
-
-	virtual void	onOpen(const LLSD& key);
+	/*virtual*/ void	onOpen(const LLSD& key);
+	/*virtual*/ void	notifyChildren(const LLSD& info);
 
 	// internals
 	class Updater;
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index 02f45c1b48..4d152a13f3 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -158,28 +158,14 @@ void LLPanelProfile::onOpen(const LLSD& key)
 }
 
 //*TODO redo panel toggling
-void LLPanelProfile::togglePanel(LLPanel* panel)
+void LLPanelProfile::togglePanel(LLPanel* panel, const LLSD& key)
 {
 	// TRUE - we need to open/expand "panel"
 	bool expand = getChildList()->front() != panel;  // mTabCtrl->getVisible();
 
 	if (expand)
 	{
-		if (panel->getParent() != this)
-		{
-			addChild(panel);
-		}
-		else
-		{
-			sendChildToFront(panel);
-		}
-
-		panel->setVisible(TRUE);
-
-		LLRect new_rect = getRect();
-		panel->reshape(new_rect.getWidth(), new_rect.getHeight());
-		new_rect.setLeftTopAndSize(0, new_rect.getHeight(), new_rect.getWidth(), new_rect.getHeight());
-		panel->setRect(new_rect);
+		openPanel(panel, key);
 	}
 	else 
 	{
diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h
index e216eb70f2..067beb248b 100644
--- a/indra/newview/llpanelprofile.h
+++ b/indra/newview/llpanelprofile.h
@@ -51,7 +51,7 @@ public:
 
 	/*virtual*/ void onOpen(const LLSD& key);
 
-	virtual void togglePanel(LLPanel*);
+	virtual void togglePanel(LLPanel*, const LLSD& key = LLSD());
 
 	virtual void openPanel(LLPanel* panel, const LLSD& params);
 
diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp
index d4ab5013f9..08aea8cfd8 100644
--- a/indra/newview/llpanelprofileview.cpp
+++ b/indra/newview/llpanelprofileview.cpp
@@ -193,8 +193,10 @@ void LLPanelProfileView::onAvatarNameCached(const LLUUID& id, const std::string&
 	getChild<LLTextBox>("user_name", FALSE)->setValue(first_name + " " + last_name);
 }
 
-void LLPanelProfileView::togglePanel(LLPanel* panel)
+void LLPanelProfileView::togglePanel(LLPanel* panel, const LLSD& key)
 {
+	// *TODO: unused method?
+
 	LLPanelProfile::togglePanel(panel);
 	if(FALSE == panel->getVisible())
 	{
diff --git a/indra/newview/llpanelprofileview.h b/indra/newview/llpanelprofileview.h
index 45c2fc116e..5dc617d4a0 100644
--- a/indra/newview/llpanelprofileview.h
+++ b/indra/newview/llpanelprofileview.h
@@ -64,7 +64,7 @@ public:
 	
 	/*virtual*/ BOOL postBuild();
 
-	/*virtual*/ void togglePanel(LLPanel* panel);
+	/*virtual*/ void togglePanel(LLPanel* panel, const LLSD& key = LLSD());
 
 	BOOL handleDragAndDrop(S32 x, S32 y, MASK mask,
 						   BOOL drop, EDragAndDropType cargo_type,
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index 7711f3c733..0b832a8239 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -435,35 +435,16 @@ void		LLSideTray::processTriState ()
 		expandSideBar();
 	else
 	{
-		//!!!!!!!!!!!!!!!!!
-		//** HARDCODED!!!!!
-		//!!!!!!!!!!!!!!!!!
-
-		//there is no common way to determine "default" panel for tab
-		//so default panels for now will be hardcoded
-
-		//hardcoded for people tab and profile tab
-
-		/*if(mActiveTab == getTab("sidebar_people"))
-		{
-			LLSideTrayPanelContainer* container = findChild<LLSideTrayPanelContainer>("panel_container");
-			if(container && container->getCurrentPanelIndex()>0)
-			{
-				container->onOpen(LLSD().insert("sub_panel_name","panel_people"));
-			}
-			else
-				collapseSideBar();
-		}
-		else if(mActiveTab == getTab("sidebar_me"))
-		{
-			LLTabContainer* tab_container = findChild<LLTabContainer>("tabs");
-			if(tab_container && tab_container->getCurrentPanelIndex()>0)
-				tab_container->selectFirstTab();
-			else
-				collapseSideBar();
-		}
-		else*/
-			collapseSideBar();
+#if 0 // *TODO: EXT-2092
+		
+		// Tell the active task panel to switch to its default view
+		// or collapse side tray if already on the default view.
+		LLSD info;
+		info["task-panel-action"] = "handle-tri-state";
+		mActiveTab->notifyChildren(info);
+#else
+		collapseSideBar();
+#endif
 	}
 }
 
-- 
cgit v1.2.3


From 88a56949d5b121132e3a068c72ab370834d72ceb Mon Sep 17 00:00:00 2001
From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com>
Date: Tue, 24 Nov 2009 15:43:29 -0500
Subject: made task inventory offers work the old way, and disabled inv slurls
 for them.

---
 indra/newview/llviewerinventory.cpp                |   2 +-
 indra/newview/llviewermessage.cpp                  | 271 ++++++++++++++++-----
 indra/newview/llviewermessage.h                    |   1 +
 .../newview/skins/default/xui/en/notifications.xml |   8 -
 4 files changed, 208 insertions(+), 74 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index ad3828bba6..c6ec25c1cb 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -80,7 +80,7 @@ public:
 		}
 		
 		const std::string verb = params[1].asString();
-		//if (verb == "select")
+		if (verb == "select")
 		{
 			std::vector<LLUUID> items_to_open;
 			items_to_open.push_back(inventory_id);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 7eed40589b..eaffa75298 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1130,48 +1130,9 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 
 	std::string from_string; // Used in the pop-up.
 	std::string chatHistory_string;  // Used in chat history.
-	if (mFromObject == TRUE)
-	{
-		if (mFromGroup)
-		{
-			std::string group_name;
-			if (gCacheName->getGroupName(mFromID, group_name))
-			{
-				from_string = LLTrans::getString("InvOfferAnObjectNamed") + " "+"'" 
-							+ mFromName + LLTrans::getString("'") +" " + LLTrans::getString("InvOfferOwnedByGroup") 
-				            + " "+ "'" + group_name + "'";
-				
-				chatHistory_string = mFromName + " " + LLTrans::getString("InvOfferOwnedByGroup") 
-								   + " " + group_name + "'";
-			}
-			else
-			{
-				from_string = LLTrans::getString("InvOfferAnObjectNamed") + " "+"'"
-				            + mFromName +"'"+ " " + LLTrans::getString("InvOfferOwnedByUnknownGroup");
-				chatHistory_string = mFromName + " " + LLTrans::getString("InvOfferOwnedByUnknownGroup");
-			}
-		}
-		else
-		{
-			std::string first_name, last_name;
-			if (gCacheName->getName(mFromID, first_name, last_name))
-			{
-				from_string = LLTrans::getString("InvOfferAnObjectNamed") + " "+ LLTrans::getString("'") + mFromName 
-							+ LLTrans::getString("'")+" " + LLTrans::getString("InvOfferOwnedBy") + first_name + " " + last_name;
-				chatHistory_string = mFromName + " " + LLTrans::getString("InvOfferOwnedBy") + " " + first_name + " " + last_name;
-			}
-			else
-			{
-				from_string = LLTrans::getString("InvOfferAnObjectNamed") + " "+LLTrans::getString("'") 
-				            + mFromName + LLTrans::getString("'")+" " + LLTrans::getString("InvOfferOwnedByUnknownUser");
-				chatHistory_string = mFromName + " " + LLTrans::getString("InvOfferOwnedByUnknownUser");
-			}
-		}
-	}
-	else
-	{
-		from_string = chatHistory_string = mFromName;
-	}
+	
+	// TODO: when task inventory offers can also be handled the new way, migrate the code that sets these strings here:
+	from_string = chatHistory_string = mFromName;
 	
 	bool busy=FALSE;
 	
@@ -1281,8 +1242,182 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 	return false;
 }
 
+bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const LLSD& response)
+{
+	LLChat chat;
+	std::string log_message;
+	S32 button = LLNotification::getSelectedOption(notification, response);
+	
+	// For muting, we need to add the mute, then decline the offer.
+	// This must be done here because:
+	// * callback may be called immediately,
+	// * adding the mute sends a message,
+	// * we can't build two messages at once.
+	if (2 == button)
+	{
+		gCacheName->get(mFromID, mFromGroup, &inventory_offer_mute_callback);
+	}
+	
+	LLMessageSystem* msg = gMessageSystem;
+	msg->newMessageFast(_PREHASH_ImprovedInstantMessage);
+	msg->nextBlockFast(_PREHASH_AgentData);
+	msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+	msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+	msg->nextBlockFast(_PREHASH_MessageBlock);
+	msg->addBOOLFast(_PREHASH_FromGroup, FALSE);
+	msg->addUUIDFast(_PREHASH_ToAgentID, mFromID);
+	msg->addU8Fast(_PREHASH_Offline, IM_ONLINE);
+	msg->addUUIDFast(_PREHASH_ID, mTransactionID);
+	msg->addU32Fast(_PREHASH_Timestamp, NO_TIMESTAMP); // no timestamp necessary
+	std::string name;
+	LLAgentUI::buildFullname(name);
+	msg->addStringFast(_PREHASH_FromAgentName, name);
+	msg->addStringFast(_PREHASH_Message, ""); 
+	msg->addU32Fast(_PREHASH_ParentEstateID, 0);
+	msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null);
+	msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent());
+	LLInventoryObserver* opener = NULL;
+	LLViewerInventoryCategory* catp = NULL;
+	catp = (LLViewerInventoryCategory*)gInventory.getCategory(mObjectID);
+	LLViewerInventoryItem* itemp = NULL;
+	if(!catp)
+	{
+		itemp = (LLViewerInventoryItem*)gInventory.getItem(mObjectID);
+	}
+	
+	std::string from_string; // Used in the pop-up.
+	std::string chatHistory_string;  // Used in chat history.
+	if (mFromObject == TRUE)
+	{
+		if (mFromGroup)
+		{
+			std::string group_name;
+			if (gCacheName->getGroupName(mFromID, group_name))
+			{
+				from_string = LLTrans::getString("InvOfferAnObjectNamed") + " "+"'" 
+				+ mFromName + LLTrans::getString("'") +" " + LLTrans::getString("InvOfferOwnedByGroup") 
+				+ " "+ "'" + group_name + "'";
+				
+				chatHistory_string = mFromName + " " + LLTrans::getString("InvOfferOwnedByGroup") 
+				+ " " + group_name + "'";
+			}
+			else
+			{
+				from_string = LLTrans::getString("InvOfferAnObjectNamed") + " "+"'"
+				+ mFromName +"'"+ " " + LLTrans::getString("InvOfferOwnedByUnknownGroup");
+				chatHistory_string = mFromName + " " + LLTrans::getString("InvOfferOwnedByUnknownGroup");
+			}
+		}
+		else
+		{
+			std::string first_name, last_name;
+			if (gCacheName->getName(mFromID, first_name, last_name))
+			{
+				from_string = LLTrans::getString("InvOfferAnObjectNamed") + " "+ LLTrans::getString("'") + mFromName 
+				+ LLTrans::getString("'")+" " + LLTrans::getString("InvOfferOwnedBy") + first_name + " " + last_name;
+				chatHistory_string = mFromName + " " + LLTrans::getString("InvOfferOwnedBy") + " " + first_name + " " + last_name;
+			}
+			else
+			{
+				from_string = LLTrans::getString("InvOfferAnObjectNamed") + " "+LLTrans::getString("'") 
+				+ mFromName + LLTrans::getString("'")+" " + LLTrans::getString("InvOfferOwnedByUnknownUser");
+				chatHistory_string = mFromName + " " + LLTrans::getString("InvOfferOwnedByUnknownUser");
+			}
+		}
+	}
+	else
+	{
+		from_string = chatHistory_string = mFromName;
+	}
+	
+	bool busy=FALSE;
+	
+	switch(button)
+	{
+		case IOR_ACCEPT:
+			// ACCEPT. The math for the dialog works, because the accept
+			// for inventory_offered, task_inventory_offer or
+			// group_notice_inventory is 1 greater than the offer integer value.
+			// Generates IM_INVENTORY_ACCEPTED, IM_TASK_INVENTORY_ACCEPTED, 
+			// or IM_GROUP_NOTICE_INVENTORY_ACCEPTED
+			msg->addU8Fast(_PREHASH_Dialog, (U8)(mIM + 1));
+			msg->addBinaryDataFast(_PREHASH_BinaryBucket, &(mFolderID.mData),
+								   sizeof(mFolderID.mData));
+			// send the message
+			msg->sendReliable(mHost);
+			
+			//don't spam them if they are getting flooded
+			if (check_offer_throttle(mFromName, true))
+			{
+				log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString(".");
+				chat.mText = log_message;
+				LLFloaterChat::addChatHistory(chat);
+			}
+			
+			// we will want to open this item when it comes back.
+			LL_DEBUGS("Messaging") << "Initializing an opener for tid: " << mTransactionID
+			<< LL_ENDL;
+			switch (mIM)
+		{
+			case IM_TASK_INVENTORY_OFFERED:
+			case IM_GROUP_NOTICE:
+			case IM_GROUP_NOTICE_REQUESTED:
+			{
+				// This is an offer from a task or group.
+				// We don't use a new instance of an opener
+				// We instead use the singular observer gOpenTaskOffer
+				// Since it already exists, we don't need to actually do anything
+			}
+				break;
+			default:
+				LL_WARNS("Messaging") << "inventory_offer_callback: unknown offer type" << LL_ENDL;
+				break;
+		}	// end switch (mIM)
+			break;
+			
+		case IOR_BUSY:
+			//Busy falls through to decline.  Says to make busy message.
+			busy=TRUE;
+		case IOR_MUTE:
+			// MUTE falls through to decline
+		case IOR_DECLINE:
+			// DECLINE. The math for the dialog works, because the decline
+			// for inventory_offered, task_inventory_offer or
+			// group_notice_inventory is 2 greater than the offer integer value.
+			// Generates IM_INVENTORY_DECLINED, IM_TASK_INVENTORY_DECLINED,
+			// or IM_GROUP_NOTICE_INVENTORY_DECLINED
+		default:
+			// close button probably (or any of the fall-throughs from above)
+			msg->addU8Fast(_PREHASH_Dialog, (U8)(mIM + 2));
+			msg->addBinaryDataFast(_PREHASH_BinaryBucket, EMPTY_BINARY_BUCKET, EMPTY_BINARY_BUCKET_SIZE);
+			// send the message
+			msg->sendReliable(mHost);
+			
+			log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +".";
+			chat.mText = log_message;
+			if( LLMuteList::getInstance()->isMuted(mFromID ) && ! LLMuteList::getInstance()->isLinden(mFromName) )  // muting for SL-42269
+			{
+				chat.mMuted = TRUE;
+			}
+			LLFloaterChat::addChatHistory(chat);
+			
+			if (busy &&	(!mFromGroup && !mFromObject))
+			{
+				busy_message(msg,mFromID);
+			}
+			break;
+	}
+	
+	if(opener)
+	{
+		gInventory.addObserver(opener);
+	}
+	
+	delete this;
+	return false;
+}
 
-void inventory_offer_handler(LLOfferInfo* info, BOOL from_task)
+void inventory_offer_handler(LLOfferInfo* info)
 {
 	//Until throttling is implmented, busy mode should reject inventory instead of silently
 	//accepting it.  SEE SL-39554
@@ -1369,38 +1504,44 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task)
 	args["OBJECTFROMNAME"] = info->mFromName;
 	args["NAME"] = info->mFromName;
 	args["NAME_SLURL"] = LLSLURL::buildCommand("agent", info->mFromID, "about");
-	std::string verb = "highlight?name=" + msg;
+	std::string verb = "select?name=" + msg;
 	args["ITEM_SLURL"] = LLSLURL::buildCommand("inventory", info->mObjectID, verb.c_str());
 
 	LLNotification::Params p("ObjectGiveItem");
-	p.substitutions(args).payload(payload).functor.function(boost::bind(&LLOfferInfo::inventory_offer_callback, info, _1, _2));
 
-	if (from_task)
+	// Object -> Agent Inventory Offer
+	if (info->mFromObject)
 	{
+		// Inventory Slurls don't currently work for non agent transfers, so only display the object name.
+		args["ITEM_SLURL"] = msg;
+		// Note: sets inventory_task_offer_callback as the callback
+		p.substitutions(args).payload(payload).functor.function(boost::bind(&LLOfferInfo::inventory_task_offer_callback, info, _1, _2));
 		p.name = name_found ? "ObjectGiveItem" : "ObjectGiveItemUnknownUser";
 	}
-	else
+	else // Agent -> Agent Inventory Offer
 	{
+		// Note: sets inventory_offer_callback as the callback
+		p.substitutions(args).payload(payload).functor.function(boost::bind(&LLOfferInfo::inventory_offer_callback, info, _1, _2));
 		p.name = "UserGiveItem";
+		
+		// Prefetch the item into your local inventory.
+		LLInventoryFetchObserver::item_ref_t items;
+		items.push_back(info->mObjectID);
+		LLInventoryFetchObserver* fetch_item = new LLInventoryFetchObserver();
+		fetch_item->fetchItems(items);
+		if(fetch_item->isEverythingComplete())
+		{
+			fetch_item->done();
+		}
+		else
+		{
+			gInventory.addObserver(fetch_item);
+		}
+		
+		// In viewer 2 we're now auto receiving inventory offers and messaging as such (not sending reject messages).
+		info->send_auto_receive_response();
 	}
 	
-	// Prefetch the item into your local inventory.
-	LLInventoryFetchObserver::item_ref_t items;
-	items.push_back(info->mObjectID);
-	LLInventoryFetchObserver* fetch_item = new LLInventoryFetchObserver();
-	fetch_item->fetchItems(items);
-	if(fetch_item->isEverythingComplete())
-	{
-		fetch_item->done();
-	}
-	else
-	{
-		gInventory.addObserver(fetch_item);
-	}
-	
-	// In viewer 2 we're now auto receiving inventory offers and messaging as such (not sending reject messages).
-	info->send_auto_receive_response();
-	
 	// Pop up inv offer notification and let the user accept (keep), or reject (and silently delete) the inventory.
 	LLNotifications::instance().add(p);
 }
@@ -1897,7 +2038,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			}
 			else
 			{
-				inventory_offer_handler(info, dialog == IM_TASK_INVENTORY_OFFERED);
+				inventory_offer_handler(info);
 			}
 		}
 		break;
diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h
index 2d8930d2fe..1a98828010 100644
--- a/indra/newview/llviewermessage.h
+++ b/indra/newview/llviewermessage.h
@@ -222,6 +222,7 @@ struct LLOfferInfo
 	LLSD asLLSD();
 	void send_auto_receive_response(void);
 	bool inventory_offer_callback(const LLSD& notification, const LLSD& response);
+	bool inventory_task_offer_callback(const LLSD& notification, const LLSD& response);
 
 };
 
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index eb0db2683f..3e622d779c 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4973,10 +4973,6 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you [OBJECTTYPE
        index="0"
        name="Keep"
        text="Keep"/>
-	  <button
-       index="4"
-       name="Show"
-       text="Show"/> 
       <button
        index="1"
        name="Discard"
@@ -4999,10 +4995,6 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you [O
        index="0"
        name="Keep"
        text="Keep"/>
-	  <button
-       index="4"
-       name="Show"
-       text="Show"/> 
       <button
        index="1"
        name="Discard"
-- 
cgit v1.2.3


From de78ec1345648fb90c71fd8cc97a9134fc016803 Mon Sep 17 00:00:00 2001
From: Bryan O'Sullivan <bos@lindenlab.com>
Date: Tue, 24 Nov 2009 15:31:34 -0800
Subject: Nuke the last few references to the long-dead LCD code.

---
 indra/newview/llappviewer.cpp | 7 -------
 1 file changed, 7 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index fa0ea557ba..edad76a072 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -799,13 +799,6 @@ bool LLAppViewer::init()
 	// call all self-registered classes
 	LLInitClassList::instance().fireCallbacks();
 
-	#if LL_LCD_COMPILE
-		// start up an LCD window on a logitech keyboard, if there is one
-		HINSTANCE hInstance = GetModuleHandle(NULL);
-		gLcdScreen = new LLLCD(hInstance);
-		CreateLCDDebugWindows();
-#endif
-
 	LLFolderViewItem::initClass(); // SJB: Needs to happen after initWindow(), not sure why but related to fonts
 		
 	gGLManager.getGLInfo(gDebugInfo);
-- 
cgit v1.2.3