From 175f12350d351570712db03e15c1bc89af677ad8 Mon Sep 17 00:00:00 2001
From: Vadim ProductEngine <vsavchuk@productengine.com>
Date: Fri, 22 Apr 2011 19:07:15 +0300
Subject: STORM-1093 FIX "Dock" icon is still shown after a side panel has been
 docked with Ctrl+Shift+W.

Reason:
When an undocked side tray tab floater got closed with Ctrl+Shift+W,
LLSideTray::setTabDocked() was called. It docked the floater but didn't update
the dock/undock icon.

Fix:
Made setTabDocked() a general purpose method, not a hack suitable for using
only as a floater close callback in the basic viewer mode.
It now updates the dock/undock icon.

Other changes:
* Replaced numerous calls to toggleTabDocked with setDocked(),
  that is safer because does exactly what you want.
* Got rid of a duplicated floater close callback.
---
 indra/newview/llfloatersidetraytab.cpp |  3 +-
 indra/newview/llsidetray.cpp           | 61 ++++++++++++----------------------
 indra/newview/llsidetray.h             |  2 +-
 3 files changed, 24 insertions(+), 42 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llfloatersidetraytab.cpp b/indra/newview/llfloatersidetraytab.cpp
index 94407e6da0..9f15e62d84 100644
--- a/indra/newview/llfloatersidetraytab.cpp
+++ b/indra/newview/llfloatersidetraytab.cpp
@@ -47,5 +47,6 @@ LLFloaterSideTrayTab::~LLFloaterSideTrayTab()
 
 void LLFloaterSideTrayTab::onClose(bool app_quitting)
 {
-	LLSideTray::getInstance()->setTabDocked(getName(), true);
+	// The floater is already being closed, so don't toggle it once more (that may crash viewer).
+	LLSideTray::getInstance()->setTabDocked(getName(), /* dock = */ true, /* toggle_floater = */ false);
 }
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index 4f18ee1da2..615899d49f 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -127,8 +127,6 @@ protected:
 	void			undock(LLFloater* floater_tab);
 
 	LLSideTray*		getSideTray();
-
-	void			onFloaterClose(LLSD::Boolean app_quitting);
 	
 public:
 	virtual ~LLSideTrayTab();
@@ -146,7 +144,7 @@ public:
 	
 	void			onOpen		(const LLSD& key);
 	
-	void			toggleTabDocked();
+	void			toggleTabDocked(bool toggle_floater = true);
 	void			setDocked(bool dock);
 	bool			isDocked() const;
 
@@ -160,7 +158,6 @@ private:
 	std::string	mDescription;
 	
 	LLView*	mMainPanel;
-	boost::signals2::connection mFloaterCloseConn;
 };
 
 LLSideTrayTab::LLSideTrayTab(const Params& p)
@@ -196,8 +193,8 @@ BOOL LLSideTrayTab::postBuild()
 	
 	title_panel->getChild<LLTextBox>(TAB_PANEL_CAPTION_TITLE_BOX)->setValue(mTabTitle);
 
-	getChild<LLButton>("undock")->setCommitCallback(boost::bind(&LLSideTrayTab::toggleTabDocked, this));
-	getChild<LLButton>("dock")->setCommitCallback(boost::bind(&LLSideTrayTab::toggleTabDocked, this));
+	getChild<LLButton>("undock")->setCommitCallback(boost::bind(&LLSideTrayTab::setDocked, this, false));
+	getChild<LLButton>("dock")->setCommitCallback(boost::bind(&LLSideTrayTab::setDocked, this, true));
 
 	return true;
 }
@@ -253,14 +250,16 @@ LLSideTray* LLSideTrayTab::getSideTray()
 	return side_tray;
 }
 
-void LLSideTrayTab::toggleTabDocked()
+void LLSideTrayTab::toggleTabDocked(bool toggle_floater /* = true */)
 {
+	// *FIX: Calling this method twice per frame would crash the viewer.
+
 	std::string tab_name = getName();
 
 	LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
 	if (!floater_tab) return;
 
-	bool docking = LLFloater::isShown(floater_tab);
+	bool docking = !isDocked();
 
 	// Hide the "Tear Off" button when a tab gets undocked
 	// and show "Dock" button instead.
@@ -278,7 +277,10 @@ void LLSideTrayTab::toggleTabDocked()
 
 	// Open/close the floater *after* we reparent the tab panel,
 	// so that it doesn't receive redundant visibility change notifications.
-	LLFloaterReg::toggleInstance("side_bar_tab", tab_name);
+	if (toggle_floater)
+	{
+		LLFloaterReg::toggleInstance("side_bar_tab", tab_name);
+	}
 }
 
 // Same as toggleTabDocked() apart from making sure that we do exactly what we want.
@@ -298,18 +300,6 @@ bool LLSideTrayTab::isDocked() const
 	return dynamic_cast<LLSideTray*>(getParent()) != NULL;
 }
 
-void LLSideTrayTab::onFloaterClose(LLSD::Boolean app_quitting)
-{
-	// If user presses Ctrl-Shift-W, handle that gracefully by docking all
-	// undocked tabs before their floaters get destroyed (STORM-1016).
-
-	// Don't dock on quit for the current dock state to be correctly saved.
-	if (app_quitting) return;
-
-	lldebugs << "Forcibly docking tab " << getName() << llendl;
-	setDocked(true);
-}
-
 BOOL LLSideTrayTab::handleScrollWheel(S32 x, S32 y, S32 clicks)
 {
 	// Let children handle the event
@@ -333,7 +323,6 @@ void LLSideTrayTab::dock(LLFloater* floater_tab)
 		return;
 	}
 
-	mFloaterCloseConn.disconnect();
 	setRect(side_tray->getLocalRect());
 	reshape(getRect().getWidth(), getRect().getHeight());
 
@@ -382,7 +371,6 @@ void LLSideTrayTab::undock(LLFloater* floater_tab)
 	}
 
 	floater_tab->addChild(this);
-	mFloaterCloseConn = floater_tab->setCloseCallback(boost::bind(&LLSideTrayTab::onFloaterClose, this, _2));
 	floater_tab->setTitle(mTabTitle);
 	floater_tab->setName(getName());
 
@@ -510,7 +498,7 @@ public:
 			LLSideTrayTab* tab = side_tray->getTab(getName());
 			if (!tab) return FALSE;
 
-			tab->toggleTabDocked();
+			tab->setDocked(false);
 
 			LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab->getName());
 			if (!floater_tab) return FALSE;
@@ -681,7 +669,7 @@ LLPanel* LLSideTray::openChildPanel(LLSideTrayTab* tab, const std::string& panel
 
 	if (tab_attached && LLUI::sSettingGroups["config"]->getBOOL("OpenSidePanelsInFloaters"))
 	{
-		tab->toggleTabDocked();
+		tab->setDocked(false);
 		tab_attached = false;
 	}
 
@@ -1102,7 +1090,7 @@ void LLSideTray::detachTabs()
 		if (!is_visible) continue;
 
 		llassert(isTabAttached(tab->getName()));
-		tab->toggleTabDocked();
+		tab->setDocked(false);
 	}
 }
 
@@ -1327,8 +1315,9 @@ bool		LLSideTray::isPanelActive(const std::string& panel_name)
 	return (panel->getName() == panel_name);
 }
 
-void LLSideTray::setTabDocked(const std::string& tab_name, bool dock)
+void LLSideTray::setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater /* = true*/)
 {
+	// Lookup tab by name.
 	LLSideTrayTab* tab = getTab(tab_name);
 	if (!tab)
 	{	// not a docked tab, look through detached tabs
@@ -1345,20 +1334,12 @@ void LLSideTray::setTabDocked(const std::string& tab_name, bool dock)
 
 	}
 
-	if (tab)
-	{
-		bool tab_attached = isTabAttached(tab_name);
-		LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
-		if (!floater_tab) return;
+	llassert(tab != NULL);
 
-		if (dock && !tab_attached)
-		{
-			tab->dock(floater_tab);
-		}
-		else if (!dock && tab_attached)
-		{
-			tab->undock(floater_tab);
-		}
+	// Toggle its dock state.
+	if (tab && tab->isDocked() != dock)
+	{
+		tab->toggleTabDocked(toggle_floater);
 	}
 }
 
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
index 1dddd9e9bc..57e4264247 100644
--- a/indra/newview/llsidetray.h
+++ b/indra/newview/llsidetray.h
@@ -121,7 +121,7 @@ public:
     LLPanel*	getActivePanel	();
     bool		isPanelActive	(const std::string& panel_name);
 
-	void		setTabDocked(const std::string& tab_name, bool dock);
+	void		setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater = true);
 
 	/*
 	 * get the panel of given type T (don't show it or do anything else with it)
-- 
cgit v1.2.3


From a53043e8e2535dbb82c5672259a878664f5036ce Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Fri, 22 Apr 2011 12:05:30 -0700
Subject: EXP-738 FIX Login screen background image takes too long to load Misc
 improvements to make the login page load properly.

---
 indra/newview/llmediactrl.cpp  |  20 ++---
 indra/newview/llpanellogin.cpp | 170 +++--------------------------------------
 indra/newview/llpanellogin.h   |   2 -
 3 files changed, 15 insertions(+), 177 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 5007f1c17a..b3ad9efeb2 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -68,7 +68,6 @@ LLMediaCtrl::Params::Params()
 :	start_url("start_url"),
 	border_visible("border_visible", true),
 	ignore_ui_scale("ignore_ui_scale", true),
-	hide_loading("hide_loading", false),
 	decouple_texture_size("decouple_texture_size", false),
 	texture_width("texture_width", 1024),
 	texture_height("texture_height", 1024),
@@ -97,8 +96,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 	mCurrentNavUrl( "" ),
 	mStretchToFill( true ),
 	mMaintainAspectRatio ( true ),
-	mHideLoading (false),
-	mHidingInitialLoad (false),
 	mDecoupleTextureSize ( false ),
 	mTextureWidth ( 1024 ),
 	mTextureHeight ( 1024 ),
@@ -121,8 +118,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 	
 	setBorderVisible(p.border_visible);
 	
-	mHideLoading = p.hide_loading;
-	
 	setDecoupleTextureSize(p.decouple_texture_size);
 	
 	setTextureSize(p.texture_width, p.texture_height);
@@ -684,11 +679,6 @@ bool LLMediaCtrl::ensureMediaSourceExists()
 				mMediaSource->clearCache();
 				mClearCache = false;
 			}
-			
-			if(mHideLoading)
-			{
-				mHidingInitialLoad = true;
-			}
 		}
 		else
 		{
@@ -756,11 +746,11 @@ void LLMediaCtrl::draw()
 		}
 	}
 	
-	if(mHidingInitialLoad)
-	{
-		// If we're hiding loading, don't draw at all.
-		draw_media = false;
-	}
+//	if(mHidingInitialLoad)
+//	{
+//		// If we're hiding loading, don't draw at all.
+//		draw_media = false;
+//	}
 	
 	bool background_visible = isBackgroundVisible();
 	bool background_opaque = isBackgroundOpaque();
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index 7820ac3ecd..a5385b0b1c 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -81,7 +81,6 @@ const S32 MAX_PASSWORD = 16;
 LLPanelLogin *LLPanelLogin::sInstance = NULL;
 BOOL LLPanelLogin::sCapslockDidNotification = FALSE;
 
-
 class LLLoginRefreshHandler : public LLCommandHandler
 {
 public:
@@ -97,58 +96,6 @@ public:
 	}
 };
 
-LLLoginRefreshHandler gLoginRefreshHandler;
-
-
-// helper class that trys to download a URL from a web site and calls a method 
-// on parent class indicating if the web server is working or not
-class LLIamHereLogin : public LLHTTPClient::Responder
-{
-	private:
-		LLIamHereLogin( LLPanelLogin* parent ) :
-		   mParent( parent )
-		{}
-
-		LLPanelLogin* mParent;
-
-	public:
-		static boost::intrusive_ptr< LLIamHereLogin > build( LLPanelLogin* parent )
-		{
-			return boost::intrusive_ptr< LLIamHereLogin >( new LLIamHereLogin( parent ) );
-		};
-
-		virtual void  setParent( LLPanelLogin* parentIn )
-		{
-			mParent = parentIn;
-		};
-
-		// We don't actually expect LLSD back, so need to override completedRaw
-		virtual void completedRaw(U32 status, const std::string& reason,
-								  const LLChannelDescriptors& channels,
-								  const LLIOPipe::buffer_ptr_t& buffer)
-		{
-			completed(status, reason, LLSD()); // will call result() or error()
-		}
-	
-		virtual void result( const LLSD& content )
-		{
-			if ( mParent )
-				mParent->setSiteIsAlive( true );
-		};
-
-		virtual void error( U32 status, const std::string& reason )
-		{
-			if ( mParent )
-				mParent->setSiteIsAlive( false );
-		};
-};
-
-// this is global and not a class member to keep crud out of the header file
-namespace {
-	boost::intrusive_ptr< LLIamHereLogin > gResponsePtr = 0;
-};
-
-
 //---------------------------------------------------------------------------
 // Public methods
 //---------------------------------------------------------------------------
@@ -160,7 +107,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
 	mLogoImage(),
 	mCallback(callback),
 	mCallbackData(cb_data),
-	mHtmlAvailable( TRUE ),
 	mListener(new LLPanelLoginListener(this))
 {
 	setBackgroundVisible(FALSE);
@@ -190,21 +136,11 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
 
 	buildFromFile( "panel_login.xml");
 	
-	// Legacy login web page is hidden under the menu bar.
-	// Adjust reg-in-client web browser widget to not be hidden.
-	if (gSavedSettings.getBOOL("RegInClient"))
-	{
-		reshape(rect.getWidth(), rect.getHeight() - MENU_BAR_HEIGHT);
-	}
-	else
-	{
-		reshape(rect.getWidth(), rect.getHeight());
-	}
+	reshape(rect.getWidth(), rect.getHeight());
 
 	getChild<LLLineEditor>("password_edit")->setKeystrokeCallback(onPassKey, this);
 
 	// change z sort of clickable text to be behind buttons
-	//sendChildToBack(getChildView("channel_text"));
 	sendChildToBack(getChildView("forgot_password_text"));
 
 	if(LLStartUp::getStartSLURL().getType() != LLSLURL::LOCATION)
@@ -249,16 +185,10 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
 	LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");
 	web_browser->addObserver(this);
 	
-	// Clear the browser's cache to avoid any potential for the cache messing up the login screen.
-	web_browser->clearCache();
-
 	reshapeBrowser();
 
-	// kick off a request to grab the url manually
-	gResponsePtr = LLIamHereLogin::build( this );
-
-	LLHTTPClient::head( LLGridManager::getInstance()->getLoginPage(), gResponsePtr );
-
+	loadLoginPage();
+			
 	// Show last logged in user favorites in "Start at" combo.
 	addUsersWithFavoritesToUsername();
 	getChild<LLComboBox>("username_combo")->setTextChangedCallback(boost::bind(&LLPanelLogin::addFavoritesToStartLocation, this));
@@ -334,46 +264,10 @@ void LLPanelLogin::reshapeBrowser()
 	reshape( rect.getWidth(), rect.getHeight(), 1 );
 }
 
-void LLPanelLogin::setSiteIsAlive( bool alive )
-{
-	LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");
-	// if the contents of the site was retrieved
-	if ( alive )
-	{
-		if ( web_browser )
-		{
-			loadLoginPage();
-			
-			// mark as available
-			mHtmlAvailable = TRUE;
-		}
-	}
-	else
-	// the site is not available (missing page, server down, other badness)
-	{
-		if ( web_browser )
-		{
-			// hide browser control (revealing default one)
-			web_browser->setVisible( FALSE );
-
-			// mark as unavailable
-			mHtmlAvailable = FALSE;
-		}
-	}
-}
-
-
 LLPanelLogin::~LLPanelLogin()
 {
 	LLPanelLogin::sInstance = NULL;
 
-	// tell the responder we're not here anymore
-	if ( gResponsePtr )
-		gResponsePtr->setParent( 0 );
-
-	//// 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);
@@ -396,22 +290,13 @@ void LLPanelLogin::draw()
 		S32 width = getRect().getWidth();
 		S32 height = getRect().getHeight();
 
-		if ( mHtmlAvailable )
-		{
-			if (getChild<LLView>("login_widgets")->getVisible())
-			{
-				// draw a background box in black
-				gl_rect_2d( 0, height - 264, width, 264, LLColor4::black );
-				// draw the bottom part of the background image
-				// just the blue background to the native client UI
-				mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight());
-			}
-		}
-		else
+		if (getChild<LLView>("login_widgets")->getVisible())
 		{
-			// the HTML login page is not available so default to the original screen
-			S32 offscreen_part = height / 3;
-			mLogoImage->draw(0, -offscreen_part, width, height+offscreen_part);
+			// draw a background box in black
+			gl_rect_2d( 0, height - 264, width, 264, LLColor4::black );
+			// draw the bottom part of the background image
+			// just the blue background to the native client UI
+			mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight());
 		};
 	}
 	glPopMatrix();
@@ -870,23 +755,10 @@ void LLPanelLogin::loadLoginPage()
 	oStr << "&os=" << os_info;
 	curl_free(os_info);
 	
-	
 	gViewerWindow->setMenuBackgroundColor(false, !LLGridManager::getInstance()->isInProductionGrid());
-	gLoginMenuBarView->setBackgroundColor(gMenuBarView->getBackgroundColor());
 	
 	LLMediaCtrl* web_browser = sInstance->getChild<LLMediaCtrl>("login_html");
-
-	// navigate to the "real" page
-	if (gSavedSettings.getBOOL("RegInClient"))
-	{
-		web_browser->setFocus(TRUE);
-		login_page = sInstance->getString("reg_in_client_url");
-		web_browser->navigateTo(login_page, "text/html");
-	}
-	else
-	{
-		web_browser->navigateTo( oStr.str(), "text/html" );
-	}
+	web_browser->navigateTo( oStr.str(), "text/html" );
 }
 
 void LLPanelLogin::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent event)
@@ -917,10 +789,6 @@ void LLPanelLogin::onClickConnect(void *)
 {
 	if (sInstance && sInstance->mCallback)
 	{
-		// tell the responder we're not here anymore
-		if ( gResponsePtr )
-			gResponsePtr->setParent( 0 );
-
 		// JC - Make sure the fields all get committed.
 		sInstance->setFocus(FALSE);
 
@@ -988,24 +856,6 @@ void LLPanelLogin::onClickConnect(void *)
 	}
 }
 
-/*
-// static
-bool LLPanelLogin::newAccountAlertCallback(const LLSD& notification, const LLSD& response)
-{
-	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-	if (0 == option)
-	{
-		llinfos << "Going to account creation URL" << llendl;
-		LLWeb::loadURLExternal( LLNotifications::instance().getGlobalString("CREATE_ACCOUNT_URL")); 
-	}
-	else
-	{
-		sInstance->setFocus(TRUE);
-	}
-	return false;
-}
-*/
-
 // static
 void LLPanelLogin::onClickNewAccount(void*)
 {
diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h
index 9cc5e3456a..11273453ba 100644
--- a/indra/newview/llpanellogin.h
+++ b/indra/newview/llpanellogin.h
@@ -89,7 +89,6 @@ private:
 	void addUsersWithFavoritesToUsername();
 	static void onClickConnect(void*);
 	static void onClickNewAccount(void*);
-//	static bool newAccountAlertCallback(const LLSD& notification, const LLSD& response);
 	static void onClickVersion(void*);
 	static void onClickForgotPassword(void*);
 	static void onClickHelp(void*);
@@ -114,7 +113,6 @@ private:
 
 	static LLPanelLogin* sInstance;
 	static BOOL		sCapslockDidNotification;
-	BOOL			mHtmlAvailable;
 };
 
 std::string load_password_from_disk(void);
-- 
cgit v1.2.3


From 368173b7d602aa1d790a4510c4bf9e6d9e102d1d Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Fri, 22 Apr 2011 18:52:22 -0700
Subject: EXP-749 [REGRESSION] Voice status indicator shown in IM session
 instead of profile pic in Basic and Advanced modes

---
 indra/newview/llchiclet.cpp                                   | 3 ++-
 indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 885d553524..277fc9d7b9 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -483,8 +483,9 @@ void LLIMChiclet::setShowSpeaker(bool show)
 	if(needs_resize)
 	{		
 		mShowSpeaker = show;
-		toggleSpeakerControl();
 	}
+
+	toggleSpeakerControl();
 }
 
 void LLIMChiclet::enableCounterControl(bool enable) 
diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
index 99807d4717..d27c14f4e7 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
@@ -21,6 +21,7 @@
      width="20" />
     <chiclet_im_p2p.avatar_icon
      bottom="3"
+     color="white"
      follows="left|top|bottom"
      height="20"
      left="2"
-- 
cgit v1.2.3


From 36f8899861b4f6ad75485cc26e7493689aa53acc Mon Sep 17 00:00:00 2001
From: Leslie Linden <leslie@lindenlab.com>
Date: Mon, 25 Apr 2011 17:31:04 -0700
Subject: EXP-637 FIX -- As a new user, I would like Second Life to start up
 with a maximized window to fully immerse myself in the experience

Mac viewer now properly supports the calls to maximize and unmaximize the screen.

Reviewed by Callum
---
 indra/llwindow/llwindowmacosx.cpp | 101 +++++++++++++++++++++++++-------------
 indra/llwindow/llwindowmacosx.h   |   3 +-
 2 files changed, 69 insertions(+), 35 deletions(-)

(limited to 'indra')

diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index affd7276cc..447e3661db 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -108,9 +108,6 @@ static long getDictLong (CFDictionaryRef refDict, CFStringRef key);
 static EventTypeSpec WindowHandlerEventList[] =
 {
 	// Window-related events
-	//	{ kEventClassWindow, kEventWindowCollapsing },
-	//	{ kEventClassWindow, kEventWindowCollapsed },
-	//	{ kEventClassWindow, kEventWindowShown },
 	{ kEventClassWindow, kEventWindowActivated },
 	{ kEventClassWindow, kEventWindowDeactivated },
 	{ kEventClassWindow, kEventWindowShown },
@@ -121,8 +118,7 @@ static EventTypeSpec WindowHandlerEventList[] =
 	{ kEventClassWindow, kEventWindowClose },
 	{ kEventClassWindow, kEventWindowBoundsChanging },
 	{ kEventClassWindow, kEventWindowBoundsChanged },
-	//	{ kEventClassWindow, kEventWindowZoomed },
-	//	{ kEventClassWindow, kEventWindowDrawContent },
+	{ kEventClassWindow, kEventWindowGetIdealSize },
 
 	// Mouse events
 	{ kEventClassMouse, kEventMouseDown },
@@ -248,6 +244,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 	mCursorIgnoreNextDelta = FALSE;
 	mNeedsResize = FALSE;
 	mOverrideAspectRatio = 0.f;
+	mMaximized = FALSE;
 	mMinimized = FALSE;
 	mTSMDocument = NULL; // Just in case.
 	mLanguageTextInputAllowed = FALSE;
@@ -455,24 +452,23 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 
 	if(!mFullscreen && (mWindow == NULL))
 	{
-		Rect			window_rect;
 		//int				displayWidth = CGDisplayPixelsWide(mDisplay);
 		//int				displayHeight = CGDisplayPixelsHigh(mDisplay);
 		//const int		menuBarPlusTitleBar = 44;   // Ugly magic number.
 
 		LL_DEBUGS("Window") << "createContext: creating window" << LL_ENDL;
 
-		window_rect.left = (long) x;
-		window_rect.right = (long) x + width;
-		window_rect.top = (long) y;
-		window_rect.bottom = (long) y + height;
+		mPreviousWindowRect.left = (long) x;
+		mPreviousWindowRect.right = (long) x + width;
+		mPreviousWindowRect.top = (long) y;
+		mPreviousWindowRect.bottom = (long) y + height;
 
 		//-----------------------------------------------------------------------
 		// Create the window
 		//-----------------------------------------------------------------------
 		mWindow = NewCWindow(
 			NULL,
-			&window_rect,
+			&mPreviousWindowRect,
 			mWindowTitle,
 			false,				// Create the window invisible.  Whoever calls createContext() should show it after any moving/resizing.
 			//		noGrowDocProc,		// Window with no grow box and no zoom box
@@ -481,8 +477,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 			kFirstWindowOfClass,
 			true,
 			(long)this);
-
-
+		
 		if (!mWindow)
 		{
 			setupFailure("Window creation error", "Error", OSMB_OK);
@@ -1093,31 +1088,22 @@ BOOL LLWindowMacOSX::getVisible()
 
 BOOL LLWindowMacOSX::getMinimized()
 {
-	BOOL result = FALSE;
-	
-	// Since the set of states where we want to act "minimized" is non-trivial, it's easier to
-	// track things locally than to try and retrieve the state from the window manager.
-	result = mMinimized;
-
-	return(result);
+	return mMinimized;
 }
 
 BOOL LLWindowMacOSX::getMaximized()
 {
-	BOOL result = FALSE;
-
-	if (mWindow)
-	{
-		// TODO
-	}
-
-	return(result);
+	return mMaximized;
 }
 
 BOOL LLWindowMacOSX::maximize()
 {
-	// TODO
-	return FALSE;
+	if (mWindow && !mMaximized)
+	{
+		ZoomWindow(mWindow, inContent, true);
+	}
+	
+	return mMaximized;
 }
 
 BOOL LLWindowMacOSX::getFullscreen()
@@ -2559,7 +2545,24 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 
 				GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &currentBounds);
 				GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &previousBounds);
-
+				
+				// Put an offset into window un-maximize operation since the kEventWindowGetIdealSize
+				// event only allows the specification of size and not position.
+				if (mMaximized)
+				{
+					short leftOffset = mPreviousWindowRect.left - currentBounds.left;
+					currentBounds.left += leftOffset;
+					currentBounds.right += leftOffset;
+					
+					short topOffset = mPreviousWindowRect.top - currentBounds.top;
+					currentBounds.top += topOffset;
+					currentBounds.bottom += topOffset;
+				}
+				else
+				{
+					// Store off the size for future un-maximize operations
+					mPreviousWindowRect = previousBounds;
+				}
 
 				if ((currentBounds.right - currentBounds.left) < MIN_WIDTH)
 				{
@@ -2578,13 +2581,43 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 
 		case kEventWindowBoundsChanged:
 			{
+				// Get new window bounds
 				Rect newBounds;
-
 				GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &newBounds);
+				
+				// Get previous window bounds
+				Rect oldBounds;
+				GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &oldBounds);
+				
+				// Determine if the new size is larger than the old
+				bool newBoundsLarger = ((newBounds.right - newBounds.left) >= (oldBounds.right - oldBounds.left));
+				newBoundsLarger &= ((newBounds.bottom - newBounds.top) >= (oldBounds.bottom - oldBounds.top));
+				
+				// Check to see if this is a zoom event (+ button on window pane)
+				unsigned int eventParams;
+				GetEventParameter(event, kEventParamAttributes, typeUInt32, NULL, sizeof(int), NULL, &eventParams);
+				bool isZoomEvent = ((eventParams & kWindowBoundsChangeZoom) != 0);
+				
+				// Maximized flag is if zoom event and increasing window size
+				mMaximized = (isZoomEvent && newBoundsLarger);
+				
 				aglUpdateContext(mContext);
+				
 				mCallbacks->handleResize(this, newBounds.right - newBounds.left, newBounds.bottom - newBounds.top);
-
-
+			}
+			break;
+			
+		case kEventWindowGetIdealSize:
+			// Only recommend a new ideal size when un-maximizing
+			if (mMaximized == TRUE)
+			{
+				Point nonMaximizedSize;
+				
+				nonMaximizedSize.v = mPreviousWindowRect.bottom - mPreviousWindowRect.top;
+				nonMaximizedSize.h = mPreviousWindowRect.right - mPreviousWindowRect.left;
+				
+				SetEventParameter(event, kEventParamDimensions, typeQDPoint, sizeof(Point), &nonMaximizedSize);
+				result = noErr;
 			}
 			break;
 
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index 6dc093b4be..6c9e075a21 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -156,7 +156,6 @@ protected:
 	static pascal Boolean staticMoveEventComparator( EventRef event, void* data);
 	OSStatus eventHandler (EventHandlerCallRef myHandler, EventRef event);
 	void adjustCursorDecouple(bool warpingMouse = false);
-	void fixWindowSize(void);
 	void stopDockTileBounce();
 	static MASK modifiersToMask(SInt16 modifiers);
 	
@@ -182,6 +181,7 @@ protected:
 	EventComparatorUPP  mMoveEventCampartorUPP;
 	
 	Rect		mOldMouseClip;  // Screen rect to which the mouse cursor was globally constrained before we changed it in clipMouse()
+	Rect		mPreviousWindowRect;  // Save previous window for un-maximize event
 	Str255 		mWindowTitle;
 	double		mOriginalAspectRatio;
 	BOOL		mSimulatedRightClick;
@@ -195,6 +195,7 @@ protected:
 	BOOL		mNeedsResize;		// Constructor figured out the window is too big, it needs a resize.
 	LLCoordScreen   mNeedsResizeSize;
 	F32			mOverrideAspectRatio;
+	BOOL		mMaximized;
 	BOOL		mMinimized;
 	U32			mFSAASamples;
 	BOOL		mForceRebuild;
-- 
cgit v1.2.3


From d952f97459a04d64b698380b777406f1644f9bb2 Mon Sep 17 00:00:00 2001
From: Leslie Linden <leslie@lindenlab.com>
Date: Tue, 26 Apr 2011 14:02:41 -0700
Subject: EXP-752 FIX -- When "View Display Names" is disabled, only my own
 profile loads, when I click others profiles

Avatar username is now looked up in the name cache when it is blank, which happens when display names are turned off apparently.

Reviewed by Fredrik.
---
 indra/newview/llavataractions.cpp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index ca7ec7cc30..cbbdcb2983 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -302,8 +302,14 @@ void LLAvatarActions::startConference(const uuid_vec_t& ids)
 
 static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarName& av_name)
 {
-	llinfos << "opening web profile for " << av_name.mUsername << llendl;		
-	std::string url = getProfileURL(av_name.mUsername);
+	std::string username = av_name.mUsername;
+	if (username.empty())
+	{
+		username = LLCacheName::buildUsername(av_name.mDisplayName);
+	}
+	
+	llinfos << "opening web profile for " << username << llendl;		
+	std::string url = getProfileURL(username);
 
 	// PROFILES: open in webkit window
 	LLWeb::loadWebURLInternal(url, "", agent_id.asString());
-- 
cgit v1.2.3


From 37ef2c4f0f7958106ea09abcd486cb9c305316e4 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Wed, 27 Apr 2011 16:45:33 -0700
Subject: EXP-670 Voice for basic mode reviewed by Merov
 http://codereview.lindenlab.com/6231263/

---
 indra/newview/llpanelvoicedevicesettings.cpp       |   2 +-
 indra/newview/llviewerfloaterreg.cpp               |   2 +
 indra/newview/llviewermenu.cpp                     |   9 +
 .../default/xui/en/panel_preferences_sound.xml     | 171 +---------------
 indra/newview/skins/minimal/textures/textures.xml  |   4 +-
 .../skins/minimal/xui/en/panel_bottomtray.xml      | 220 ++++++++++++---------
 6 files changed, 152 insertions(+), 256 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp
index aef870d352..d13f57bd6a 100644
--- a/indra/newview/llpanelvoicedevicesettings.cpp
+++ b/indra/newview/llpanelvoicedevicesettings.cpp
@@ -316,6 +316,6 @@ void LLPanelVoiceDeviceSettings::onCommitOutputDevice()
 	if(LLVoiceClient::getInstance())
 	{
 		LLVoiceClient::getInstance()->setRenderDevice(
-			getChild<LLComboBox>("voice_input_device")->getValue().asString());
+			getChild<LLComboBox>("voice_output_device")->getValue().asString());
 	}
 }
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index dca1e33e60..6dc85799ce 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -91,6 +91,7 @@
 #include "llfloatersettingsdebug.h"
 #include "llfloatersidetraytab.h"
 #include "llfloatersnapshot.h"
+#include "llfloatersounddevices.h"
 #include "llfloatertelehub.h"
 #include "llfloatertestinspectors.h"
 #include "llfloatertestlistview.h"
@@ -239,6 +240,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);
 	LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>);
 	LLFloaterReg::add("side_bar_tab", "floater_side_bar_tab.xml", &LLFloaterReg::build<LLFloaterSideTrayTab>);
+	LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundDevices>);
 	LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);
 	LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRunQueue>);
 	LLFloaterReg::add("stop_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotRunQueue>);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 3665b7d91f..c568c8eedb 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -5591,6 +5591,14 @@ class LLToggleHelp : public view_listener_t
 	}
 };
 
+class LLToggleSpeak : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		LLVoiceClient::getInstance()->toggleUserPTTState();
+		return true;
+	}
+};
 class LLShowSidetrayPanel : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -8187,6 +8195,7 @@ void initialize_menus()
 	commit.add("BuyCurrency", boost::bind(&handle_buy_currency));
 	view_listener_t::addMenu(new LLShowHelp(), "ShowHelp");
 	view_listener_t::addMenu(new LLToggleHelp(), "ToggleHelp");
+	view_listener_t::addMenu(new LLToggleSpeak(), "ToggleSpeak");
 	view_listener_t::addMenu(new LLPromptShowURL(), "PromptShowURL");
 	view_listener_t::addMenu(new LLShowAgentProfile(), "ShowAgentProfile");
 	view_listener_t::addMenu(new LLToggleAgentProfile(), "ToggleAgentProfile");
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
index 26af8dc29d..a314e0d85e 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -466,164 +466,13 @@
    name="device_settings_btn"
    width="190">
   </button>
-    <panel
-     background_visible="false"
-     bg_alpha_color="DkGray"
-     visiblity_control="ShowDeviceSettings"
-     border="false"
-     follows="top|left"
-     height="100"
-     label="Device Settings"
-     layout="topleft"
-     left_delta="-2"
-     name="device_settings_panel"
-     class="panel_voice_device_settings"
-     width="470"
-     top_pad="0">
-      <panel.string
-        name="default_text">
-        Default
-      </panel.string>
-      <panel.string
-        name="default system device">
-        Default system device
-      </panel.string>
-      <panel.string
-        name="no device">
-        No device
-      </panel.string>
-      <icon
-             height="18"
-             image_name="Microphone_On"
-             left_delta="4"
-             name="microphone_icon"
-             mouse_opaque="false"
-             top="7"
-             visible="true"
-             width="18" />
-    <text
-     type="string"
-     length="1"
-      font.style="BOLD"
-     follows="left|top"
-     height="16"
-     layout="topleft"
-     left_pad="3"
-     name="Input"
-     width="70">
-        Input
-    </text>
-    <combo_box
-     height="23"
-     control_name="VoiceInputAudioDevice"
-     layout="topleft"
-     left_pad="0"
-     max_chars="128"
-     name="voice_input_device"
-     top_delta="-5"
-     width="200" />
-   <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="16"
-     layout="topleft"
-     left_delta="-70"
-     name="My volume label"
-     top_pad="4"
-     width="200">
-        My volume:
-    </text>
-      <slider_bar
-        control_name="AudioLevelMic"
-     follows="left|top"
-     height="17"
-     increment="0.025"
-     initial_value="1.0"
-     layout="topleft"
-     left_delta="-6"
-     max_val="2"
-     name="mic_volume_slider"
-     tool_tip="Change the volume using this slider"
-     top_pad="-1"
-     width="220" />
-    <text
-     type="string"
-     text_color="EmphasisColor"
-     length="1"
-     follows="left|top"
-     height="18"
-     layout="topleft"
-     left_pad="5"
-     name="wait_text"
-     top_delta="-1"
-     width="110">
-        Please wait
-    </text>
-    <locate
-     height="20"
-     layout="topleft"
-     left_delta="0"
-     name="bar0"
-     top_delta="-2"
-     width="20" />
-    <locate
-     height="20"
-     layout="topleft"
-     left_pad="5"
-     name="bar1"
-     top_delta="0"
-     width="20" />
-    <locate
-     height="20"
-     layout="topleft"
-     left_pad="5"
-     name="bar2"
-     top_delta="0"
-     width="20" />
-    <locate
-     height="20"
-     layout="topleft"
-     left_pad="5"
-     name="bar3"
-     top_delta="0"
-     width="20" />
-    <locate
-     height="20"
-     layout="topleft"
-     left_pad="5"
-     name="bar4"
-     top_delta="0"
-     width="20" />
-          <icon
-             height="18"
-             image_name="Parcel_Voice_Light"
-             left="5"
-             name="speaker_icon"
-             mouse_opaque="false"
-             top_pad="3"
-             visible="true"
-             width="22" />
-    <text
-     font.style="BOLD"
-     type="string"
-     length="1"
-     follows="left|top"
-     height="15"
-     layout="topleft"
-     left_pad="0"
-     name="Output"
-     width="70">
-        Output
-    </text>
-    <combo_box
-     control_name="VoiceOutputAudioDevice"
-     height="23"
-     layout="topleft"
-     left_pad="0"
-     max_chars="128"
-     name="voice_output_device"
-     top_delta="-3"
-     width="200" />
-    </panel>
-    </panel>
+  <panel
+    layout="topleft"
+    filename="panel_sound_devices.xml"
+    visiblity_control="ShowDeviceSettings"
+    name="device_settings_panel"
+    top="314"
+    width="345"
+    left="18"
+    class="panel_voice_device_settings"/>
+</panel>
diff --git a/indra/newview/skins/minimal/textures/textures.xml b/indra/newview/skins/minimal/textures/textures.xml
index b4848a0619..e3ed01721a 100644
--- a/indra/newview/skins/minimal/textures/textures.xml
+++ b/indra/newview/skins/minimal/textures/textures.xml
@@ -6,4 +6,6 @@
   <texture name="bottomtray_close_off" file_name="bottomtray/close_off.png" preload="true" />
   <texture name="bottomtray_close_over" file_name="bottomtray/close_over.png" preload="true" />
   <texture name="bottomtray_close_press" file_name="bottomtray/close_press.png" preload="true" />
-</textures>
+  <texture name="Speak_Btn_Off" file_name="bottomtray/Speak_Btn_Off.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
+  <texture name="Speak_Btn_Selected_Press" file_name="bottomtray/Speak_Btn_Selected_Press.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
+ </textures>
diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
index 95f2010e44..70a59cea43 100644
--- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
@@ -12,16 +12,16 @@
  focus_root="true"
  top="28"
  width="1310">
-	<string
+  <string
      name="DragIndicationImageName"
      value="Accordion_ArrowOpened_Off" />
-	<string
+  <string
      name="SpeakBtnToolTip"
      value="Turns microphone on/off" />
-	<string
+  <string
      name="VoiceControlBtnToolTip"
      value="Shows/hides voice control panel" />
-	<layout_stack
+  <layout_stack
      border_size="0"
      clip="false"
      follows="all"
@@ -33,12 +33,12 @@
      orientation="horizontal"
      top="0"
      width="1310">
-		<layout_panel
+    <layout_panel
          auto_resize="false"
          user_resize="false"
          min_width="2"
          width="2" />
-		<layout_panel
+    <layout_panel
          auto_resize="false"
          layout="topleft"
          max_width="320"
@@ -48,7 +48,7 @@
 		 name="chat_bar_layout_panel"
          user_resize="true"
          width="308" >
-			<panel
+      <panel
 		   name="chat_bar"
 			  filename="panel_nearby_chat_bar.xml"
 			  left="0"
@@ -65,39 +65,73 @@
         height="28"
         layout="topleft"
         min_height="28"
-        min_width="59"
+        min_width="35"
         mouse_opaque="false"
         name="speak_panel"
         top_delta="0"
         user_resize="false"
-        width="108">
-      <talk_button
+        width="85">
+      <button
        follows="left|right"
        height="23"
        layout="topleft"
+       label="Speak"
        left="0"
-       name="talk"
+       name="speak_btn"
+       
+       pad_right="30"
+       halign="center"
+       use_ellipses="true"
+       tab_stop="true"
+    is_toggle="true"
+    image_selected="Speak_Btn_Selected_Press"
+    image_unselected="Speak_Btn_Off"
+		 image_pressed="Speak_Btn_Selected_Press"
+		 image_pressed_selected="Speak_Btn_Selected_Press"
        top="5"
-       width="105">
-        <show_button
-         tab_stop="true">
-          <init_callback
-           function="Button.SetDockableFloaterToggle"
-           parameter="voice_controls" />
-        </show_button>
-        <!-- do not remove halign attribute with default value. otherwise it can't be overridden in other locales.
-                 & pad_right is default value for long label which can be right aligned. See EXT-6318 -->
-        <speak_button
-         halign="center"
-         label="Speak"
-         label_selected="Speak"
-         name="speak_btn"
-         pad_right="20"
-         tab_stop="true"
-         use_ellipses="true" />
-      </talk_button>
+       width="85">
+
+        <commit_callback
+				  function="ToggleSpeak"
+				  parameter="f1_help" />
+      </button>
     </layout_panel>
-		<layout_panel
+
+    <layout_panel
+          auto_resize="false"
+          follows="left|right"
+          height="28"
+          layout="topleft"
+          min_height="28"
+          min_width="20"
+          mouse_opaque="false"
+          name="flyout_panel"
+          top_delta="0"
+          user_resize="false"
+          width="20">
+      <button
+     follows="left|right"
+     width="20"
+        top="5"
+     left="0"
+     height="23"
+     name="speak_flyout_btn"
+     label=""
+     tab_stop="false"
+     is_toggle="true"
+     image_disabled="ComboButton_UpOff"
+     image_unselected="ComboButton_UpOff"
+     image_selected="ComboButton_On"
+     image_pressed="ComboButton_UpSelected"
+     image_pressed_selected="ComboButton_Selected">
+        <init_callback
+         function="Button.SetDockableFloaterToggle"
+         parameter="sound_devices" />
+      </button>
+
+    </layout_panel>
+
+    <layout_panel
          auto_resize="false"
          follows="right"
          height="28"
@@ -108,7 +142,7 @@
          name="gesture_panel"
          top_delta="0"
          user_resize="false"
-         width="85">
+         width="88">
 			<gesture_combo_list
              follows="left|right"
              height="23"
@@ -116,20 +150,20 @@
              layout="topleft"
              get_more="false"
              view_all="false"
-             left="0"
+             left="3"
              name="Gesture"
              tool_tip="Shows/hides gestures"
              top="5"
              width="82">
-				<combo_button
+        <combo_button
                  pad_right="10"
                  can_drag="false"
                  use_ellipses="true" />
-				<combo_list
+        <combo_list
                  page_lines="17" />
-			</gesture_combo_list>
-		</layout_panel>
-		<layout_panel
+      </gesture_combo_list>
+    </layout_panel>
+    <layout_panel
          auto_resize="false"
          follows="left|right"
          height="28"
@@ -140,7 +174,7 @@
          name="cam_panel"
          user_resize="false"
          width="83">
-			<bottomtray_button
+      <bottomtray_button
               can_drag="false"
              follows="left|right"
              height="23"
@@ -156,12 +190,12 @@
              top="5"
              use_ellipses="true"
              width="80">
-				<init_callback
+        <init_callback
                  function="Button.SetDockableFloaterToggle"
                  parameter="camera" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
          auto_resize="false"
          follows="left|right"
          height="28"
@@ -170,7 +204,7 @@
          name="splitter_panel"
          user_resize="false"
          width="17">
-			<icon
+      <icon
              follows="left|bottom"
              height="18"
              width="2"
@@ -178,8 +212,8 @@
              image_name="Button_Separator"
              name="separator"
              top="7"/>
-		</layout_panel>
-		<layout_panel
+    </layout_panel>
+    <layout_panel
 		  auto_resize="false"
 		  follows="left|right"
 		  height="28"
@@ -190,7 +224,7 @@
 		  name="avatar_and_destinations_panel"
 		  user_resize="false"
 		  width="103">
-			<bottomtray_button
+      <bottomtray_button
 			 can_drag="false"
 			follows="left|right"
 			height="23"
@@ -206,11 +240,11 @@
 			is_toggle="true"
 			use_ellipses="true"
 			width="100">
-				<bottomtray_button.commit_callback
+        <bottomtray_button.commit_callback
 				  function="Destination.show" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
 		  auto_resize="false"
 		  follows="left|right"
 		  height="28"
@@ -221,7 +255,7 @@
 		  name="avatar_and_destinations_panel"
 		  user_resize="false"
 		  width="103">
-			<bottomtray_button
+      <bottomtray_button
 			 can_drag="false"
 			follows="left|right"
 			height="23"
@@ -236,11 +270,11 @@
 			is_toggle="true"
 			use_ellipses="true"
 			width="100">
-				<bottomtray_button.commit_callback
+        <bottomtray_button.commit_callback
 				  function="Avatar.show" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
 		  auto_resize="false"
 		  follows="left|right"
 		  height="28"
@@ -249,7 +283,7 @@
 		  name="splitter_panel"
 		  user_resize="false"
 		  width="17">
-			<icon
+      <icon
              follows="left|bottom"
              height="18"
              width="2"
@@ -257,8 +291,8 @@
              image_name="Button_Separator"
              name="separator"
              top="7"/>
-		</layout_panel>
-		<layout_panel
+    </layout_panel>
+    <layout_panel
          auto_resize="false"
          follows="right"
          height="28"
@@ -270,7 +304,7 @@
          top_delta="0"
          user_resize="false"
          width="105">
-			<bottomtray_button
+      <bottomtray_button
 			   can_drag="false"
 			  follows="left|right"
 			  height="23"
@@ -286,12 +320,12 @@
 			  is_toggle="true"
 			  use_ellipses="true"
 			  width="100">
-				<bottomtray_button.commit_callback
+        <bottomtray_button.commit_callback
 				  function="ShowSidetrayPanel"
 				 parameter="panel_people" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
 		   auto_resize="false"
 		   follows="right"
 		   height="28"
@@ -303,7 +337,7 @@
 		   top_delta="0"
 		   user_resize="false"
 		   width="105">
-			<bottomtray_button
+      <bottomtray_button
 			   can_drag="false"
 			  follows="left|right"
 			  height="23"
@@ -319,12 +353,12 @@
 			  top="5"
 			  use_ellipses="true"
 			  width="100">
-				<bottomtray_button.commit_callback
+        <bottomtray_button.commit_callback
 				  function="ToggleAgentProfile"
 				  parameter="agent"/>
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
 		   auto_resize="false"
 		   follows="right"
 		   height="28"
