diff options
Diffstat (limited to 'indra')
57 files changed, 448 insertions, 258 deletions
| diff --git a/indra/llcommon/llavatarname.cpp b/indra/llcommon/llavatarname.cpp index ba3dd6d6b4..3206843bf4 100644 --- a/indra/llcommon/llavatarname.cpp +++ b/indra/llcommon/llavatarname.cpp @@ -106,6 +106,11 @@ std::string LLAvatarName::getCompleteName() const  std::string LLAvatarName::getLegacyName() const  { +	if (mLegacyFirstName.empty() && mLegacyLastName.empty()) // display names disabled? +	{ +		return mDisplayName; +	} +  	std::string name;  	name.reserve( mLegacyFirstName.size() + 1 + mLegacyLastName.size() );  	name = mLegacyFirstName; diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp index 82e8227ffe..12f86cf599 100644 --- a/indra/llrender/llfontgl.cpp +++ b/indra/llrender/llfontgl.cpp @@ -218,13 +218,13 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons  	switch (valign)  	{  	case TOP: -		cur_y -= mFontFreetype->getAscenderHeight(); +		cur_y -= getAscenderHeight();  		break;  	case BOTTOM: -		cur_y += mFontFreetype->getDescenderHeight(); +		cur_y += getDescenderHeight();  		break;  	case VCENTER: -		cur_y -= (mFontFreetype->getAscenderHeight() - mFontFreetype->getDescenderHeight()) / 2.f; +		cur_y -= (getAscenderHeight() - getDescenderHeight()) / 2.f;  		break;  	case BASELINE:  		// Baseline, do nothing. @@ -390,12 +390,12 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons  	//FIXME: add underline as glyph?  	if (style_to_add & UNDERLINE)  	{ -		F32 descender = mFontFreetype->getDescenderHeight(); +		F32 descender = (F32)llfloor(mFontFreetype->getDescenderHeight());  		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);  		gGL.begin(LLRender::LINES); -		gGL.vertex2f(start_x, cur_y - (descender)); -		gGL.vertex2f(cur_x, cur_y - (descender)); +		gGL.vertex2f(start_x, cur_y - descender); +		gGL.vertex2f(cur_x, cur_y - descender);  		gGL.end();  	} @@ -446,17 +446,17 @@ S32 LLFontGL::renderUTF8(const std::string &text, S32 begin_offset, S32 x, S32 y  // font metrics - override for LLFontFreetype that returns units of virtual pixels  F32 LLFontGL::getLineHeight() const  {  -	return (F32)llround(mFontFreetype->getLineHeight() / sScaleY);  +	return (F32)llceil(mFontFreetype->getLineHeight() / sScaleY);   }  F32 LLFontGL::getAscenderHeight() const  {  -	return (F32)llround(mFontFreetype->getAscenderHeight() / sScaleY);  +	return (F32)llceil(mFontFreetype->getAscenderHeight() / sScaleY);   }  F32 LLFontGL::getDescenderHeight() const  {  -	return (F32)llround(mFontFreetype->getDescenderHeight() / sScaleY);  +	return (F32)llceil(mFontFreetype->getDescenderHeight() / sScaleY);   }  S32 LLFontGL::getWidth(const std::string& utf8text) const diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 33548151fd..cedc4c0aee 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -1681,6 +1681,8 @@ LLFloater* LLFloater::getClosableFloaterFromFocus()  	{  		if (it->hasFocus())  		{ +			LLFloater& floater = *it; +			focused_floater = &floater;  			break;  		}  	} diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 95ecbb1c94..c624ae2e92 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -508,19 +508,19 @@ void LLMenuItemGL::draw( void )  	{  		if( !mDrawBoolLabel.empty() )  		{ -			mFont->render( mDrawBoolLabel.getWString(), 0, (F32)LEFT_PAD_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f) + 1.f, color, +			mFont->render( mDrawBoolLabel.getWString(), 0, (F32)LEFT_PAD_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f), color,  						   LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );  		} -		mFont->render( mLabel.getWString(), 0, (F32)LEFT_PLAIN_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f) + 1.f, color, +		mFont->render( mLabel.getWString(), 0, (F32)LEFT_PLAIN_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f), color,  					   LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );  		if( !mDrawAccelLabel.empty() )  		{ -			mFont->render( mDrawAccelLabel.getWString(), 0, (F32)getRect().mRight - (F32)RIGHT_PLAIN_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f) + 1.f, color, +			mFont->render( mDrawAccelLabel.getWString(), 0, (F32)getRect().mRight - (F32)RIGHT_PLAIN_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f), color,  						   LLFontGL::RIGHT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );  		}  		if( !mDrawBranchLabel.empty() )  		{ -			mFont->render( mDrawBranchLabel.getWString(), 0, (F32)getRect().mRight - (F32)RIGHT_PAD_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f) + 1.f, color, +			mFont->render( mDrawBranchLabel.getWString(), 0, (F32)getRect().mRight - (F32)RIGHT_PAD_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f), color,  						   LLFontGL::RIGHT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );  		}  	} diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index d232e27ef2..8aa548b974 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -1412,6 +1412,7 @@ void addPathIfExists(const std::string& new_path, std::vector<std::string>& path  bool LLNotifications::loadTemplates()  { +	llinfos << "Reading notifications template" << llendl;  	std::vector<std::string> search_paths;  	std::string skin_relative_path = gDirUtilp->getDirDelimiter() + LLUI::getSkinPath() + gDirUtilp->getDirDelimiter() + "notifications.xml"; @@ -1484,6 +1485,8 @@ bool LLNotifications::loadTemplates()  		mTemplates[notification.name] = LLNotificationTemplatePtr(new LLNotificationTemplate(notification));  	} +	llinfos << "...done" << llendl; +  	return true;  } diff --git a/indra/llui/llscrolllistcell.cpp b/indra/llui/llscrolllistcell.cpp index 9d25c7180d..b087602a56 100644 --- a/indra/llui/llscrolllistcell.cpp +++ b/indra/llui/llscrolllistcell.cpp @@ -329,7 +329,7 @@ void LLScrollListText::draw(const LLColor4& color, const LLColor4& highlight_col  		break;  	}  	mFont->render(mText.getWString(), 0,  -					start_x, 2.f, +					start_x, 0.f,  					display_color,  					mFontAlignment,  					LLFontGL::BOTTOM,  diff --git a/indra/llui/lluistring.cpp b/indra/llui/lluistring.cpp index ac69d3bf85..c4e073ccdb 100644 --- a/indra/llui/lluistring.cpp +++ b/indra/llui/lluistring.cpp @@ -128,17 +128,13 @@ void LLUIString::updateResult() const  	}  	mResult = mOrig; -	// get the defailt args + local args -	if (!mArgs || mArgs->empty()) +	// get the default args + local args +	LLStringUtil::format_map_t combined_args = LLTrans::getDefaultArgs(); +	if (mArgs && !mArgs->empty())  	{ -		LLStringUtil::format(mResult, LLTrans::getDefaultArgs()); -	} -	else -	{ -		LLStringUtil::format_map_t combined_args = LLTrans::getDefaultArgs();  		combined_args.insert(mArgs->begin(), mArgs->end()); -		LLStringUtil::format(mResult, combined_args);  	} +	LLStringUtil::format(mResult, combined_args);  }  void LLUIString::updateWResult() const diff --git a/indra/llxml/llxmlnode.cpp b/indra/llxml/llxmlnode.cpp index 2b4a0fc2a1..3d4e6f9a0b 100644 --- a/indra/llxml/llxmlnode.cpp +++ b/indra/llxml/llxmlnode.cpp @@ -631,13 +631,14 @@ bool LLXMLNode::updateNode(  	}  	//update all of node's children with updateNodes children that match name -	LLXMLNodePtr child; +	LLXMLNodePtr child = node->getFirstChild(); +	LLXMLNodePtr last_child = child;  	LLXMLNodePtr updateChild;  	for (updateChild = update_node->getFirstChild(); updateChild.notNull();   		 updateChild = updateChild->getNextSibling())  	{ -		for (child = node->getFirstChild(); child.notNull(); child = child->getNextSibling()) +		while(child.notNull())  		{  			std::string nodeName;  			std::string updateName; @@ -656,6 +657,22 @@ bool LLXMLNode::updateNode(  			if ((nodeName != "") && (updateName == nodeName))  			{  				updateNode(child, updateChild); +				last_child = child; +				child = child->getNextSibling(); +				if (child.isNull()) +				{ +					child = node->getFirstChild(); +				} +				break; +			} +			 +			child = child->getNextSibling(); +			if (child.isNull()) +			{ +				child = node->getFirstChild(); +			} +			if (child == last_child) +			{  				break;  			}  		} @@ -882,11 +899,8 @@ bool LLXMLNode::getLayeredXMLNode(LLXMLNodePtr& root,  	for (itor = paths.begin(), ++itor; itor != paths.end(); ++itor)  	{ -		std::string nodeName; -		std::string updateName; -  		std::string layer_filename = *itor; -		if(layer_filename.empty()) +		if(layer_filename.empty() || layer_filename == filename)  		{  			// no localized version of this file, that's ok, keep looking  			continue; @@ -898,6 +912,9 @@ bool LLXMLNode::getLayeredXMLNode(LLXMLNodePtr& root,  			return false;  		} +		std::string nodeName; +		std::string updateName; +  		updateRoot->getAttributeString("name", updateName);  		root->getAttributeString("name", nodeName); diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index ab20957760..4ab1d891a3 100644 --- a/indra/llxuixml/llinitparam.h +++ b/indra/llxuixml/llinitparam.h @@ -1253,15 +1253,16 @@ namespace LLInitParam  			return mValues.back();  		} -		void add(const value_t& item) +		self_t& add(const value_t& item)  		{  			param_value_t param_value;  			param_value.setValue(item);  			mValues.push_back(param_value);  			setProvided(); +			return *this;  		} -		void add(const typename name_value_lookup_t::name_t& name) +		self_t& add(const typename name_value_lookup_t::name_t& name)  		{  			value_t value; @@ -1271,6 +1272,8 @@ namespace LLInitParam  				add(value);  				mValues.back().setValueName(name);  			} + +			return *this;  		}  		// implicit conversion @@ -1441,13 +1444,14 @@ namespace LLInitParam  			return mValues.back();  		} -		void add(const value_t& item) +		self_t& add(const value_t& item)  		{  			mValues.push_back(item);  			setProvided(); +			return *this;  		} -		void add(const typename name_value_lookup_t::name_t& name) +		self_t& add(const typename name_value_lookup_t::name_t& name)  		{  			value_t value; @@ -1457,6 +1461,7 @@ namespace LLInitParam  				add(value);  				mValues.back().setValueName(name);  			} +			return *this;  		}  		// implicit conversion diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 28ba9fd704..62b8052a50 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4260,6 +4260,17 @@          <key>Value</key>          <integer>0</integer>      </map> +    <key>InventoryInboxToggleState</key> +    <map> +        <key>Comment</key> +        <string>Stores the open/closed state of inventory Received items panel</string> +        <key>Persist</key> +        <integer>1</integer> +        <key>Type</key> +        <string>Boolean</string> +        <key>Value</key> +        <integer>0</integer> +    </map>  	<key>InventoryLinking</key>  	<map>  		<key>Comment</key> diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 13b62cb019..dd7e509e8d 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -816,7 +816,10 @@ void LLAgentWearables::popWearable(const LLWearableType::EType type, U32 index)  	if (wearable)  	{  		mWearableDatas[type].erase(mWearableDatas[type].begin() + index); -		gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE); +		if (isAgentAvatarValid()) +		{ +			gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE); +		}  		wearable->setLabelUpdated();  	}  } diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp index 8024755e86..360e35f6d3 100644 --- a/indra/newview/llfilepicker.cpp +++ b/indra/newview/llfilepicker.cpp @@ -1073,8 +1073,11 @@ void LLFilePicker::chooser_responder(GtkWidget *widget, gint response, gpointer  	}  	// set the default path for this usage context. -	picker->mContextToPathMap[picker->mCurContextName] = -		gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(widget)); +	const char* cur_folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(widget)); +	if (cur_folder != NULL) +	{ +		picker->mContextToPathMap[picker->mCurContextName] = cur_folder; +	}  	gtk_widget_destroy(widget);  	gtk_main_quit(); diff --git a/indra/newview/llfloaterbuildoptions.cpp b/indra/newview/llfloaterbuildoptions.cpp index 86c1bf0534..1b65d8d683 100644 --- a/indra/newview/llfloaterbuildoptions.cpp +++ b/indra/newview/llfloaterbuildoptions.cpp @@ -41,13 +41,9 @@  // Methods  // -void commit_grid_mode(LLUICtrl *); -  LLFloaterBuildOptions::LLFloaterBuildOptions(const LLSD& key) -  : LLFloater(key), -    mComboGridMode(NULL) +  : LLFloater(key)  { -	mCommitCallbackRegistrar.add("GridOptions.gridMode", boost::bind(&commit_grid_mode,_1));  }  LLFloaterBuildOptions::~LLFloaterBuildOptions() @@ -55,45 +51,9 @@ LLFloaterBuildOptions::~LLFloaterBuildOptions()  BOOL LLFloaterBuildOptions::postBuild()  { -	mComboGridMode = getChild<LLComboBox>("combobox grid mode"); -  	return TRUE;  } -void LLFloaterBuildOptions::setGridMode(EGridMode mode) -{ -	mComboGridMode->setCurrentByIndex((S32)mode); -} - -void LLFloaterBuildOptions::updateGridMode() -{ -	if (mComboGridMode) -	{ -		S32 index = mComboGridMode->getCurrentIndex(); -		mComboGridMode->removeall(); - -		switch (mObjectSelection->getSelectType()) -		{ -		case SELECT_TYPE_HUD: -		  mComboGridMode->add(getString("grid_screen_text")); -		  mComboGridMode->add(getString("grid_local_text")); -		  break; -		case SELECT_TYPE_WORLD: -		  mComboGridMode->add(getString("grid_world_text")); -		  mComboGridMode->add(getString("grid_local_text")); -		  mComboGridMode->add(getString("grid_reference_text")); -		  break; -		case SELECT_TYPE_ATTACHMENT: -		  mComboGridMode->add(getString("grid_attachment_text")); -		  mComboGridMode->add(getString("grid_local_text")); -		  mComboGridMode->add(getString("grid_reference_text")); -		  break; -		} - -		mComboGridMode->setCurrentByIndex(index); -	} -} -  // virtual  void LLFloaterBuildOptions::onOpen(const LLSD& key)  { @@ -105,10 +65,3 @@ void LLFloaterBuildOptions::onClose(bool app_quitting)  {  	mObjectSelection = NULL;  } - -void commit_grid_mode(LLUICtrl *ctrl) -{ -	LLComboBox* combo = (LLComboBox*)ctrl; - -	LLSelectMgr::getInstance()->setGridMode((EGridMode)combo->getCurrentIndex()); -} diff --git a/indra/newview/llfloaterbuildoptions.h b/indra/newview/llfloaterbuildoptions.h index 7f3811bf1c..02c56cb6a9 100644 --- a/indra/newview/llfloaterbuildoptions.h +++ b/indra/newview/llfloaterbuildoptions.h @@ -35,7 +35,6 @@  #include "llfloater.h"  #include "llselectmgr.h" -class LLComboBox;  class LLObjectSelection;  typedef LLSafeHandle<LLObjectSelection> LLObjectSelectionHandle; @@ -44,23 +43,17 @@ class LLFloaterBuildOptions  	:	public LLFloater  {  public: -  	virtual BOOL postBuild();  	/*virtual*/ void onOpen(const LLSD& key);  	/*virtual*/	void onClose(bool app_quitting); -	void setGridMode(EGridMode mode); -	void updateGridMode(); -  private: -  	friend class LLFloaterReg;  	LLFloaterBuildOptions(const LLSD& key);  	~LLFloaterBuildOptions(); -	LLComboBox*	mComboGridMode;  	LLObjectSelectionHandle	mObjectSelection;  };  #endif diff --git a/indra/newview/llfloatermediasettings.cpp b/indra/newview/llfloatermediasettings.cpp index 895e16adef..4f2a6ec1b7 100644 --- a/indra/newview/llfloatermediasettings.cpp +++ b/indra/newview/llfloatermediasettings.cpp @@ -312,3 +312,9 @@ bool LLFloaterMediaSettings::haveValuesChanged() const  	return values_changed;  } +bool LLFloaterMediaSettings::instanceExists() +{ +	return LLFloaterReg::findTypedInstance<LLFloaterMediaSettings>("media_settings"); +} + + diff --git a/indra/newview/llfloatermediasettings.h b/indra/newview/llfloatermediasettings.h index ecc55d2cbc..1d25530986 100644 --- a/indra/newview/llfloatermediasettings.h +++ b/indra/newview/llfloatermediasettings.h @@ -45,6 +45,7 @@ public:  	/*virtual*/ void onClose(bool app_quitting);  	static LLFloaterMediaSettings* getInstance(); +	static bool instanceExists();  	static void apply();  	static void initValues( const LLSD& media_settings , bool editable);  	static void clearValues( bool editable); diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index bd5b5f4eb0..5c8f5a5cc1 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -36,6 +36,7 @@  #include "llagentcamera.h"  #include "llbutton.h"  #include "llcheckboxctrl.h" +#include "llcombobox.h"  #include "lldraghandle.h"  #include "llerror.h"  #include "llfloaterbuildoptions.h" @@ -103,6 +104,7 @@ const std::string PANEL_NAMES[LLFloaterTools::PANEL_COUNT] =  // Local prototypes +void commit_grid_mode(LLUICtrl *ctrl);  void commit_select_component(void *data);  void click_show_more(void*);  void click_popup_info(void*); @@ -252,6 +254,7 @@ BOOL	LLFloaterTools::postBuild()  	getChild<LLUICtrl>("checkbox uniform")->setValue((BOOL)gSavedSettings.getBOOL("ScaleUniform"));  	mCheckStretchTexture	= getChild<LLCheckBoxCtrl>("checkbox stretch textures");  	getChild<LLUICtrl>("checkbox stretch textures")->setValue((BOOL)gSavedSettings.getBOOL("ScaleStretchTextures")); +	mComboGridMode			= getChild<LLComboBox>("combobox grid mode");  	mCheckStretchUniformLabel = getChild<LLTextBox>("checkbox uniform label");  	// @@ -330,6 +333,7 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)  	mCheckSnapToGrid(NULL),  	mBtnGridOptions(NULL),  	mTitleMedia(NULL), +	mComboGridMode(NULL),  	mCheckStretchUniform(NULL),  	mCheckStretchTexture(NULL),  	mCheckStretchUniformLabel(NULL), @@ -386,6 +390,7 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)  	mCommitCallbackRegistrar.add("BuildTool.commitRadioMove",	boost::bind(&commit_radio_group_move,_1));  	mCommitCallbackRegistrar.add("BuildTool.commitRadioEdit",	boost::bind(&commit_radio_group_edit,_1)); +	mCommitCallbackRegistrar.add("BuildTool.gridMode",			boost::bind(&commit_grid_mode,_1));  	mCommitCallbackRegistrar.add("BuildTool.selectComponent",	boost::bind(&commit_select_component, this));  	mCommitCallbackRegistrar.add("BuildTool.gridOptions",		boost::bind(&LLFloaterTools::onClickGridOptions,this));  	mCommitCallbackRegistrar.add("BuildTool.applyToSelection",	boost::bind(&click_apply_to_selection, this)); @@ -687,6 +692,33 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)  		mRadioGroupEdit->setValue("radio select face");  	} +	if (mComboGridMode)  +	{ +		mComboGridMode->setVisible( edit_visible ); +		S32 index = mComboGridMode->getCurrentIndex(); +		mComboGridMode->removeall(); + +		switch (mObjectSelection->getSelectType()) +		{ +			case SELECT_TYPE_HUD: +				mComboGridMode->add(getString("grid_screen_text")); +				mComboGridMode->add(getString("grid_local_text")); +				break; +			case SELECT_TYPE_WORLD: +				mComboGridMode->add(getString("grid_world_text")); +				mComboGridMode->add(getString("grid_local_text")); +				mComboGridMode->add(getString("grid_reference_text")); +				break; +			case SELECT_TYPE_ATTACHMENT: +				mComboGridMode->add(getString("grid_attachment_text")); +				mComboGridMode->add(getString("grid_local_text")); +				mComboGridMode->add(getString("grid_reference_text")); +				break; +		} + +		mComboGridMode->setCurrentByIndex(index); +	} +  	// Snap to grid disabled for grab tool - very confusing  	if (mCheckSnapToGrid) mCheckSnapToGrid->setVisible( edit_visible /* || tool == LLToolGrab::getInstance() */ );  	if (mBtnGridOptions) mBtnGridOptions->setVisible( edit_visible /* || tool == LLToolGrab::getInstance() */ ); @@ -1037,6 +1069,13 @@ void LLFloaterTools::setObjectType( LLPCode pcode )  	gFocusMgr.setMouseCapture(NULL);  } +void commit_grid_mode(LLUICtrl *ctrl) +{ +	LLComboBox* combo = (LLComboBox*)ctrl; + +	LLSelectMgr::getInstance()->setGridMode((EGridMode)combo->getCurrentIndex()); +} +  void LLFloaterTools::onClickGridOptions()  { @@ -1144,7 +1183,7 @@ void LLFloaterTools::updateLandImpacts()  	childSetTextArg("remaining_capacity", "[CAPACITY_STRING]", remaining_capacity_str);  	// Update land impacts info in the weights floater -	LLFloaterObjectWeights* object_weights_floater = LLFloaterReg::getTypedInstance<LLFloaterObjectWeights>("object_weights"); +	LLFloaterObjectWeights* object_weights_floater = LLFloaterReg::findTypedInstance<LLFloaterObjectWeights>("object_weights");  	if(object_weights_floater)  	{  		object_weights_floater->updateLandImpacts(parcel); @@ -1153,6 +1192,8 @@ void LLFloaterTools::updateLandImpacts()  void LLFloaterTools::getMediaState()  { +	if (!LLFloaterMediaSettings::instanceExists()) return; +  	LLObjectSelectionHandle selected_objects =LLSelectMgr::getInstance()->getSelection();  	LLViewerObject* first_object = selected_objects->getFirstObject();  	LLTextBox* media_info = getChild<LLTextBox>("media_info"); @@ -1234,6 +1275,7 @@ void LLFloaterTools::getMediaState()  		}  	} func; +	  	// check if all faces have media(or, all dont have media)  	LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo = selected_objects->getSelectedTEValue( &func, bool_has_media ); diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h index 63ed9dc82b..7a19d093a4 100644 --- a/indra/newview/llfloatertools.h +++ b/indra/newview/llfloatertools.h @@ -33,6 +33,7 @@  class LLButton;  class LLCheckBoxCtrl; +class LLComboBox;  class LLPanelPermissions;  class LLPanelObject;  class LLPanelVolume; @@ -140,6 +141,7 @@ public:  	LLCheckBoxCtrl*	mCheckSnapToGrid;  	LLButton*		mBtnGridOptions; +	LLComboBox*		mComboGridMode;  	LLCheckBoxCtrl*	mCheckStretchUniform;  	LLCheckBoxCtrl*	mCheckStretchTexture; diff --git a/indra/newview/llfloatertranslationsettings.cpp b/indra/newview/llfloatertranslationsettings.cpp index 428a02e9f0..1a17183efd 100644 --- a/indra/newview/llfloatertranslationsettings.cpp +++ b/indra/newview/llfloatertranslationsettings.cpp @@ -293,6 +293,6 @@ void LLFloaterTranslationSettings::onBtnOK()  	gSavedSettings.setString("TranslationService", getSelectedService());  	gSavedSettings.setString("BingTranslateAPIKey", getEnteredBingKey());  	gSavedSettings.setString("GoogleTranslateAPIKey", getEnteredGoogleKey()); -	LLNearbyChatBar::getInstance()->enableTranslationCheckbox(LLTranslate::isTranslationConfigured()); +	LLNearbyChatBar::getInstance()->showTranslationCheckbox(LLTranslate::isTranslationConfigured());  	closeFloater(false);  } diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index 8d6114c887..9944a9dd3d 100644 --- a/indra/newview/llfolderviewitem.cpp +++ b/indra/newview/llfolderviewitem.cpp @@ -423,7 +423,7 @@ S32 LLFolderViewItem::arrange( S32* width, S32* height, S32 filter_generation)  		: 0;  	if (mLabelWidthDirty)  	{ -		mLabelWidth = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + getLabelFontForStyle(mLabelStyle)->getWidth(mSearchableLabel);  +		mLabelWidth = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + getLabelFontForStyle(mLabelStyle)->getWidth(mLabel) + getLabelFontForStyle(mLabelStyle)->getWidth(mLabelSuffix);   		mLabelWidthDirty = false;  	} diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp index bbf66ca750..129cddda45 100644 --- a/indra/newview/llgrouplist.cpp +++ b/indra/newview/llgrouplist.cpp @@ -123,6 +123,22 @@ BOOL LLGroupList::handleRightMouseDown(S32 x, S32 y, MASK mask)  	return handled;  } +// virtual +BOOL LLGroupList::handleDoubleClick(S32 x, S32 y, MASK mask) +{ +	BOOL handled = LLView::handleDoubleClick(x, y, mask); +	// Handle double click only for the selected item in the list, skip clicks on empty space. +	if (handled) +	{ +		if (mDoubleClickSignal) +		{ +			(*mDoubleClickSignal)(this, x, y, mask); +		} +	} + +	return handled; +} +  void LLGroupList::setNameFilter(const std::string& filter)  {  	std::string filter_upper = filter; diff --git a/indra/newview/llgrouplist.h b/indra/newview/llgrouplist.h index d7051db891..8abf14b3d0 100644 --- a/indra/newview/llgrouplist.h +++ b/indra/newview/llgrouplist.h @@ -51,6 +51,7 @@ public:  	virtual void draw(); // from LLView  	/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); // from LLView +	/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask); // from LLView  	void setNameFilter(const std::string& filter);  	void toggleIcons(); diff --git a/indra/newview/llhudrender.cpp b/indra/newview/llhudrender.cpp index 122711a86d..dff310ecf9 100644 --- a/indra/newview/llhudrender.cpp +++ b/indra/newview/llhudrender.cpp @@ -138,7 +138,7 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent,  	LLUI::translate((F32) winX*1.0f/LLFontGL::sScaleX, (F32) winY*1.0f/(LLFontGL::sScaleY), -(((F32) winZ*2.f)-1.f));  	F32 right_x; -	font.render(wstr, 0, 0, 0, color, LLFontGL::LEFT, LLFontGL::BASELINE, style, shadow, wstr.length(), 1000, &right_x); +	font.render(wstr, 0, 0, 1, color, LLFontGL::LEFT, LLFontGL::BASELINE, style, shadow, wstr.length(), 1000, &right_x);  	LLUI::popMatrix();  	gGL.popMatrix(); diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp index 24a876c59a..579b6008ae 100644 --- a/indra/newview/llhudtext.cpp +++ b/indra/newview/llhudtext.cpp @@ -227,7 +227,7 @@ void LLHUDText::renderText()  			 segment_iter != mTextSegments.end(); ++segment_iter )  		{  			const LLFontGL* fontp = segment_iter->mFont; -			y_offset -= fontp->getLineHeight(); +			y_offset -= fontp->getLineHeight() - 1; // correction factor to match legacy font metrics  			U8 style = segment_iter->mStyle;  			LLFontGL::ShadowType shadow = LLFontGL::DROP_SHADOW; @@ -480,8 +480,6 @@ void LLHUDText::updateSize()  	F32 width = 0.f;  	S32 max_lines = getMaxLines(); -	//S32 lines = (max_lines < 0) ? (S32)mTextSegments.size() : llmin((S32)mTextSegments.size(), max_lines); -	//F32 height = (F32)mFontp->getLineHeight() * (lines + mLabelSegments.size());  	S32 start_segment;  	if (max_lines < 0) start_segment = 0; @@ -491,7 +489,7 @@ void LLHUDText::updateSize()  	while (iter != mTextSegments.end())  	{  		const LLFontGL* fontp = iter->mFont; -		height += fontp->getLineHeight(); +		height += fontp->getLineHeight() - 1; // correction factor to match legacy font metrics  		width = llmax(width, llmin(iter->getWidth(fontp), HUD_TEXT_MAX_WIDTH));  		++iter;  	} diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index a856bd0bdc..e69c45de58 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2977,6 +2977,17 @@ bool LLIMMgr::isVoiceCall(const LLUUID& session_id)  	return im_session->mStartedAsIMCall;  } +void LLIMMgr::addNotifiedNonFriendSessionID(const LLUUID& session_id) +{ +	mNotifiedNonFriendSessions.insert(session_id); +} + +bool LLIMMgr::isNonFriendSessionNotified(const LLUUID& session_id) +{ +	return mNotifiedNonFriendSessions.end() != mNotifiedNonFriendSessions.find(session_id); + +} +  void LLIMMgr::noteOfflineUsers(  	const LLUUID& session_id,  	const LLDynamicArray<LLUUID>& ids) diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index b1be26a169..f07a78e2f7 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -438,6 +438,10 @@ public:  	bool isVoiceCall(const LLUUID& session_id); +	void addNotifiedNonFriendSessionID(const LLUUID& session_id); + +	bool isNonFriendSessionNotified(const LLUUID& session_id); +  private:  	/** @@ -465,6 +469,14 @@ private:  	typedef std::list <LLIMSessionObserver *> session_observers_list_t;  	session_observers_list_t mSessionObservers; +	// EXP-901 +	// If "Only friends and groups can IM me" option is ON but the user got message from non-friend, +	// the user should be notified that to be able to see this message the option should be OFF. +	// This set stores session IDs in which user was notified. Need to store this IDs so that the user +	// be notified only one time per session with non-friend. +	typedef std::set<LLUUID> notified_non_friend_sessions_t; +	notified_non_friend_sessions_t mNotifiedNonFriendSessions; +  	LLSD mPendingInvitations;  	LLSD mPendingAgentListUpdates;  }; diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index 4512c14b7a..b4224e30e6 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -124,7 +124,7 @@ BOOL LLNearbyChatBar::postBuild()  // virtual  void LLNearbyChatBar::onOpen(const LLSD& key)  { -	enableTranslationCheckbox(LLTranslate::isTranslationConfigured()); +	showTranslationCheckbox(LLTranslate::isTranslationConfigured());  }  bool LLNearbyChatBar::applyRectControl() @@ -170,9 +170,9 @@ void LLNearbyChatBar::showHistory()  	}  } -void LLNearbyChatBar::enableTranslationCheckbox(BOOL enable) +void LLNearbyChatBar::showTranslationCheckbox(BOOL show)  { -	getChild<LLUICtrl>("translate_chat_checkbox")->setEnabled(enable); +	getChild<LLUICtrl>("translate_chat_checkbox_lp")->setVisible(show);  }  void LLNearbyChatBar::draw() diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h index baf12a06ea..8547cf0bce 100644 --- a/indra/newview/llnearbychatbar.h +++ b/indra/newview/llnearbychatbar.h @@ -61,7 +61,7 @@ public:  	static void sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate);  	void showHistory(); -	void enableTranslationCheckbox(BOOL enable); +	void showTranslationCheckbox(BOOL show);  	/*virtual*/void setMinimized(BOOL b);  protected: diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp index 6105eff8ea..f792f53ac5 100644 --- a/indra/newview/llnotificationmanager.cpp +++ b/indra/newview/llnotificationmanager.cpp @@ -35,6 +35,7 @@  #include "llnotifications.h"  #include <boost/bind.hpp> +#include <boost/foreach.hpp>  using namespace LLNotificationsUI; @@ -48,6 +49,10 @@ LLNotificationManager::LLNotificationManager()  //--------------------------------------------------------------------------  LLNotificationManager::~LLNotificationManager()  { +	BOOST_FOREACH(listener_pair_t& pair, mChannelListeners) +	{ +		pair.second.disconnect(); +	}  }  //-------------------------------------------------------------------------- @@ -64,16 +69,16 @@ void LLNotificationManager::init()  	LLNotificationChannel::buildChannel("Browser", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "browser"));  	LLNotificationChannel::buildChannel("Outbox", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "outbox")); -	LLNotifications::instance().getChannel("Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("NotificationTips")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("Group Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("Alerts")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("AlertModal")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("IM Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("Offer")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); -	LLNotifications::instance().getChannel("Hints")->connectChanged(boost::bind(&LLHintHandler::processNotification, LLHintHandler::getInstance(), _1)); -	LLNotifications::instance().getChannel("Browser")->connectChanged(boost::bind(&LLBrowserNotification::processNotification, LLBrowserNotification::getInstance(), _1)); -	LLNotifications::instance().getChannel("Outbox")->connectChanged(boost::bind(&LLOutboxNotification::processNotification, LLOutboxNotification::getInstance(), _1)); +	mChannelListeners["Notifications"] = LLNotifications::instance().getChannel("Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["NotificationTips"] = LLNotifications::instance().getChannel("NotificationTips")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["Group Notifications"] = LLNotifications::instance().getChannel("Group Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["Alerts"] = LLNotifications::instance().getChannel("Alerts")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["AlertModal"] = LLNotifications::instance().getChannel("AlertModal")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["IM Notifications"] = LLNotifications::instance().getChannel("IM Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["Offer"] = LLNotifications::instance().getChannel("Offer")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); +	mChannelListeners["Hints"] = LLNotifications::instance().getChannel("Hints")->connectChanged(boost::bind(&LLHintHandler::processNotification, LLHintHandler::getInstance(), _1)); +	mChannelListeners["Browser"] = LLNotifications::instance().getChannel("Browser")->connectChanged(boost::bind(&LLBrowserNotification::processNotification, LLBrowserNotification::getInstance(), _1)); +	mChannelListeners["Outbox"] = LLNotifications::instance().getChannel("Outbox")->connectChanged(boost::bind(&LLOutboxNotification::processNotification, LLOutboxNotification::getInstance(), _1));  	mNotifyHandlers["notify"] = boost::shared_ptr<LLEventHandler>(new LLScriptHandler(NT_NOTIFY, LLSD()));  	mNotifyHandlers["notifytip"] =  boost::shared_ptr<LLEventHandler>(new LLTipHandler(NT_NOTIFY, LLSD())); @@ -92,6 +97,9 @@ bool LLNotificationManager::onNotification(const LLSD& notify)  {  	LLSysHandler* handle = NULL; +	if (LLNotifications::destroyed()) +		return false; +  	LLNotificationPtr notification = LLNotifications::instance().find(notify["id"].asUUID());  	if (!notification)  diff --git a/indra/newview/llnotificationmanager.h b/indra/newview/llnotificationmanager.h index 16e82e4cce..27b6ba1c71 100644 --- a/indra/newview/llnotificationmanager.h +++ b/indra/newview/llnotificationmanager.h @@ -28,6 +28,8 @@  #ifndef LL_LLNOTIFICATIONMANAGER_H  #define LL_LLNOTIFICATIONMANAGER_H +#include "llevents.h" +  #include "lluictrl.h"  #include "llnotificationhandler.h" @@ -47,6 +49,7 @@ class LLToast;  class LLNotificationManager : public LLSingleton<LLNotificationManager>  {  	typedef std::pair<std::string, LLEventHandler*> eventhandlers; +	typedef std::pair<const std::string, LLBoundListener> listener_pair_t;  public:	  	LLNotificationManager();	  	virtual ~LLNotificationManager(); @@ -70,6 +73,8 @@ private:  	//TODO (*)  	std::map<std::string, boost::shared_ptr<LLEventHandler> > mNotifyHandlers;  	// cruft std::map<std::string, LLChatHandler*> mChatHandlers; + +	std::map<std::string, LLBoundListener> mChannelListeners;  };  } diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp index a4f6921f98..7301b305b2 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -875,8 +875,15 @@ void LLPanelFace::getState()  			{  				getChild<LLUICtrl>("TexScaleU")->setValue(2.0f * getChild<LLUICtrl>("TexScaleU")->getValue().asReal() );  				getChild<LLUICtrl>("TexScaleV")->setValue(2.0f * getChild<LLUICtrl>("TexScaleV")->getValue().asReal() ); -			} +				// EXP-1507 (change label based on the mapping mode) +				getChild<LLUICtrl>("rpt")->setValue(getString("string repeats per meter")); +			} +			else +			if (selected_texgen == 0)  // FIXME: should not be magic numbers +			{ +				getChild<LLUICtrl>("rpt")->setValue(getString("string repeats per face")); +			}  		}  		{ diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index fbe331c7ab..f825ee3215 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -749,7 +749,10 @@ LLPanelGroupMembersSubTab::LLPanelGroupMembersSubTab()  LLPanelGroupMembersSubTab::~LLPanelGroupMembersSubTab()  { -	gSavedSettings.setString("GroupMembersSortOrder", mMembersList->getSortColumnName()); +	if (mMembersList) +	{ +		gSavedSettings.setString("GroupMembersSortOrder", mMembersList->getSortColumnName()); +	}  }  BOOL LLPanelGroupMembersSubTab::postBuildSubTab(LLView* root) diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index 058d1ad6bc..76aadcd913 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -216,6 +216,7 @@ void LLPanelLogin::addUsersWithFavoritesToUsername()  void LLPanelLogin::addFavoritesToStartLocation()  { +	// Clear the combo.  	LLComboBox* combo = getChild<LLComboBox>("start_location_combo");  	if (!combo) return;  	int num_items = combo->getItemCount(); @@ -223,6 +224,10 @@ void LLPanelLogin::addFavoritesToStartLocation()  	{  		combo->remove(i);  	} + +	// Load favorites into the combo. +	std::string user_defined_name = getChild<LLComboBox>("username_combo")->getSimple(); +	std::string canonical_user_name = canonicalize_username(user_defined_name);  	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites.xml");  	LLSD fav_llsd;  	llifstream file; @@ -232,15 +237,18 @@ void LLPanelLogin::addFavoritesToStartLocation()  	for (LLSD::map_const_iterator iter = fav_llsd.beginMap();  		iter != fav_llsd.endMap(); ++iter)  	{ -		std::string user_defined_name = getChild<LLComboBox>("username_combo")->getSimple(); -  		// The account name in stored_favorites.xml has Resident last name even if user has  		// a single word account name, so it can be compared case-insensitive with the  		// user defined "firstname lastname". -		S32 res = LLStringUtil::compareInsensitive(canonicalize_username(user_defined_name), iter->first); -		if (res != 0) continue; +		S32 res = LLStringUtil::compareInsensitive(canonical_user_name, iter->first); +		if (res != 0) +		{ +			lldebugs << "Skipping favorites for " << iter->first << llendl; +			continue; +		}  		combo->addSeparator(); +		lldebugs << "Loading favorites for " << iter->first << llendl;  		LLSD user_llsd = iter->second;  		for (LLSD::array_const_iterator iter1 = user_llsd.beginArray();  			iter1 != user_llsd.endArray(); ++iter1) diff --git a/indra/newview/llpanelvoiceeffect.cpp b/indra/newview/llpanelvoiceeffect.cpp index 4bbfec8ab7..5fec6d967d 100644 --- a/indra/newview/llpanelvoiceeffect.cpp +++ b/indra/newview/llpanelvoiceeffect.cpp @@ -123,7 +123,6 @@ void LLPanelVoiceEffect::update(bool list_updated)  	if (mVoiceEffectCombo)  	{  		LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface(); -		llassert(effect_interface);  		if (!effect_interface) return;  		if (list_updated)  		{ diff --git a/indra/newview/llsechandler_basic.cpp b/indra/newview/llsechandler_basic.cpp index 8d64c8c04f..30400a4c6a 100644 --- a/indra/newview/llsechandler_basic.cpp +++ b/indra/newview/llsechandler_basic.cpp @@ -1360,7 +1360,11 @@ void LLSecAPIBasicHandler::_writeProtectedData()  		// (even though this file isn't really secure.  Perhaps in the future  		// it may be, however.  		LLFile::remove(tmp_filename); -		throw LLProtectedDataException("Error writing Protected Data Store"); + +		// EXP-1825 crash in LLSecAPIBasicHandler::_writeProtectedData() +		// Decided throwing an exception here was overkill until we figure out why this happens +		//throw LLProtectedDataException("Error writing Protected Data Store"); +		llinfos << "LLProtectedDataException(Error writing Protected Data Store)" << llendl;  	}  	// move the temporary file to the specified file location. @@ -1369,7 +1373,11 @@ void LLSecAPIBasicHandler::_writeProtectedData()  	   (LLFile::rename(tmp_filename, mProtectedDataFilename)))  	{  		LLFile::remove(tmp_filename); -		throw LLProtectedDataException("Could not overwrite protected data store"); + +		// EXP-1825 crash in LLSecAPIBasicHandler::_writeProtectedData() +		// Decided throwing an exception here was overkill until we figure out why this happens +		//throw LLProtectedDataException("Could not overwrite protected data store"); +		llinfos << "LLProtectedDataException(Could not overwrite protected data store)" << llendl;  	}  } diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 038b18afbd..c8b67cc9ec 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -217,15 +217,17 @@ BOOL LLSidepanelInventory::postBuild()  	{  		LLLayoutStack* inv_stack = getChild<LLLayoutStack>(INVENTORY_LAYOUT_STACK_NAME); -		// Collapse inbox panel -		inv_stack->collapsePanel(getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME), true); -		  		// Set up button states and callbacks  		LLButton * inbox_button = getChild<LLButton>(INBOX_BUTTON_NAME); -		inbox_button->setToggleState(false);  		inbox_button->setCommitCallback(boost::bind(&LLSidepanelInventory::onToggleInboxBtn, this)); +		// Get the previous inbox state from "InventoryInboxToggleState" setting. +		bool is_inbox_collapsed = !inbox_button->getToggleState(); + +		// Restore the collapsed inbox panel state +		inv_stack->collapsePanel(getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME), is_inbox_collapsed); +  		// Set the inbox visible based on debug settings (final setting comes from http request below)  		enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox")); diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp index c1cc9c7bc4..f3d8de1904 100755 --- a/indra/newview/lltranslate.cpp +++ b/indra/newview/lltranslate.cpp @@ -162,10 +162,10 @@ void LLBingTranslationHandler::getTranslateURL(  	const std::string &text) const  {  	url = std::string("http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=") -		+ getAPIKey() + "&text=" + LLURI::escape(text) + "&to=" + to_lang; +		+ getAPIKey() + "&text=" + LLURI::escape(text) + "&to=" + getAPILanguageCode(to_lang);  	if (!from_lang.empty())  	{ -		url += "&from=" + from_lang; +		url += "&from=" + getAPILanguageCode(from_lang);  	}  } @@ -236,6 +236,12 @@ std::string LLBingTranslationHandler::getAPIKey()  	return gSavedSettings.getString("BingTranslateAPIKey");  } +// static +std::string LLBingTranslationHandler::getAPILanguageCode(const std::string& lang) +{ +	return lang == "zh" ? "zh-CHT" : lang; // treat Chinese as Traditional Chinese +} +  LLTranslate::TranslationReceiver::TranslationReceiver(const std::string& from_lang, const std::string& to_lang)  :	mFromLang(from_lang)  ,	mToLang(to_lang) diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h index 424bc14587..c58e1adb8c 100755 --- a/indra/newview/lltranslate.h +++ b/indra/newview/lltranslate.h @@ -157,6 +157,7 @@ public:  	/*virtual*/ bool isConfigured() const;  private:  	static std::string getAPIKey(); +	static std::string getAPILanguageCode(const std::string& lang);  };  /** diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 163581ea7f..cf52b5165b 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -1462,6 +1462,7 @@ const std::string& LLViewerInventoryItem::getName() const  class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage>  	, public LLDestroyClass<LLFavoritesOrderStorage>  { +	LOG_CLASS(LLFavoritesOrderStorage);  public:  	/**  	 * Sets sort index for specified with LLUUID favorite landmark @@ -1620,10 +1621,18 @@ void LLFavoritesOrderStorage::load()  void LLFavoritesOrderStorage::saveFavoritesSLURLs()  {  	// Do not change the file if we are not logged in yet. -	if (!LLLoginInstance::getInstance()->authSuccess()) return; +	if (!LLLoginInstance::getInstance()->authSuccess()) +	{ +		llwarns << "Cannot save favorites: not logged in" << llendl; +		return; +	}  	std::string user_dir = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, ""); -	if (user_dir.empty()) return; +	if (user_dir.empty()) +	{ +		llwarns << "Cannot save favorites: empty user dir name" << llendl; +		return; +	}  	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites.xml");  	llifstream in_file; @@ -1649,13 +1658,19 @@ void LLFavoritesOrderStorage::saveFavoritesSLURLs()  		slurls_map_t::iterator slurl_iter = mSLURLs.find(value["asset_id"]);  		if (slurl_iter != mSLURLs.end())  		{ +			lldebugs << "Saving favorite: idx=" << (*it)->getSortField() << ", SLURL=" <<  slurl_iter->second << ", value=" << value << llendl;  			value["slurl"] = slurl_iter->second;  			user_llsd[(*it)->getSortField()] = value;  		} +		else +		{ +			llwarns << "Not saving favorite " << value["name"] << ": no matching SLURL" << llendl; +		}  	}  	LLAvatarName av_name;  	LLAvatarNameCache::get( gAgentID, &av_name ); +	lldebugs << "Saved favorites for " << av_name.getLegacyName() << llendl;  	fav_llsd[av_name.getLegacyName()] = user_llsd;  	llofstream file; @@ -1674,6 +1689,7 @@ void LLFavoritesOrderStorage::removeFavoritesRecordOfUser()  	LLAvatarName av_name;  	LLAvatarNameCache::get( gAgentID, &av_name ); +	lldebugs << "Removed favorites for " << av_name.getLegacyName() << llendl;  	if (fav_llsd.has(av_name.getLegacyName()))  	{  		fav_llsd.erase(av_name.getLegacyName()); @@ -1706,6 +1722,7 @@ void LLFavoritesOrderStorage::onLandmarkLoaded(const LLUUID& asset_id, LLLandmar  void LLFavoritesOrderStorage::storeFavoriteSLURL(const LLUUID& asset_id, std::string& slurl)  { +	lldebugs << "Saving landmark SLURL: " << slurl << llendl;  	mSLURLs[asset_id] = slurl;  } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 0104d35e53..4a71e6fc8e 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -7254,12 +7254,6 @@ class LLToolsUseSelectionForGrid : public view_listener_t  		} func;  		LLSelectMgr::getInstance()->getSelection()->applyToRootObjects(&func);  		LLSelectMgr::getInstance()->setGridMode(GRID_MODE_REF_OBJECT); - -		LLFloaterBuildOptions* build_options_floater = LLFloaterReg::getTypedInstance<LLFloaterBuildOptions>("build_options"); -		if (build_options_floater && build_options_floater->getVisible()) -		{ -			build_options_floater->setGridMode(GRID_MODE_REF_OBJECT); -		}  		return true;  	}  }; diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 7e830e14bf..8ee514e7c2 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -527,8 +527,22 @@ class LLFileTakeSnapshotToDisk : public view_listener_t  									   FALSE))  		{  			gViewerWindow->playSnapshotAnimAndSound(); -			 -			LLPointer<LLImageFormatted> formatted = new LLImagePNG; +			LLPointer<LLImageFormatted> formatted; +			switch(LLFloaterSnapshot::ESnapshotFormat(gSavedSettings.getS32("SnapshotFormat"))) +			{ +			case LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG: +				formatted = new LLImageJPEG(gSavedSettings.getS32("SnapshotQuality")); +				break; +			case LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG: +				formatted = new LLImagePNG; +				break; +			case LLFloaterSnapshot::SNAPSHOT_FORMAT_BMP: +				formatted = new LLImageBMP; +				break; +			default: +				llwarns << "Unknown Local Snapshot format" << llendl; +				return true; +			}  			formatted->enableOverSize() ;  			formatted->encode(raw, 0);  			formatted->disableOverSize() ; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 3c6770df43..716f47150e 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -135,6 +135,7 @@ extern BOOL gDebugClicks;  // function prototypes  bool check_offer_throttle(const std::string& from_name, bool check_only); +bool check_asset_previewable(const LLAssetType::EType asset_type);  static void process_money_balance_reply_extended(LLMessageSystem* msg);  //inventory offer throttle globals @@ -1147,7 +1148,18 @@ bool check_offer_throttle(const std::string& from_name, bool check_only)  		}  	}  } -  + +// Return "true" if we have a preview method for that asset type, "false" otherwise +bool check_asset_previewable(const LLAssetType::EType asset_type) +{ +	return	(asset_type == LLAssetType::AT_NOTECARD)  ||  +			(asset_type == LLAssetType::AT_LANDMARK)  || +			(asset_type == LLAssetType::AT_TEXTURE)   || +			(asset_type == LLAssetType::AT_ANIMATION) || +			(asset_type == LLAssetType::AT_SCRIPT)    || +			(asset_type == LLAssetType::AT_SOUND); +} +  void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_name)  {  	for (uuid_vec_t::const_iterator obj_iter = objects.begin(); @@ -1171,7 +1183,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam  		// Either an inventory item or a category.  		const LLInventoryItem* item = dynamic_cast<const LLInventoryItem*>(obj); -		if (item) +		if (item && check_asset_previewable(asset_type))  		{  			////////////////////////////////////////////////////////////////////////////////  			// Special handling for various types. @@ -1246,6 +1258,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam  						LLFloaterReg::showInstance("preview_sound", LLSD(obj_id), take_focus);  						break;  					default: +						LL_DEBUGS("Messaging") << "No preview method for previewable asset type : " << LLAssetType::lookupHumanReadable(asset_type)  << LL_ENDL;  						break;  				}  			} @@ -2360,8 +2373,15 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  			LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL;  			bool mute_im = is_muted; -			if(accept_im_from_only_friend&&!is_friend) +			if (accept_im_from_only_friend && !is_friend)  			{ +				if (!gIMMgr->isNonFriendSessionNotified(session_id)) +				{ +					std::string message = LLTrans::getString("IM_unblock_only_groups_friends"); +					gIMMgr->addMessage(session_id, from_id, name, message); +					gIMMgr->addNotifiedNonFriendSessionID(session_id); +				} +  				mute_im = true;  			}  			if (!mute_im || is_linden)  diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 4499955dec..5730a55a9b 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -3170,12 +3170,6 @@ void LLViewerWindow::updateLayout()  		//gMenuBarView->setItemVisible("BuildTools", gFloaterTools->getVisible());  	} -	LLFloaterBuildOptions* build_options_floater = LLFloaterReg::findTypedInstance<LLFloaterBuildOptions>("build_options"); -	if (build_options_floater && build_options_floater->getVisible()) -	{ -		build_options_floater->updateGridMode(); -	} -  	// Always update console  	if(gConsole)  	{ diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index d198cd65a8..28538f7852 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -192,7 +192,7 @@               type="string"               length="1"               follows="left|top" -             height="20" +             height="18"               layout="topleft"               left_pad="2"               valign="center"  diff --git a/indra/newview/skins/default/xui/en/floater_build_options.xml b/indra/newview/skins/default/xui/en/floater_build_options.xml index 35918e9705..38428b36fc 100644 --- a/indra/newview/skins/default/xui/en/floater_build_options.xml +++ b/indra/newview/skins/default/xui/en/floater_build_options.xml @@ -1,70 +1,13 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <floater   legacy_header_height="18" - height="198" + height="170"   layout="topleft"   name="build options floater"   help_topic="build_options_floater"   save_rect="true"   title="GRID OPTIONS"   width="264"> - 	<floater.string -     name="grid_screen_text"> -        Screen -    </floater.string> -    <floater.string -     name="grid_local_text"> -        Local -    </floater.string> -    <floater.string -     name="grid_world_text"> -        World -    </floater.string> -    <floater.string -     name="grid_reference_text"> -        Reference -    </floater.string> -    <floater.string -     name="grid_attachment_text"> -        Attachment -    </floater.string> -    <text -     type="string" -     length="1" -     follows="left|top" -     height="16" -     layout="topleft" -     left="10" -     tool_tip="Grid opacity" -     name="grid_mode_label" -     top_pad="30" -     width="123"> -        Mode -    </text> -    <combo_box -     height="23" -     layout="topleft" -     left_pad="9" -     follows="left|top" -     name="combobox grid mode" -     tool_tip="Choose the type of grid ruler for positioning the object" -     top_delta="-3" -     width="108"> -      <combo_box.item -       label="World grid" -       name="World" -       value="World" /> -      <combo_box.item -       label="Local grid" -       name="Local" -       value="Local" /> -      <combo_box.item -       label="Reference grid" -       name="Reference" -       value="Reference" /> -       <combo_box.commit_callback -      function="GridOptions.gridMode"/> -    </combo_box>      <spinner       control_name="GridResolution"       follows="left|top" @@ -77,7 +20,7 @@       max_val="5"       min_val="0.01"       name="GridResolution" -     top_pad="4" +     top_pad="30"       width="200" />      <spinner       control_name="GridDrawSize" diff --git a/indra/newview/skins/default/xui/en/floater_test_textbox.xml b/indra/newview/skins/default/xui/en/floater_test_textbox.xml index 2df9bb35fe..3d1bc0edae 100644 --- a/indra/newview/skins/default/xui/en/floater_test_textbox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_textbox.xml @@ -14,15 +14,12 @@       height="90"       layout="topleft"       left="10" +     valign="bottom" +     clip="true"       top_pad="30"       width="300"> -        First line of multiple lines -Second line of multiple lines -Third line of multiple lines -Fourth line of multiple lines -Fifth line of multiple lines -    </text> -  <text +___</text> +  <!--<text      clip_partial="true"      top_pad="10"      left="10" @@ -153,7 +150,7 @@ Fifth line of multiple lines      The 华文细黑 brown fox ヒラキjumped over the lazy dog.    </text> -<!-- next column --> +--><!-- next column --><!--    <text_editor   height="50"   follows="top|left|bottom" @@ -250,5 +247,5 @@ with  multiple lines  and too many lines  to actually fit -  </text> +  </text>-->  </floater> diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index f9147ea650..2d63c94fe1 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -14,7 +14,27 @@   save_visibility="true"   sound_flags="0"   width="295"> -    <floater.string +  <floater.string +     name="grid_screen_text"> +    Screen +  </floater.string> +  <floater.string +   name="grid_local_text"> +    Local +  </floater.string> +  <floater.string +   name="grid_world_text"> +    World +  </floater.string> +  <floater.string +   name="grid_reference_text"> +    Reference +  </floater.string> +  <floater.string +   name="grid_attachment_text"> +    Attachment +  </floater.string> +  <floater.string       name="status_rotate">          Drag colored bands to rotate object      </floater.string> @@ -312,20 +332,48 @@       top_pad="0"       name="checkbox snap to grid"       width="134" /> -    <button -     left_pad="0" -     label="Options..." +    <combo_box +      height="20" +      layout="topleft" +      follows="left|top" +      name="combobox grid mode" +      tool_tip="Choose the type of grid ruler for positioning the object" +      top="83" +      left="195" +      top_pad="0" +      width="60"> +      <combo_box.item +      label="World" +      name="World" +      value="World" /> +      <combo_box.item +      label="Local" +      name="Local" +      value="Local" /> +      <combo_box.item +      label="Reference" +      name="Reference" +      value="Reference" /> +      <combo_box.commit_callback +      function="BuildTool.gridMode"/> +    </combo_box>   +   +  <button +     left="259" +     label="" +     image_selected="ForwardArrow_Press" +     image_unselected="ForwardArrow_Off"       layout="topleft"       follows="top|left"       name="Options..."       tool_tip="See more grid options"       top="83" -     right="-35" -     width="65" -     height="21" > +     width="25" +     height="20" >  	 <button.commit_callback  	     function="BuildTool.gridOptions"/>  	</button> +       <button       follows="left|top"       height="20" diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml index 8d14c974b4..b122e1bcff 100644 --- a/indra/newview/skins/default/xui/en/inspect_object.xml +++ b/indra/newview/skins/default/xui/en/inspect_object.xml @@ -90,6 +90,7 @@ L$30,000     follows="all"     font="SansSerifSmall"     height="13" +   clip="false"     name="object_media_url"     width="207"     left_pad="2" diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml index 4bf420b79f..bb942f2c81 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -174,13 +174,14 @@               width="311">              <label               follows="left|top" -             height="15" +             height="13"               layout="topleft"               left="10"               name="favorites_bar_label"               text_color="LtGray"               tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!" -             top="12" +             top="13" +	     valign="bottom"               width="102">                Favorites Bar              </label> diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml index d492f9bd68..6cfd929bc0 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml @@ -1,35 +1,63 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel - height="300"   follows="all" + height="300" + help_topic="nearby_chat"   layout="topleft"   name="nearby_chat" - help_topic="nearby_chat"   width="320"> -            <check_box -             bottom_delta="36" -             control_name="TranslateChat" -             enabled="true" -             height="16" -             label="Translate chat" -             layout="topleft" -             left="5" -             name="translate_chat_checkbox" -             width="230" /> -  <chat_history -    parse_urls="true" -    bg_readonly_color="ChatHistoryBgColor" -    bg_writeable_color="ChatHistoryBgColor" -    follows="all" -    left="5" -    top_delta="17" -    layout="topleft" -    height="260" -    name="chat_history" -    parse_highlights="true" -    text_color="ChatHistoryTextColor" -    text_readonly_color="ChatHistoryTextColor" -    right_widget_pad="5" -    left_widget_pad="0" -    width="315" /> +  <layout_stack +   follows="left|top|right" +   height="295" +   layout="topleft" +   left="0" +   name="stack" +   top="5" +   orientation="vertical" +   width="320"> +    <layout_panel +     auto_resize="false" +     height="26" +     layout="topleft" +     left_delta="0" +     name="translate_chat_checkbox_lp" +     top_delta="0" +     visible="true" +     width="313"> +      <check_box +       top="10" +       control_name="TranslateChat" +       enabled="true" +       height="16" +       label="Translate chat" +       layout="topleft" +       left="5" +       name="translate_chat_checkbox" +       width="300" /> +    </layout_panel> +    <layout_panel +     auto_resize="true" +     height="277" +     left_delta="0" +     layout="topleft" +     name="chat_history_lp" +     width="318"> +      <chat_history +       bg_readonly_color="ChatHistoryBgColor" +       bg_writeable_color="ChatHistoryBgColor" +       follows="all" +       layout="topleft" +       left="5" +       left_widget_pad="0" +       height="272" +       name="chat_history" +       parse_highlights="true" +       parse_urls="true" +       right_widget_pad="5" +       text_color="ChatHistoryTextColor" +       text_readonly_color="ChatHistoryTextColor" +       top="0" +       width="313" /> +    </layout_panel> +  </layout_stack>  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml index 9827180aa7..24882988b0 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml @@ -331,7 +331,7 @@     </text>     <radio_group       control_name="LetterKeysFocusChatBar"  -     height="20" +     height="34"       layout="topleft"       left="35"       top_pad="0"  @@ -339,7 +339,7 @@          <radio_item           label="Starts local chat"           name="radio_start_chat" -         top_delta="20"  +         top="0"            layout="topleft"           height="16"            left="0"  @@ -364,7 +364,7 @@       layout="topleft"       left="30"       name="title_afk_text" -     top_pad="15"  +     top_pad="5"        width="190">      	Away timeout:      </text> 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 1f92244eb9..b71586aab1 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -63,7 +63,7 @@        layout="topleft"        left_pad="0"        name="mute_chb_label" -      top_delta="0" +      top_delta="-1"        width="150"        wrap="true">        Mute when minimized diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml index fcba937bdb..1e06a60f55 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml @@ -73,6 +73,7 @@                       <string name="InboxLabelWithArg">Received items ([NUM])</string>                       <string name="InboxLabelNoArg">Received items</string>                       <button +                        control_name="InventoryInboxToggleState"                          label="Received items"  						font="SansSerifMedium"                          name="inbox_btn" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 3351ffe00f..54d5559efc 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -3238,6 +3238,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].  	<string name="IM_to_label">To</string>  	<string name="IM_moderator_label">(Moderator)</string>  	<string name="Saved_message">(Saved [LONG_TIMESTAMP])</string> +	<string name="IM_unblock_only_groups_friends">To see this message, you must uncheck 'Only friends and groups can call or IM me' in Preferences/Privacy.</string>  	<!-- voice calls -->  	<string name="answered_call">Your call has been answered</string> diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml index e2baba92a3..589117fe4c 100644 --- a/indra/newview/skins/default/xui/en/widgets/button.xml +++ b/indra/newview/skins/default/xui/en/widgets/button.xml @@ -21,7 +21,7 @@          font="SansSerifSmall"          hover_glow_amount="0.15"          halign="center" -        pad_bottom="3"  +        pad_bottom="2"           height="23"          scale_image="true"          handle_right_mouse="true" diff --git a/indra/newview/skins/default/xui/en/widgets/check_box.xml b/indra/newview/skins/default/xui/en/widgets/check_box.xml index cca64fad2a..8947024e45 100644 --- a/indra/newview/skins/default/xui/en/widgets/check_box.xml +++ b/indra/newview/skins/default/xui/en/widgets/check_box.xml @@ -10,7 +10,7 @@                          text_readonly_color="LabelDisabledColor"/>    <check_box.check_button name="CheckboxCtrl Button"                            left="2" -                          bottom="2" +                          bottom="1"                            width="13"                            height="13"                             commit_on_return="false" diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 0931c4ec9b..9bf755c8f8 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1047,9 +1047,13 @@ class Linux_i686Manifest(LinuxManifest):              self.path("libuuid.so.16")              self.path("libuuid.so.16.0.22")              self.path("libSDL-1.2.so.0.11.3") +            self.path("libSDL-1.2.so.0")              self.path("libdirectfb-1.4.so.5.0.4") +            self.path("libdirectfb-1.4.so.5")              self.path("libfusion-1.4.so.5.0.4") +            self.path("libfusion-1.4.so.5")              self.path("libdirect-1.4.so.5.0.4") +            self.path("libdirect-1.4.so.5")              self.path("libopenjpeg.so.1.4.0")              self.path("libopenjpeg.so.1")              self.path("libopenjpeg.so") | 
