diff options
Diffstat (limited to 'indra/newview')
46 files changed, 545 insertions, 402 deletions
| diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 62cb8380c0..6f8ccb3d11 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1495,6 +1495,7 @@ if (WINDOWS)          --actions=copy          --artwork=${ARTWORK_DIR}          --build=${CMAKE_CURRENT_BINARY_DIR} +        --buildtype=${CMAKE_BUILD_TYPE}          --configuration=${CMAKE_CFG_INTDIR}          --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}          --grid=${GRID} @@ -1565,6 +1566,7 @@ if (WINDOWS)            ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py            --artwork=${ARTWORK_DIR}            --build=${CMAKE_CURRENT_BINARY_DIR} +          --buildtype=${CMAKE_BUILD_TYPE}            --channel=${VIEWER_CHANNEL}            --configuration=${CMAKE_CFG_INTDIR}            --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} @@ -1646,6 +1648,7 @@ if (LINUX)          --arch=${ARCH}          --artwork=${ARTWORK_DIR}          --build=${CMAKE_CURRENT_BINARY_DIR} +        --buildtype=${CMAKE_BUILD_TYPE}          --channel=${VIEWER_CHANNEL}          --configuration=${CMAKE_CFG_INTDIR}          --dest=${CMAKE_CURRENT_BINARY_DIR}/packaged @@ -1691,6 +1694,7 @@ if (DARWIN)        --actions=copy        --artwork=${ARTWORK_DIR}        --build=${CMAKE_CURRENT_BINARY_DIR} +      --buildtype=${CMAKE_BUILD_TYPE}        --configuration=${CMAKE_CFG_INTDIR}        --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app        --grid=${GRID} @@ -1711,6 +1715,7 @@ if (DARWIN)          ARGS            ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py            --grid=${GRID} +          --buildtype=${CMAKE_BUILD_TYPE}            --configuration=${CMAKE_CFG_INTDIR}            --channel=${VIEWER_CHANNEL}            --login_channel=${VIEWER_LOGIN_CHANNEL} @@ -1730,6 +1735,7 @@ if (DARWIN)          ARGS            ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py            --grid=${GRID} +          --buildtype=${CMAKE_BUILD_TYPE}            --configuration=${CMAKE_CFG_INTDIR}            --channel=${VIEWER_CHANNEL}            --login_channel=${VIEWER_LOGIN_CHANNEL} diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 7d98a4b6ce..382793a497 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -3257,17 +3257,6 @@        <key>Value</key>        <real>0.75</real>      </map> -    <key>FolderIndentation</key> -    <map> -      <key>Comment</key> -      <string>Number of pixels to indent subfolders in inventory</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>S32</string> -      <key>Value</key> -      <integer>8</integer> -    </map>      <key>FolderLoadingMessageWaitTime</key>      <map>        <key>Comment</key> diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index 5f845c3721..03a8b108e2 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -1149,14 +1149,14 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI  			if (!LLPipeline::sRenderDeferred)  			{  				bump->setExplicitFormat(GL_ALPHA8, GL_ALPHA); -				bump->createGLTexture(bump->getDiscardLevel(), dst_image); +				bump->createGLTexture(0, dst_image);  			}  			else  			{  				LLPointer<LLImageRaw> nrm_image = new LLImageRaw(src->getWidth(), src->getHeight(), 4);  				generateNormalMapFromAlpha(src, nrm_image);  				bump->setExplicitFormat(GL_RGBA, GL_RGBA); -				bump->createGLTexture(bump->getDiscardLevel(), nrm_image); +				bump->createGLTexture(0, nrm_image);  			} diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index 7d8bb6e104..4fa97e789b 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -314,7 +314,7 @@ void LLFastTimerView::draw()  	S32 left, top, right, bottom;  	S32 x, y, barw, barh, dx, dy;  	S32 texth, textw; -	LLPointer<LLUIImage> box_imagep = LLUI::getUIImage("rounded_square.tga"); +	LLPointer<LLUIImage> box_imagep = LLUI::getUIImage("Rounded_Square");  	// Draw the window background  	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 9cae6f0ebd..1287e14961 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -1269,18 +1269,15 @@ void LLFloaterTools::getMediaState()  // called when a user wants to add media to a prim or prim face  void LLFloaterTools::onClickBtnAddMedia()  { -	// check for the edit tool and now many faces are selected -	LLTool *tool = LLToolMgr::getInstance()->getCurrentTool(); -	if((tool != LLToolFace::getInstance()) || LLSelectMgr::getInstance()->getSelection()->isMultipleTESelected()) +	// check if multiple faces are selected +	if(LLSelectMgr::getInstance()->getSelection()->isMultipleTESelected())  	{ -		LLNotificationsUtil::add("MultipleFacesSelected",LLSD(), LLSD(), multipleFacesSelectedConfirm); -		 +		LLNotificationsUtil::add("MultipleFacesSelected", LLSD(), LLSD(), multipleFacesSelectedConfirm);  	}  	else  	{  		onClickBtnEditMedia();  	} -  }  // static diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 1ea5868491..9aed403991 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -206,7 +206,9 @@ LLFolderView::LLFolderView(const Params& p)  	mAutoOpenCandidate = NULL;  	mAutoOpenTimer.stop();  	mKeyboardSelection = FALSE; -    static LLUICachedControl<S32> indentation("FolderIndentation", 0); +	const LLFolderViewItem::Params& item_params = +		LLUICtrlFactory::getDefaultParams<LLFolderViewItem>(); +	S32 indentation = item_params.folder_indentation();  	mIndentation = -indentation; // children start at indentation 0  	gIdleCallbacks.addFunction(idle, this); @@ -395,7 +397,7 @@ S32 LLFolderView::arrange( S32* unused_width, S32* unused_height, S32 filter_gen  		getRoot()->getFilter()->getShowFolderState();  	S32 total_width = LEFT_PAD; -	S32 running_height = mDebugFilters ? llceil(sSmallFont->getLineHeight()) : 0; +	S32 running_height = mDebugFilters ? llceil(LLFontGL::getFontMonospace()->getLineHeight()) : 0;  	S32 target_height = running_height;  	S32 parent_item_height = getRect().getHeight(); @@ -867,8 +869,8 @@ void LLFolderView::draw()  	{  		std::string current_filter_string = llformat("Current Filter: %d, Least Filter: %d, Auto-accept Filter: %d",  										mFilter->getCurrentGeneration(), mFilter->getMinRequiredGeneration(), mFilter->getMustPassGeneration()); -		sSmallFont->renderUTF8(current_filter_string, 0, 2,  -			getRect().getHeight() - sSmallFont->getLineHeight(), LLColor4(0.5f, 0.5f, 0.8f, 1.f),  +		LLFontGL::getFontMonospace()->renderUTF8(current_filter_string, 0, 2,  +			getRect().getHeight() - LLFontGL::getFontMonospace()->getLineHeight(), LLColor4(0.5f, 0.5f, 0.8f, 1.f),   			LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );  	} diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index 9d54aafd67..2363f51d80 100644 --- a/indra/newview/llfolderviewitem.cpp +++ b/indra/newview/llfolderviewitem.cpp @@ -51,11 +51,10 @@  /// Class LLFolderViewItem  ///---------------------------------------------------------------------------- +static LLDefaultChildRegistry::Register<LLFolderViewItem> r("folder_view_item"); +  // statics   std::map<U8, LLFontGL*> LLFolderViewItem::sFonts; // map of styles to fonts -const LLFontGL* LLFolderViewItem::sSmallFont = NULL; -LLUIImagePtr LLFolderViewItem::sArrowImage; -LLUIImagePtr LLFolderViewItem::sBoxImage;  // only integers can be initialized in header  const F32 LLFolderViewItem::FOLDER_CLOSE_TIME_CONSTANT = 0.02f; @@ -84,33 +83,34 @@ LLFontGL* LLFolderViewItem::getLabelFontForStyle(U8 style)  //static  void LLFolderViewItem::initClass()  { -	sSmallFont = LLFontGL::getFontMonospace(); -	sArrowImage = LLUI::getUIImage("folder_arrow.tga");  -	sBoxImage = LLUI::getUIImage("rounded_square.tga");  }  //static  void LLFolderViewItem::cleanupClass()  {  	sFonts.clear(); -	sArrowImage = NULL; -	sBoxImage = NULL;  }  // NOTE: Optimize this, we call it a *lot* when opening a large inventory  LLFolderViewItem::Params::Params() -:	icon("icon"), -	folder_arrow_image("folder_arrow_image", LLUI::getUIImage("folder_arrow.tga")), -	selection_image("selection_image", LLUI::getUIImage("rounded_square.tga")) +:	icon(), +	icon_open(), +	root(), +	listener(), +	folder_arrow_image("folder_arrow_image"), +	folder_indentation("folder_indentation"), +	selection_image("selection_image"), +	item_height("item_height"), +	item_top_pad("item_top_pad"), +	creation_date()  {  	mouse_opaque(true);  	follows.flags(FOLLOWS_LEFT|FOLLOWS_TOP|FOLLOWS_RIGHT); -	// JAMESDEBUG tab_stop(false);  }  // Default constructor -LLFolderViewItem::LLFolderViewItem(LLFolderViewItem::Params p) +LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p)  :	LLView(p),  	mLabelWidth(0),  	mLabelWidthDirty(false), @@ -121,6 +121,7 @@ LLFolderViewItem::LLFolderViewItem(LLFolderViewItem::Params p)  	mLabelStyle( LLFontGL::NORMAL ),  	mHasVisibleChildren(FALSE),  	mIndentation(0), +	mItemHeight(p.item_height),  	mNumDescendantsSelected(0),  	mPassedFilter(FALSE),  	mLastFilterGeneration(-1), @@ -134,8 +135,6 @@ LLFolderViewItem::LLFolderViewItem(LLFolderViewItem::Params p)  	mIcon(p.icon),  	mIconOpen(p.icon_open),  	mListener(p.listener), -	mArrowImage(p.folder_arrow_image), -	mBoxImage(p.selection_image),  	mHidden(false),  	mShowLoadStatus(false)  { @@ -392,10 +391,11 @@ BOOL LLFolderViewItem::addToFolder(LLFolderViewFolder* folder, LLFolderView* roo  // makes sure that this view and it's children are the right size.  S32 LLFolderViewItem::arrange( S32* width, S32* height, S32 filter_generation)  { -    static LLUICachedControl<S32> indentation("FolderIndentation", 0); +	const Params& p = LLUICtrlFactory::getDefaultParams<LLFolderViewItem>(); +	S32 indentation = p.folder_indentation(); +	// Only indent deeper items in hierarchy  	mIndentation = (getParentFolder()  -					&& getParentFolder()->getParentFolder()  -					&& getParentFolder()->getParentFolder()->getParentFolder()) +					&& getParentFolder()->getParentFolder() )  		? mParentFolder->getIndentation() + indentation  		: 0;  	if (mLabelWidthDirty) @@ -421,9 +421,10 @@ S32 LLFolderViewItem::getItemHeight()  {  	if (mHidden) return 0; -	S32 icon_height = mIcon->getHeight(); -	S32 label_height = llround(getLabelFontForStyle(mLabelStyle)->getLineHeight()); -	return llmax( icon_height, label_height ) + ICON_PAD; +	//S32 icon_height = mIcon->getHeight(); +	//S32 label_height = llround(getLabelFontForStyle(mLabelStyle)->getLineHeight()); +	//return llmax( icon_height, label_height ) + ICON_PAD; +	return mItemHeight;  }  void LLFolderViewItem::filter( LLInventoryFilter& filter) @@ -829,11 +830,16 @@ void LLFolderViewItem::draw()  	static LLUIColor sFgColor = LLUIColorTable::instance().getColor("MenuItemEnabledColor", DEFAULT_WHITE);  	static LLUIColor sHighlightBgColor = LLUIColorTable::instance().getColor("MenuItemHighlightBgColor", DEFAULT_WHITE);  	static LLUIColor sHighlightFgColor = LLUIColorTable::instance().getColor("MenuItemHighlightFgColor", DEFAULT_WHITE); +	static LLUIColor sFocusOutlineColor = +		LLUIColorTable::instance().getColor("InventoryFocusOutlineColor", DEFAULT_WHITE);  	static LLUIColor sFilterBGColor = LLUIColorTable::instance().getColor("FilterBackgroundColor", DEFAULT_WHITE);  	static LLUIColor sFilterTextColor = LLUIColorTable::instance().getColor("FilterTextColor", DEFAULT_WHITE);  	static LLUIColor sSuffixColor = LLUIColorTable::instance().getColor("InventoryItemSuffixColor", DEFAULT_WHITE);  	static LLUIColor sSearchStatusColor = LLUIColorTable::instance().getColor("InventorySearchStatusColor", DEFAULT_WHITE); +	const Params& default_params = LLUICtrlFactory::getDefaultParams<LLFolderViewItem>(); +	const S32 TOP_PAD = default_params.item_top_pad; +  	bool possibly_has_children = false;  	bool up_to_date = mListener && mListener->isUpToDate();  	if((up_to_date && hasVisibleChildren() ) || // we fetched our children and some of them have passed the filter... @@ -843,11 +849,10 @@ void LLFolderViewItem::draw()  	}  	if(/*mControlLabel[0] != '\0' && */possibly_has_children)  	{ -		if (sArrowImage) -		{ -			gl_draw_scaled_rotated_image(mIndentation, getRect().getHeight() - ARROW_SIZE - TEXT_PAD, -				ARROW_SIZE, ARROW_SIZE, mControlLabelRotation, sArrowImage->getImage(), sFgColor); -		} +		LLUIImage* arrow_image = default_params.folder_arrow_image; +		gl_draw_scaled_rotated_image( +			mIndentation, getRect().getHeight() - ARROW_SIZE - TEXT_PAD - TOP_PAD, +			ARROW_SIZE, ARROW_SIZE, mControlLabelRotation, arrow_image->getImage(), sFgColor);  	}  	F32 text_left = (F32)(ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + mIndentation); @@ -857,6 +862,10 @@ void LLFolderViewItem::draw()  	// If we have keyboard focus, draw selection filled  	BOOL show_context = getRoot()->getShowSelectionContext();  	BOOL filled = show_context || (getRoot()->getParentPanel()->hasFocus()); +	const S32 FOCUS_LEFT = 1; +	S32 focus_top = getRect().getHeight(); +	S32 focus_bottom = getRect().getHeight() - mItemHeight; +	bool folder_open = (getRect().getHeight() > mItemHeight + 4);  	// always render "current" item, only render other selected items if  	// mShowSingleSelection is FALSE @@ -864,7 +873,6 @@ void LLFolderViewItem::draw()  	{  		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);  		LLColor4 bg_color = sHighlightBgColor; -		//const S32 TRAILING_PAD = 5;  // It just looks better with this.  		if (!mIsCurSelection)  		{  			// do time-based fade of extra objects @@ -882,35 +890,35 @@ void LLFolderViewItem::draw()  		}  		gl_rect_2d( -			0,  -			getRect().getHeight(),  +			FOCUS_LEFT, +			focus_top,   			getRect().getWidth() - 2, -			llfloor(getRect().getHeight() - font->getLineHeight() - ICON_PAD), +			focus_bottom,  			bg_color, filled);  		if (mIsCurSelection)  		{  			gl_rect_2d( -				0,  -				getRect().getHeight(),  +				FOCUS_LEFT,  +				focus_top,   				getRect().getWidth() - 2, -				llfloor(getRect().getHeight() - font->getLineHeight() - ICON_PAD), -				sHighlightFgColor, FALSE); +				focus_bottom, +				sFocusOutlineColor, FALSE);  		} -		if (getRect().getHeight() > llround(font->getLineHeight()) + ICON_PAD + 4) +		if (folder_open)  		{  			gl_rect_2d( -				0,  -				llfloor(getRect().getHeight() - font->getLineHeight() - ICON_PAD) - 4,  +				FOCUS_LEFT, +				focus_bottom + 1, // overlap with bottom edge of above rect  				getRect().getWidth() - 2, -				2, -				sHighlightFgColor, FALSE); +				0, +				sFocusOutlineColor, FALSE);  			if (show_context)  			{  				gl_rect_2d( -					0,  -					llfloor(getRect().getHeight() - font->getLineHeight() - ICON_PAD) - 4,  +					FOCUS_LEFT, +					focus_bottom + 1,  					getRect().getWidth() - 2, -					2, +					0,  					sHighlightBgColor, TRUE);  			}  		} @@ -919,32 +927,32 @@ void LLFolderViewItem::draw()  	{  		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);  		gl_rect_2d( -			0,  -			getRect().getHeight(),  +			FOCUS_LEFT,  +			focus_top,   			getRect().getWidth() - 2, -			llfloor(getRect().getHeight() - font->getLineHeight() - ICON_PAD), +			focus_bottom,  			sHighlightBgColor, FALSE); - -		if (getRect().getHeight() > llround(font->getLineHeight()) + ICON_PAD + 2) +		if (folder_open)  		{  			gl_rect_2d( -				0,  -				llfloor(getRect().getHeight() - font->getLineHeight() - ICON_PAD) - 2,  +				FOCUS_LEFT, +				focus_bottom + 1, // overlap with bottom edge of above rect  				getRect().getWidth() - 2, -				2, +				0,  				sHighlightBgColor, FALSE);  		}  		mDragAndDropTarget = FALSE;  	} +	S32 icon_x = mIndentation + ARROW_SIZE + TEXT_PAD;  	// First case is used for open folders  	if (!mIconOpen.isNull() && (llabs(mControlLabelRotation) > 80))   	{ -		mIconOpen->draw(mIndentation + ARROW_SIZE + TEXT_PAD, getRect().getHeight() - mIcon->getHeight()); +		mIconOpen->draw(icon_x, getRect().getHeight() - mIconOpen->getHeight() - TOP_PAD + 1);  	}  	else if(mIcon)  	{ - 		mIcon->draw(mIndentation + ARROW_SIZE + TEXT_PAD, getRect().getHeight() - mIcon->getHeight()); + 		mIcon->draw(icon_x, getRect().getHeight() - mIcon->getHeight() - TOP_PAD + 1);   	}  	if (!mLabel.empty()) @@ -953,7 +961,7 @@ void LLFolderViewItem::draw()  		BOOL debug_filters = getRoot()->getDebugFilters();  		LLColor4 color = ( (mIsSelected && filled) ? sHighlightFgColor : sFgColor );  		F32 right_x; -		F32 y = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD; +		F32 y = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD - (F32)TOP_PAD;  		if (debug_filters)  		{ @@ -963,7 +971,8 @@ void LLFolderViewItem::draw()  			}  			LLColor4 filter_color = mLastFilterGeneration >= getRoot()->getFilter()->getCurrentGeneration() ? LLColor4(0.5f, 0.8f, 0.5f, 1.f) : LLColor4(0.8f, 0.5f, 0.5f, 1.f); -			sSmallFont->renderUTF8(mStatusText, 0, text_left, y, filter_color, +			LLFontGL::getFontMonospace()->renderUTF8( +				mStatusText, 0, text_left, y, filter_color,  				LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,  				S32_MAX, S32_MAX, &right_x, FALSE );  			text_left = right_x; @@ -1004,7 +1013,7 @@ void LLFolderViewItem::draw()  				S32_MAX, S32_MAX, &right_x, FALSE );  		} -		if (sBoxImage.notNull() && mStringMatchOffset != std::string::npos) +		if (mStringMatchOffset != std::string::npos)  		{  			// don't draw backgrounds for zero-length strings  			S32 filter_string_length = getRoot()->getFilterSubString().size(); @@ -1013,14 +1022,15 @@ void LLFolderViewItem::draw()  				std::string combined_string = mLabel + mLabelSuffix;  				S32 left = llround(text_left) + font->getWidth(combined_string, 0, mStringMatchOffset) - 1;  				S32 right = left + font->getWidth(combined_string, mStringMatchOffset, filter_string_length) + 2; -				S32 bottom = llfloor(getRect().getHeight() - font->getLineHeight() - 3); -				S32 top = getRect().getHeight(); -				 +				S32 bottom = llfloor(getRect().getHeight() - font->getLineHeight() - 3 - TOP_PAD); +				S32 top = getRect().getHeight() - TOP_PAD; +		 +				LLUIImage* box_image = default_params.selection_image;  				LLRect box_rect(left, top, right, bottom); -				sBoxImage->draw(box_rect, sFilterBGColor); +				box_image->draw(box_rect, sFilterBGColor);  				F32 match_string_left = text_left + font->getWidthF32(combined_string, 0, mStringMatchOffset); -				F32 y = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD; -				font->renderUTF8( combined_string, mStringMatchOffset, match_string_left, y, +				F32 yy = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD - (F32)TOP_PAD; +				font->renderUTF8( combined_string, mStringMatchOffset, match_string_left, yy,  								  sFilterTextColor, LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,  								  filter_string_length, S32_MAX, &right_x, FALSE );  			} diff --git a/indra/newview/llfolderviewitem.h b/indra/newview/llfolderviewitem.h index 03bb296d29..be8e73a5a9 100644 --- a/indra/newview/llfolderviewitem.h +++ b/indra/newview/llfolderviewitem.h @@ -101,7 +101,10 @@ public:  		Optional<LLFolderViewEventListener*>	listener;  		Optional<LLUIImage*>					folder_arrow_image; +		Optional<S32>							folder_indentation; // pixels  		Optional<LLUIImage*>					selection_image; +		Optional<S32>							item_height; // pixels +		Optional<S32>							item_top_pad; // pixels  		Optional<S32>							creation_date; //UTC seconds @@ -110,7 +113,7 @@ public:  	// layout constants  	static const S32 LEFT_PAD = 5; -    // LEFT_INDENTATION is set via settings.xml FolderIndentation +    // LEFT_INDENTATION is set via folder_indentation above  	static const S32 ICON_PAD = 2;  	static const S32 ICON_WIDTH = 16;  	static const S32 TEXT_PAD = 1; @@ -127,11 +130,7 @@ protected:  	friend class LLUICtrlFactory;  	friend class LLFolderViewEventListener; -	LLFolderViewItem(Params p = LLFolderViewItem::Params()); - -	static const LLFontGL*		sSmallFont; -	static LLUIImagePtr			sArrowImage; -	static LLUIImagePtr			sBoxImage; +	LLFolderViewItem(const Params& p);  	std::string					mLabel;  	std::string					mSearchableLabel; @@ -150,6 +149,7 @@ protected:  	LLUIImagePtr				mIconOpen;  	BOOL						mHasVisibleChildren;  	S32							mIndentation; +	S32							mItemHeight;  	S32							mNumDescendantsSelected;  	BOOL						mPassedFilter;  	S32							mLastFilterGeneration; @@ -157,8 +157,6 @@ protected:  	F32							mControlLabelRotation;  	LLFolderView*				mRoot;  	BOOL						mDragAndDropTarget; -	LLUIImagePtr				mArrowImage; -	LLUIImagePtr				mBoxImage;  	BOOL                        mIsLoading;  	LLTimer                     mTimeSinceRequestStart;  	bool						mHidden; diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp index 08cf86df4a..8ad94b957d 100644 --- a/indra/newview/llhudtext.cpp +++ b/indra/newview/llhudtext.cpp @@ -287,7 +287,7 @@ void LLHUDText::renderText(BOOL for_select)  	mOffsetY = lltrunc(mHeight * ((mVertAlignment == ALIGN_VERT_CENTER) ? 0.5f : 1.f));  	// *TODO: cache this image -	LLUIImagePtr imagep = LLUI::getUIImage("rounded_square.tga"); +	LLUIImagePtr imagep = LLUI::getUIImage("Rounded_Square");  	// *TODO: make this a per-text setting  	LLColor4 bg_color = LLUIColorTable::instance().getColor("BackgroundChatColor"); diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index a2b3a54f51..8f4fba244d 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -403,7 +403,8 @@ void LLInspectAvatar::updateModeratorPanel()  {  	bool enable_moderator_panel = false; -    if (LLVoiceChannel::getCurrentVoiceChannel()) +    if (LLVoiceChannel::getCurrentVoiceChannel() && +		mAvatarID != gAgent.getID())      {  		LLUUID session_id = LLVoiceChannel::getCurrentVoiceChannel()->getSessionID(); @@ -514,46 +515,58 @@ void LLInspectAvatar::toggleSelectedVoice(bool enabled)  void LLInspectAvatar::updateVolumeSlider()  { -	// By convention, we only display and toggle voice mutes, not all mutes -	bool is_muted = LLMuteList::getInstance()-> -						isMuted(mAvatarID, LLMute::flagVoiceChat); -	bool voice_enabled = gVoiceClient->getVoiceEnabled(mAvatarID); -	bool is_self = (mAvatarID == gAgent.getID()); - -	LLUICtrl* mute_btn = getChild<LLUICtrl>("mute_btn"); -	mute_btn->setEnabled( voice_enabled ); -	mute_btn->setValue( is_muted ); -	mute_btn->setVisible( voice_enabled && !is_self ); -	LLUICtrl* volume_slider = getChild<LLUICtrl>("volume_slider"); -	volume_slider->setEnabled( voice_enabled && !is_muted ); -	volume_slider->setVisible( voice_enabled && !is_self ); +	bool voice_enabled = gVoiceClient->getVoiceEnabled(mAvatarID); -	const F32 DEFAULT_VOLUME = 0.5f; -	F32 volume; -	if (is_muted) -	{ -		// it's clearer to display their volume as zero -		volume = 0.f; -	} -	else if (!voice_enabled) +	// Do not display volume slider and mute button if it  +	// is ourself or we are not in a voice channel together +	if (!voice_enabled || (mAvatarID == gAgent.getID()))  	{ -		// use nominal value rather than 0 -		volume = DEFAULT_VOLUME; +		getChild<LLUICtrl>("mute_btn")->setVisible(false); +		getChild<LLUICtrl>("volume_slider")->setVisible(false);  	} -	else + +	else   	{ -		// actual volume -		volume = gVoiceClient->getUserVolume(mAvatarID); +		getChild<LLUICtrl>("mute_btn")->setVisible(true); +		getChild<LLUICtrl>("volume_slider")->setVisible(true); + +		// By convention, we only display and toggle voice mutes, not all mutes +		bool is_muted = LLMuteList::getInstance()-> +							isMuted(mAvatarID, LLMute::flagVoiceChat); -		// *HACK: Voice client doesn't have any data until user actually -		// says something. -		if (volume == 0.f) +		LLUICtrl* mute_btn = getChild<LLUICtrl>("mute_btn"); + +		bool is_linden = LLStringUtil::endsWith(mAvatarName, " Linden"); + +		mute_btn->setEnabled( !is_linden); +		mute_btn->setValue( is_muted ); + +		LLUICtrl* volume_slider = getChild<LLUICtrl>("volume_slider"); +		volume_slider->setEnabled( !is_muted ); + +		const F32 DEFAULT_VOLUME = 0.5f; +		F32 volume; +		if (is_muted) +		{ +			// it's clearer to display their volume as zero +			volume = 0.f; +		} +		else  		{ -			volume = DEFAULT_VOLUME; +			// actual volume +			volume = gVoiceClient->getUserVolume(mAvatarID); + +			// *HACK: Voice client doesn't have any data until user actually +			// says something. +			if (volume == 0.f) +			{ +				volume = DEFAULT_VOLUME; +			}  		} +		volume_slider->setValue( (F64)volume );  	} -	volume_slider->setValue( (F64)volume ); +  }  void LLInspectAvatar::onClickMuteVolume() diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 498a29728c..9141d50829 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -98,10 +98,6 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :  	mCommitCallbackRegistrar.add("Inventory.AttachObject", boost::bind(&LLInventoryPanel::attachObject, this, _2));  	mCommitCallbackRegistrar.add("Inventory.BeginIMSession", boost::bind(&LLInventoryPanel::beginIMSession, this)); -	setBackgroundColor(LLUIColorTable::instance().getColor("InventoryBackgroundColor")); -	setBackgroundVisible(TRUE); -	setBackgroundOpaque(TRUE); -	  	if (mStartFolderString != "")  	{  		mBuildDefaultHierarchy = false; diff --git a/indra/newview/llmanip.cpp b/indra/newview/llmanip.cpp index f30821cacf..a96240e31c 100644 --- a/indra/newview/llmanip.cpp +++ b/indra/newview/llmanip.cpp @@ -436,7 +436,7 @@ void LLManip::renderXYZ(const LLVector3 &vec)  	glPushMatrix();  	{ -		LLUIImagePtr imagep = LLUI::getUIImage("rounded_square.tga"); +		LLUIImagePtr imagep = LLUI::getUIImage("Rounded_Square");  		gViewerWindow->setup2DRender();  		const LLVector2& display_scale = gViewerWindow->getDisplayScale();  		glScalef(display_scale.mV[VX], display_scale.mV[VY], 1.f); diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 93f926b5d0..6b0f9b709d 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -632,6 +632,7 @@ bool LLMediaCtrl::ensureMediaSourceExists()  			mMediaSource->setHomeURL(mHomePageUrl);  			mMediaSource->setVisible( getVisible() );  			mMediaSource->addObserver( this ); +			mMediaSource->setBackgroundColor( getBackgroundColor() );  			if(mClearCache)  			{  				mMediaSource->clearCache(); @@ -671,34 +672,12 @@ LLPluginClassMedia* LLMediaCtrl::getMediaPlugin()  //  void LLMediaCtrl::draw()  { -	LLPluginClassMedia* media_plugin = NULL; -	 -	if(mMediaSource && mMediaSource->hasMedia()) -	{ -		media_plugin = mMediaSource->getMediaPlugin(); -	} -	else -	{ -		return; -	} -	 -	if(!media_plugin || (!media_plugin->textureValid())) -	{ -		// Don't try to draw without a valid texture -		return; -	} - -	LLViewerMediaTexture* media_texture = LLViewerTextureManager::findMediaTexture(mMediaTextureID); -	 -	if (!media_texture ) -		return; -	  	if ( gRestoreGL == 1 )  	{  		LLRect r = getRect();  		reshape( r.getWidth(), r.getHeight(), FALSE );  		return; -	}; +	}  	// NOTE: optimization needed here - probably only need to do this once  	// unless tearoffs change the parent which they probably do. @@ -712,125 +691,161 @@ void LLMediaCtrl::draw()  		setFrequentUpdates( false );  	}; +	bool draw_media = false; +	 +	LLPluginClassMedia* media_plugin = NULL; +	LLViewerMediaTexture* media_texture = NULL; +	 +	if(mMediaSource && mMediaSource->hasMedia()) +	{ +		media_plugin = mMediaSource->getMediaPlugin(); + +		if(media_plugin && (media_plugin->textureValid())) +		{ +			media_texture = LLViewerTextureManager::findMediaTexture(mMediaTextureID); +			if(media_texture) +			{ +				draw_media = true; +			} +		} +	} +	  	if(mHidingInitialLoad)  	{  		// If we're hiding loading, don't draw at all. -		return; +		draw_media = false;  	} -	// alpha off for this -	LLGLSUIDefault gls_ui; -	LLGLDisable gls_alphaTest( GL_ALPHA_TEST ); - -	gGL.pushMatrix(); +	bool background_visible = isBackgroundVisible(); +	bool background_opaque = isBackgroundOpaque(); +	 +	if(draw_media)  	{ -		if (mIgnoreUIScale) +		// alpha off for this +		LLGLSUIDefault gls_ui; +		LLGLDisable gls_alphaTest( GL_ALPHA_TEST ); + +		gGL.pushMatrix();  		{ -			glLoadIdentity(); -			// font system stores true screen origin, need to scale this by UI scale factor -			// to get render origin for this view (with unit scale) -			gGL.translatef(floorf(LLFontGL::sCurOrigin.mX * LLUI::sGLScaleFactor.mV[VX]),  -						floorf(LLFontGL::sCurOrigin.mY * LLUI::sGLScaleFactor.mV[VY]),  -						LLFontGL::sCurOrigin.mZ); -		} +			if (mIgnoreUIScale) +			{ +				glLoadIdentity(); +				// font system stores true screen origin, need to scale this by UI scale factor +				// to get render origin for this view (with unit scale) +				gGL.translatef(floorf(LLFontGL::sCurOrigin.mX * LLUI::sGLScaleFactor.mV[VX]),  +							floorf(LLFontGL::sCurOrigin.mY * LLUI::sGLScaleFactor.mV[VY]),  +							LLFontGL::sCurOrigin.mZ); +			} -		// scale texture to fit the space using texture coords -		gGL.getTexUnit(0)->bind(media_texture); -		gGL.color4fv( LLColor4::white.mV ); -		F32 max_u = ( F32 )media_plugin->getWidth() / ( F32 )media_plugin->getTextureWidth(); -		F32 max_v = ( F32 )media_plugin->getHeight() / ( F32 )media_plugin->getTextureHeight(); +			// scale texture to fit the space using texture coords +			gGL.getTexUnit(0)->bind(media_texture); +			gGL.color4fv( LLColor4::white.mV ); +			F32 max_u = ( F32 )media_plugin->getWidth() / ( F32 )media_plugin->getTextureWidth(); +			F32 max_v = ( F32 )media_plugin->getHeight() / ( F32 )media_plugin->getTextureHeight(); -		LLRect r = getRect(); -		S32 width, height; -		S32 x_offset = 0; -		S32 y_offset = 0; -		 -		if(mStretchToFill) -		{ -			if(mMaintainAspectRatio) +			LLRect r = getRect(); +			S32 width, height; +			S32 x_offset = 0; +			S32 y_offset = 0; +			 +			if(mStretchToFill)  			{ -				F32 media_aspect = (F32)(media_plugin->getWidth()) / (F32)(media_plugin->getHeight()); -				F32 view_aspect = (F32)(r.getWidth()) / (F32)(r.getHeight()); -				if(media_aspect > view_aspect) +				if(mMaintainAspectRatio)  				{ -					// max width, adjusted height -					width = r.getWidth(); -					height = llmin(llmax(llround(width / media_aspect), 0), r.getHeight()); +					F32 media_aspect = (F32)(media_plugin->getWidth()) / (F32)(media_plugin->getHeight()); +					F32 view_aspect = (F32)(r.getWidth()) / (F32)(r.getHeight()); +					if(media_aspect > view_aspect) +					{ +						// max width, adjusted height +						width = r.getWidth(); +						height = llmin(llmax(llround(width / media_aspect), 0), r.getHeight()); +					} +					else +					{ +						// max height, adjusted width +						height = r.getHeight(); +						width = llmin(llmax(llround(height * media_aspect), 0), r.getWidth()); +					}  				}  				else  				{ -					// max height, adjusted width +					width = r.getWidth();  					height = r.getHeight(); -					width = llmin(llmax(llround(height * media_aspect), 0), r.getWidth());  				}  			}  			else  			{ -				width = r.getWidth(); -				height = r.getHeight(); +				width = llmin(media_plugin->getWidth(), r.getWidth()); +				height = llmin(media_plugin->getHeight(), r.getHeight());  			} -		} -		else -		{ -			width = llmin(media_plugin->getWidth(), r.getWidth()); -			height = llmin(media_plugin->getHeight(), r.getHeight()); -		} -		 -		x_offset = (r.getWidth() - width) / 2; -		y_offset = (r.getHeight() - height) / 2;		 +			 +			x_offset = (r.getWidth() - width) / 2; +			y_offset = (r.getHeight() - height) / 2;		 -		if(mIgnoreUIScale) -		{ -			x_offset = llround((F32)x_offset * LLUI::sGLScaleFactor.mV[VX]); -			y_offset = llround((F32)y_offset * LLUI::sGLScaleFactor.mV[VY]); -			width = llround((F32)width * LLUI::sGLScaleFactor.mV[VX]); -			height = llround((F32)height * LLUI::sGLScaleFactor.mV[VY]); -		} +			if(mIgnoreUIScale) +			{ +				x_offset = llround((F32)x_offset * LLUI::sGLScaleFactor.mV[VX]); +				y_offset = llround((F32)y_offset * LLUI::sGLScaleFactor.mV[VY]); +				width = llround((F32)width * LLUI::sGLScaleFactor.mV[VX]); +				height = llround((F32)height * LLUI::sGLScaleFactor.mV[VY]); +			} -		// draw the browser -		gGL.setSceneBlendType(LLRender::BT_REPLACE); -		gGL.begin( LLRender::QUADS ); -		if (! media_plugin->getTextureCoordsOpenGL()) -		{ -			// render using web browser reported width and height, instead of trying to invert GL scale -			gGL.texCoord2f( max_u, 0.f ); -			gGL.vertex2i( x_offset + width, y_offset + height ); +			// draw the browser +			gGL.setSceneBlendType(LLRender::BT_REPLACE); +			gGL.begin( LLRender::QUADS ); +			if (! media_plugin->getTextureCoordsOpenGL()) +			{ +				// render using web browser reported width and height, instead of trying to invert GL scale +				gGL.texCoord2f( max_u, 0.f ); +				gGL.vertex2i( x_offset + width, y_offset + height ); -			gGL.texCoord2f( 0.f, 0.f ); -			gGL.vertex2i( x_offset, y_offset + height ); +				gGL.texCoord2f( 0.f, 0.f ); +				gGL.vertex2i( x_offset, y_offset + height ); -			gGL.texCoord2f( 0.f, max_v ); -			gGL.vertex2i( x_offset, y_offset ); +				gGL.texCoord2f( 0.f, max_v ); +				gGL.vertex2i( x_offset, y_offset ); -			gGL.texCoord2f( max_u, max_v ); -			gGL.vertex2i( x_offset + width, y_offset ); -		} -		else -		{ -			// render using web browser reported width and height, instead of trying to invert GL scale -			gGL.texCoord2f( max_u, max_v ); -			gGL.vertex2i( x_offset + width, y_offset + height ); +				gGL.texCoord2f( max_u, max_v ); +				gGL.vertex2i( x_offset + width, y_offset ); +			} +			else +			{ +				// render using web browser reported width and height, instead of trying to invert GL scale +				gGL.texCoord2f( max_u, max_v ); +				gGL.vertex2i( x_offset + width, y_offset + height ); -			gGL.texCoord2f( 0.f, max_v ); -			gGL.vertex2i( x_offset, y_offset + height ); +				gGL.texCoord2f( 0.f, max_v ); +				gGL.vertex2i( x_offset, y_offset + height ); -			gGL.texCoord2f( 0.f, 0.f ); -			gGL.vertex2i( x_offset, y_offset ); +				gGL.texCoord2f( 0.f, 0.f ); +				gGL.vertex2i( x_offset, y_offset ); -			gGL.texCoord2f( max_u, 0.f ); -			gGL.vertex2i( x_offset + width, y_offset ); +				gGL.texCoord2f( max_u, 0.f ); +				gGL.vertex2i( x_offset + width, y_offset ); +			} +			gGL.end(); +			gGL.setSceneBlendType(LLRender::BT_ALPHA);  		} -		gGL.end(); -		gGL.setSceneBlendType(LLRender::BT_ALPHA); +		gGL.popMatrix(); +	  	} -	gGL.popMatrix(); - +	else +	{ +		// Setting these will make LLPanel::draw draw the opaque background color. +		setBackgroundVisible(true); +		setBackgroundOpaque(true); +	} +	  	// highlight if keyboard focus here. (TODO: this needs some work)  	if ( mBorder && mBorder->getVisible() )  		mBorder->setKeyboardFocusHighlight( gFocusMgr.childHasKeyboardFocus( this ) );  	LLPanel::draw(); + +	// Restore the previous values +	setBackgroundVisible(background_visible); +	setBackgroundOpaque(background_opaque);  }  //////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index 0ae62843ac..77a370cc3f 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -62,6 +62,7 @@ public:  	{  		mPanel->inventoryFetched();  		gInventory.removeObserver(this); +		delete this;  	}  private:  	LLSidepanelAppearance *mPanel; @@ -94,14 +95,12 @@ LLSidepanelAppearance::LLSidepanelAppearance() :  	mLookInfo(NULL),  	mCurrOutfitPanel(NULL)  { -	//LLUICtrlFactory::getInstance()->buildPanel(this, "panel_appearance.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder() -	mFetchWorn = new LLCurrentlyWornFetchObserver(this); -	 -	mOutfitRenameWatcher = new LLWatchForOutfitRenameObserver(this);  }  LLSidepanelAppearance::~LLSidepanelAppearance()  { +	gInventory.removeObserver(mOutfitRenameWatcher); +	delete mOutfitRenameWatcher;  }  // virtual @@ -156,6 +155,7 @@ BOOL LLSidepanelAppearance::postBuild()  	mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook"); +	mOutfitRenameWatcher = new LLWatchForOutfitRenameObserver(this);  	gInventory.addObserver(mOutfitRenameWatcher);  	return TRUE; @@ -389,16 +389,17 @@ void LLSidepanelAppearance::fetchInventory()  		}  	} -	mFetchWorn->fetchItems(ids); +	LLCurrentlyWornFetchObserver *fetch_worn = new LLCurrentlyWornFetchObserver(this); +	fetch_worn->fetchItems(ids);  	// If no items to be fetched, done will never be triggered.  	// TODO: Change LLInventoryFetchObserver::fetchItems to trigger done() on this condition. -	if (mFetchWorn->isEverythingComplete()) +	if (fetch_worn->isEverythingComplete())  	{ -		mFetchWorn->done(); +		fetch_worn->done();  	}  	else  	{ -		gInventory.addObserver(mFetchWorn); +		gInventory.addObserver(fetch_worn);  	}  } diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index 608165022f..75414f31f2 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -641,24 +641,51 @@ LLPanel*	LLSideTray::showPanel		(const std::string& panel_name, const LLSD& para  	return NULL;  } -LLPanel*	LLSideTray::getPanel		(const std::string& panel_name) +// This is just LLView::findChildView specialized to restrict the search to LLPanels. +// Optimization for EXT-4068 to avoid searching down to the individual item level +// when inventories are large. +LLPanel *findChildPanel(LLPanel *panel, const std::string& name, bool recurse)  { -	child_vector_const_iter_t child_it; -	for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) +	for (LLView::child_list_const_iter_t child_it = panel->beginChild(); +		 child_it != panel->endChild(); ++child_it)  	{ -		LLView* view = (*child_it)->findChildView(panel_name,true); -		if(view) +		LLPanel *child_panel = dynamic_cast<LLPanel*>(*child_it); +		if (!child_panel) +			continue; +		if (child_panel->getName() == name) +			return child_panel; +	} +	if (recurse) +	{ +		for (LLView::child_list_const_iter_t child_it = panel->beginChild(); +			 child_it != panel->endChild(); ++child_it)  		{ -			LLPanel* panel = dynamic_cast<LLPanel*>(view); -			if(panel) +			LLPanel *child_panel = dynamic_cast<LLPanel*>(*child_it); +			if (!child_panel) +				continue; +			LLPanel *found_panel = findChildPanel(child_panel,name,recurse); +			if (found_panel)  			{ -				return panel; +				return found_panel;  			}  		}  	}  	return NULL;  } +LLPanel* LLSideTray::getPanel(const std::string& panel_name) +{ +	for ( child_vector_const_iter_t child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) +	{ +		LLPanel *panel = findChildPanel(*child_it,panel_name,true); +		if(panel) +		{ +			return panel; +		} +	} +	return NULL; +} +  LLPanel*	LLSideTray::getActivePanel()  {  	if (mActiveTab && !mCollapsed) diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 25e5e23e6f..a5ddb0a620 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -1242,11 +1242,11 @@ void LLTextureCtrl::draw()  		 (mTexturep->getDiscardLevel() != 1) &&  		 (mTexturep->getDiscardLevel() != 0))  	{ -		LLFontGL* font = LLFontGL::getFontSansSerifBig(); +		LLFontGL* font = LLFontGL::getFontSansSerif();  		font->renderUTF8(  			mLoadingPlaceholderString, 0, -			llfloor(interior.mLeft+10),  -			llfloor(interior.mTop-20), +			llfloor(interior.mLeft+3),  +			llfloor(interior.mTop-25),  			LLColor4::white,  			LLFontGL::LEFT,  			LLFontGL::BASELINE, diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 7e8c8eb92e..023c288d92 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -48,12 +48,15 @@  #include "llviewerwindow.h"  #include "llfocusmgr.h"  #include "llcallbacklist.h" +#include "llparcel.h" +#include "llaudioengine.h"  // for gAudiop  #include "llevent.h"		// LLSimpleListener  #include "llnotificationsutil.h"  #include "lluuid.h"  #include "llkeyboard.h"  #include "llmutelist.h" +#include "llfirstuse.h"  #include <boost/bind.hpp>	// for SkinFolder listener  #include <boost/signals2.hpp> @@ -708,6 +711,8 @@ void LLViewerMedia::updateMedia(void *dummy_arg)  	std::vector<LLViewerMediaImpl*> proximity_order; +	bool inworld_media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia"); +	bool needs_first_run = LLViewerMedia::needsMediaFirstRun();  	U32 max_instances = gSavedSettings.getU32("PluginInstancesTotal");  	U32 max_normal = gSavedSettings.getU32("PluginInstancesNormal");  	U32 max_low = gSavedSettings.getU32("PluginInstancesLow"); @@ -822,6 +827,21 @@ void LLViewerMedia::updateMedia(void *dummy_arg)  			new_priority = LLPluginClassMedia::PRIORITY_LOW;  		} +		if(!inworld_media_enabled) +		{ +			// If inworld media is locked out, force all inworld media to stay unloaded. +			if(!pimpl->getUsedInUI()) +			{ +				new_priority = LLPluginClassMedia::PRIORITY_UNLOADED; +				if(needs_first_run) +				{ +					// Don't do this more than once in this loop. +					needs_first_run = false; +					LLViewerMedia::displayMediaFirstRun(); +				} +			} +		} +		  		pimpl->setPriority(new_priority);  		if(pimpl->getUsedInUI()) @@ -888,6 +908,61 @@ void LLViewerMedia::cleanupClass()  	gIdleCallbacks.deleteFunction(LLViewerMedia::updateMedia, NULL);  } + +////////////////////////////////////////////////////////////////////////////////////////// +// static +bool LLViewerMedia::needsMediaFirstRun() +{ +	return gWarningSettings.getBOOL("FirstStreamingMedia"); +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::displayMediaFirstRun() +{ +	gWarningSettings.setBOOL("FirstStreamingMedia", FALSE); + +	LLNotificationsUtil::add("ParcelCanPlayMedia", LLSD(), LLSD(), +		boost::bind(firstRunCallback, _1, _2)); +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static +bool LLViewerMedia::firstRunCallback(const LLSD& notification, const LLSD& response) +{ +	S32 option = LLNotificationsUtil::getSelectedOption(notification, response); +	if (option == 0) +	{ +		// user has elected to automatically play media. +		gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, TRUE); +		gSavedSettings.setBOOL("AudioStreamingVideo", TRUE); +		gSavedSettings.setBOOL("AudioStreamingMusic", TRUE); +		gSavedSettings.setBOOL("AudioStreamingMedia", TRUE); + +		LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); +				 +		if (parcel) +		{ +			// play media right now, if available +			LLViewerParcelMedia::play(parcel); +		 +			// play music right now, if available +			std::string music_url = parcel->getMusicURL(); +			if (gAudiop && !music_url.empty()) +				gAudiop->startInternetStream(music_url); +		} +	} +	else +	{ +		gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, FALSE); +		gSavedSettings.setBOOL("AudioStreamingMedia", FALSE); +		gSavedSettings.setBOOL("AudioStreamingVideo", FALSE); +		gSavedSettings.setBOOL("AudioStreamingMusic", FALSE); +	} +	return false; +} + +  //////////////////////////////////////////////////////////////////////////////////////////  // LLViewerMediaImpl  ////////////////////////////////////////////////////////////////////////////////////////// @@ -930,6 +1005,7 @@ LLViewerMediaImpl::LLViewerMediaImpl(	  const LLUUID& texture_id,  	mMediaAutoPlay(false),  	mInNearbyMediaList(false),  	mClearCache(false), +	mBackgroundColor(LLColor4::white),  	mIsUpdated(false)  {  @@ -1142,6 +1218,7 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type)  		media_source->setAutoScale(mMediaAutoScale);  		media_source->setBrowserUserAgent(LLViewerMedia::getCurrentUserAgent());  		media_source->focus(mHasFocus); +		media_source->setBackgroundColor(mBackgroundColor);  		if(mClearCache)  		{ @@ -1908,8 +1985,8 @@ LLViewerMediaTexture* LLViewerMediaImpl::updatePlaceholderImage()  		|| placeholder_image->getUseMipMaps()  		|| (placeholder_image->getWidth() != mMediaSource->getTextureWidth())  		|| (placeholder_image->getHeight() != mMediaSource->getTextureHeight()) -		|| (mTextureUsedWidth > mMediaSource->getWidth()) -		|| (mTextureUsedHeight > mMediaSource->getHeight()) +		|| (mTextureUsedWidth != mMediaSource->getWidth()) +		|| (mTextureUsedHeight != mMediaSource->getHeight())  		)  	{  		LL_DEBUGS("Media") << "initializing media placeholder" << LL_ENDL; @@ -1927,7 +2004,9 @@ LLViewerMediaTexture* LLViewerMediaImpl::updatePlaceholderImage()  		// MEDIAOPT: seems insane that we actually have to make an imageraw then  		// immediately discard it  		LLPointer<LLImageRaw> raw = new LLImageRaw(texture_width, texture_height, texture_depth); -		raw->clear(0x00, 0x00, 0x00, 0xff); +		// Clear the texture to the background color, ignoring alpha. +		// convert background color channels from [0.0, 1.0] to [0, 255]; +		raw->clear(int(mBackgroundColor.mV[VX] * 255.0f), int(mBackgroundColor.mV[VY] * 255.0f), int(mBackgroundColor.mV[VZ] * 255.0f), 0xff);  		int discard_level = 0;  		// ask media source for correct GL image format constants @@ -2398,6 +2477,16 @@ void LLViewerMediaImpl::setUsedInUI(bool used_in_ui)  	}  }; +void LLViewerMediaImpl::setBackgroundColor(LLColor4 color) +{ +	mBackgroundColor = color;  + +	if(mMediaSource) +	{ +		mMediaSource->setBackgroundColor(mBackgroundColor); +	} +}; +  F64 LLViewerMediaImpl::getCPUUsage() const  {  	F64 result = 0.0f; diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index b103c48bd8..8a5cd804aa 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -42,6 +42,7 @@  #include "llviewermediaobserver.h"  #include "llpluginclassmedia.h" +#include "v4color.h"  class LLViewerMediaImpl;  class LLUUID; @@ -115,6 +116,12 @@ class LLViewerMedia  		// This is the comparitor used to sort the list.  		static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2); +		 +		// For displaying the media first-run dialog. +		static bool needsMediaFirstRun(); +		static void displayMediaFirstRun(); +		static bool firstRunCallback(const LLSD& notification, const LLSD& response); +  };  // Implementation functions not exported into header file @@ -289,6 +296,8 @@ public:  	// This will be used as part of the interest sorting algorithm.  	void setUsedInUI(bool used_in_ui);  	bool getUsedInUI() const { return mUsedInUI; }; + +	void setBackgroundColor(LLColor4 color);  	F64 getCPUUsage() const; @@ -362,6 +371,7 @@ private:  	std::string mMediaEntryURL;  	bool mInNearbyMediaList;	// used by LLFloaterNearbyMedia::refreshList() for performance reasons  	bool mClearCache; +	LLColor4 mBackgroundColor;  private:  	BOOL mIsUpdated ; diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index 0f7903a7a5..56dee6b34c 100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -56,10 +56,6 @@ LLUUID LLViewerParcelMedia::sMediaRegionID;  viewer_media_t LLViewerParcelMedia::sMediaImpl; -// Local functions -bool callback_play_media(const LLSD& notification, const LLSD& response, LLParcel* parcel); - -  // static  void LLViewerParcelMedia::initClass()  { @@ -112,12 +108,10 @@ void LLViewerParcelMedia::update(LLParcel* parcel)  			// First use warning  			if( (!mediaUrl.empty() ||  			     !parcel->getMusicURL().empty()) -			    && gWarningSettings.getBOOL("FirstStreamingMedia") ) +			    && LLViewerMedia::needsMediaFirstRun())  			{ -				LLNotificationsUtil::add("ParcelCanPlayMedia", LLSD(), LLSD(), -					boost::bind(callback_play_media, _1, _2, parcel)); +				LLViewerMedia::displayMediaFirstRun();  				return; -  			}  			// if we have a current (link sharing) url, use it instead @@ -591,36 +585,6 @@ void LLViewerParcelMedia::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent  	};  } -bool callback_play_media(const LLSD& notification, const LLSD& response, LLParcel* parcel) -{ -	S32 option = LLNotificationsUtil::getSelectedOption(notification, response); -	if (option == 0) -	{ -		// user has elected to automatically play media. -		gSavedSettings.setBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING, TRUE); -		gSavedSettings.setBOOL("AudioStreamingVideo", TRUE); -		gSavedSettings.setBOOL("AudioStreamingMusic", TRUE); -		if(!gSavedSettings.getBOOL("AudioStreamingMedia"))  -			gSavedSettings.setBOOL("AudioStreamingMedia", TRUE); -		// play media right now, if available -		LLViewerParcelMedia::play(parcel); -		// play music right now, if available -		if (parcel) -		{ -			std::string music_url = parcel->getMusicURL(); -			if (gAudiop && !music_url.empty()) -				gAudiop->startInternetStream(music_url); -		} -	} -	else -	{ -		gSavedSettings.setBOOL("AudioStreamingVideo", FALSE); -		gSavedSettings.setBOOL("AudioStreamingMusic", FALSE); -	} -	gWarningSettings.setBOOL("FirstStreamingMedia", FALSE); -	return false; -} -  // TODO: observer  /*  void LLViewerParcelMediaNavigationObserver::onNavigateComplete( const EventType& event_in ) diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 6e93bf1bf2..d0acb0bd39 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -6822,7 +6822,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )  				 local_tex_iter != baked_dict->mLocalTextures.end();  				 ++local_tex_iter)  			{ -				setBakedReady(*local_tex_iter, TRUE); +				if (isSelf()) setBakedReady(*local_tex_iter, TRUE);  			}  			// ! BACKWARDS COMPATIBILITY ! diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index 887cff56f6..6da38fa0d4 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -292,7 +292,7 @@       reference="White" />       <color       name="FilterBackgroundColor" -     reference="MouseGray" /> +     reference="Black" />      <color       name="FilterTextColor"       value="0.38 0.69 0.57 1" /> @@ -394,7 +394,10 @@       reference="White" />      <color       name="InventoryBackgroundColor" -     reference="Unused?" /> +     reference="DkGray2" /> +    <color +     name="InventoryFocusOutlineColor" +     reference="EmphasisColor" />      <color       name="InventoryItemSuffixColor"       reference="White_25" /> diff --git a/indra/newview/skins/default/textures/icons/Inv_Landmark.png b/indra/newview/skins/default/textures/icons/Inv_Landmark.pngBinary files differ index f8ce765c50..76df984596 100644 --- a/indra/newview/skins/default/textures/icons/Inv_Landmark.png +++ b/indra/newview/skins/default/textures/icons/Inv_Landmark.png diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.pngBinary files differ index ada28e01da..f5a5f7a846 100644 --- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png +++ b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.pngBinary files differ index 0f8d5619ec..8e0fb9661e 100644 --- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png +++ b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 75424e71f5..dab11149b9 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -167,6 +167,7 @@ with the same filename but different name    <texture name="Flag" file_name="navbar/Flag.png" preload="false" /> +  <texture name="Folder_Arrow" file_name="folder_arrow.tga" preload="false" />    <texture name="ForSale_Badge" file_name="icons/ForSale_Badge.png" preload="false" />    <texture name="ForwardArrow_Off" file_name="icons/ForwardArrow_Off.png" preload="false" />    <texture name="ForwardArrow_Press" file_name="icons/ForwardArrow_Press.png" preload="false" /> @@ -439,6 +440,7 @@ with the same filename but different name    <texture name="Resize_Corner" file_name="windows/Resize_Corner.png" preload="true" /> +  <texture name="Rounded_Square"	file_name="rounded_square.j2c" preload="true" scale.left="16" scale.top="16" scale.right="112" scale.bottom="16" />    <texture name="Row_Selection" file_name="navbar/Row_Selection.png" preload="false" />    <texture name="ScrollArrow_Down" file_name="widgets/ScrollArrow_Down.png"	preload="true" scale.left="2" scale.top="13" scale.right="13" scale.bottom="2" /> @@ -676,7 +678,6 @@ with the same filename but different name    <texture name="toggle_button_selected" file_name="toggle_button_selected.png" preload="true" />    <texture name="sm_rounded_corners_simple.tga" scale.left="4" scale.top="4" scale.bottom="4" scale.right="4" /> -  <texture name="rounded_square.tga"	file_name="rounded_square.j2c" preload="true" scale.left="16" scale.top="16" scale.right="112" scale.bottom="16" />    <texture name="color_swatch_alpha.tga" preload="true" />    <texture name="button_anim_pause.tga" /> diff --git a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml index 53ae24fe3f..d007ceff98 100644 --- a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml @@ -287,7 +287,7 @@      <button       follows="left|top"       height="23" -     label="Ok" +     label="OK"       layout="topleft"       left="65"       name="apply" diff --git a/indra/newview/skins/default/xui/en/floater_color_picker.xml b/indra/newview/skins/default/xui/en/floater_color_picker.xml index 4380ff8f4b..fbecebc363 100644 --- a/indra/newview/skins/default/xui/en/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml @@ -186,8 +186,8 @@      <button       follows="right|bottom"       height="20" -     label="Ok" -     label_selected="Ok" +     label="OK" +     label_selected="OK"       layout="topleft"       right="-120"       top_delta="9" diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml index 446b7138c4..e83bc1555c 100644 --- a/indra/newview/skins/default/xui/en/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml @@ -43,7 +43,6 @@               left="0"               name="browser"               top="0" -             start_url="data:text/html,%3Chtml%3E%3Cbody bgcolor=%22#2A2A2A%22%3E%3C/body%3E%3C/html%3E"               width="590" />          </layout_panel>      </layout_stack> diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml index cd297af99d..ccbba61ddf 100644 --- a/indra/newview/skins/default/xui/en/floater_im_container.xml +++ b/indra/newview/skins/default/xui/en/floater_im_container.xml @@ -9,7 +9,7 @@   save_rect="true"
   save_visibility="true"
   single_instance="true"
 - title="Instant Messages"
 + title="CONVERSATIONS"
   width="392">
      <tab_container
       follows="left|right|top|bottom"
 diff --git a/indra/newview/skins/default/xui/en/floater_mute_object.xml b/indra/newview/skins/default/xui/en/floater_mute_object.xml index 454b1c43b2..22b0a1783f 100644 --- a/indra/newview/skins/default/xui/en/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/en/floater_mute_object.xml @@ -47,7 +47,7 @@      <button       follows="bottom|left"       height="23" -     label="Ok" +     label="OK"       layout="topleft"       left="155"       name="OK" diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index 5a9e2ebe6e..b0bb282abd 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -42,7 +42,6 @@               left="0"               name="browser"               top="0" -             start_url="data:text/html,%3Chtml%3E%3Cbody bgcolor=%22#2A2A2A%22%3E%3C/body%3E%3C/html%3E"               height="600"               width="650" />              <text diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml index 695021f755..cad7d72ed7 100644 --- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml @@ -131,8 +131,8 @@           <button       follows="right|bottom"       height="20" -     label="Ok" -     label_selected="Ok" +     label="OK" +     label_selected="OK"       layout="topleft"       right="-120"       name="Select" diff --git a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml index 4ece0fa3ba..897d959b98 100644 --- a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml @@ -5,6 +5,9 @@   height="108"   layout="topleft"   name="whitelist_entry" + single_instance="true" + help_topic="whitelist_entry" + title="WHITELIST ENTRY"   width="390">    <text type="string" length="1" bottom="20" follows="top|left" height="15" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 6d5f0bedb0..410c398ea5 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -157,7 +157,7 @@ No tutorial is currently available.   An error occurred while updating [APP_NAME].  Please [http://get.secondlife.com download the latest version] of the Viewer.      <usetemplate       name="okbutton" -     yestext="Ok"/> +     yestext="OK"/>    </notification>    <notification @@ -169,7 +169,7 @@ Could not connect to the [SECOND_LIFE_GRID].  Make sure your Internet connection is working properly.  	<usetemplate       name="okbutton" -     yestext="Ok"/> +     yestext="OK"/>    </notification>    <notification @@ -179,7 +179,7 @@ Make sure your Internet connection is working properly.  Message Template [PATH] not found.  	<usetemplate       name="okbutton" -     yestext="Ok"/> +     yestext="OK"/>    </notification>    <notification @@ -5793,7 +5793,7 @@ Are you sure you want to close all IMs?      <usetemplate       name="okcancelignore"       notext="Cancel" -     yestext="Ok"/> +     yestext="OK"/>    </notification>    <notification icon="notifytip.tga" diff --git a/indra/newview/skins/default/xui/en/panel_group_notify.xml b/indra/newview/skins/default/xui/en/panel_group_notify.xml index 9b0b81cd0a..65b2e81d50 100644 --- a/indra/newview/skins/default/xui/en/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notify.xml @@ -93,7 +93,7 @@       bottom="85"       follows="bottom"       height="20" -     label="Ok" +     label="OK"       layout="topleft"       right="-10"       name="btn_ok" diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml index c899dcb750..039e1ae086 100644 --- a/indra/newview/skins/default/xui/en/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml @@ -25,7 +25,7 @@           title="Favorites bar">              <places_inventory_panel               allow_multi_select="true" -             border="true" +             border="false"               bottom="0"               follows="left|top|right|bottom"               height="126" @@ -41,7 +41,7 @@           title="Landmarks">              <places_inventory_panel               allow_multi_select="true" -             border="true" +             border="false"               bottom="0"               follows="left|top|right|bottom"               height="126" @@ -57,7 +57,7 @@           title="My Inventory">              <places_inventory_panel               allow_multi_select="true" -             border="true" +             border="false"               bottom="0"               follows="left|top|right|bottom"               height="126" @@ -73,7 +73,7 @@             title="Library">              <places_inventory_panel               allow_multi_select="true" -             border="true" +             border="false"               bottom="0"               follows="left|top|right|bottom"               height="120" diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index 6187b8f1e2..e5df37e366 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -24,6 +24,7 @@ top="600"  </panel.string>  <!-- *NOTE: Custom resize logic for login_html in llpanellogin.cpp -->  <web_browser +bg_opaque_color="Black"  border_visible="false"  bottom="600"  follows="all" 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 017c321767..6e0b94ac2b 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml @@ -318,15 +318,15 @@       height="20"       width="300"       top_pad="20"> -     Show IMs in: +     Show IMs in: (Requires restart)      </text>      <radio_group       height="30"       layout="topleft" -     left="30" +     left_delta="30"       control_name="ChatWindow"       name="chat_window" -     top_pad="10" +     top_pad="0"       tool_tip="Show your Instant Messages in separate windows, or in one window with many tabs (Requires restart)"       width="331">       <radio_item @@ -342,10 +342,10 @@        height="16"        label="One window"        layout="topleft" -      left_delta="145" +      left_delta="0"        name="radio2"        value="1" -      top_delta="0" +      top_pad="5"        width="150" />      </radio_group>  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index f97ccafecc..cc00abf5a0 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -76,7 +76,7 @@      <icon       color="0.12 0.12 0.12 1"       height="14" -     image_name="rounded_square.tga" +     image_name="Rounded_Square"       layout="topleft"       left="128"       name="LowGraphicsDivet" @@ -85,7 +85,7 @@      <icon       color="0.12 0.12 0.12 1"       height="14" -     image_name="rounded_square.tga" +     image_name="Rounded_Square"       layout="topleft"       left_pad="83"       name="MidGraphicsDivet" @@ -94,7 +94,7 @@      <icon       color="0.12 0.12 0.12 1"       height="14" -     image_name="rounded_square.tga" +     image_name="Rounded_Square"       layout="topleft"       left_pad="85"       name="HighGraphicsDivet" @@ -103,7 +103,7 @@      <icon       color="0.12 0.12 0.12 1"       height="14" -     image_name="rounded_square.tga" +     image_name="Rounded_Square"       layout="topleft"       left_pad="83"       name="UltraGraphicsDivet" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml index 5dd93d0f7e..1c1e17eb5a 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml @@ -134,18 +134,6 @@       name="show_timestamps_check_im"       top_pad="10"       width="237" /> -    <line_editor -     bottom="366" -     control_name="InstantMessageLogFolder" -     enabled="false" -     follows="top|left|right" -     halign="right" -     height="19" -     layout="topleft" -     left_delta="0" -     mouse_opaque="false" -     name="log_path_string" -     top_pad="5" />      <text       type="string"       length="1" @@ -155,11 +143,23 @@       left_delta="0"       mouse_opaque="false"       name="log_path_desc" -     top_pad="1" -     width="128" -     text_color="LtGray_50"> -        Location of logs +     top_pad="5" +     width="128"> +        Location of logs:      </text>     +    <line_editor +     bottom="366" +     control_name="InstantMessageLogFolder" +     enabled="false" +     follows="top|left|right" +     halign="right" +     height="23" +     layout="topleft" +     left_delta="0" +     mouse_opaque="false" +     name="log_path_string" +     top_pad="5" +     width="250"/>      <button  	 enabled="false"       follows="right|bottom" @@ -167,9 +167,9 @@       label="Browse"       label_selected="Browse"       layout="topleft" -     left_pad="115" +     left_pad="5"       name="log_path_button" -     top_delta="-21" +     top_delta="0"       width="145">          <button.commit_callback           function="Pref.LogPath" /> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index 34bd6fb091..f6900cc31c 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -176,7 +176,7 @@       max_val="1024"       min_val="32"       name="cache_size" -     top_delta="-1" +     top_delta="-2"       width="180" />      <text       type="string" @@ -191,6 +191,18 @@       width="40">          MB      </text> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left="80" +     name="Cache location" +     top_delta="20" +     width="300"> +        Cache location: +    </text>      <line_editor       control_name="CacheLocationTopFolder"       border_style="line" @@ -199,12 +211,12 @@       follows="left|top"       font="SansSerif"       handle_edit_keys_directly="true" -     height="20" +     height="23"       layout="topleft"       left="80"       max_length="4096"       name="cache_location" -     top_pad="20" +     top_pad="5"       width="205" />      <button       follows="left|top" @@ -232,20 +244,6 @@          <button.commit_callback           function="Pref.ResetCache" />      </button> - -    <text -     type="string" -     length="1" -     follows="left|top" -     height="10" -     layout="topleft" -     left="80" -     name="Cache location" -     top_delta="20" -     width="300" -     text_color="LtGray_50"> -        Cache location -    </text>      <text       type="string"       length="1" @@ -301,15 +299,28 @@       mouse_opaque="true"       name="web_proxy_enabled"       radio_style="false" -     width="400" /> +     width="400" +     top_pad="5"/> +    <text +     type="string" +     length="1" +     follows="left|top" +     height="10" +     layout="topleft" +     left_delta="1" +     name="Proxy location" +     top_delta="20" +     width="300"> +        Proxy location: +    </text>      <line_editor       control_name="BrowserProxyAddress"       enabled_control="BrowserProxyEnabled"  	 follows="left|top"       font="SansSerif" -     height="20" +     height="23"       layout="topleft" -     left_delta="1" +     left_delta="0"       name="web_proxy_editor"       tool_tip="The name or IP address of the proxy you would like to use"       top_pad="4" @@ -328,16 +339,4 @@          <button.commit_callback           function="Pref.SetCache" />      </button> -    <text -     type="string" -     length="1" -     follows="left|top" -     height="10" -     layout="topleft" -     left_delta="-203" -     name="Proxy location" -     top_delta="20" -     width="300" -     text_color="LtGray_50"> -        Proxy location -    </text></panel> +  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml index 18c2228906..727c5fb7b2 100644 --- a/indra/newview/skins/default/xui/en/panel_progress.xml +++ b/indra/newview/skins/default/xui/en/panel_progress.xml @@ -54,7 +54,7 @@                       color="LoginProgressBoxCenterColor"                       follows="left|right|bottom|top"                       height="250" -                     image_name="rounded_square.tga" +                     image_name="Rounded_Square"                       layout="topleft"                       left="0"                       top="0" diff --git a/indra/newview/skins/default/xui/en/panel_region_texture.xml b/indra/newview/skins/default/xui/en/panel_region_texture.xml index a4d24cb0fc..502a5804c3 100644 --- a/indra/newview/skins/default/xui/en/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/en/panel_region_texture.xml @@ -136,7 +136,7 @@       layout="topleft"       left="10"       name="height_text_lbl5" -     top="186" +     top="170"       width="300">          Texture Elevation Ranges      </text> @@ -146,7 +146,7 @@       layout="topleft"       left="51"       name="height_text_lbl6" -     top="201" +     top="185"       width="100">          Southwest      </text> @@ -171,7 +171,7 @@      max_val="500"      min_val="-500"      name="height_start_spin_0" -    top_delta="20" +    top_delta="15"      width="100" />    <spinner     follows="left|top" @@ -216,9 +216,9 @@       follows="left|top"       height="20"       layout="topleft" -     left_pad="10" +     left="51"       name="height_text_lbl8" -     top_delta="0" +     top_pad="10"       width="100">          Southeast      </text> @@ -243,7 +243,7 @@         max_val="500"         min_val="-500"         name="height_start_spin_2" -       top_delta="20" +       top_delta="15"         width="100" />        <spinner         follows="left|top" @@ -291,9 +291,9 @@         left="10"         name="height_text_lbl10"         top_delta="30" -       width="270"> -        These values represent the blend range -        for the textures above. +       width="400" +       wrap="true"> +        These values represent the blend range for the textures above.        </text>        <text         follows="left|top" @@ -302,11 +302,9 @@         left_delta="0"         name="height_text_lbl11"         top_delta="32" -       width="270"> -        Measured in meters, the LOW value -        is the MAXIMUM height of Texture #1, -        and the HIGH value is the MINIMUM -        height of Texture #4. +       width="400" +       wrap="true"> +        Measured in meters, the LOW value is the MAXIMUM height of Texture #1, and the HIGH value is the MINIMUM height of Texture #4.        </text>      <button       enabled="false" diff --git a/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml new file mode 100644 index 0000000000..e6bdcccfdf --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<folder_view_item +  folder_arrow_image="Folder_Arrow" +  folder_indentation="8" +  item_height="20"  +  item_top_pad="4" +  selection_image="Rounded_Square" +  /> diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml new file mode 100644 index 0000000000..93875d66e6 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel +  bg_opaque_color="InventoryBackgroundColor" +  background_visible="true" +  background_opaque="true" +  /> diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 0db18525d7..00a903431a 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -822,13 +822,15 @@ class LinuxManifest(ViewerManifest):              'dst': self.get_dst_prefix(),              'inst': self.build_path_of(installer_name)})          try: -            # --numeric-owner hides the username of the builder for -            # security etc. -            self.run_command('tar -C %(dir)s --numeric-owner -cjf ' -                             '%(inst_path)s.tar.bz2 %(inst_name)s' % { -                'dir': self.get_build_prefix(), -                'inst_name': installer_name, -                'inst_path':self.build_path_of(installer_name)}) +            # only create tarball if it's not a debug build. +            if self.args['buildtype'].lower() != 'debug': +                # --numeric-owner hides the username of the builder for +                # security etc. +                self.run_command('tar -C %(dir)s --numeric-owner -cjf ' +                                 '%(inst_path)s.tar.bz2 %(inst_name)s' % { +                        'dir': self.get_build_prefix(), +                        'inst_name': installer_name, +                        'inst_path':self.build_path_of(installer_name)})          finally:              self.run_command("mv %(inst)s %(dst)s" % {                  'dst': self.get_dst_prefix(), @@ -852,7 +854,14 @@ class Linux_i686Manifest(LinuxManifest):                  print "Skipping %s - not found" % libfile                  pass -        self.path("secondlife-stripped","bin/do-not-directly-run-secondlife-bin") +             +        if(self.args['buildtype'].lower() != 'debug'): +            print "* packaging stripped viewer binary." +            self.path("secondlife-stripped","bin/do-not-directly-run-secondlife-bin") +        else: +            print "* packaging un-stripped viewer binary." +            self.path("secondlife-bin","bin/do-not-directly-run-secondlife-bin") +          self.path("../linux_crash_logger/linux-crash-logger-stripped","bin/linux-crash-logger.bin")          self.path("../linux_updater/linux-updater-stripped", "bin/linux-updater.bin")          self.path("../llplugin/slplugin/SLPlugin", "bin/SLPlugin") | 