@@ -336,7 +370,7 @@
 		   top_delta="0"
 		   user_resize="false"
 		   width="105">
-			<bottomtray_button
+      <bottomtray_button
 			   can_drag="false"
 			  follows="left|right"
 			  height="23"
@@ -352,12 +386,12 @@
 			  top="5"
 			  use_ellipses="true"
 			  width="100">
-				<bottomtray_button.commit_callback
+        <bottomtray_button.commit_callback
 				  function="ToggleHelp"
 				  parameter="f1_help" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
 		   follows="left|right"
 		   height="30"
 		   layout="topleft"
@@ -367,9 +401,9 @@
 		   top="0"
 		   user_resize="false"
 		   width="189">
-			<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
+      <!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
 as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
-			<chiclet_panel
+      <chiclet_panel
              chiclet_padding="4"
              follows="left|right"
              height="24"
@@ -380,7 +414,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
              name="chiclet_list"
              top="7"
              width="189">
-				<button
+        <button
                  auto_resize="true"
                  follows="right"
                  height="29"
@@ -397,7 +431,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
                  top="-28"
                  visible="false"
                  width="7" />
-				<button
+        <button
                  auto_resize="true"
                  follows="right"
                  height="29"
@@ -414,13 +448,13 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
                  top="-28"
                  visible="false"
                  width="7" />
-			</chiclet_panel>
-		</layout_panel>
-		<layout_panel auto_resize="false"
+      </chiclet_panel>
+    </layout_panel>
+    <layout_panel auto_resize="false"
                       user_resize="false"
                       width="4"
                       min_width="4"/>
-		<layout_panel
+    <layout_panel
          auto_resize="false"
          follows="right"
          height="28"
@@ -431,7 +465,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
          top="0"
          user_resize="false"
          width="37">
-			<chiclet_im_well
+      <chiclet_im_well
              follows="right"
              height="28"
              layout="topleft"
@@ -440,7 +474,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
              name="im_well"
              top="0"
              width="35">
-				<!--
+        <!--
 Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
 xml attribute           Description
 image_unselected        "Unlit" - there are no new messages
@@ -448,7 +482,7 @@ image_selected          "Unlit" + "Selected" - there are no new messages and the
 image_pressed           "Lit" - there are new messages
 image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well is open
              -->
-				<button
+        <button
                  auto_resize="true"
                  follows="right"
                  halign="center"
@@ -463,13 +497,13 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
                  name="Unread IM messages"
                  tool_tip="Conversations"
                  width="34">
-					<init_callback
+          <init_callback
                      function="Button.SetDockableFloaterToggle"
                      parameter="im_well_window" />
-				</button>
-			</chiclet_im_well>
-		</layout_panel>
-		<layout_panel
+        </button>
+      </chiclet_im_well>
+    </layout_panel>
+    <layout_panel
          auto_resize="false"
          follows="right"
          height="28"
@@ -480,7 +514,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
          top="0"
          user_resize="false"
          width="37">
-			<chiclet_notification
+      <chiclet_notification
              follows="right"
              height="23"
              layout="topleft"
@@ -489,7 +523,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
              name="notification_well"
              top="5"
              width="35">
-				<button
+        <button
                  auto_resize="true"
                  bottom_pad="3"
                  follows="right"
@@ -505,7 +539,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
                  name="Unread"
                  tool_tip="Notifications"
                  width="34">
-					<init_callback
+          <init_callback
                      function="Button.SetDockableFloaterToggle"
                      parameter="notification_well_window" />
 				</button>
@@ -517,5 +551,5 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
 		   min_width="4"
 		   name="DUMMY2"
 		   width="8" />
-	</layout_stack>
+  </layout_stack>
 </panel>
-- 
cgit v1.2.3


From 892c5109e8679ca28a53799289732efcbebd9d48 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Wed, 27 Apr 2011 16:45:57 -0700
Subject: EXP-670 Voice for basic mode new files reviewed by merov

---
 indra/newview/llfloatersounddevices.cpp            |  85 +++++++++++
 indra/newview/llfloatersounddevices.h              |  49 +++++++
 .../skins/default/xui/en/floater_sound_devices.xml |  28 ++++
 .../skins/default/xui/en/panel_sound_devices.xml   | 163 +++++++++++++++++++++
 .../minimal/textures/bottomtray/Speak_Btn_Off.png  | Bin 0 -> 993 bytes
 .../bottomtray/Speak_Btn_Selected_Press.png        | Bin 0 -> 1217 bytes
 6 files changed, 325 insertions(+)
 create mode 100644 indra/newview/llfloatersounddevices.cpp
 create mode 100644 indra/newview/llfloatersounddevices.h
 create mode 100644 indra/newview/skins/default/xui/en/floater_sound_devices.xml
 create mode 100644 indra/newview/skins/default/xui/en/panel_sound_devices.xml
 create mode 100644 indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png
 create mode 100644 indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png

(limited to 'indra')

diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp
new file mode 100644
index 0000000000..1f6a992fc5
--- /dev/null
+++ b/indra/newview/llfloatersounddevices.cpp
@@ -0,0 +1,85 @@
+/** 
+ * @file llfloatersounddevices.cpp
+ * @author Leyla Farazha
+ * @brief Sound Preferences used for minimal skin
+ *
+* $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloatersounddevices.h"
+
+#include "llbottomtray.h"
+#include "lldraghandle.h"
+
+#include "llpanelvoicedevicesettings.h"
+
+// Library includes
+#include "indra_constants.h"
+
+// protected
+LLFloaterSoundDevices::LLFloaterSoundDevices(const LLSD& key)
+:	LLTransientDockableFloater(NULL, false, key)
+{
+	LLTransientFloaterMgr::getInstance()->addControlView(this);
+
+	// force docked state since this floater doesn't save it between recreations
+	setDocked(true);
+}
+
+LLFloaterSoundDevices::~LLFloaterSoundDevices()
+{
+	LLTransientFloaterMgr::getInstance()->removeControlView(this);
+}
+
+// virtual
+BOOL LLFloaterSoundDevices::postBuild()
+{
+	LLTransientDockableFloater::postBuild();
+		
+	LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_flyout_btn");
+	setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(), LLDockControl::TOP));
+
+	setIsChrome(TRUE);
+	if (mDragHandle)
+		mDragHandle->setTitleVisible(TRUE);
+	updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
+	
+	return TRUE;
+}
+
+//virtual
+void LLFloaterSoundDevices::setDocked(bool docked, bool pop_on_undock/* = true*/)
+{
+	LLTransientDockableFloater::setDocked(docked, pop_on_undock);
+}
+
+// virtual
+void LLFloaterSoundDevices::setFocus( BOOL b )
+{
+	LLTransientDockableFloater::setFocus(b);
+
+	// Force using active floater transparency
+	// We have to override setFocus() for because selecting an item of the
+	// combobox causes the floater to lose focus and thus become transparent.
+	updateTransparency(TT_ACTIVE);
+}
\ No newline at end of file
diff --git a/indra/newview/llfloatersounddevices.h b/indra/newview/llfloatersounddevices.h
new file mode 100644
index 0000000000..f09ee3b069
--- /dev/null
+++ b/indra/newview/llfloatersounddevices.h
@@ -0,0 +1,49 @@
+/** 
+ * @file llfloatersounddevices.h
+ * @author Leyla Farazha
+ * @brief Sound Preferences used for minimal skin
+ *
+* $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERSOUNDDEVICES_H
+#define LL_LLFLOATERSOUNDDEVICES_H
+
+#include "lltransientdockablefloater.h"
+
+class LLFloaterSoundDevices : public LLTransientDockableFloater
+{
+public:
+
+	LOG_CLASS(LLFloaterSoundDevices);
+
+	LLFloaterSoundDevices(const LLSD& key);
+	~LLFloaterSoundDevices();
+
+	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void setDocked(bool docked, bool pop_on_undock = true);
+	/*virtual*/ void setFocus( BOOL b );
+};
+
+
+#endif //LL_LLFLOATERSOUNDDEVICES_H
+
diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
new file mode 100644
index 0000000000..3c9e5aeff3
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater
+ border_visible="false"
+ border="false"
+ legacy_header_height="18"
+ can_minimize="true"
+ can_resize="true"
+ can_close="false"
+ save_dock_state="true"
+ save_visibility="true"
+ save_rect="true"
+ single_instance="true"
+ bevel_style="in"
+ height="140"
+ layout="topleft"
+ name="floater_sound_devices"
+ title="Sound Devicess"
+ width="315">
+  <panel
+    layout="topleft"
+    follows="all"
+    filename="panel_sound_devices.xml"
+    name="device_settings_panel"
+    width="300"
+    left="2"
+    top="26"
+    class="panel_voice_device_settings"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/panel_sound_devices.xml b/indra/newview/skins/default/xui/en/panel_sound_devices.xml
new file mode 100644
index 0000000000..9812281323
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_sound_devices.xml
@@ -0,0 +1,163 @@
+<panel
+ background_visible="false"
+ bg_alpha_color="DkGray"
+ follows="all"
+ height="200"
+ label="Device Settings"
+ layout="topleft"
+ name="device_settings_panel"
+ width="360">
+	<panel.string
+	  name="default_text">
+		Default
+	</panel.string>
+	<panel.string
+	  name="default system device">
+		Default system device
+	</panel.string>
+	<panel.string
+	  name="no device">
+		No device
+	</panel.string>
+	<icon
+		   height="18"
+		   image_name="Microphone_On"
+		   left_delta="4"
+		   name="microphone_icon"
+		   mouse_opaque="false"
+		   top="7"
+       layout="topleft"
+		   visible="true"
+		   width="18" />
+	<text
+     type="string"
+     length="1"
+      font.style="BOLD"
+     follows="left|top"
+     height="16"
+     layout="topleft"
+     left_pad="3"
+     name="Input"
+     width="70">
+		Input
+	</text>
+	<combo_box
+     height="23"
+     control_name="VoiceInputAudioDevice"
+     follows="left|top"
+     layout="topleft"
+     left_pad="0"
+     max_chars="128"
+     name="voice_input_device"
+     top_delta="-5"
+     width="200" />
+	<text
+	  type="string"
+	  length="1"
+	  follows="left|top"
+	  height="16"
+	  layout="topleft"
+	  left_delta="-70"
+	  name="My volume label"
+	  top_pad="4"
+	  width="200">
+		My volume:
+	</text>
+	<slider_bar
+	  control_name="AudioLevelMic"
+   follows="top|right|left"
+   height="17"
+   increment="0.025"
+   initial_value="1.0"
+   layout="topleft"
+   left_delta="-6"
+   max_val="2"
+   name="mic_volume_slider"
+   tool_tip="Change the volume using this slider"
+   top_pad="-1"
+   width="220" />
+	<text
+     type="string"
+     text_color="EmphasisColor"
+     length="1"
+     follows="right|top"
+     height="18"
+     layout="topleft"
+     left_pad="5"
+     name="wait_text"
+     top_delta="-1"
+     width="110">
+		Please wait
+	</text>
+  <locate
+     follows="right|top"
+     height="20"
+     layout="topleft"
+     left_delta="0"
+     name="bar0"
+     top_delta="-2"
+     width="20" />
+  <locate
+     follows="right|top"
+     height="20"
+     layout="topleft"
+     left_pad="5"
+     name="bar1"
+     top_delta="0"
+     width="20" />
+  <locate
+     follows="right|top"
+     height="20"
+     layout="topleft"
+     left_pad="5"
+     name="bar2"
+     top_delta="0"
+     width="20" />
+  <locate
+     follows="right|top"
+     height="20"
+     layout="topleft"
+     left_pad="5"
+     name="bar3"
+     top_delta="0"
+     width="20" />
+  <locate
+     follows="right|top"
+     height="20"
+     layout="topleft"
+     left_pad="5"
+     name="bar4"
+     top_delta="0"
+     width="20" />
+	<icon
+	   height="18"
+	   image_name="Parcel_Voice_Light"
+	   left="5"
+	   name="speaker_icon"
+	   mouse_opaque="false"
+	   top_pad="3"
+	   visible="true"
+	   width="22" />
+	<text
+     font.style="BOLD"
+     type="string"
+     length="1"
+     follows="left|top"
+     height="15"
+     layout="topleft"
+     left_pad="0"
+     name="Output"
+     width="70">
+		Output
+	</text>
+	<combo_box
+     control_name="VoiceOutputAudioDevice"
+     height="23"
+     follows="left|top"
+     layout="topleft"
+     left_pad="0"
+     max_chars="128"
+     name="voice_output_device"
+     top_delta="-3"
+     width="200" />
+</panel>
diff --git a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png
new file mode 100644
index 0000000000..b6e9eef891
Binary files /dev/null and b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png
new file mode 100644
index 0000000000..687cb7fb53
Binary files /dev/null and b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png differ
-- 
cgit v1.2.3


From a59de335c5bfa7b730977f0061a046654e2b964c Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Wed, 27 Apr 2011 17:41:34 -0700
Subject: EXP-626 New bottomtray tooltips for basic mode

---
 indra/newview/skins/minimal/xui/en/panel_bottomtray.xml | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
index 70a59cea43..aff22c7e45 100644
--- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
@@ -78,7 +78,7 @@
        label="Speak"
        left="0"
        name="speak_btn"
-       
+       tool_tip="Turn your microphone on and off"
        pad_right="30"
        halign="center"
        use_ellipses="true"
@@ -118,6 +118,7 @@
      name="speak_flyout_btn"
      label=""
      tab_stop="false"
+     tool_tip="Change your sound preferences"
      is_toggle="true"
      image_disabled="ComboButton_UpOff"
      image_unselected="ComboButton_UpOff"
@@ -152,7 +153,7 @@
              view_all="false"
              left="3"
              name="Gesture"
-             tool_tip="Shows/hides gestures"
+             tool_tip="Make your avatar do things"
              top="5"
              width="82">
         <combo_button
@@ -186,7 +187,7 @@
              layout="topleft"
              left="0"
              name="camera_btn"
-             tool_tip="Shows/hides camera controls"
+             tool_tip="Control your camera angle"
              top="5"
              use_ellipses="true"
              width="80">
@@ -235,7 +236,7 @@
 			layout="topleft"
 			left="0"
 			name="destination_btn"
-			tool_tip="Shows destinations window"
+			tool_tip="Travel through Second Life"
 			top="5"
 			is_toggle="true"
 			use_ellipses="true"
@@ -268,6 +269,7 @@
 			name="avatar_btn"
 			top="5"
 			is_toggle="true"
+			tool_tip="Change your appearance"
 			use_ellipses="true"
 			width="100">
         <bottomtray_button.commit_callback
@@ -315,7 +317,7 @@
 			  layout="topleft"
 			  left="0"
 			  name="show_people_button"
-			  tool_tip="Shows people window"
+			  tool_tip="Find people in Second Life"
 			  top="5"
 			  is_toggle="true"
 			  use_ellipses="true"
@@ -348,7 +350,7 @@
 			  layout="topleft"
 			  left="0"
 			  name="show_profile_btn"
-			  tool_tip="Shows profile window"
+			  tool_tip="View and edit your Profile"
 			  is_toggle="true"
 			  top="5"
 			  use_ellipses="true"
@@ -381,7 +383,7 @@
 			  layout="topleft"
 			  left="0"
 			  name="show_help_btn"
-			  tool_tip="Open Second Life How To topics"
+			  tool_tip="View Second Life help info"
 			  is_toggle="true"
 			  top="5"
 			  use_ellipses="true"
-- 
cgit v1.2.3


From 0453808465aa91d71f7dfd944003d81a523d92d6 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Wed, 27 Apr 2011 17:41:49 -0700
Subject: Fixed floater sound devices title

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

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
index 3c9e5aeff3..584413c030 100644
--- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
@@ -14,7 +14,7 @@
  height="140"
  layout="topleft"
  name="floater_sound_devices"
- title="Sound Devicess"
+ title="Sound Devices"
  width="315">
   <panel
     layout="topleft"
-- 
cgit v1.2.3


From 89198015596c72838962d3836b308469ef086e3e Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Wed, 27 Apr 2011 17:59:15 -0700
Subject: adding llfloatersounddevices.cpp/.h to the cmake file

---
 indra/newview/CMakeLists.txt | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'indra')

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index b1cb10665b..95cfc23ede 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -214,6 +214,7 @@ set(viewer_SOURCE_FILES
     llfloatersettingsdebug.cpp
     llfloatersidetraytab.cpp
     llfloatersnapshot.cpp
+    llfloatersounddevices.cpp
     llfloatertelehub.cpp
     llfloatertestinspectors.cpp
     llfloatertestlistview.cpp
@@ -758,6 +759,7 @@ set(viewer_HEADER_FILES
     llfloatersettingsdebug.h
     llfloatersidetraytab.h
     llfloatersnapshot.h
+    llfloatersounddevices.h
     llfloatertelehub.h
     llfloatertestinspectors.h
     llfloatertestlistview.h
-- 
cgit v1.2.3


From f56a2e55ccd86e3739f69c3d8dcc007c337bdaa1 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Wed, 27 Apr 2011 18:17:09 -0700
Subject: adding newline at end of llfloatersounddevices.cpp

---
 indra/newview/llfloatersounddevices.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp
index 1f6a992fc5..4f3945c95f 100644
--- a/indra/newview/llfloatersounddevices.cpp
+++ b/indra/newview/llfloatersounddevices.cpp
@@ -82,4 +82,4 @@ void LLFloaterSoundDevices::setFocus( BOOL b )
 	// We have to override setFocus() for because selecting an item of the
 	// combobox causes the floater to lose focus and thus become transparent.
 	updateTransparency(TT_ACTIVE);
-}
\ No newline at end of file
+}
-- 
cgit v1.2.3


From 367823ced0cc885474850b4400c7936d667a7d7a Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Fri, 29 Apr 2011 15:35:22 -0700
Subject: EXP-623 FIX Selecting fly option while on click to walk path flys
 avatar to end point but avatar spins and shakes when arriving at click point

---
 indra/newview/llagent.cpp   | 3 +++
 indra/newview/lltoolpie.cpp | 9 +++++++++
 indra/newview/lltoolpie.h   | 1 +
 3 files changed, 13 insertions(+)

(limited to 'indra')

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 7d491a7774..a6d2c96d52 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -62,6 +62,7 @@
 #include "llstatusbar.h"
 #include "llteleportflags.h"
 #include "lltool.h"
+#include "lltoolpie.h"
 #include "lltoolmgr.h"
 #include "lltrans.h"
 #include "llurlentry.h"
@@ -559,6 +560,8 @@ void LLAgent::setFlying(BOOL fly)
 // static
 void LLAgent::toggleFlying()
 {
+	LLToolPie::instance().stopClickToWalk();
+
 	BOOL fly = !gAgent.getFlying();
 
 	gAgent.mMoveTimer.reset();
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 06e0d17b8c..9ec4d33036 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -688,6 +688,15 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)
 	return LLTool::handleMouseUp(x, y, mask);
 }
 
+void LLToolPie::stopClickToWalk()
+{
+	mPick.mPosGlobal = gAgent.getPositionGlobal();
+	handle_go_to();
+	if(mAutoPilotDestination) 
+	{ 
+		mAutoPilotDestination->markDead(); 
+	}
+}
 
 BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
 {
diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h
index 22359a6db8..d7c79ee223 100644
--- a/indra/newview/lltoolpie.h
+++ b/indra/newview/lltoolpie.h
@@ -67,6 +67,7 @@ public:
 	LLObjectSelection*	getLeftClickSelection() { return (LLObjectSelection*)mLeftClickSelection; }
 	void 				resetSelection();
 	void				blockClickToWalk() { mBlockClickToWalk = true; }
+	void				stopClickToWalk();
 	
 	static void			selectionPropertiesReceived();
 
-- 
cgit v1.2.3


From 314961674a508c7d13cc889d914b0ded99376f9b Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Fri, 29 Apr 2011 15:52:48 -0700
Subject: EXP-769 Group call requests received in Basic mode

---
 indra/newview/app_settings/settings.xml         | 6 +++---
 indra/newview/app_settings/settings_minimal.xml | 6 +++---
 indra/newview/llimview.cpp                      | 6 +++---
 3 files changed, 9 insertions(+), 9 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index f2a0e5ac19..b95c83e1ac 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -11662,10 +11662,10 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>VoiceCallsRejectAll</key>
+    <key>VoiceCallsRejectGroup</key>
     <map>
       <key>Comment</key>
-      <string>Silently reject all incoming voice calls.</string>
+      <string>Silently reject all incoming group voice calls.</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -11673,7 +11673,7 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>VoiceDisableMic</key>
+  <key>VoiceDisableMic</key>
     <map>
       <key>Comment</key>
       <string>Completely disable the ability to open the mic.</string>
diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
index 60aecb279c..3d470b27c1 100644
--- a/indra/newview/app_settings/settings_minimal.xml
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -117,14 +117,14 @@
         <key>Value</key>
             <integer>0</integer>
         </map>
-    <key>VoiceCallsRejectAll</key>
+    <key>VoiceCallsRejectGroup</key>
         <map>
         <key>Comment</key>
-            <string>Silently reject all incoming voice calls.</string>
+            <string>Silently reject all incoming group voice calls.</string>
         <key>Type</key>
             <string>Boolean</string>
         <key>Value</key>
-            <integer>0</integer>
+            <integer>1</integer>
         </map>
     <key>VoiceDisableMic</key>
         <map>
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index ec3fe48151..38c5ba71bd 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -2696,10 +2696,10 @@ void LLIMMgr::inviteToSession(
 
 	if (voice_invite)
 	{
-		if	(	// if we're rejecting all incoming call requests
-				gSavedSettings.getBOOL("VoiceCallsRejectAll")	
+		if	(	// if we are rejecting group calls 
+				(gSavedSettings.getBOOL("VoiceCallsRejectGroup") && notify_box_type == "VoiceInviteGroup") ||
 				// or we're rejecting non-friend voice calls and this isn't a friend	
-				|| (gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL))
+				(gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && (LLAvatarTracker::instance().getBuddyInfo(caller_id) == NULL))
 			)
 		{
 			// silently decline the call
-- 
cgit v1.2.3


From 5fe3675564f1c7d8cf13e94f43d32be5ea45940b Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Fri, 29 Apr 2011 15:53:14 -0700
Subject: EXP-761, EXP-758

---
 indra/newview/llbottomtray.cpp                     | 42 +++++++++++++++-------
 indra/newview/llspeakbutton.cpp                    | 20 -----------
 indra/newview/llspeakbutton.h                      |  5 ---
 .../skins/minimal/xui/en/panel_bottomtray.xml      |  2 +-
 4 files changed, 30 insertions(+), 39 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 0371b7be71..6d40786b08 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -378,12 +378,13 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b
 	}
 
 	// We have to enable/disable right and left parts of speak button separately (EXT-4648)
-	mSpeakBtn->setSpeakBtnEnabled(enable);
+	getChild<LLButton>("speak_btn")->setEnabled(enable);
+
 	// skipped to avoid button blinking
 	if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL)
 	{
 		bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
-		mSpeakBtn->setFlyoutBtnEnabled(voice_status);
+		getChild<LLButton>("speak_flyout_btn")->setEnabled(voice_status);
 		if (voice_status)
 		{
 			LLFirstUse::speak(true);
@@ -566,17 +567,21 @@ BOOL LLBottomTray::postBuild()
 	setRightMouseDownCallback(boost::bind(&LLBottomTray::showBottomTrayContextMenu,this, _2, _3,_4));
 
 	mSpeakPanel = getChild<LLPanel>("speak_panel");
-	mSpeakBtn = getChild<LLSpeakButton>("talk");
-	LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle());
+	mSpeakBtn = findChild<LLSpeakButton>("talk");
+	if (mSpeakBtn)
+	{
+		LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle());
+
+		// Localization tool doesn't understand custom buttons like <talk_button>
+		mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
+		mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
+	}
 
 	// Both parts of speak button should be initially disabled because
 	// it takes some time between logging in to world and connecting to voice channel.
-	mSpeakBtn->setSpeakBtnEnabled(false);
-	mSpeakBtn->setFlyoutBtnEnabled(false);
+	getChild<LLButton>("speak_btn")->setEnabled(false);
+	getChild<LLButton>("speak_flyout_btn")->setEnabled(false);
 
-	// Localization tool doesn't understand custom buttons like <talk_button>
-	mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
-	mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
 
 	// Registering Chat Bar to receive Voice client status change notifications.
 	LLVoiceClient::getInstance()->addObserver(this);
@@ -872,6 +877,10 @@ void LLBottomTray::draw()
 
 	getChild<LLButton>("show_help_btn")->setToggleState(help_floater_visible);
 
+	bool openmic = LLVoiceClient::getInstance()->getUserPTTState();
+	bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled();
+	getChild<LLButton>("speak_btn")->setToggleState(openmic && voiceenabled);
+	getChild<LLOutputMonitorCtrl>("chat_zone_indicator")->setIsMuted(!voiceenabled);
 
 }
 
@@ -1345,7 +1354,11 @@ void LLBottomTray::processShrinkButtons(S32& required_width, S32& buttons_freed_
 
 			if (possible_shrink_width > 0)
 			{
-				mSpeakBtn->setLabelVisible(false);
+				if (mSpeakBtn)
+				{	
+					mSpeakBtn->setLabelVisible(false);
+				}
+
 				mSpeakPanel->reshape(panel_width - possible_shrink_width, mSpeakPanel->getRect().getHeight());
 
 				required_width += possible_shrink_width;
@@ -1442,10 +1455,13 @@ void LLBottomTray::processExtendButtons(S32& available_width)
 		S32 possible_extend_width = panel_max_width - panel_width;
 
 		if (possible_extend_width >= 0 && possible_extend_width <= available_width + available_width_chiclet)  // HACK: this button doesn't change size so possible_extend_width will be 0
-		{
-			mSpeakBtn->setLabelVisible(true);
+		{				
+			if (mSpeakBtn)
+			{	
+				mSpeakBtn->setLabelVisible(true);
+			}
+
 			mSpeakPanel->reshape(panel_max_width, mSpeakPanel->getRect().getHeight());
-			log(mSpeakBtn, "speak button is extended");
 
 			if( available_width > possible_extend_width)
 			{
diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp
index d52e0a6c86..d3e96f8dfb 100644
--- a/indra/newview/llspeakbutton.cpp
+++ b/indra/newview/llspeakbutton.cpp
@@ -54,26 +54,6 @@ LLSpeakButton::Params::Params()
 	// See widgets/talk_button.xml
 }
 
-void LLSpeakButton::draw()
-{
-	// LLVoiceClient::getInstance() is the authoritative global source of info regarding our open-mic state, we merely reflect that state.
-	bool openmic = LLVoiceClient::getInstance()->getUserPTTState();
-	bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled();
-	mSpeakBtn->setToggleState(openmic && voiceenabled);
-	mOutputMonitor->setIsMuted(!voiceenabled);
-	LLUICtrl::draw();
-}
-void LLSpeakButton::setSpeakBtnEnabled(bool enabled)
-{
-	LLButton* speak_btn = getChild<LLButton>("speak_btn");
-	speak_btn->setEnabled(enabled);
-}
-void LLSpeakButton::setFlyoutBtnEnabled(bool enabled)
-{
-	LLButton* show_btn = getChild<LLBottomtrayButton>("speak_flyout_btn");
-	show_btn->setEnabled(enabled);
-}
-
 LLSpeakButton::LLSpeakButton(const Params& p)
 : LLUICtrl(p)
 , mOutputMonitor(NULL)
diff --git a/indra/newview/llspeakbutton.h b/indra/newview/llspeakbutton.h
index 2fdf80c1f2..7db01112ef 100644
--- a/indra/newview/llspeakbutton.h
+++ b/indra/newview/llspeakbutton.h
@@ -53,12 +53,7 @@ public:
 	};
 
 	/*virtual*/ ~LLSpeakButton();
-	/*virtual*/ void draw();
 	
-	// methods for enabling/disabling right and left parts of speak button separately(EXT-4648)
-	void setSpeakBtnEnabled(bool enabled);
-	void setFlyoutBtnEnabled(bool enabled);
-
 	// *HACK: Need to put tooltips in a translatable location,
 	// the panel that contains this button.
 	void setSpeakToolTip(const std::string& msg);
diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
index aff22c7e45..49eead5079 100644
--- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
@@ -105,7 +105,7 @@
           min_height="28"
           min_width="20"
           mouse_opaque="false"
-          name="flyout_panel"
+          name="speak_flyout_panel"
           top_delta="0"
           user_resize="false"
           width="20">
-- 
cgit v1.2.3


From af41eb0d2c9f45c545c0470d44b91147e74c82a4 Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Fri, 29 Apr 2011 15:54:45 -0700
Subject: EXP-742 FIX [PUBLIC] CTRL-ALT-w doesn't "spin_over"

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

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 51610c0ae0..81b7d35253 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -2696,7 +2696,7 @@
           <menu_item_call
            label="Web Content Browser"
            name="Web Content Browser"
-           shortcut="control|alt|W">
+           shortcut="control|shift|Z">
             <menu_item_call.on_click
              function="Advanced.WebContentTest"
              parameter="http://google.com"/>
-- 
cgit v1.2.3


From 814e540e85d0f8dc3b50ade6b1b3194e7cbb57fb Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Mon, 2 May 2011 13:40:41 -0700
Subject: EXP-743 FIX Side bar panel is visible on login screen after getting
 'We're having trouble connecting' message

---
 indra/newview/skins/default/xui/en/main_view.xml | 16 +++++++++-------
 indra/newview/skins/minimal/xui/en/main_view.xml | 15 ++++++++-------
 2 files changed, 17 insertions(+), 14 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index e5ae0b950a..3ead67ca57 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -8,12 +8,6 @@
  tab_stop="false" 
  name="main_view"
  width="1024">
-  <panel top="0"
-     follows="all"
-     height="768"
-     mouse_opaque="false"
-     name="login_panel_holder"
-     width="1024"/>
   <layout_stack border_size="0"
                 follows="all"
                 mouse_opaque="false"
@@ -133,7 +127,14 @@
                       user_resize="false"
                       visible="false"
                       width="333"/>
-      </layout_stack>      
+      </layout_stack>
+      <panel top="0"
+         follows="all"
+         height="500"
+         mouse_opaque="false"
+         name="login_panel_holder"
+         width="1024"/>
+
       <panel follows="all"
                     height="500"
                     left="0"
@@ -171,6 +172,7 @@
          top="0" 
          width="1024"
          visible="false"/>
+  
   <view mouse_opaque="false"
         follows="all"
         name="menu_bar_holder"
diff --git a/indra/newview/skins/minimal/xui/en/main_view.xml b/indra/newview/skins/minimal/xui/en/main_view.xml
index 45ba785c1f..ac5bae2f3b 100644
--- a/indra/newview/skins/minimal/xui/en/main_view.xml
+++ b/indra/newview/skins/minimal/xui/en/main_view.xml
@@ -8,13 +8,6 @@
  tab_stop="false" 
  name="main_view"
  width="1024">
-  <panel top="0"
-   follows="all"
-   height="768"
-   mouse_opaque="false"
-   name="login_panel_holder"
-   width="1024"/>
- 
   <layout_stack border_size="0"
                 follows="all"
                 mouse_opaque="false"
@@ -96,6 +89,14 @@
                      name="stand_stop_flying_container"
                      visible="false"
                      width="500"/>
+              
+              <panel top="0"
+               follows="all"
+               height="500"
+               mouse_opaque="false"
+               name="login_panel_holder"
+               width="1024"/>
+
               <panel follows="all"
 										 height="500"
 										 left="0"
-- 
cgit v1.2.3


From 315eee3a7c87c5ee2154013d3fa0356c80bfab2e Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Mon, 2 May 2011 16:11:46 -0700
Subject: Backed out changeset: d38e4f4982a0

---
 indra/newview/app_settings/settings_minimal.xml    |   8 +-
 .../skins/default/xui/en/panel_bottomtray.xml      | 676 ++++++++++-----------
 .../minimal/xui/en/panel_adhoc_control_panel.xml   |  35 ++
 .../skins/minimal/xui/en/panel_bottomtray.xml      |  38 ++
 .../minimal/xui/en/panel_im_control_panel.xml      |  33 +
 5 files changed, 448 insertions(+), 342 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
index bc97ec00e9..60aecb279c 100644
--- a/indra/newview/app_settings/settings_minimal.xml
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -52,7 +52,7 @@
         <key>Type</key>
             <string>Boolean</string>
         <key>Value</key>
-            <integer>0</integer>
+            <integer>1</integer>
         </map>
     <key>HelpURLFormat</key>
         <map>
@@ -124,7 +124,7 @@
         <key>Type</key>
             <string>Boolean</string>
         <key>Value</key>
-            <integer>1</integer>
+            <integer>0</integer>
         </map>
     <key>VoiceDisableMic</key>
         <map>
@@ -133,7 +133,7 @@
         <key>Type</key>
             <string>Boolean</string>
         <key>Value</key>
-            <integer>1</integer>
+            <integer>0</integer>
         </map>
       <key>ScriptsCanShowUI</key>
       <map>
@@ -290,7 +290,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>0</integer>
+      <integer>1</integer>
     </map>
     <key>EnableAvatarShare</key>
     <map>
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index a6e5e7a219..57a22037cd 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -13,31 +13,31 @@
  top="28"
  width="1310">
   <string
-     name="DragIndicationImageName"
-     value="Accordion_ArrowOpened_Off" />
+   name="DragIndicationImageName"
+   value="Accordion_ArrowOpened_Off" />
   <string
-     name="SpeakBtnToolTip"
-     value="Turns microphone on/off" />
+   name="SpeakBtnToolTip"
+   value="Turns microphone on/off" />
   <string
-     name="VoiceControlBtnToolTip"
-     value="Shows/hides voice control panel" />
+   name="VoiceControlBtnToolTip"
+   value="Shows/hides voice control panel" />
   <layout_stack
-     border_size="0"
-     clip="false"
-     follows="all"
-     height="28"
+   border_size="0"
+   clip="false"
+   follows="all"
+   height="28"
    layout="topleft"
    left="0"
-     mouse_opaque="false"
-     name="toolbar_stack"
-     orientation="horizontal"
-     top="0"
-     width="1310">
+   mouse_opaque="false"
+   name="toolbar_stack"
+   orientation="horizontal"
+   top="0"
+   width="1310">
     <layout_panel
-         auto_resize="false"
-         user_resize="false"
-         min_width="2"
-         width="2" />
+     auto_resize="false"
+     user_resize="false"
+     min_width="2"
+     width="2" />
     <layout_panel
          auto_resize="false"
          layout="topleft"
@@ -47,16 +47,16 @@
          mouse_opaque="false"
 		 name="chat_bar_layout_panel"
          user_resize="true"
-         width="250" >
-          <panel
-            name="chat_bar"
-            filename="panel_nearby_chat_bar.xml"
-            left="0"
-            height="28"
-            width="248"
-            top="0"
-            mouse_opaque="false"
-            follows="left|right"
+     width="310" >
+      <panel
+		   name="chat_bar"
+			  filename="panel_nearby_chat_bar.xml"
+			  left="0"
+			  height="28"
+        width="308"
+			  top="0"
+			  mouse_opaque="false"
+			  follows="left|right"
           />
     </layout_panel>
     <!--
@@ -82,17 +82,17 @@
        width="5" />
     </layout_panel>
     <layout_panel
-        auto_resize="false"
-        follows="left|right"
-        height="28"
-        layout="topleft"
-        min_height="28"
-        min_width="59"
-        mouse_opaque="false"
-        name="speak_panel"
-        top_delta="0"
-        user_resize="false"
-        width="108">
+     auto_resize="false"
+     follows="left|right"
+     height="28"
+     layout="topleft"
+     min_height="28"
+     min_width="59"
+     mouse_opaque="false"
+     name="speak_panel"
+     top_delta="0"
+     user_resize="false"
+     width="108">
       <talk_button
        follows="left|right"
        height="23"
@@ -120,36 +120,36 @@
       </talk_button>
     </layout_panel>
     <layout_panel
-         auto_resize="false"
-         follows="right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="65"
-         mouse_opaque="false"
-         name="gesture_panel"
-         top_delta="0"
-         user_resize="false"
-         width="85">
+     auto_resize="false"
+     follows="right"
+     height="28"
+     layout="topleft"
+     min_height="28"
+     min_width="65"
+     mouse_opaque="false"
+     name="gesture_panel"
+     top_delta="0"
+     user_resize="false"
+     width="85">
       <gesture_combo_list
-             follows="left|right"
-             height="23"
-             label="Gesture"
-             layout="topleft"
-             left="0"
-             name="Gesture"
-             tool_tip="Shows/hides gestures"
-             top="5"
-             width="82">
+       follows="left|right"
+       height="23"
+       label="Gesture"
+       layout="topleft"
+       left="0"
+       name="Gesture"
+       tool_tip="Shows/hides gestures"
+       top="5"
+       width="82">
         <combo_button
-                 pad_right="10"
-                 use_ellipses="true" />
+         pad_right="10"
+         use_ellipses="true" />
         <combo_list
-                 page_lines="17" />
+         page_lines="17" />
       </gesture_combo_list>
     </layout_panel>
     <layout_panel
-         auto_resize="false"
+     auto_resize="false"
      follows="right"
      height="28"
      layout="topleft"
@@ -181,58 +181,58 @@
     </layout_panel>
     <layout_panel
      auto_resize="false"
-         follows="left|right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="52"
-         mouse_opaque="false"
-         name="cam_panel"
-         user_resize="false"
-         width="83">
+     follows="left|right"
+     height="28"
+     layout="topleft"
+     min_height="28"
+     min_width="52"
+     mouse_opaque="false"
+     name="cam_panel"
+     user_resize="false"
+     width="83">
       <bottomtray_button
-             follows="left|right"
-             height="23"
-             image_pressed="PushButton_Press"
-             image_pressed_selected="PushButton_Selected_Press"
-             image_selected="PushButton_Selected_Press"
-             is_toggle="true"
-             label="View"
-             layout="topleft"
-             left="0"
-             name="camera_btn"
-             tool_tip="Shows/hides camera controls"
-             top="5"
-             use_ellipses="true"
-             width="80">
+       follows="left|right"
+       height="23"
+       image_pressed="PushButton_Press"
+       image_pressed_selected="PushButton_Selected_Press"
+       image_selected="PushButton_Selected_Press"
+       is_toggle="true"
+       label="View"
+       layout="topleft"
+       left="0"
+       name="camera_btn"
+       tool_tip="Shows/hides camera controls"
+       top="5"
+       use_ellipses="true"
+       width="80">
         <init_callback
-                 function="Button.SetDockableFloaterToggle"
-                 parameter="camera" />
+         function="Button.SetDockableFloaterToggle"
+         parameter="camera" />
       </bottomtray_button>
     </layout_panel>
     <layout_panel
-         auto_resize="false"
-         follows="left|right"
-         height="28"
-         layout="topleft"
+     auto_resize="false"
+     follows="left|right"
+     height="28"
+     layout="topleft"
      min_width="40"
-		  mouse_opaque="false"
+     mouse_opaque="false"
      name="snapshot_panel"
-		  user_resize="false"
+     user_resize="false"
      width="39">
       <bottomtray_button
-			follows="left|right"
-			height="23"
+       follows="left|right"
+       height="23"
        image_overlay="Snapshot_Off"
-			image_pressed="PushButton_Press"
-			image_pressed_selected="PushButton_Selected_Press"
-			image_selected="PushButton_Selected_Press"
+       image_pressed="PushButton_Press"
+       image_pressed_selected="PushButton_Selected_Press"
+       image_selected="PushButton_Selected_Press"
        is_toggle="true"
-			layout="topleft"
-			left="0"
+       layout="topleft"
+       left="0"
        name="snapshots"
        tool_tip="Take snapshot"
-			top="5"
+       top="5"
        width="36">
         <init_callback
          function="Button.SetFloaterToggle"
@@ -240,33 +240,33 @@
       </bottomtray_button>
     </layout_panel>
     <layout_panel
-		  auto_resize="false"
-		  follows="left|right"
-		  height="28"
-		  layout="topleft"
-		  min_height="28"
+     auto_resize="false"
+     follows="left|right"
+     height="28"
+     layout="topleft"
+     min_height="28"
      min_width="52"
-		  mouse_opaque="false"
+     mouse_opaque="false"
      name="build_btn_panel"
-		  user_resize="false"
+     user_resize="false"
      width="83">
       <!--*FIX: Build Floater is not opened with default registration. Will be fixed soon.
 Disabled for now.
 -->
       <bottomtray_button
-			follows="left|right"
-			height="23"
-			image_pressed="PushButton_Press"
-			image_pressed_selected="PushButton_Selected_Press"
-			image_selected="PushButton_Selected_Press"
+       follows="left|right"
+       height="23"
+       image_pressed="PushButton_Press"
+       image_pressed_selected="PushButton_Selected_Press"
+       image_selected="PushButton_Selected_Press"
        is_toggle="true"
        label="Build"
-			layout="topleft"
-			left="0"
+       layout="topleft"
+       left="0"
        name="build_btn"
        tool_tip="Shows/hides Build Tools"
-			top="5"
-			use_ellipses="true"
+       top="5"
+       use_ellipses="true"
        width="80">
         <commit_callback
          function="Build.Toggle"
@@ -274,181 +274,181 @@ Disabled for now.
       </bottomtray_button>
     </layout_panel>
     <layout_panel
-		  auto_resize="false"
-		  follows="left|right"
-		  height="28"
-		  layout="topleft"
-         min_height="28"
+     auto_resize="false"
+     follows="left|right"
+     height="28"
+     layout="topleft"
+     min_height="28"
      min_width="52"
-         mouse_opaque="false"
+     mouse_opaque="false"
      name="search_btn_panel"
          user_resize="false"
-         width="83">
-            <bottomtray_button
-             follows="left|right"
-             height="23"
-             image_pressed="PushButton_Press"
-             image_pressed_selected="PushButton_Selected_Press"
-             image_selected="PushButton_Selected_Press"
-             is_toggle="true"
-             label="Search"
-             layout="topleft"
-             left="0"
-             name="search_btn"
-             tool_tip="Shows/hides Search"
-             top="5"
-             use_ellipses="true"
-             width="80">
-                <init_callback
-                 function="Button.SetFloaterToggle"
-                 parameter="search" />
-            </bottomtray_button>
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="left|right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="52"
-         mouse_opaque="false"
-         name="world_map_btn_panel"
-         user_resize="false"
-         width="83">
-            <bottomtray_button
-             follows="left|right"
-             height="23"
-             image_pressed="PushButton_Press"
-             image_pressed_selected="PushButton_Selected_Press"
-             image_selected="PushButton_Selected_Press"
-             is_toggle="true"
-             label="Map"
-             layout="topleft"
-             left="0"
-             name="world_map_btn"
-             tool_tip="Shows/hides World Map"
-             top="5"
-             use_ellipses="true"
-             width="80">
-                <init_callback
-                 function="Button.SetFloaterToggle"
-                 parameter="world_map" />
-            </bottomtray_button>
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="left|right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="62"
-         mouse_opaque="false"
-         name="mini_map_btn_panel"
-         user_resize="false"
-         width="83">
-            <bottomtray_button
-             follows="left|right"
-             height="23"
-             image_pressed="PushButton_Press"
-             image_pressed_selected="PushButton_Selected_Press"
-             image_selected="PushButton_Selected_Press"
-             is_toggle="true"
-             label="Mini-Map"
-             layout="topleft"
-             left="0"
-             name="mini_map_btn"
-             tool_tip="Shows/hides Mini-Map"
-             top="5"
-             use_ellipses="true"
-             width="80">
-                <init_callback
-                 function="Button.SetFloaterToggle"
-                 parameter="mini_map" />
-            </bottomtray_button>
-        </layout_panel>
-        <layout_panel
-         follows="left|right"
-         height="30"
-         layout="topleft"
-         min_width="95"
-         mouse_opaque="false"
-         name="chiclet_list_panel"
-         top="0"
-         user_resize="false"
-         width="189">
-<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
+     width="83">
+      <bottomtray_button
+			  follows="left|right"
+			  height="23"
+			  image_pressed="PushButton_Press"
+			  image_pressed_selected="PushButton_Selected_Press"
+			  image_selected="PushButton_Selected_Press"
+       is_toggle="true"
+       label="Search"
+			  layout="topleft"
+			  left="0"
+       name="search_btn"
+       tool_tip="Shows/hides Search"
+			  top="5"
+			  use_ellipses="true"
+       width="80">
+        <init_callback
+         function="Button.SetFloaterToggle"
+         parameter="search" />
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
+		   auto_resize="false"
+     follows="left|right"
+		   height="28"
+		   layout="topleft"
+		   min_height="28"
+     min_width="52"
+		   mouse_opaque="false"
+     name="world_map_btn_panel"
+		   user_resize="false"
+     width="83">
+      <bottomtray_button
+			  follows="left|right"
+			  height="23"
+			  image_pressed="PushButton_Press"
+			  image_pressed_selected="PushButton_Selected_Press"
+			  image_selected="PushButton_Selected_Press"
+       is_toggle="true"
+       label="Map"
+			  layout="topleft"
+			  left="0"
+       name="world_map_btn"
+       tool_tip="Shows/hides World Map"
+			  top="5"
+			  use_ellipses="true"
+       width="80">
+        <init_callback
+         function="Button.SetFloaterToggle"
+         parameter="world_map" />
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
+		   auto_resize="false"
+     follows="left|right"
+		   height="28"
+		   layout="topleft"
+		   min_height="28"
+     min_width="52"
+		   mouse_opaque="false"
+     name="mini_map_btn_panel"
+		   user_resize="false"
+     width="83">
+      <bottomtray_button
+			  follows="left|right"
+			  height="23"
+			  image_pressed="PushButton_Press"
+			  image_pressed_selected="PushButton_Selected_Press"
+			  image_selected="PushButton_Selected_Press"
+       is_toggle="true"
+       label="Mini-Map"
+			  layout="topleft"
+			  left="0"
+       name="mini_map_btn"
+       tool_tip="Shows/hides Mini-Map"
+			  top="5"
+			  use_ellipses="true"
+       width="80">
+        <init_callback
+         function="Button.SetFloaterToggle"
+         parameter="mini_map" />
+      </bottomtray_button>
+    </layout_panel>
+    <layout_panel
+		   follows="left|right"
+		   height="30"
+		   layout="topleft"
+		   min_width="95"
+		   mouse_opaque="false"
+		   name="chiclet_list_panel"
+		   top="0"
+		   user_resize="false"
+		   width="189">
+      <!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
 as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
       <chiclet_panel
-             chiclet_padding="4"
-             follows="left|right"
-             height="24"
-             layout="topleft"
-             left="1"
-             min_width="95"
-             mouse_opaque="false"
-             name="chiclet_list"
-             top="7"
-             width="189">
+       chiclet_padding="4"
+       follows="left|right"
+       height="24"
+       layout="topleft"
+       left="1"
+       min_width="95"
+       mouse_opaque="false"
+       name="chiclet_list"
+       top="7"
+       width="189">
         <button
-                 auto_resize="true"
-                 follows="right"
-                 height="29"
-                 image_hover_selected="SegmentedBtn_Left_Over"
-                 image_hover_unselected="SegmentedBtn_Left_Over"
-                 image_overlay="Arrow_Small_Left"
-                 image_pressed="SegmentedBtn_Left_Press"
-                 image_pressed_selected="SegmentedBtn_Left_Press"
-                 image_selected="SegmentedBtn_Left_Off"
-                 image_unselected="SegmentedBtn_Left_Off"
-                 layout="topleft"
-                 name="chicklet_left_scroll_button"
-                 tab_stop="false"
-                 top="-28"
-                 visible="false"
-                 width="7" />
+         auto_resize="true"
+         follows="right"
+         height="29"
+         image_hover_selected="SegmentedBtn_Left_Over"
+         image_hover_unselected="SegmentedBtn_Left_Over"
+         image_overlay="Arrow_Small_Left"
+         image_pressed="SegmentedBtn_Left_Press"
+         image_pressed_selected="SegmentedBtn_Left_Press"
+         image_selected="SegmentedBtn_Left_Off"
+         image_unselected="SegmentedBtn_Left_Off"
+         layout="topleft"
+         name="chicklet_left_scroll_button"
+         tab_stop="false"
+         top="-28"
+         visible="false"
+         width="7" />
         <button
-                 auto_resize="true"
-                 follows="right"
-                 height="29"
-                 image_hover_selected="SegmentedBtn_Right_Over"
-                 image_hover_unselected="SegmentedBtn_Right_Over"
-                 image_overlay="Arrow_Small_Right"
-                 image_pressed="SegmentedBtn_Right_Press"
-                 image_pressed_selected="SegmentedBtn_Right_Press"
-                 image_selected="SegmentedBtn_Right_Off"
-                 image_unselected="SegmentedBtn_Right_Off"
-                 layout="topleft"
-                 name="chicklet_right_scroll_button"
-                 tab_stop="false"
-                 top="-28"
-                 visible="false"
-                 width="7" />
+         auto_resize="true"
+         follows="right"
+         height="29"
+         image_hover_selected="SegmentedBtn_Right_Over"
+         image_hover_unselected="SegmentedBtn_Right_Over"
+         image_overlay="Arrow_Small_Right"
+         image_pressed="SegmentedBtn_Right_Press"
+         image_pressed_selected="SegmentedBtn_Right_Press"
+         image_selected="SegmentedBtn_Right_Off"
+         image_unselected="SegmentedBtn_Right_Off"
+         layout="topleft"
+         name="chicklet_right_scroll_button"
+         tab_stop="false"
+         top="-28"
+         visible="false"
+         width="7" />
       </chiclet_panel>
     </layout_panel>
     <layout_panel auto_resize="false"
-                      user_resize="false"
-                      width="4"
-                      min_width="4"/>
+                  user_resize="false"
+                  width="4"
+                  min_width="4"/>
     <layout_panel
-         auto_resize="false"
-         follows="right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="37"
-         name="im_well_panel"
-         top="0"
-         user_resize="false"
-         width="37">
+     auto_resize="false"
+     follows="right"
+     height="28"
+     layout="topleft"
+     min_height="28"
+     min_width="37"
+     name="im_well_panel"
+     top="0"
+     user_resize="false"
+     width="37">
       <chiclet_im_well
-             follows="right"
-             height="28"
-             layout="topleft"
-             left="0"
-             max_displayed_count="99"
-             name="im_well"
-             top="0"
-             width="35">
+       follows="right"
+       height="28"
+       layout="topleft"
+       left="0"
+       max_displayed_count="99"
+       name="im_well"
+       top="0"
+       width="35">
         <!--
 Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button
 xml attribute           Description
@@ -458,73 +458,73 @@ image_pressed           "Lit" - there are new messages
 image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well is open
              -->
         <button
-                 auto_resize="true"
-                 follows="right"
-                 halign="center"
-                 height="23"
-                 image_overlay="Unread_IM"
-                 image_overlay_alignment="center"
-                 image_pressed="WellButton_Lit"
-                 image_pressed_selected="WellButton_Lit_Selected"
-                 image_selected="PushButton_Press"
-                 label_color="Black"
-                 left="0"
-                 name="Unread IM messages"
-                 tool_tip="Conversations"
-                 width="34">
+         auto_resize="true"
+         follows="right"
+         halign="center"
+         height="23"
+         image_overlay="Unread_IM"
+         image_overlay_alignment="center"
+         image_pressed="WellButton_Lit"
+         image_pressed_selected="WellButton_Lit_Selected"
+         image_selected="PushButton_Press"
+         label_color="Black"
+         left="0"
+         name="Unread IM messages"
+         tool_tip="Conversations"
+         width="34">
           <init_callback
-                     function="Button.SetDockableFloaterToggle"
-                     parameter="im_well_window" />
+           function="Button.SetDockableFloaterToggle"
+           parameter="im_well_window" />
         </button>
       </chiclet_im_well>
     </layout_panel>
     <layout_panel
-         auto_resize="false"
-         follows="right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="37"
-         name="notification_well_panel"
-         top="0"
-         user_resize="false"
-         width="37">
+     auto_resize="false"
+     follows="right"
+     height="28"
+     layout="topleft"
+     min_height="28"
+     min_width="37"
+     name="notification_well_panel"
+     top="0"
+     user_resize="false"
+     width="37">
       <chiclet_notification
-             follows="right"
-             height="23"
-             layout="topleft"
-             left="0"
-             max_displayed_count="99"
-             name="notification_well"
-             top="5"
-             width="35">
+       follows="right"
+       height="23"
+       layout="topleft"
+       left="0"
+       max_displayed_count="99"
+       name="notification_well"
+       top="5"
+       width="35">
         <button
-                 auto_resize="true"
-                 bottom_pad="3"
-                 follows="right"
-                 halign="center"
-                 height="23"
-                 image_overlay="Notices_Unread"
-                 image_overlay_alignment="center"
-                 image_pressed="WellButton_Lit"
-                 image_pressed_selected="WellButton_Lit_Selected"
-                 image_selected="PushButton_Press"
-                 label_color="Black"
-                 left="0"
-                 name="Unread"
-                 tool_tip="Notifications"
-                 width="34">
+         auto_resize="true"
+         bottom_pad="3"
+         follows="right"
+         halign="center"
+         height="23"
+         image_overlay="Notices_Unread"
+         image_overlay_alignment="center"
+         image_pressed="WellButton_Lit"
+         image_pressed_selected="WellButton_Lit_Selected"
+         image_selected="PushButton_Press"
+         label_color="Black"
+         left="0"
+         name="Unread"
+         tool_tip="Notifications"
+         width="34">
           <init_callback
-                     function="Button.SetDockableFloaterToggle"
-                     parameter="notification_well_window" />
+           function="Button.SetDockableFloaterToggle"
+           parameter="notification_well_window" />
         </button>
       </chiclet_notification>
     </layout_panel>
     <layout_panel
-		   auto_resize="false"
-		   user_resize="false"
-		   min_width="4"
-		   name="DUMMY2"
-		   width="8" />
+       auto_resize="false"
+       user_resize="false"
+       min_width="4"
+       name="DUMMY2"
+       width="8" />
   </layout_stack>
 </panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
index 5730adab8a..39d1a90850 100644
--- a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
@@ -42,5 +42,40 @@
              show_speaking_indicator="false"
              width="147" />
         </layout_panel>
+      <layout_panel
+         auto_resize="false"
+         follows="top|left|right"
+         height="25"
+         layout="topleft"
+         min_height="25"
+         width="130"
+         name="call_btn_panel"
+         user_resize="false"
+         visible="false">
+        <button
+         follows="all"
+         height="20"
+         label="Call"
+         name="call_btn"
+         width="130"
+         top="5" />
+      </layout_panel>
+      <layout_panel
+       auto_resize="false"
+       follows="top|left|right"
+       height="25"
+       layout="topleft"
+       min_height="25"
+       width="130"
+       name="end_call_btn_panel"
+       user_resize="false"
+       visible="false">
+        <button
+         follows="all"
+         height="20"
+         label="Leave Call"
+         name="end_call_btn"
+         top="5"/>
+      </layout_panel>
     </layout_stack>
 </panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
index e0c0bd13d9..95f2010e44 100644
--- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
@@ -61,6 +61,44 @@
 		</layout_panel>
     <layout_panel
         auto_resize="false"
+        follows="left|right"
+        height="28"
+        layout="topleft"
+        min_height="28"
+        min_width="59"
+        mouse_opaque="false"
+        name="speak_panel"
+        top_delta="0"
+        user_resize="false"
+        width="108">
+      <talk_button
+       follows="left|right"
+       height="23"
+       layout="topleft"
+       left="0"
+       name="talk"
+       top="5"
+       width="105">
+        <show_button
+         tab_stop="true">
+          <init_callback
+           function="Button.SetDockableFloaterToggle"
+           parameter="voice_controls" />
+        </show_button>
+        <!-- do not remove halign attribute with default value. otherwise it can't be overridden in other locales.
+                 & pad_right is default value for long label which can be right aligned. See EXT-6318 -->
+        <speak_button
+         halign="center"
+         label="Speak"
+         label_selected="Speak"
+         name="speak_btn"
+         pad_right="20"
+         tab_stop="true"
+         use_ellipses="true" />
+      </talk_button>
+    </layout_panel>
+		<layout_panel
+         auto_resize="false"
          follows="right"
          height="28"
          layout="topleft"
diff --git a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
index c3f46f11e0..be13bc1bb7 100644
--- a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
@@ -77,6 +77,39 @@
              tool_tip = "Offer to teleport this person"
              width="140" />
       </layout_panel>
+      <layout_panel
+         auto_resize="false"
+         follows="top|left|right"
+         height="25"
+         layout="topleft"
+         min_height="25"
+         width="140"
+         name="call_btn_panel"
+         user_resize="false">
+        <button
+         follows="left|top|right"
+         height="23"
+         label="Call"
+         name="call_btn"
+         width="140" />
+      </layout_panel>
+      <layout_panel
+       auto_resize="false"
+       follows="top|left|right"
+       height="25"
+       layout="topleft"
+       min_height="25"
+       width="140"
+       name="end_call_btn_panel"
+       user_resize="false"
+       visible="false">
+        <button
+         follows="left|top|right"
+         height="23"
+         label="End Call"
+         name="end_call_btn"
+         width="140" />
+      </layout_panel>
       <layout_panel
        mouse_opaque="false"
        auto_resize="true"
-- 
cgit v1.2.3


From f085d242dc9c47cfa55cdd3a79413fe6ed84ede5 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Mon, 2 May 2011 16:37:10 -0700
Subject: EXP-763 Cannot close IM window using X in upper corner while in a
 voice call

---
 indra/newview/skins/minimal/xui/en/notification_visibility.xml | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/skins/minimal/xui/en/notification_visibility.xml b/indra/newview/skins/minimal/xui/en/notification_visibility.xml
index 616b544847..bdd3c3d4a4 100644
--- a/indra/newview/skins/minimal/xui/en/notification_visibility.xml
+++ b/indra/newview/skins/minimal/xui/en/notification_visibility.xml
@@ -1,12 +1,9 @@
 <?xml version="1.0" ?>
 <notification_visibility>
-  <respond name="VoiceInviteP2P" response="Decline"/>
-  <respond name="VoiceInviteAdHoc" response="Decline"/>
   <respond name="VoiceInviteGroup" response="Decline"/>
 
   <!-- group and voice are disabled features -->
   <hide tag="group"/>
-  <hide tag="voice"/>
 
   <!-- no spammy scripts -->
   <!-- <hide name="ScriptDialog"/> -->
@@ -16,6 +13,7 @@
   <hide name="FirstInventory"/>
   <hide name="HintSidePanel"/>
   <hide name="HintMove"/>
+  <hide name="HintSpeak"/>
   <hide name="HintDisplayName"/>
   <hide name="HintInventory"/>
   <hide name="HintLindenDollar"/>
-- 
cgit v1.2.3


From b0ebba414e2b2924b1fb9e238a000408fd5358f8 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Tue, 3 May 2011 10:43:32 -0700
Subject: merge fix for voice

---
 indra/newview/app_settings/settings_minimal.xml    |  8 ++---
 .../minimal/xui/en/panel_adhoc_control_panel.xml   | 35 ++++++++++++++++++++++
 .../minimal/xui/en/panel_im_control_panel.xml      | 33 ++++++++++++++++++++
 3 files changed, 72 insertions(+), 4 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
index f2816c28f3..2180abdcee 100644
--- a/indra/newview/app_settings/settings_minimal.xml
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -52,7 +52,7 @@
         <key>Type</key>
             <string>Boolean</string>
         <key>Value</key>
-            <integer>0</integer>
+            <integer>1</integer>
         </map>
     <key>HelpURLFormat</key>
         <map>
@@ -124,7 +124,7 @@
         <key>Type</key>
             <string>Boolean</string>
         <key>Value</key>
-            <integer>1</integer>
+            <integer>0</integer>
         </map>
     <key>VoiceDisableMic</key>
         <map>
@@ -133,7 +133,7 @@
         <key>Type</key>
             <string>Boolean</string>
         <key>Value</key>
-            <integer>1</integer>
+            <integer>0</integer>
         </map>
       <key>ScriptsCanShowUI</key>
       <map>
@@ -290,7 +290,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>0</integer>
+      <integer>1</integer>
     </map>
     <key>EnableAvatarShare</key>
     <map>
diff --git a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
index 5730adab8a..39d1a90850 100644
--- a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
@@ -42,5 +42,40 @@
              show_speaking_indicator="false"
              width="147" />
         </layout_panel>
+      <layout_panel
+         auto_resize="false"
+         follows="top|left|right"
+         height="25"
+         layout="topleft"
+         min_height="25"
+         width="130"
+         name="call_btn_panel"
+         user_resize="false"
+         visible="false">
+        <button
+         follows="all"
+         height="20"
+         label="Call"
+         name="call_btn"
+         width="130"
+         top="5" />
+      </layout_panel>
+      <layout_panel
+       auto_resize="false"
+       follows="top|left|right"
+       height="25"
+       layout="topleft"
+       min_height="25"
+       width="130"
+       name="end_call_btn_panel"
+       user_resize="false"
+       visible="false">
+        <button
+         follows="all"
+         height="20"
+         label="Leave Call"
+         name="end_call_btn"
+         top="5"/>
+      </layout_panel>
     </layout_stack>
 </panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
index c3f46f11e0..be13bc1bb7 100644
--- a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
@@ -77,6 +77,39 @@
              tool_tip = "Offer to teleport this person"
              width="140" />
       </layout_panel>
+      <layout_panel
+         auto_resize="false"
+         follows="top|left|right"
+         height="25"
+         layout="topleft"
+         min_height="25"
+         width="140"
+         name="call_btn_panel"
+         user_resize="false">
+        <button
+         follows="left|top|right"
+         height="23"
+         label="Call"
+         name="call_btn"
+         width="140" />
+      </layout_panel>
+      <layout_panel
+       auto_resize="false"
+       follows="top|left|right"
+       height="25"
+       layout="topleft"
+       min_height="25"
+       width="140"
+       name="end_call_btn_panel"
+       user_resize="false"
+       visible="false">
+        <button
+         follows="left|top|right"
+         height="23"
+         label="End Call"
+         name="end_call_btn"
+         width="140" />
+      </layout_panel>
       <layout_panel
        mouse_opaque="false"
        auto_resize="true"
-- 
cgit v1.2.3


From 64b192ed6274349a4b8844a9e0165e8b25f3a6ad Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Tue, 3 May 2011 13:18:16 -0700
Subject: EXP-756 : Fix inventory folder ordering on launch

---
 indra/newview/llfolderview.cpp         | 12 ------------
 indra/newview/llfolderview.h           |  1 -
 indra/newview/llfolderviewitem.cpp     |  2 +-
 indra/newview/llinventoryfilter.h      | 11 +++++++----
 indra/newview/llpanelmaininventory.cpp | 10 ++++++++++
 5 files changed, 18 insertions(+), 18 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index b3b1ce5743..3884b94b60 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -301,18 +301,6 @@ BOOL LLFolderView::canFocusChildren() const
 	return FALSE;
 }
 
-void LLFolderView::checkTreeResortForModelChanged()
-{
-	if (mSortOrder & LLInventoryFilter::SO_DATE && !(mSortOrder & LLInventoryFilter::SO_FOLDERS_BY_NAME))
-	{
-		// This is the case where something got added or removed.  If we are date sorting
-		// everything including folders, then we need to rebuild the whole tree.
-		// Just set to something not SO_DATE to force the folder most resent date resort.
-		mSortOrder = mSortOrder & ~LLInventoryFilter::SO_DATE;
-		setSortOrder(mSortOrder | LLInventoryFilter::SO_DATE);
-	}
-}
-
 static LLFastTimer::DeclareTimer FTM_SORT("Sort Inventory");
 
 void LLFolderView::setSortOrder(U32 order)
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 210ba9eb3c..1464a058d8 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -101,7 +101,6 @@ public:
 	// FolderViews default to sort by name.  This will change that,
 	// and resort the items if necessary.
 	void setSortOrder(U32 order);
-	void checkTreeResortForModelChanged();
 	void setFilterPermMask(PermissionMask filter_perm_mask);
 	void setAllowMultiSelect(BOOL allow) { mAllowMultiSelect = allow; }
 	
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index 3c36248c1f..e9d1ad3a9e 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -1835,7 +1835,7 @@ void LLFolderViewFolder::sortBy(U32 order)
 		return;
 	}
 
-	// Propegate this change to sub folders
+	// Propagate this change to sub folders
 	for (folders_t::iterator iter = mFolders.begin();
 		iter != mFolders.end();)
 	{
diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h
index f488b2ed1b..39e6f797a2 100644
--- a/indra/newview/llinventoryfilter.h
+++ b/indra/newview/llinventoryfilter.h
@@ -66,10 +66,13 @@ public:
 		FILTERLINK_ONLY_LINKS		// only show links
 	};
 
-	// REFACTOR: Change this to an enum.
-	static const U32 SO_DATE = 1;
-	static const U32 SO_FOLDERS_BY_NAME = 2;
-	static const U32 SO_SYSTEM_FOLDERS_TO_TOP = 4;
+	enum ESortOrderType
+	{
+		SO_NAME = 0,						// Sort inventory by name
+		SO_DATE = 0x1,						// Sort inventory by date
+		SO_FOLDERS_BY_NAME = 0x1 << 1,		// Force folder sort by name
+		SO_SYSTEM_FOLDERS_TO_TOP = 0x1 << 2	// Force system folders to be on top
+	};
 
 	LLInventoryFilter(const std::string& name);
 	virtual ~LLInventoryFilter();
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 90617b7dc7..b9a6938492 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -192,6 +192,16 @@ BOOL LLPanelMainInventory::postBuild()
 	mMenuAdd->getChild<LLMenuItemGL>("Upload Animation")->setLabelArg("[COST]", upload_cost);
 	mMenuAdd->getChild<LLMenuItemGL>("Bulk Upload")->setLabelArg("[COST]", upload_cost);
 
+	// EXP-756: Force resorting of the list: in the case of date sorting, one didn't have enough information at
+	// the beginning to correctly sort the folders. Later resort didn't do anything as the order value was 
+	// set correctly. The workaround is to reset the order to alphabetical (or anything) then to the correct order.
+	if (mActivePanel)
+	{
+		U32 order = mActivePanel->getSortOrder();
+		mActivePanel->setSortOrder(LLInventoryFilter::SO_NAME);
+		mActivePanel->setSortOrder(order);
+	}
+
 	return TRUE;
 }
 
-- 
cgit v1.2.3


From 1b601fbdff008e32a0d9e0a85ad38518e7ab344e Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Tue, 3 May 2011 14:35:07 -0700
Subject: EXP-771 Enable call option in Basic Viewer UI

---
 .../skins/minimal/xui/en/menu_attachment_other.xml |  8 ++++++++
 .../skins/minimal/xui/en/menu_avatar_other.xml     |  8 ++++++++
 .../minimal/xui/en/menu_inspect_avatar_gear.xml    |  9 +++++++++
 .../skins/minimal/xui/en/menu_people_nearby.xml    | 10 ++++++++++
 .../newview/skins/minimal/xui/en/panel_people.xml  | 23 +++++++++++++++++++++-
 5 files changed, 57 insertions(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml
index b55e677276..80cf365c46 100644
--- a/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml
+++ b/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml
@@ -25,6 +25,14 @@
         <menu_item_call.on_click
          function="Avatar.SendIM" />
     </menu_item_call>
+  <menu_item_call
+     label="Call"
+     name="Call">
+    <menu_item_call.on_click
+     function="Avatar.Call" />
+    <menu_item_call.on_enable
+     function="Avatar.EnableCall" />
+  </menu_item_call>
    <menu_item_separator />
     <menu_item_call
      enabled="false"
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml
index b76629f401..2c81b5a778 100644
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml
+++ b/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml
@@ -25,6 +25,14 @@
         <menu_item_call.on_click
          function="Avatar.SendIM" />
     </menu_item_call>
+  <menu_item_call
+     label="Call"
+     name="Call">
+    <menu_item_call.on_click
+     function="Avatar.Call" />
+    <menu_item_call.on_enable
+     function="Avatar.EnableCall" />
+  </menu_item_call>
    <menu_item_separator />
     <menu_item_call
      enabled="false"
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml
index 5a4a059781..a11e367d66 100644
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml
@@ -26,6 +26,15 @@
     <menu_item_call.on_click
      function="InspectAvatar.IM"/>
   </menu_item_call>
+  <menu_item_call
+   label="Call"
+   enabled="true"
+   name="call">
+    <menu_item_call.on_click
+     function="InspectAvatar.Call"/>
+    <menu_item_call.on_enable
+     function="InspectAvatar.Gear.EnableCall"/>
+  </menu_item_call>
   <menu_item_call
    label="Teleport"
    name="teleport">
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml
index 3d64133f54..1840ebd491 100644
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml
+++ b/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml
@@ -36,6 +36,16 @@
 		<menu_item_call.on_click
          function="Avatar.IM" />
 	</menu_item_call>
+  <menu_item_call
+     label="Call"
+     layout="topleft"
+     name="Call">
+    <menu_item_call.on_click
+     function="Avatar.Call" />
+    <menu_item_call.on_enable
+     function="Avatar.EnableItem"
+     parameter="can_call" />
+  </menu_item_call>
 	<menu_item_check
      label="Block/Unblock"
      layout="topleft"
diff --git a/indra/newview/skins/minimal/xui/en/panel_people.xml b/indra/newview/skins/minimal/xui/en/panel_people.xml
index 4a72653d76..68e12cc444 100644
--- a/indra/newview/skins/minimal/xui/en/panel_people.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_people.xml
@@ -443,7 +443,28 @@ Looking for people to hang out with? Try the Destinations button below.
 		         top="0"
 		         width="40" />			
 			</layout_panel>
-		
+			
+			<layout_panel
+			follows="bottom|left|right"
+			height="23"
+			layout="bottomleft"
+			left_pad="3"
+			name="chat_btn_lp"
+		    user_resize="false" 
+		    auto_resize="true"
+			width="52">
+				<button
+		         follows="bottom|left|right"
+		         left="1"
+		         height="23"
+		         label="Call"
+		         layout="topleft"
+		         name="call_btn"
+		         tool_tip="Call this Resident"
+		         top="0"
+		         width="51" />		
+			</layout_panel>
+						
 			<layout_panel
 			follows="bottom|left|right"
 			height="23"
-- 
cgit v1.2.3


From 8cc430f691fe65cd03cbac1c4246d836000babd1 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Tue, 3 May 2011 17:11:58 -0700
Subject: EXP-624 Place profile floater may be opened by SLApp

---
 indra/newview/app_settings/settings.xml              | 11 +++++++++++
 indra/newview/app_settings/settings_minimal.xml      | 11 +++++++++++
 indra/newview/llpanelplaces.cpp                      |  9 ++++++++-
 indra/newview/skins/default/xui/en/notifications.xml | 16 +++++++++++++++-
 4 files changed, 45 insertions(+), 2 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 6b56da5edd..a9eb45b14c 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -12546,6 +12546,17 @@
       <string>Boolean</string>
       <key>Value</key>
       <integer>1</integer>
+    </map>    
+    <key>EnablePlaceProfile</key>
+    <map>
+      <key>Comment</key>
+      <string>Enable viewing of place profile from web link</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
     </map>
     <key>EnablePicks</key>
     <map>
diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
index 2180abdcee..1e9c3f54fd 100644
--- a/indra/newview/app_settings/settings_minimal.xml
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -248,6 +248,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>EnablePlaceProfile</key>
+    <map>
+      <key>Comment</key>
+      <string>Enable viewing of place profile from web link</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>EnablePicks</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 00ac34efa5..46262832dc 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -91,11 +91,18 @@ public:
 	LLParcelHandler() : LLCommandHandler("parcel", UNTRUSTED_THROTTLE) { }
 	bool handle(const LLSD& params, const LLSD& query_map,
 				LLMediaCtrl* web)
-	{
+	{		
 		if (params.size() < 2)
 		{
 			return false;
 		}
+
+		if (!LLUI::sSettingGroups["config"]->getBOOL("EnablePlaceProfile"))
+		{
+			LLNotificationsUtil::add("NoPlaceInfo", LLSD(), LLSD(), std::string("SwitchToStandardSkinAndQuit"));
+			return true;
+		}
+
 		LLUUID parcel_id;
 		if (!parcel_id.set(params[0], FALSE))
 		{
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 3fb3717e68..8c18d1233f 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -7144,7 +7144,21 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
    yestext="Quit"
    notext="Don't Quit"/>
   </notification>
-
+  
+  <notification
+ name="NoPlaceInfo"
+ label=""
+ type="alertmodal"
+ unique="true">
+    <tag>fail</tag>
+    <tag>confirm</tag>
+    Viewing place profile is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen.
+    <usetemplate
+   name="okcancelbuttons"
+   yestext="Quit"
+   notext="Don't Quit"/>
+  </notification>
+  
   <notification
  name="NoPicks"
  label=""
-- 
cgit v1.2.3


From 950b74c1705cc7d72c5f05fd707ba230b00027f0 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Tue, 3 May 2011 17:12:43 -0700
Subject: EXP-778 Bring up corresponding IM window on connect to new voice
 call.

---
 indra/newview/app_settings/settings.xml         | 11 +++++++++++
 indra/newview/app_settings/settings_minimal.xml | 11 +++++++++++
 indra/newview/llchiclet.cpp                     |  4 ++++
 3 files changed, 26 insertions(+)

(limited to 'indra')

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index a9eb45b14c..f83aa20e10 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -12723,5 +12723,16 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>OpenIMOnVoice</key>
+    <map>
+      <key>Comment</key>
+      <string>Open the corresponding IM window when connecting to a voice call.</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
 </map>
 </llsd>
diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
index 1e9c3f54fd..bb022b7b11 100644
--- a/indra/newview/app_settings/settings_minimal.xml
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -446,5 +446,16 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>OpenIMOnVoice</key>
+    <map>
+      <key>Comment</key>
+      <string>Open the corresponding IM window when connecting to a voice call.</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
   </map>
 </llsd>
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 277fc9d7b9..3000209aad 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -1184,6 +1184,10 @@ void LLChicletPanel::onCurrentVoiceChannelChanged(const LLUUID& session_id)
 		if(chiclet)
 		{
 			chiclet->setShowSpeaker(true);
+			if (gSavedSettings.getBOOL("OpenIMOnVoice"))
+			{
+				LLIMFloater::show(chiclet->getSessionId());
+			}
 		}
 	}
 
-- 
cgit v1.2.3


From 45145fe7e2b6855b08b2ab94f07e852ef7ffffa3 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Tue, 3 May 2011 17:34:53 -0700
Subject: EXP-756 : Move the folder resort to first draw and do it only once

---
 indra/newview/llpanelmaininventory.cpp | 22 ++++++++++++----------
 indra/newview/llpanelmaininventory.h   |  1 +
 2 files changed, 13 insertions(+), 10 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index b9a6938492..f79a1bb5ab 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -139,6 +139,7 @@ BOOL LLPanelMainInventory::postBuild()
 		mActivePanel->getFilter()->markDefault();
 		mActivePanel->getRootFolder()->applyFunctorRecursively(*mSavedFolderState);
 		mActivePanel->setSelectCallback(boost::bind(&LLPanelMainInventory::onSelectionChange, this, mActivePanel, _1, _2));
+		mResortActivePanel = true;
 	}
 	LLInventoryPanel* recent_items_panel = getChild<LLInventoryPanel>("Recent Items");
 	if (recent_items_panel)
@@ -192,16 +193,6 @@ BOOL LLPanelMainInventory::postBuild()
 	mMenuAdd->getChild<LLMenuItemGL>("Upload Animation")->setLabelArg("[COST]", upload_cost);
 	mMenuAdd->getChild<LLMenuItemGL>("Bulk Upload")->setLabelArg("[COST]", upload_cost);
 
-	// EXP-756: Force resorting of the list: in the case of date sorting, one didn't have enough information at
-	// the beginning to correctly sort the folders. Later resort didn't do anything as the order value was 
-	// set correctly. The workaround is to reset the order to alphabetical (or anything) then to the correct order.
-	if (mActivePanel)
-	{
-		U32 order = mActivePanel->getSortOrder();
-		mActivePanel->setSortOrder(LLInventoryFilter::SO_NAME);
-		mActivePanel->setSortOrder(order);
-	}
-
 	return TRUE;
 }
 
@@ -538,6 +529,17 @@ void LLPanelMainInventory::draw()
 	{
 		mFilterEditor->setText(mFilterSubString);
 	}	
+	if (mActivePanel && mResortActivePanel)
+	{
+		// EXP-756: Force resorting of the list the first time we draw the list: 
+		// In the case of date sorting, we don't have enough information at initialization time
+		// to correctly sort the folders. Later manual resort doesn't do anything as the order value is 
+		// set correctly. The workaround is to reset the order to alphabetical (or anything) then to the correct order.
+		U32 order = mActivePanel->getSortOrder();
+		mActivePanel->setSortOrder(LLInventoryFilter::SO_NAME);
+		mActivePanel->setSortOrder(order);
+		mResortActivePanel = false;
+	}
 	LLPanel::draw();
 	updateItemcountText();
 }
diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h
index c2b78ff9ea..2b2ee1c0c9 100644
--- a/indra/newview/llpanelmaininventory.h
+++ b/indra/newview/llpanelmaininventory.h
@@ -121,6 +121,7 @@ private:
 	LLTabContainer*				mFilterTabs;
 	LLHandle<LLFloater>			mFinderHandle;
 	LLInventoryPanel*			mActivePanel;
+	bool						mResortActivePanel;
 	LLSaveFolderState*			mSavedFolderState;
 	std::string					mFilterText;
 	std::string					mFilterSubString;
-- 
cgit v1.2.3


From f3bb2e31dc6a1e8e02854a70db4ecd4cf586d4ba Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Wed, 4 May 2011 11:16:08 -0700
Subject: EXP-759 Opening the Voice preferences window from the up arrow on the
 speak button turns voice off for user without notice also causes calls to be
 ended

---
 indra/newview/llfloatersounddevices.cpp                 |  7 ++++++-
 indra/newview/llpanelvoicedevicesettings.cpp            | 17 ++++++++++++-----
 indra/newview/llpanelvoicedevicesettings.h              |  3 +++
 .../skins/default/xui/en/floater_sound_devices.xml      |  2 +-
 4 files changed, 22 insertions(+), 7 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp
index 4f3945c95f..3903b9b015 100644
--- a/indra/newview/llfloatersounddevices.cpp
+++ b/indra/newview/llfloatersounddevices.cpp
@@ -63,7 +63,12 @@ BOOL LLFloaterSoundDevices::postBuild()
 	if (mDragHandle)
 		mDragHandle->setTitleVisible(TRUE);
 	updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
-	
+
+	LLPanelVoiceDeviceSettings* panel = findChild<LLPanelVoiceDeviceSettings>("device_settings_panel");
+	if (panel)
+	{
+		panel->setUseTuningMode(false);
+	}
 	return TRUE;
 }
 
diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp
index d13f57bd6a..71bb4a5584 100644
--- a/indra/newview/llpanelvoicedevicesettings.cpp
+++ b/indra/newview/llpanelvoicedevicesettings.cpp
@@ -51,6 +51,7 @@ LLPanelVoiceDeviceSettings::LLPanelVoiceDeviceSettings()
 	mInputDevice = gSavedSettings.getString("VoiceInputAudioDevice");
 	mOutputDevice = gSavedSettings.getString("VoiceOutputAudioDevice");
 	mDevicesUpdated = FALSE;
+	mUseTuningMode = true;
 
 	// grab "live" mic volume level
 	mMicVolume = gSavedSettings.getF32("AudioLevelMic");
@@ -96,7 +97,7 @@ void LLPanelVoiceDeviceSettings::draw()
 
 	// let user know that volume indicator is not yet available
 	bool is_in_tuning_mode = LLVoiceClient::getInstance()->inTuningMode();
-	getChildView("wait_text")->setVisible( !is_in_tuning_mode);
+	getChildView("wait_text")->setVisible( !is_in_tuning_mode && mUseTuningMode);
 
 	LLPanel::draw();
 
@@ -292,14 +293,20 @@ void LLPanelVoiceDeviceSettings::initialize()
 	LLVoiceClient::getInstance()->refreshDeviceLists();
 
 	// put voice client in "tuning" mode
-	LLVoiceClient::getInstance()->tuningStart();
-	LLVoiceChannel::suspend();
+	if (mUseTuningMode)
+	{
+		LLVoiceClient::getInstance()->tuningStart();
+		LLVoiceChannel::suspend();
+	}
 }
 
 void LLPanelVoiceDeviceSettings::cleanup()
 {
-	LLVoiceClient::getInstance()->tuningStop();
-	LLVoiceChannel::resume();
+	if (mUseTuningMode)
+	{
+		LLVoiceClient::getInstance()->tuningStop();
+		LLVoiceChannel::resume();
+	}
 }
 
 void LLPanelVoiceDeviceSettings::onCommitInputDevice()
diff --git a/indra/newview/llpanelvoicedevicesettings.h b/indra/newview/llpanelvoicedevicesettings.h
index 636b8b9948..d09476d469 100644
--- a/indra/newview/llpanelvoicedevicesettings.h
+++ b/indra/newview/llpanelvoicedevicesettings.h
@@ -45,6 +45,8 @@ public:
 	void cleanup();
 
 	/*virtual*/ void handleVisibilityChange ( BOOL new_visibility );
+
+	void setUseTuningMode(bool use) { mUseTuningMode = use; };
 	
 protected:
 	void onCommitInputDevice();
@@ -56,6 +58,7 @@ protected:
 	class LLComboBox		*mCtrlInputDevices;
 	class LLComboBox		*mCtrlOutputDevices;
 	BOOL mDevicesUpdated;
+	bool mUseTuningMode;
 };
 
 #endif // LL_LLPANELVOICEDEVICESETTINGS_H
diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
index 584413c030..b5d95aeca4 100644
--- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
@@ -21,7 +21,7 @@
     follows="all"
     filename="panel_sound_devices.xml"
     name="device_settings_panel"
-    width="300"
+    width="400"
     left="2"
     top="26"
     class="panel_voice_device_settings"/>
-- 
cgit v1.2.3


From 36938bd6e28b76a845b05d10231b4f9f9f8a1b96 Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Wed, 4 May 2011 14:53:22 -0700
Subject: FIX VWR-19022 ES linguistic

---
 indra/newview/skins/default/xui/es/menu_favorites.xml             | 2 +-
 indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml   | 2 +-
 indra/newview/skins/default/xui/es/menu_teleport_history_item.xml | 2 +-
 indra/newview/skins/minimal/xui/es/menu_favorites.xml             | 2 +-
 indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml   | 2 +-
 indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/es/menu_favorites.xml b/indra/newview/skins/default/xui/es/menu_favorites.xml
index c8a7858ddb..85210d5c49 100644
--- a/indra/newview/skins/default/xui/es/menu_favorites.xml
+++ b/indra/newview/skins/default/xui/es/menu_favorites.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="Popup">
-	<menu_item_call label="Teleportarse" name="Teleport To Landmark"/>
+	<menu_item_call label="Teleportar" name="Teleport To Landmark"/>
 	<menu_item_call label="Ver/Editar el hito" name="Landmark Open"/>
 	<menu_item_call label="Copiar la SLurl" name="Copy slurl"/>
 	<menu_item_call label="Mostrar en el mapa" name="Show On Map"/>
diff --git a/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml
index bee4c61da2..82fc8ddd39 100644
--- a/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml
@@ -4,7 +4,7 @@
 	<menu_item_call label="Añadir como amigo" name="add_friend"/>
 	<menu_item_call label="MI" name="im"/>
 	<menu_item_call label="Llamada" name="call"/>
-	<menu_item_call label="Teleportarse" name="teleport"/>
+	<menu_item_call label="Teleportar" name="teleport"/>
 	<menu_item_call label="Invitar al grupo" name="invite_to_group"/>
 	<menu_item_call label="Ignorar" name="block"/>
 	<menu_item_call label="Designorar" name="unblock"/>
diff --git a/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml
index ed33c55aca..c482907812 100644
--- a/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Teleportarse" name="Teleport"/>
+	<menu_item_call label="Teleportar" name="Teleport"/>
 	<menu_item_call label="Más información" name="More Information"/>
 	<menu_item_call label="Copiar al portapapeles" name="CopyToClipboard"/>
 </context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_favorites.xml b/indra/newview/skins/minimal/xui/es/menu_favorites.xml
index c8a7858ddb..85210d5c49 100644
--- a/indra/newview/skins/minimal/xui/es/menu_favorites.xml
+++ b/indra/newview/skins/minimal/xui/es/menu_favorites.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="Popup">
-	<menu_item_call label="Teleportarse" name="Teleport To Landmark"/>
+	<menu_item_call label="Teleportar" name="Teleport To Landmark"/>
 	<menu_item_call label="Ver/Editar el hito" name="Landmark Open"/>
 	<menu_item_call label="Copiar la SLurl" name="Copy slurl"/>
 	<menu_item_call label="Mostrar en el mapa" name="Show On Map"/>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml
index ebe33cea11..b4b964d096 100644
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml
@@ -3,7 +3,7 @@
 	<menu_item_call label="Ver el perfil" name="view_profile"/>
 	<menu_item_call label="Añadir como amigo" name="add_friend"/>
 	<menu_item_call label="MI" name="im"/>
-	<menu_item_call label="Teleportarse" name="teleport"/>
+	<menu_item_call label="Teleportar" name="teleport"/>
 	<menu_item_call label="Ignorar" name="block"/>
 	<menu_item_call label="Designorar" name="unblock"/>
 	<menu_item_call label="Denunciar" name="report"/>
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml
index ed33c55aca..c482907812 100644
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml
+++ b/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Teleportarse" name="Teleport"/>
+	<menu_item_call label="Teleportar" name="Teleport"/>
 	<menu_item_call label="Más información" name="More Information"/>
 	<menu_item_call label="Copiar al portapapeles" name="CopyToClipboard"/>
 </context_menu>
-- 
cgit v1.2.3


From a34cad5f2a95bffa7fda2d67d9c7750de15a93d6 Mon Sep 17 00:00:00 2001
From: Leslie Linden <leslie@lindenlab.com>
Date: Wed, 4 May 2011 16:13:26 -0700
Subject: EXP-779 FIX -- Help > About Second Life Reports Kernel Version Twice,
 Instead of OS Version

Modified Mac OS_VERSION string to include OS X version number in addition to Kernel version info.
DARWIN llcommon build now depends on Carbon in order to provide this functionality.

Reviewed by Richard.
---
 indra/llcommon/CMakeLists.txt |  6 +++++
 indra/llcommon/llsys.cpp      | 62 ++++++++++++++++++++++++++++++++++++-------
 2 files changed, 59 insertions(+), 9 deletions(-)

(limited to 'indra')

diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 22e0705036..d3dca73db4 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -287,6 +287,12 @@ target_link_libraries(
     ${GOOGLE_PERFTOOLS_LIBRARIES}
     )
 
+if (DARWIN)
+  include(CMakeFindFrameworks)
+  find_library(CARBON_LIBRARY Carbon)
+  target_link_libraries(llcommon ${CARBON_LIBRARY})
+endif (DARWIN)
+
 add_dependencies(llcommon stage_third_party_libs)
 
 if (LL_TESTS)
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 10cdc7087b..ca2d3f9181 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -46,6 +46,7 @@
 #	include <sys/sysctl.h>
 #	include <sys/utsname.h>
 #	include <stdint.h>
+#	include <Carbon/Carbon.h>
 #elif LL_LINUX
 #	include <errno.h>
 #	include <sys/utsname.h>
@@ -318,7 +319,58 @@ LLOSInfo::LLOSInfo() :
 	}
 	mOSString += compatibility_mode;
 
+#elif LL_DARWIN
+	
+	// Initialize mOSStringSimple to something like:
+	// "Mac OS X 10.6.7"
+	{
+		const char * DARWIN_PRODUCT_NAME = "Mac OS X";
+		
+		SInt32 major_version, minor_version, bugfix_version;
+		OSErr r1 = Gestalt(gestaltSystemVersionMajor, &major_version);
+		OSErr r2 = Gestalt(gestaltSystemVersionMinor, &minor_version);
+		OSErr r3 = Gestalt(gestaltSystemVersionBugFix, &bugfix_version);
+
+		if((r1 == noErr) && (r2 == noErr) && (r3 == noErr))
+		{
+			mMajorVer = major_version;
+			mMinorVer = minor_version;
+			mBuild = bugfix_version;
+
+			std::stringstream os_version_string;
+			os_version_string << DARWIN_PRODUCT_NAME << " " << mMajorVer << "." << mMinorVer << "." << mBuild;
+			
+			// Put it in the OS string we are compiling
+			mOSStringSimple.append(os_version_string.str());
+		}
+		else
+		{
+			mOSStringSimple.append("Unable to collect OS info");
+		}
+	}
+	
+	// Initialize mOSString to something like:
+	// "Mac OS X 10.6.7 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386"
+	struct utsname un;
+	if(uname(&un) != -1)
+	{		
+		mOSString = mOSStringSimple;
+		mOSString.append(" ");
+		mOSString.append(un.sysname);
+		mOSString.append(" ");
+		mOSString.append(un.release);
+		mOSString.append(" ");
+		mOSString.append(un.version);
+		mOSString.append(" ");
+		mOSString.append(un.machine);
+	}
+	else
+	{
+		mOSString = mOSStringSimple;
+	}
+	
 #else
+	
 	struct utsname un;
 	if(uname(&un) != -1)
 	{
@@ -334,15 +386,7 @@ LLOSInfo::LLOSInfo() :
 
 		// Simplify 'Simple'
 		std::string ostype = mOSStringSimple.substr(0, mOSStringSimple.find_first_of(" ", 0));
-		if (ostype == "Darwin")
-		{
-			// Only care about major Darwin versions, truncate at first '.'
-			S32 idx1 = mOSStringSimple.find_first_of(".", 0);
-			std::string simple = mOSStringSimple.substr(0, idx1);
-			if (simple.length() > 0)
-				mOSStringSimple = simple;
-		}
-		else if (ostype == "Linux")
+		if (ostype == "Linux")
 		{
 			// Only care about major and minor Linux versions, truncate at second '.'
 			std::string::size_type idx1 = mOSStringSimple.find_first_of(".", 0);
-- 
cgit v1.2.3


From 3063c1be4105feab28e6d6abf745b5ab6043ba25 Mon Sep 17 00:00:00 2001
From: Leslie Linden <leslie@lindenlab.com>
Date: Wed, 4 May 2011 16:27:59 -0700
Subject: EXP-772 -- Log in failure, keeps saying DNS cannot resolve hostname.

No real progress on this Jira yet but Mac build was not properly reporting the CURL error string.
This check-in fixes that.

So far, I have backed out URL related changes between 2.6.2 and 2.6.3 without any change in behavior.
Unsure how to proceed next although comparing libcares and libcurl builds between 2.6.2 and 2.6.3 seems
like it could be the next logical step.

Users experiencing the problem can go back to vewere 2.6.2 or adjust DNS settings to use the google free
DNS servers 8.8.8.8 and 8.8.4.4 which should allow them to work around the problem.

Reviewed by Richard.
---
 indra/llmessage/llcurl.cpp | 8 --------
 1 file changed, 8 deletions(-)

(limited to 'indra')

diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp
index a485fa0160..9b3b24c312 100644
--- a/indra/llmessage/llcurl.cpp
+++ b/indra/llmessage/llcurl.cpp
@@ -674,15 +674,7 @@ void LLCurl::Multi::removeEasy(Easy* easy)
 //static
 std::string LLCurl::strerror(CURLcode errorcode)
 {
-#if LL_DARWIN
-	// curl_easy_strerror was added in libcurl 7.12.0.  Unfortunately, the version in the Mac OS X 10.3.9 SDK is 7.10.2...
-	// There's a problem with the custom curl headers in our build that keeps me from #ifdefing this on the libcurl version number
-	// (the correct check would be #if LIBCURL_VERSION_NUM >= 0x070c00).  We'll fix the header problem soon, but for now
-	// just punt and print the numeric error code on the Mac.
-	return llformat("%d", errorcode);
-#else // LL_DARWIN
 	return std::string(curl_easy_strerror(errorcode));
-#endif // LL_DARWIN
 }
 
 ////////////////////////////////////////////////////////////////////////////
-- 
cgit v1.2.3


From efca808b0c95aa2406960cb60a25ab90b14bde90 Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Wed, 4 May 2011 18:04:09 -0700
Subject: EXP-584 FIXED View button on bottom bar is hidden when launching
 Basic Viewer with Voice options added back in corrected order in which
 buttons are collapsed so that they collapse right to left

---
 indra/newview/llbottomtray.cpp                     | 16 ++++++++-
 indra/newview/llbottomtray.h                       | 42 +++++++++++++---------
 .../skins/minimal/xui/en/panel_bottomtray.xml      |  8 ++---
 3 files changed, 44 insertions(+), 22 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 0371b7be71..0c34261f74 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -218,7 +218,7 @@ LLBottomTray::LLBottomTray(const LLSD&)
 	mLandingTab(NULL),
 	mCheckForDrag(false)
 {
-	// Firstly add ourself to IMSession observers, so we catch session events
+	// Firstly add our self to IMSession observers, so we catch session events
 	// before chiclets do that.
 	LLIMMgr::getInstance()->addSessionObserver(this);
 
@@ -1539,21 +1539,35 @@ void LLBottomTray::initResizeStateContainers()
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_GESTURES, getChild<LLPanel>("gesture_panel")));
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, getChild<LLPanel>("movement_panel")));
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, getChild<LLPanel>("cam_panel")));
+	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_DESTINATIONS, getChild<LLPanel>("destinations_panel")));
+	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_AVATARS, getChild<LLPanel>("avatar_panel")));
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SNAPSHOT, getChild<LLPanel>("snapshot_panel")));
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_BUILD, getChild<LLPanel>("build_btn_panel")));
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SEARCH, getChild<LLPanel>("search_btn_panel")));
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_WORLD_MAP, getChild<LLPanel>("world_map_btn_panel")));
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MINI_MAP, getChild<LLPanel>("mini_map_btn_panel")));
+	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPLITTER_1, getChild<LLPanel>("splitter_panel_1")));
+	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_PEOPLE, getChild<LLPanel>("people_panel")));
+	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_PROFILE, getChild<LLPanel>("profile_panel")));
+	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPLITTER_2, getChild<LLPanel>("splitter_panel_2")));
+	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_HOWTO, getChild<LLPanel>("howto_panel")));
 
 	// init an order of processed buttons
 	mButtonsProcessOrder.push_back(RS_BUTTON_GESTURES);
 	mButtonsProcessOrder.push_back(RS_BUTTON_MOVEMENT);
 	mButtonsProcessOrder.push_back(RS_BUTTON_CAMERA);
+	mButtonsProcessOrder.push_back(RS_BUTTON_DESTINATIONS);
+	mButtonsProcessOrder.push_back(RS_BUTTON_AVATARS);
 	mButtonsProcessOrder.push_back(RS_BUTTON_SNAPSHOT);
 	mButtonsProcessOrder.push_back(RS_BUTTON_BUILD);
 	mButtonsProcessOrder.push_back(RS_BUTTON_SEARCH);
 	mButtonsProcessOrder.push_back(RS_BUTTON_WORLD_MAP);
 	mButtonsProcessOrder.push_back(RS_BUTTON_MINI_MAP);
+	mButtonsProcessOrder.push_back(RS_BUTTON_SPLITTER_1);
+	mButtonsProcessOrder.push_back(RS_BUTTON_PEOPLE);
+	mButtonsProcessOrder.push_back(RS_BUTTON_PROFILE);
+	mButtonsProcessOrder.push_back(RS_BUTTON_SPLITTER_2);
+	mButtonsProcessOrder.push_back(RS_BUTTON_HOWTO);
 
 	mButtonsOrder.push_back(RS_BUTTON_SPEAK);
 	mButtonsOrder.insert(mButtonsOrder.end(), mButtonsProcessOrder.begin(), mButtonsProcessOrder.end());
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index 04e5f5e9e0..da7f0772a9 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -144,22 +144,29 @@ public:
 
 
 private:
-	typedef enum e_resize_status_type
+	typedef enum e_resize_state
 	{
-		  RS_NORESIZE			= 0x0000
-		, RS_CHICLET_PANEL		= 0x0001
-		, RS_CHATBAR_INPUT		= 0x0002
-		, RS_BUTTON_SNAPSHOT	= 0x0004
-		, RS_BUTTON_CAMERA		= 0x0008
-		, RS_BUTTON_MOVEMENT	= 0x0010
-		, RS_BUTTON_GESTURES	= 0x0020
-		, RS_BUTTON_SPEAK		= 0x0040
-		, RS_IM_WELL			= 0x0080
-		, RS_NOTIFICATION_WELL	= 0x0100
-		, RS_BUTTON_BUILD		= 0x0200
-		, RS_BUTTON_SEARCH		= 0x0400
-		, RS_BUTTON_WORLD_MAP	= 0x0800
-		, RS_BUTTON_MINI_MAP	= 0x1000
+		RS_NORESIZE				= 0x0000,
+		RS_CHICLET_PANEL		= 0x0001,
+		RS_CHATBAR_INPUT		= 0x0002,
+		RS_BUTTON_SNAPSHOT		= 0x0004,
+		RS_BUTTON_CAMERA		= 0x0008,
+		RS_BUTTON_MOVEMENT		= 0x0010,
+		RS_BUTTON_GESTURES		= 0x0020,
+		RS_BUTTON_SPEAK			= 0x0040,
+		RS_IM_WELL				= 0x0080,
+		RS_NOTIFICATION_WELL	= 0x0100,
+		RS_BUTTON_BUILD			= 0x0200,
+		RS_BUTTON_SEARCH		= 0x0400,
+		RS_BUTTON_WORLD_MAP		= 0x0800,
+		RS_BUTTON_MINI_MAP		= 0x1000,
+		RS_BUTTON_DESTINATIONS	= 0x2000,
+		RS_BUTTON_AVATARS		= 0x4000,
+		RS_BUTTON_PEOPLE		= 0x8000,
+		RS_BUTTON_PROFILE		= 0x10000,
+		RS_BUTTON_HOWTO			= 0x20000,
+		RS_BUTTON_SPLITTER_1	= 0x40000,
+		RS_BUTTON_SPLITTER_2	= 0x80000,
 
 		/*
 		Once new button that can be hidden on resize is added don't forget to update related places:
@@ -170,10 +177,11 @@ private:
 		/**
 		 * Specifies buttons which can be hidden when bottom tray is shrunk.
 		 * They are: Gestures, Movement (Move), Camera (View), Snapshot
-		 *		new: Build, Search, Map, World Map, Mini-Map.
+		 *		new: Build, Search, Map, World Map, Mini-Map, destinations, avatars
 		 */
-		, RS_BUTTONS_CAN_BE_HIDDEN = RS_BUTTON_SNAPSHOT | RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES
+		RS_BUTTONS_CAN_BE_HIDDEN = RS_BUTTON_SNAPSHOT | RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES
 									| RS_BUTTON_BUILD | RS_BUTTON_SEARCH | RS_BUTTON_WORLD_MAP | RS_BUTTON_MINI_MAP
+									| RS_BUTTON_DESTINATIONS | RS_BUTTON_AVATARS
 	}EResizeState;
 
 	// Below are three methods that were introduced to handle drag'n'drop
diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
index a250f95e4f..afd20187c6 100644
--- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
@@ -129,7 +129,7 @@
          height="28"
          layout="topleft"
          min_width="17"
-         name="splitter_panel"
+         name="splitter_panel_1"
          user_resize="false"
          width="17">
 			<icon
@@ -149,7 +149,7 @@
 		  min_height="28"
 		  min_width="83"
 		  mouse_opaque="false"
-		  name="avatar_and_destinations_panel"
+		  name="destinations_panel"
 		  user_resize="false"
 		  width="103">
 			<bottomtray_button
@@ -180,7 +180,7 @@
 		  min_height="28"
 		  min_width="73"
 		  mouse_opaque="false"
-		  name="avatar_and_destinations_panel"
+		  name="avatar_panel"
 		  user_resize="false"
 		  width="103">
 			<bottomtray_button
@@ -208,7 +208,7 @@
 		  height="28"
 		  layout="topleft"
 		  min_width="17"
-		  name="splitter_panel"
+		  name="splitter_panel_2"
 		  user_resize="false"
 		  width="17">
 			<icon
-- 
cgit v1.2.3


From 8a1fabd5a604244bca2910cdb54fb9df22b1bba7 Mon Sep 17 00:00:00 2001
From: Leslie Linden <leslie@lindenlab.com>
Date: Thu, 5 May 2011 11:11:20 -0700
Subject: Build fix.  Added missing cases to a switch statement for bottom tray
 buttons.

Reviewed by Richard.
---
 indra/newview/llbottomtray.cpp | 46 +++++++++++++++++++++++++-----------------
 1 file changed, 28 insertions(+), 18 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index b17f7de57a..189175566e 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -1884,26 +1884,36 @@ S32 LLBottomTray::getChicletPanelShrinkHeadroom() const
 // static
 std::string LLBottomTray::resizeStateToString(EResizeState state)
 {
+	const char *rs_string = "UNKNOWN_BUTTON";
+	
 	switch (state)
 	{
-	case RS_NORESIZE:				return "RS_NORESIZE";
-	case RS_CHICLET_PANEL:			return "RS_CHICLET_PANEL";
-	case RS_CHATBAR_INPUT:			return "RS_CHATBAR_INPUT";
-	case RS_BUTTON_SNAPSHOT:		return "RS_BUTTON_SNAPSHOT";
-	case RS_BUTTON_CAMERA:			return "RS_BUTTON_CAMERA";
-	case RS_BUTTON_MOVEMENT:		return "RS_BUTTON_MOVEMENT";
-	case RS_BUTTON_GESTURES:		return "RS_BUTTON_GESTURES";
-	case RS_BUTTON_SPEAK:			return "RS_BUTTON_SPEAK";
-	case RS_IM_WELL:				return "RS_IM_WELL";
-	case RS_NOTIFICATION_WELL:		return "RS_NOTIFICATION_WELL";
-	case RS_BUTTON_BUILD:			return "RS_BUTTON_BUILD";
-	case RS_BUTTON_SEARCH:			return "RS_BUTTON_SEARCH";
-	case RS_BUTTON_WORLD_MAP:		return "RS_BUTTON_WORLD_MAP";
-	case RS_BUTTON_MINI_MAP:		return "RS_BUTTON_MINI_MAP";
-	case RS_BUTTONS_CAN_BE_HIDDEN:	return "RS_BUTTONS_CAN_BE_HIDDEN";
-	// No default to track additions.
-	}
-	return "UNKNOWN_BUTTON";
+		case RS_NORESIZE:               rs_string = "RS_NORESIZE";              break;
+		case RS_CHICLET_PANEL:          rs_string = "RS_CHICLET_PANEL";         break;
+		case RS_CHATBAR_INPUT:          rs_string = "RS_CHATBAR_INPUT";         break;
+		case RS_BUTTON_SNAPSHOT:        rs_string = "RS_BUTTON_SNAPSHOT";       break;
+		case RS_BUTTON_CAMERA:          rs_string = "RS_BUTTON_CAMERA";         break;
+		case RS_BUTTON_MOVEMENT:        rs_string = "RS_BUTTON_MOVEMENT";       break;
+		case RS_BUTTON_GESTURES:        rs_string = "RS_BUTTON_GESTURES";       break;
+		case RS_BUTTON_SPEAK:           rs_string = "RS_BUTTON_SPEAK";          break;
+		case RS_IM_WELL:                rs_string = "RS_IM_WELL";               break;
+		case RS_NOTIFICATION_WELL:      rs_string = "RS_NOTIFICATION_WELL";     break;
+		case RS_BUTTON_BUILD:           rs_string = "RS_BUTTON_BUILD";          break;
+		case RS_BUTTON_SEARCH:          rs_string = "RS_BUTTON_SEARCH";         break;
+		case RS_BUTTON_WORLD_MAP:       rs_string = "RS_BUTTON_WORLD_MAP";      break;
+		case RS_BUTTON_MINI_MAP:        rs_string = "RS_BUTTON_MINI_MAP";       break;
+		case RS_BUTTON_DESTINATIONS:    rs_string = "RS_BUTTON_DESTINATIONS";   break;
+		case RS_BUTTON_AVATARS:         rs_string = "RS_BUTTON_AVATARS";        break;
+		case RS_BUTTON_PEOPLE:          rs_string = "RS_BUTTON_PEOPLE";         break;
+		case RS_BUTTON_PROFILE:         rs_string = "RS_BUTTON_PROFILE";        break;
+		case RS_BUTTON_HOWTO:           rs_string = "RS_BUTTON_HOWTO";          break;
+		case RS_BUTTON_SPLITTER_1:      rs_string = "RS_BUTTON_SPLITTER_1";     break;
+		case RS_BUTTON_SPLITTER_2:      rs_string = "RS_BUTTON_SPLITTER_2";     break;
+		case RS_BUTTONS_CAN_BE_HIDDEN:  rs_string = "RS_BUTTONS_CAN_BE_HIDDEN"; break;
+		// No default to track additions.
+	}
+
+	return rs_string;
 }
 
 // static
-- 
cgit v1.2.3


From 343ffb9d512702fff76e542575a0eff79ea62204 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Thu, 5 May 2011 19:23:55 -0400
Subject: Remove Pth library from viewer build. This library was only needed on
 the Mac, and only with the OS X 10.4 SDK. As of October 2010, we no longer
 build the viewer with that SDK. The 10.5 SDK we're currently using directly
 supports the functionality for which we originally brought in Pth.

---
 indra/cmake/Pth.cmake                              |  21 -
 indra/llcommon/CMakeLists.txt                      |   3 -
 indra/newview/licenses-mac.txt                     | 510 ---------------------
 .../newview/skins/default/xui/en/floater_about.xml |   1 -
 indra/viewer_components/login/CMakeLists.txt       |   9 -
 5 files changed, 544 deletions(-)
 delete mode 100644 indra/cmake/Pth.cmake

(limited to 'indra')

diff --git a/indra/cmake/Pth.cmake b/indra/cmake/Pth.cmake
deleted file mode 100644
index a28f6ec696..0000000000
--- a/indra/cmake/Pth.cmake
+++ /dev/null
@@ -1,21 +0,0 @@
-# -*- cmake -*-
-include(Prebuilt)
-
-set(PTH_FIND_QUIETLY ON)
-set(PTH_FIND_REQUIRED ON)
-
-if (STANDALONE)
-#  ?? How would I construct FindPTH.cmake? This file was cloned from
-#  CURL.cmake, which uses include(FindCURL), but there's no FindCURL.cmake?
-#  include(FindPTH)
-else (STANDALONE)
-  # This library is only needed to support Boost.Coroutine, and only on Mac.
-  if (DARWIN)
-    use_prebuilt_binary(pth)
-    set(PTH_LIBRARIES pth)
-    set(PTH_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
-  else (DARWIN)
-    set(PTH_LIBRARIES)
-    set(PTH_INCLUDE_DIRS)
-  endif (DARWIN)
-endif (STANDALONE)
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 800bf8eba9..2963fa15af 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -7,7 +7,6 @@ include(00-Common)
 include(LLCommon)
 include(Linking)
 include(Boost)
-include(Pth)
 include(LLSharedLibs)
 include(GoogleBreakpad)
 include(GooglePerfTools)
@@ -18,7 +17,6 @@ include_directories(
     ${EXPAT_INCLUDE_DIRS}
     ${LLCOMMON_INCLUDE_DIRS}
     ${ZLIB_INCLUDE_DIRS}
-    ${PTH_INCLUDE_DIRS}
     )
 
 # add_executable(lltreeiterators lltreeiterators.cpp)
@@ -287,7 +285,6 @@ target_link_libraries(
     ${WINDOWS_LIBRARIES}
     ${BOOST_PROGRAM_OPTIONS_LIBRARY}
     ${BOOST_REGEX_LIBRARY}
-    ${PTH_LIBRARIES}
     ${GOOGLE_PERFTOOLS_LIBRARIES}
     )
 
diff --git a/indra/newview/licenses-mac.txt b/indra/newview/licenses-mac.txt
index 1324fa1a86..af80bff5d9 100644
--- a/indra/newview/licenses-mac.txt
+++ b/indra/newview/licenses-mac.txt
@@ -315,516 +315,6 @@ This product includes cryptographic software written by Eric Young
 Hudson (tjh@cryptsoft.com).
 
 
-===========
-Pth License
-===========
-   ____  _   _
-  |  _ \| |_| |__               ``Ian Fleming was a UNIX fan!
-  | |_) | __| '_ \                How do I know? Well, James Bond
-  |  __/| |_| | | |               had the (license to kill) number 007,
-  |_|    \__|_| |_|               i.e., he could execute anyone!''
-
-  GNU Pth - The GNU Portable Threads
-
-  LICENSE
-  =======
-
-  This library is free software; you can redistribute it and/or modify
-  it under the terms of the GNU Lesser General Public License as
-  published by the Free Software Foundation; either version 2.1 of the
-  License, or (at your option) any later version.
-
-  For some people, it is not clear, what is the real intention of the
-  author by using the GNU Lesser General Public License (LGPL) as the
-  distribution license for GNU Pth. This is, because the LGPL and the
-  GPL can be (and are often) interpreted very differently and some
-  interpretations seem to be not compatible with others. So an explicit
-  clarification for the use of the LGPL for GNU Pth from the authors
-  point of view might be useful.
-
-  The author places this library under the LGPL to make sure that it
-  can be used both commercially and non-commercially provided that
-  modifications to the code base are always donated back to the official
-  code base under the same license conditions. Please keep in mind that
-  especially using this library in code not staying under the GPL or
-  the LGPL _is_ allowed and that any taint or license creap into code
-  that uses the library is not the authors intention. It is just the
-  case that _including_ this library into the source tree of other
-  applications is a little bit more inconvinient because of the LGPL.
-  But it has to be this way for good reasons. And keep in mind that
-  inconvinient doesn't mean not allowed or even impossible.
-
-  Even if you want to use this library in some BSD-style licensed
-  packages, this _is_ possible as long as you are a little bit
-  carefully. Usually this means you have to make sure that the code is
-  still clearly separated into the source tree and that modifications to
-  this source area are done under the conditions of the LGPL. Read below
-  for more details on the conditions. Contact the author if you have
-  more questions.
-
-  The license text of the GNU Lesser General Public License follows:
-  __________________________________________________________________________
-
-                  GNU LESSER GENERAL PUBLIC LICENSE
-                       Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, non-free programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
-                  GNU LESSER GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Use a suitable shared library mechanism for linking with the
-    Library.  A suitable mechanism is one that (1) uses at run time a
-    copy of the library already present on the user's computer system,
-    rather than copying library functions into the executable, and (2)
-    will operate properly with a modified version of the library, if
-    the user installs one, as long as the modified version is
-    interface-compatible with the version that the work was made with.
-
-    c) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    d) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    e) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-
-
 =======================
 Original SSLeay License
 =======================
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index f5365be11f..6a1a600696 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -150,7 +150,6 @@ jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (U
 jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
 ogg/vorbis Copyright (C) 2001, Xiphophorus
 OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
-Pth Copyright (C) 1999-2006 Ralf S. Engelschall &lt;rse@gnu.org&gt;
 SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
 SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
 xmlrpc-epi Copyright (C) 2000 Epinions, Inc.
diff --git a/indra/viewer_components/login/CMakeLists.txt b/indra/viewer_components/login/CMakeLists.txt
index fe64926da6..7720619df3 100644
--- a/indra/viewer_components/login/CMakeLists.txt
+++ b/indra/viewer_components/login/CMakeLists.txt
@@ -9,13 +9,11 @@ endif(LL_TESTS)
 include(LLCommon)
 include(LLMath)
 include(LLXML)
-include(Pth)
 
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
     ${LLMATH_INCLUDE_DIRS}
     ${LLXML_INCLUDE_DIRS}
-    ${PTH_INCLUDE_DIRS}
     )
 
 set(login_SOURCE_FILES
@@ -42,7 +40,6 @@ target_link_libraries(lllogin
     ${LLCOMMON_LIBRARIES}
     ${LLMATH_LIBRARIES}
     ${LLXML_LIBRARIES}
-    ${PTH_LIBRARIES}
     )
 
 if(LL_TESTS)
@@ -50,11 +47,5 @@ if(LL_TESTS)
       lllogin.cpp
       )
 
-  set_source_files_properties(
-    lllogin.cpp
-    PROPERTIES
-      LL_TEST_ADDITIONAL_LIBRARIES "${PTH_LIBRARIES}"
-    )
-
   LL_ADD_PROJECT_UNIT_TESTS(lllogin "${lllogin_TEST_SOURCE_FILES}")
 endif(LL_TESTS)
-- 
cgit v1.2.3


From 165c72d576812c7adcf4cb7b2d1d359a60e14d06 Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Thu, 5 May 2011 17:32:42 -0700
Subject: FIX VWR-22356 ES layout

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

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/es/panel_region_terrain.xml b/indra/newview/skins/default/xui/es/panel_region_terrain.xml
index 903b826a0b..98b10e4895 100644
--- a/indra/newview/skins/default/xui/es/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/es/panel_region_terrain.xml
@@ -8,7 +8,7 @@
 	</text>
 	<spinner label="Nivel del agua" name="water_height_spin"/>
 	<button label="?" name="water_height_help"/>
-	<spinner label="Límite de elevación del &#10;terreno" name="terrain_raise_spin"/>
+	<spinner label="Límite de elevación &#10;del terreno" name="terrain_raise_spin"/>
 	<button label="?" name="terrain_raise_help"/>
 	<spinner label="Límite de bajada del &#10;terreno" name="terrain_lower_spin" bottom_delta="-34"/>
 	<button label="?" name="terrain_lower_help"/>
-- 
cgit v1.2.3


From f0d095086ff5bf2c231bee06064a89a8b6ef4a9b Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Thu, 5 May 2011 19:09:06 -0700
Subject: EXP-501 FIX View button on bottom bar is hidden when launching Basic
 Viewer... ignore button reordering in basic mode use preferred button
 collapse order

---
 indra/newview/app_settings/settings.xml            | 11 ++++++++
 indra/newview/app_settings/settings_minimal.xml    | 11 ++++++++
 indra/newview/llbottomtray.cpp                     | 10 +++++---
 .../skins/minimal/xui/en/panel_bottomtray.xml      | 30 +++++++++++-----------
 4 files changed, 44 insertions(+), 18 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index f83aa20e10..ac52cff49a 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -12734,5 +12734,16 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+     <key>AllowBottomTrayButtonReordering</key>
+    <map>
+      <key>Comment</key>
+      <string>Allow user to move and hide bottom tray buttons</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
 </map>
 </llsd>
diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
index bb022b7b11..9c6418b1f0 100644
--- a/indra/newview/app_settings/settings_minimal.xml
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -457,5 +457,16 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>AllowBottomTrayButtonReordering</key>
+    <map>
+      <key>Comment</key>
+      <string>Allow user to move and hide bottom tray buttons</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
   </map>
 </llsd>
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 189175566e..cad00eed14 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -745,6 +745,8 @@ void LLBottomTray::updateButtonsOrdersAfterDnD()
 
 void LLBottomTray::saveButtonsOrder()
 {
+	if (!gSavedSettings.getBOOL("AllowBottomTrayButtonReordering")) return;
+
 	std::string user_dir = gDirUtilp->getLindenUserDir();
 	if (user_dir.empty()) return;
 	
@@ -765,6 +767,8 @@ void LLBottomTray::saveButtonsOrder()
 
 void LLBottomTray::loadButtonsOrder()
 {
+	if (!gSavedSettings.getBOOL("AllowBottomTrayButtonReordering")) return;
+
 	// load per-resident sorting information
 	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME);
 
@@ -1537,9 +1541,6 @@ void LLBottomTray::initResizeStateContainers()
 	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_HOWTO, getChild<LLPanel>("howto_panel")));
 
 	// init an order of processed buttons
-	mButtonsProcessOrder.push_back(RS_BUTTON_GESTURES);
-	mButtonsProcessOrder.push_back(RS_BUTTON_MOVEMENT);
-	mButtonsProcessOrder.push_back(RS_BUTTON_CAMERA);
 	mButtonsProcessOrder.push_back(RS_BUTTON_DESTINATIONS);
 	mButtonsProcessOrder.push_back(RS_BUTTON_AVATARS);
 	mButtonsProcessOrder.push_back(RS_BUTTON_SNAPSHOT);
@@ -1552,6 +1553,9 @@ void LLBottomTray::initResizeStateContainers()
 	mButtonsProcessOrder.push_back(RS_BUTTON_PROFILE);
 	mButtonsProcessOrder.push_back(RS_BUTTON_SPLITTER_2);
 	mButtonsProcessOrder.push_back(RS_BUTTON_HOWTO);
+	mButtonsProcessOrder.push_back(RS_BUTTON_MOVEMENT);
+	mButtonsProcessOrder.push_back(RS_BUTTON_CAMERA);
+	mButtonsProcessOrder.push_back(RS_BUTTON_GESTURES);
 
 	mButtonsOrder.push_back(RS_BUTTON_SPEAK);
 	mButtonsOrder.insert(mButtonsOrder.end(), mButtonsProcessOrder.begin(), mButtonsProcessOrder.end());
diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
index 9c14edb306..237af61717 100644
--- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
@@ -47,7 +47,7 @@
          mouse_opaque="false"
 		 name="chat_bar_layout_panel"
          user_resize="true"
-         width="308" >
+         width="312" >
 			<panel
 		   name="chat_bar"
 			  filename="panel_nearby_chat_bar.xml"
@@ -108,7 +108,7 @@
           name="speak_flyout_panel"
           top_delta="0"
           user_resize="false"
-          width="20">
+          width="26">
       <button
      follows="left|right"
      width="20"
@@ -151,7 +151,7 @@
              layout="topleft"
              get_more="false"
              view_all="false"
-             left="3"
+             left="0"
              name="Gesture"
              tool_tip="Make your avatar do things"
              top="5"
@@ -174,7 +174,7 @@
          mouse_opaque="false"
          name="cam_panel"
          user_resize="false"
-         width="83">
+         width="86">
 			<bottomtray_button
               can_drag="false"
              follows="left|right"
@@ -201,15 +201,15 @@
          follows="left|right"
          height="28"
          layout="topleft"
-         min_width="17"
+         min_width="8"
          name="splitter_panel_1"
          user_resize="false"
-         width="17">
+         width="8">
 			<icon
              follows="left|bottom"
              height="18"
              width="2"
-             left="6"
+             left="0"
              image_name="Button_Separator"
              name="separator"
              top="7"/>
@@ -224,7 +224,7 @@
 		  mouse_opaque="false"
 		  name="destinations_panel"
 		  user_resize="false"
-		  width="103">
+		  width="106">
 			<bottomtray_button
 			 can_drag="false"
 			follows="left|right"
@@ -255,7 +255,7 @@
 		  mouse_opaque="false"
 		  name="avatar_panel"
 		  user_resize="false"
-		  width="103">
+		  width="106">
 			<bottomtray_button
 			 can_drag="false"
 			follows="left|right"
@@ -281,15 +281,15 @@
 		  follows="left|right"
 		  height="28"
 		  layout="topleft"
-		  min_width="17"
+		  min_width="8"
 		  name="splitter_panel_2"
 		  user_resize="false"
-		  width="17">
+		  width="8">
 			<icon
              follows="left|bottom"
              height="18"
              width="2"
-             left="6"
+             left="0"
              image_name="Button_Separator"
              name="separator"
              top="7"/>
@@ -305,7 +305,7 @@
          name="people_panel"
          top_delta="0"
          user_resize="false"
-         width="105">
+         width="106">
 			<bottomtray_button
 			   can_drag="false"
 			  follows="left|right"
@@ -338,7 +338,7 @@
 		   name="profile_panel"
 		   top_delta="0"
 		   user_resize="false"
-		   width="105">
+		   width="106">
 			<bottomtray_button
 			   can_drag="false"
 			  follows="left|right"
@@ -371,7 +371,7 @@
 		   name="howto_panel"
 		   top_delta="0"
 		   user_resize="false"
-		   width="105">
+		   width="106">
 			<bottomtray_button
 			   can_drag="false"
 			  follows="left|right"
-- 
cgit v1.2.3


From 51a72247f5ef430c9b315b9249300e6cbf7af914 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Fri, 6 May 2011 11:03:09 -0700
Subject: EXP-782 Toggling speak button while in call minimizes IM window

---
 indra/newview/llbottomtray.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

(limited to 'indra')

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index cad00eed14..5b38286cf5 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -555,8 +555,14 @@ BOOL LLBottomTray::postBuild()
 		// Localization tool doesn't understand custom buttons like <talk_button>
 		mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
 		mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
+	}	
+	else
+	{
+		LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("speak_btn"));
+		LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("flyout_btn"));
 	}
 
+
 	// Both parts of speak button should be initially disabled because
 	// it takes some time between logging in to world and connecting to voice channel.
 	getChild<LLButton>("speak_btn")->setEnabled(false);
-- 
cgit v1.2.3


From 8cd0ee8bccc7c9bc4cebf1b700a406897088949a Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Fri, 6 May 2011 11:03:38 -0700
Subject: EXP-789 Reducing size of sound device panel in Basic Mode does not
 resize elements in the panel and allows panel to be smaller than elements it
 contains

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

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
index b5d95aeca4..c7c7a05af2 100644
--- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
@@ -4,7 +4,7 @@
  border="false"
  legacy_header_height="18"
  can_minimize="true"
- can_resize="true"
+ can_resize="false"
  can_close="false"
  save_dock_state="true"
  save_visibility="true"
-- 
cgit v1.2.3


From 4015e6b3c7b4ff34bd679618f2231b2f53258db4 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Fri, 6 May 2011 11:39:22 -0700
Subject: fixing flyoutbtn name

---
 indra/newview/llbottomtray.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 5b38286cf5..c72cdfd1dc 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -559,7 +559,7 @@ BOOL LLBottomTray::postBuild()
 	else
 	{
 		LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("speak_btn"));
-		LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("flyout_btn"));
+		LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("speak_flyout_btn"));
 	}
 
 
-- 
cgit v1.2.3


From 483ceba5f492430ddd4f3b5c8c9d0fdfe12f2a6f Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Fri, 6 May 2011 13:36:08 -0700
Subject: EXP-769: "Group call requests received in Basic mode" fixing merge
 error

---
 indra/newview/app_settings/settings_minimal.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
index 9c6418b1f0..d3f0ec5dad 100644
--- a/indra/newview/app_settings/settings_minimal.xml
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -124,7 +124,7 @@
         <key>Type</key>
             <string>Boolean</string>
         <key>Value</key>
-            <integer>0</integer>
+            <integer>1</integer>
         </map>
     <key>VoiceDisableMic</key>
         <map>
-- 
cgit v1.2.3


From 4ad94507dd17602323fa19027ff5bb5bfc6bc020 Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Fri, 6 May 2011 13:39:27 -0700
Subject: EXP-623 (SUPPLEMENTAL FIX) Selecting fly option while on click to
 walk path flys avatar to end point but avatar spins and shakes when arriving
 at click point.

---
 indra/newview/llviewermessage.cpp | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 3f018fc57c..ef5968a5e2 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -5522,14 +5522,19 @@ void process_alert_core(const std::string& message, BOOL modal)
 	}
 	else
 	{
-		LLSD args;
-		std::string new_msg =LLNotifications::instance().getGlobalString(message);
+		// Hack fix for EXP-623 (blame fix on RN :)) to avoid a sim deploy
+		const std::string AUTOPILOT_CANCELED_MSG("Autopilot canceled");
+		if (message.find(AUTOPILOT_CANCELED_MSG) == std::string::npos )
+		{
+			LLSD args;
+			std::string new_msg =LLNotifications::instance().getGlobalString(message);
 
-		std::string localized_msg;
-		bool is_message_localized = LLTrans::findString(localized_msg, new_msg);
+			std::string localized_msg;
+			bool is_message_localized = LLTrans::findString(localized_msg, new_msg);
 
-		args["MESSAGE"] = is_message_localized ? localized_msg : new_msg;
-		LLNotificationsUtil::add("SystemMessageTip", args);
+			args["MESSAGE"] = is_message_localized ? localized_msg : new_msg;
+			LLNotificationsUtil::add("SystemMessageTip", args);
+		}
 	}
 }
 
-- 
cgit v1.2.3


From 099d1795e567636baa273b3411d6c264b7524964 Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Fri, 6 May 2011 15:34:01 -0700
Subject: FIX VWR-23615 en_xui_change es it resizing

---
 .../skins/default/xui/en/floater_preview_gesture.xml   |  4 ++--
 .../skins/default/xui/es/floater_preview_gesture.xml   | 18 +++++++++---------
 .../skins/default/xui/it/floater_preview_gesture.xml   |  4 ++--
 3 files changed, 13 insertions(+), 13 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
index a17cf8eea8..9f6199fada 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
@@ -120,14 +120,14 @@
      font.style="BOLD"
      name="key_label"
      top_pad="10"
-     width="150">
+     width="130">
         Shortcut Key:
     </text>
     <combo_box
      height="20"
      label="None"
      layout="topleft"
-     left_delta="154"
+     left_delta="135"
      name="modifier_combo"
      top_delta="-4"
      width="55" />
diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml
index c58eb227aa..bd13262dcd 100644
--- a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml
@@ -30,15 +30,15 @@
 	<text name="trigger_label">
 		Palabra clave:
 	</text>
-	<text left="208" name="replace_text" tool_tip="Reemplaza la/s palabra/s clave con estas palabras. Por ejemplo, si cambia la palabra clave &apos;hola&apos; por &apos;qué tal&apos;, se cambiará en el chat &apos;Quise decir hola&apos; por &apos;Quise decir qué tal&apos; en cuanto realice el gesto.">
+	<text name="replace_text" tool_tip="Reemplaza la/s palabra/s clave con estas palabras. Por ejemplo, si cambia la palabra clave &apos;hola&apos; por &apos;qué tal&apos;, se cambiará en el chat &apos;Quise decir hola&apos; por &apos;Quise decir qué tal&apos; en cuanto realice el gesto.">
 		Reemplazar por:
 	</text>
 	<line_editor name="replace_editor" tool_tip="Reemplaza la/s palabra/s clave con estas palabras. Por ejemplo, si cambia la palabra clave &apos;hola&apos; por &apos;qué tal&apos;, se cambiará en el chat &apos;Quise decir hola&apos; por &apos;Quise decir qué tal&apos; en cuanto realice el gesto."/>
 	<text name="key_label">
 		Atajo de teclado:
 	</text>
-	<combo_box label="Ninguno" left="116" name="modifier_combo" width="76"/>
-	<combo_box label="Ninguno" left_delta="80" name="key_combo" width="76"/>
+	<combo_box label="Ninguno" name="modifier_combo" width="76"/>
+	<combo_box label="Ninguno" name="key_combo" width="50"/>
 	<text name="library_label">
 		Biblioteca:
 	</text>
@@ -55,20 +55,20 @@
 	<button label="Arriba" name="up_btn"/>
 	<button label="Abajo" name="down_btn"/>
 	<button label="Quitar" name="delete_btn"/>
-	<text left="230" name="options_text" width="200">
+	<text name="options_text" width="200">
 		(opciones)
 	</text>
 	<radio_group name="animation_trigger_type">
 		<radio_item label="Empezar" name="start"/>
 		<radio_item label="Parar" name="stop"/>
 	</radio_group>
-	<check_box bottom_delta="34" label="hasta que las animaciones  estén hechas" name="wait_anim_check"/>
-	<check_box bottom_delta="-30" label="tiempo en segundos:" name="wait_time_check"/>
-	<line_editor left_delta="130" name="wait_time_editor"/>
+	<check_box label="hasta que las animaciones  estén hechas" name="wait_anim_check"/>
+	<check_box label="tiempo en segundos:" name="wait_time_check"/>
+	<line_editor name="wait_time_editor"/>
 	<text name="help_label">
 		Todos los pasos suceden a la vez, a menos que añadas pasos de espera.
 	</text>
-	<check_box label="Disponible" left="130" name="active_check" tool_tip="Los gestos disponibles pueden realizarse escribiendo en el chat su frase clave o pulsando su tecla de acceso rápido. Generalmente, los gestos pasan a no disponibles cuando hay un conflicto de teclas."/>
-	<button label="Vista previa" name="preview_btn" width="85"/>
+	<check_box label="Disponible" name="active_check" tool_tip="Los gestos disponibles pueden realizarse escribiendo en el chat su frase clave o pulsando su tecla de acceso rápido. Generalmente, los gestos pasan a no disponibles cuando hay un conflicto de teclas."/>
+	<button label="Vista previa" name="preview_btn" width="82"/>
 	<button label="Guardar" name="save_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
index 7e29db6336..2172b9848b 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
@@ -34,10 +34,10 @@
 		Sostituisci con:
 	</text>
 	<line_editor name="replace_editor" tool_tip="Sostituisci le parole chiave con questi termini. Per esempio, sostituire la parola chiave &apos;salve&apos; con &apos;ciao&apos; modificherà la chat &apos;Volevo solo dire salve&apos; in &apos;Volevo solo dire ciao&apos; e avvierà la gesture!"/>
-	<text name="key_label">
+	<text name="key_label" width="147">
 		Scorciatoia da tastiera:
 	</text>
-	<combo_box label="Nessuno" name="modifier_combo" />
+	<combo_box left_delta="150" label="Nessuno" name="modifier_combo" />
 	<combo_box label="Nessuno" name="key_combo" />
 	<text name="library_label">
 		Libreria:
-- 
cgit v1.2.3


From e0849adec775e5d73d2e3fc068fe8ba54cea443f Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Fri, 6 May 2011 16:29:40 -0700
Subject: WIP VWR-23688

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

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index 4adfe8e37f..0786a62f13 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -2730,7 +2730,7 @@ O botão será exibido quando houver espaço suficente.
 		Selecione os residentes com quem compartilhar.
 	</notification>
 	<notification name="ShareItemsConfirmation">
-		Tem certeza de que quer compartilhar os items abaixo?
+		Tem certeza de que quer compartilhar os itens abaixo?
 
 &lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
 
-- 
cgit v1.2.3


From bb781cbef7e8ce0925d57b158438270572921c9a Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Fri, 6 May 2011 17:27:50 -0700
Subject: FIX VWR-23696 remove old parameter overrides

---
 indra/newview/skins/default/xui/pt/floater_pay.xml | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/pt/floater_pay.xml b/indra/newview/skins/default/xui/pt/floater_pay.xml
index 26d5710c4a..8094ad376c 100644
--- a/indra/newview/skins/default/xui/pt/floater_pay.xml
+++ b/indra/newview/skins/default/xui/pt/floater_pay.xml
@@ -6,18 +6,18 @@
 	<string name="payee_resident">
 		Pagar residente
 	</string>
-	<text left="5" name="payee_label" width="110">
+	<text left="5" name="payee_label">
 		Pagar:
 	</text>
 	<icon name="icon_person" tool_tip="Pessoa"/>
-	<text left="115" name="payee_name">
+	<text name="payee_name">
 		Test Name That Is Extremely Long To Check Clipping
 	</text>
-	<button label="L$1" label_selected="L$1" left="112" name="fastpay 1"/>
+	<button label="L$1" label_selected="L$1" name="fastpay 1"/>
 	<button label="L$5" label_selected="L$5" name="fastpay 5"/>
-	<button label="L$10" label_selected="L$10" left="112" name="fastpay 10"/>
+	<button label="L$10" label_selected="L$10" name="fastpay 10"/>
 	<button label="L$20" label_selected="L$20" name="fastpay 20"/>
-	<text left="4" name="amount text">
+	<text name="amount text">
 		Outro valor:
 	</text>
 	<button label="Pagar" label_selected="Pagar" name="pay btn"/>
-- 
cgit v1.2.3


From 5544c184664b8604204f6a5cf2cd7b151b79a69e Mon Sep 17 00:00:00 2001
From: Eli Linden <eli@lindenlab.com>
Date: Fri, 6 May 2011 17:54:58 -0700
Subject: WIP VWR-24160 en_xui_change accommodate longest string

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

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
index 404537e1f2..cdc462109c 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -150,7 +150,7 @@
      top_pad="20" 
      left="30" 
      height="10"
-     width="180">
+     width="400">
       Enable incoming chat popups:
       </text>
     <check_box
-- 
cgit v1.2.3


From a5118ccd6721afdf4f8c71cba6007eb7be4d7c19 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Mon, 9 May 2011 09:57:02 -0400
Subject: increment viewer version to 2.6.9

---
 indra/llcommon/llversionviewer.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index 08026c38a6..79124a5a37 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -29,7 +29,7 @@
 
 const S32 LL_VERSION_MAJOR = 2;
 const S32 LL_VERSION_MINOR = 6;
-const S32 LL_VERSION_PATCH = 8;
+const S32 LL_VERSION_PATCH = 9;
 const S32 LL_VERSION_BUILD = 0;
 
 const char * const LL_CHANNEL = "Second Life Developer";
-- 
cgit v1.2.3


From 604f92fa200a72e291a53f58957792d4b281168e Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Mon, 9 May 2011 17:10:26 -0700
Subject: EXP-801 FIX Linden Research Inc text is clipped on login page in
 Basic mode (Reverted change back to original behavior - needs attention
 later)

---
 indra/newview/skins/minimal/xui/en/main_view.xml | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/skins/minimal/xui/en/main_view.xml b/indra/newview/skins/minimal/xui/en/main_view.xml
index ac5bae2f3b..6e8ad9adaf 100644
--- a/indra/newview/skins/minimal/xui/en/main_view.xml
+++ b/indra/newview/skins/minimal/xui/en/main_view.xml
@@ -8,6 +8,13 @@
  tab_stop="false" 
  name="main_view"
  width="1024">
+              <panel top="0"
+               follows="all"
+               height="768"
+               mouse_opaque="false"
+               name="login_panel_holder"
+               width="1024"/>
+
   <layout_stack border_size="0"
                 follows="all"
                 mouse_opaque="false"
@@ -90,13 +97,6 @@
                      visible="false"
                      width="500"/>
               
-              <panel top="0"
-               follows="all"
-               height="500"
-               mouse_opaque="false"
-               name="login_panel_holder"
-               width="1024"/>
-
               <panel follows="all"
 										 height="500"
 										 left="0"
-- 
cgit v1.2.3


From 64289248273fb6cca2460614d1c25663f06ff0e2 Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Mon, 9 May 2011 17:24:56 -0700
Subject: EXP-776 WIP [crashhunters] crash in LLCloudLayer::decompress EXP-777
 WIP [crashhunters] crash in LLWind::decompress added NULL check

---
 indra/newview/llviewermessage.cpp | 5 +++++
 1 file changed, 5 insertions(+)

(limited to 'indra')

diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index ef5968a5e2..0b8e5cf303 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -344,6 +344,11 @@ void process_layer_data(LLMessageSystem *mesgsys, void **user_data)
 {
 	LLViewerRegion *regionp = LLWorld::getInstance()->getRegion(mesgsys->getSender());
 
+	if(!regionp)
+	{
+		llwarns << "Invalid region for layer data." << llendl;
+		return;
+	}
 	S32 size;
 	S8 type;
 
-- 
cgit v1.2.3


From 56e471c3991c52f1aab37a82d88fc8ad9634483f Mon Sep 17 00:00:00 2001
From: Kelly Washington <kelly@lindenlab.com>
Date: Tue, 10 May 2011 08:40:00 -0700
Subject: ER-480 Viewer work for abandoned land. * Support group members with
 the right powers buying land set for sale to a group * Add dialogs for
 abandoned land related notifications.

---
 indra/newview/llfloaterbuyland.cpp                 | 14 ++++++++---
 indra/newview/llviewerparcelmgr.cpp                |  5 +++-
 .../newview/skins/default/xui/en/notifications.xml | 28 ++++++++++++++++++++++
 3 files changed, 43 insertions(+), 4 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp
index 83105ef27c..50b19a4221 100644
--- a/indra/newview/llfloaterbuyland.cpp
+++ b/indra/newview/llfloaterbuyland.cpp
@@ -459,10 +459,18 @@ void LLFloaterBuyLandUI::updateParcelInfo()
 			return;
 		}
 
-		if (!authorizedBuyer.isNull()  &&  buyer != authorizedBuyer)
+		if (!authorizedBuyer.isNull() && buyer != authorizedBuyer)
 		{
-			mCannotBuyReason = getString("set_to_sell_to_other");
-			return;
+			// Maybe the parcel is set for sale to a group we are in.
+			bool authorized_group =
+				gAgent.hasPowerInGroup(authorizedBuyer,GP_LAND_DEED)
+				&& gAgent.hasPowerInGroup(authorizedBuyer,GP_LAND_SET_SALE_INFO);
+
+			if (!authorized_group)
+			{
+				mCannotBuyReason = getString("set_to_sell_to_other");
+				return;
+			}
 		}
 	}
 	else
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index e84e4a859a..c84a14f62c 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -2200,7 +2200,10 @@ bool LLViewerParcelMgr::canAgentBuyParcel(LLParcel* parcel, bool forGroup) const
 		= parcelOwner == (forGroup ? gAgent.getGroupID() : gAgent.getID());
 	
 	bool isAuthorized
-		= (authorizeBuyer.isNull() || (gAgent.getID() == authorizeBuyer));
+			= (authorizeBuyer.isNull()
+				|| (gAgent.getID() == authorizeBuyer)
+				|| (gAgent.hasPowerInGroup(authorizeBuyer,GP_LAND_DEED)
+					&& gAgent.hasPowerInGroup(authorizeBuyer,GP_LAND_SET_SALE_INFO)));
 	
 	return isForSale && !isOwner && isAuthorized  && isEmpowered;
 }
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index c64d492612..06614dd218 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -6815,6 +6815,34 @@ Deed to group failed.
   <tag>fail</tag>
   </notification>
 
+  <notification
+   icon="notifytip.tga"
+   name="ReleaseLandThrottled"
+   type="notifytip">
+The parcel [PARCEL_NAME] can not be abandoned at this time.
+   tag>fail</tag>
+  </notification>
+	
+  <notification
+   icon="notifytip.tga"
+   name="ReleasedLandWithReclaim"
+   type="notifytip">
+The [AREA] m² parcel &apos;[PARCEL_NAME]&apos; has been released.
+
+You will have [RECLAIM_PERIOD] hours to reclaim for L$0 before it is set for sale to anyone.
+   <tag>fail</tag>
+  </notification>
+	
+  <notification
+   icon="notifytip.tga"
+   name="ReleasedLandNoReclaim"
+   type="notifytip">
+The [AREA] m² parcel &apos;[PARCEL_NAME]&apos; has been released.
+
+It is now available for purchase by anyone.
+   <tag>fail</tag>
+  </notification>
+
   <notification
    icon="notifytip.tga"
    name="AvatarRezNotification"
-- 
cgit v1.2.3