diff options
65 files changed, 1332 insertions, 1155 deletions
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 0e7060e22c..ac10afe594 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -34,10 +34,13 @@  #include "llpanel.h"  #include "llresizebar.h"  #include "llcriticaldamp.h" +#include "boost/foreach.hpp"  static LLDefaultChildRegistry::Register<LLLayoutStack> register_layout_stack("layout_stack");  static LLLayoutStack::LayoutStackRegistry::Register<LLLayoutPanel> register_layout_panel("layout_panel"); +static const F32 MAX_FRACTIONAL_VALUE = 0.99999f; +  void LLLayoutStack::OrientationNames::declareValues()  {  	declare("horizontal", HORIZONTAL); @@ -49,15 +52,12 @@ void LLLayoutStack::OrientationNames::declareValues()  //  LLLayoutPanel::Params::Params()	  :	expanded_min_dim("expanded_min_dim", 0), -	min_dim("min_dim", 0), -	max_dim("max_dim", S32_MAX), -	user_resize("user_resize", true), +	min_dim("min_dim", -1), +	user_resize("user_resize", false),  	auto_resize("auto_resize", true)  {  	addSynonym(min_dim, "min_width");  	addSynonym(min_dim, "min_height"); -	addSynonym(max_dim, "max_width"); -	addSynonym(max_dim, "max_height");  }  LLLayoutPanel::LLLayoutPanel(const Params& p)	 @@ -65,7 +65,6 @@ LLLayoutPanel::LLLayoutPanel(const Params& p)  	mExpandedMinDimSpecified(false),  	mExpandedMinDim(p.min_dim),   	mMinDim(p.min_dim),  - 	mMaxDim(p.max_dim),    	mAutoResize(p.auto_resize),   	mUserResize(p.user_resize),  	mCollapsed(FALSE), @@ -73,6 +72,8 @@ LLLayoutPanel::LLLayoutPanel(const Params& p)  	mVisibleAmt(1.f), // default to fully visible  	mResizeBar(NULL),  	mFractionalSize(0.f), +	mTargetDim(0), +	mIgnoreReshape(false),  	mOrientation(LLLayoutStack::HORIZONTAL)  {  	// Set the expanded min dim if it is provided, otherwise it gets the p.min_dim value @@ -103,33 +104,88 @@ LLLayoutPanel::~LLLayoutPanel()  	mResizeBar = NULL;  } -void LLLayoutPanel::reshape(S32 width, S32 height, BOOL called_from_parent) +F32 LLLayoutPanel::getAutoResizeFactor() const +{ +	return mVisibleAmt * (1.f - mCollapseAmt); +} +  +F32 LLLayoutPanel::getVisibleAmount() const +{ +	return mVisibleAmt; +} + +S32 LLLayoutPanel::getLayoutDim() const  { -	if (mOrientation == LLLayoutStack::HORIZONTAL) +	return llround((F32)((mOrientation == LLLayoutStack::HORIZONTAL) +					? getRect().getWidth() +					: getRect().getHeight())); +} +  +S32 LLLayoutPanel::getVisibleDim() const +{ +	F32 min_dim = getRelevantMinDim(); +	return llround(mVisibleAmt +					* (min_dim +						+ (((F32)mTargetDim - min_dim) * (1.f - mCollapseAmt)))); +} +  +void LLLayoutPanel::setOrientation( LLLayoutStack::ELayoutOrientation orientation ) +{ +	mOrientation = orientation; +	S32 layout_dim = llround((F32)((mOrientation == LLLayoutStack::HORIZONTAL) +		? getRect().getWidth() +		: getRect().getHeight())); + +	if (mMinDim == -1)  	{ -		mFractionalSize += width - llround(mFractionalSize); +		if (!mAutoResize) +		{ +			setMinDim(layout_dim); +		} +		else +		{ +			setMinDim(0); +		}  	} -	else + +	mTargetDim = llmax(layout_dim, getMinDim()); +} +  +void LLLayoutPanel::setVisible( BOOL visible ) +{ +	if (visible != getVisible())  	{ -		mFractionalSize += height - llround(mFractionalSize); +		LLLayoutStack* stackp = dynamic_cast<LLLayoutStack*>(getParent()); +		if (stackp) +		{ +			stackp->mNeedsLayout = true; +		}  	} -	LLPanel::reshape(width, height, called_from_parent); +	LLPanel::setVisible(visible);  } -F32 LLLayoutPanel::getCollapseFactor() +void LLLayoutPanel::reshape( S32 width, S32 height, BOOL called_from_parent /*= TRUE*/ )  { -	if (mOrientation == LLLayoutStack::HORIZONTAL) +	if (!mIgnoreReshape && !mAutoResize)  	{ -		F32 collapse_amt =  -			clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, (F32)getRelevantMinDim() / (F32)llmax(1, getRect().getWidth())); -		return mVisibleAmt * collapse_amt; +		mTargetDim = (mOrientation == LLLayoutStack::HORIZONTAL) ? width : height;  	} -	else +	LLPanel::reshape(width, height, called_from_parent); +} + +void LLLayoutPanel::handleReshape(const LLRect& new_rect, bool by_user) +{ +	LLLayoutStack* stackp = dynamic_cast<LLLayoutStack*>(getParent()); +	if (stackp)  	{ -		F32 collapse_amt =  -			clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, llmin(1.f, (F32)getRelevantMinDim() / (F32)llmax(1, getRect().getHeight()))); -		return mVisibleAmt * collapse_amt; +		stackp->mNeedsLayout = true; +		if (by_user) +		{ +			// tell layout stack to account for new shape +			stackp->updatePanelRect(this, new_rect); +		}  	} +	LLPanel::handleReshape(new_rect, by_user);  }  // @@ -147,12 +203,11 @@ LLLayoutStack::Params::Params()  LLLayoutStack::LLLayoutStack(const LLLayoutStack::Params& p)   :	LLView(p), -	mMinWidth(0), -	mMinHeight(0),  	mPanelSpacing(p.border_size),  	mOrientation(p.orientation),  	mAnimate(p.animate),  	mAnimatedThisFrame(false), +	mNeedsLayout(true),  	mClip(p.clip),  	mOpenTimeConstant(p.open_time_constant),  	mCloseTimeConstant(p.close_time_constant) @@ -169,26 +224,26 @@ void LLLayoutStack::draw()  {  	updateLayout(); -	e_panel_list_t::iterator panel_it; -	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) +	// always clip to stack itself +	LLLocalClipRect clip(getLocalRect()); +	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)  	{  		// clip to layout rectangle, not bounding rectangle -		LLRect clip_rect = (*panel_it)->getRect(); +		LLRect clip_rect = panelp->getRect();  		// scale clipping rectangle by visible amount  		if (mOrientation == HORIZONTAL)  		{ -			clip_rect.mRight = clip_rect.mLeft + llround((F32)clip_rect.getWidth() * (*panel_it)->getCollapseFactor()); +			clip_rect.mRight = clip_rect.mLeft + panelp->getVisibleDim();  		}  		else  		{ -			clip_rect.mBottom = clip_rect.mTop - llround((F32)clip_rect.getHeight() * (*panel_it)->getCollapseFactor()); +			clip_rect.mBottom = clip_rect.mTop - panelp->getVisibleDim();  		} -		LLPanel* panelp = (*panel_it); - -		LLLocalClipRect clip(clip_rect, mClip); -		// only force drawing invisible children if visible amount is non-zero -		drawChild(panelp, 0, 0, !clip_rect.isEmpty()); +		{LLLocalClipRect clip(clip_rect, mClip); +			// only force drawing invisible children if visible amount is non-zero +			drawChild(panelp, 0, 0, !clip_rect.isEmpty()); +		}  	}  	mAnimatedThisFrame = false;  } @@ -201,12 +256,10 @@ void LLLayoutStack::removeChild(LLView* view)  	{  		mPanels.erase(std::find(mPanels.begin(), mPanels.end(), embedded_panelp));  		delete embedded_panelp; +		updateFractionalSizes(); +		mNeedsLayout = true;  	} -	// need to update resizebars - -	calcMinExtents(); -  	LLView::removeChild(view);  } @@ -221,29 +274,15 @@ bool LLLayoutStack::addChild(LLView* child, S32 tab_group)  	LLLayoutPanel* panelp = dynamic_cast<LLLayoutPanel*>(child);  	if (panelp)  	{ -		panelp->mFractionalSize = (mOrientation == HORIZONTAL) -									? panelp->getRect().getWidth() -									: panelp->getRect().getHeight();  		panelp->setOrientation(mOrientation);  		mPanels.push_back(panelp); +		createResizeBar(panelp); +		mNeedsLayout = true;  	} -	return LLView::addChild(child, tab_group); -} - -void LLLayoutStack::movePanel(LLPanel* panel_to_move, LLPanel* target_panel, bool move_to_front) -{ -	LLLayoutPanel* embedded_panel_to_move = findEmbeddedPanel(panel_to_move); -	LLLayoutPanel* embedded_target_panel = move_to_front ? *mPanels.begin() : findEmbeddedPanel(target_panel); +	BOOL result = LLView::addChild(child, tab_group); -	if (!embedded_panel_to_move || !embedded_target_panel || embedded_panel_to_move == embedded_target_panel) -	{ -		llwarns << "One of the panels was not found in stack or NULL was passed instead of valid panel" << llendl; -		return; -	} -	e_panel_list_t::iterator it = std::find(mPanels.begin(), mPanels.end(), embedded_panel_to_move); -	mPanels.erase(it); -	it = move_to_front ? mPanels.begin() : std::find(mPanels.begin(), mPanels.end(), embedded_target_panel); -	mPanels.insert(it, embedded_panel_to_move); +	updateFractionalSizes(); +	return result;  }  void LLLayoutStack::addPanel(LLLayoutPanel* panel, EAnimate animate) @@ -258,23 +297,19 @@ void LLLayoutStack::addPanel(LLLayoutPanel* panel, EAnimate animate)  	}  } -void LLLayoutStack::removePanel(LLPanel* panel) -{ -	removeChild(panel); -} -  void LLLayoutStack::collapsePanel(LLPanel* panel, BOOL collapsed)  {  	LLLayoutPanel* panel_container = findEmbeddedPanel(panel);  	if (!panel_container) return;  	panel_container->mCollapsed = collapsed; +	mNeedsLayout = true;  }  void LLLayoutStack::updatePanelAutoResize(const std::string& panel_name, BOOL auto_resize)  {  	LLLayoutPanel* panel = findEmbeddedPanelByName(panel_name); - +	  	if (panel)  	{  		panel->mAutoResize = auto_resize; @@ -291,51 +326,246 @@ void LLLayoutStack::setPanelUserResize(const std::string& panel_name, BOOL user_  	}  } -bool LLLayoutStack::getPanelMinSize(const std::string& panel_name, S32* min_dimp) + +static LLFastTimer::DeclareTimer FTM_UPDATE_LAYOUT("Update LayoutStacks"); + +void LLLayoutStack::updateLayout() +{	 +	LLFastTimer ft(FTM_UPDATE_LAYOUT); + +	if (!mNeedsLayout) return; + +	bool animation_in_progress = animatePanels(); +	F32 total_visible_fraction = 0.f; +	S32 space_to_distribute = (mOrientation == HORIZONTAL) +							? getRect().getWidth() +							: getRect().getHeight(); + +	// first, assign minimum dimensions +	LLLayoutPanel* panelp = NULL; +	BOOST_FOREACH(panelp, mPanels) +	{ +		if (panelp->mAutoResize) +		{ +			panelp->mTargetDim = panelp->getRelevantMinDim(); +		} +		space_to_distribute -= panelp->getVisibleDim() + llround((F32)mPanelSpacing * panelp->getVisibleAmount()); +		total_visible_fraction += panelp->mFractionalSize * panelp->getAutoResizeFactor(); +	} + +	llassert(total_visible_fraction < 1.01f); + +	// don't need spacing after last panel +	space_to_distribute += panelp ? llround((F32)mPanelSpacing * panelp->getVisibleAmount()) : 0; + +	// scale up space to distribute, since some of might will go to an invisible fraction of the auto-resize space +	space_to_distribute = (total_visible_fraction > 0.f) +						? llround((F32)space_to_distribute / total_visible_fraction) +						: space_to_distribute; + +	if (space_to_distribute > 0) +	{	// give space proportionally to auto resize panels, even invisible ones +		BOOST_FOREACH(LLLayoutPanel* panelp, mPanels) +		{ +			if (panelp->mAutoResize == TRUE) +			{ +				S32 delta = llround((F32)space_to_distribute * panelp->mFractionalSize/* * panelp->getAutoResizeFactor()*/); +				panelp->mTargetDim += delta; +			} +		} +	} + +	F32 cur_pos = (mOrientation == HORIZONTAL) ? 0.f : (F32)getRect().getHeight(); + +	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels) +	{ +		F32 panel_dim = panelp->mTargetDim; +		F32 panel_visible_dim = panelp->getVisibleDim(); + +		LLRect panel_rect; +		if (mOrientation == HORIZONTAL) +		{ +			panel_rect.setLeftTopAndSize(llround(cur_pos), +										getRect().getHeight(), +										llround(panel_dim), +										getRect().getHeight()); +		} +		else +		{ +			panel_rect.setLeftTopAndSize(0, +				llround(cur_pos), +				getRect().getWidth(), +				llround(panel_dim)); +		} +		panelp->setIgnoreReshape(true); +		panelp->setShape(panel_rect); +		panelp->setIgnoreReshape(false); + +		static LLUICachedControl<S32> resize_bar_overlap ("UIResizeBarOverlap", 0); +		LLRect resize_bar_rect(panel_rect); + +		F32 panel_spacing = (F32)mPanelSpacing * panelp->getVisibleAmount(); +		if (mOrientation == HORIZONTAL) +		{ +			resize_bar_rect.mLeft = panel_rect.mRight - resize_bar_overlap; +			resize_bar_rect.mRight = panel_rect.mRight + panel_spacing + resize_bar_overlap; + +			cur_pos += panel_visible_dim + panel_spacing; +		} +		else //VERTICAL +		{ +			resize_bar_rect.mTop = panel_rect.mBottom + resize_bar_overlap; +			resize_bar_rect.mBottom = panel_rect.mBottom - panel_spacing - resize_bar_overlap; + +			cur_pos -= panel_visible_dim + panel_spacing; +		} +		panelp->mResizeBar->setShape(resize_bar_rect); +	} + +	updateResizeBarLimits(); + +	// clear animation flag at end, since panel resizes will set it +	// and leave it set if there is any animation in progress +	mNeedsLayout = animation_in_progress; +} // end LLLayoutStack::updateLayout + +LLLayoutPanel* LLLayoutStack::findEmbeddedPanel(LLPanel* panelp) const  { -	LLLayoutPanel* panel = findEmbeddedPanelByName(panel_name); +	if (!panelp) return NULL; + +	e_panel_list_t::const_iterator panel_it; +	BOOST_FOREACH(LLLayoutPanel* p, mPanels) +	{ +		if (p == panelp) +		{ +			return p; +		} +	} +	return NULL; +} -	if (panel && min_dimp) +LLLayoutPanel* LLLayoutStack::findEmbeddedPanelByName(const std::string& name) const +{ +	LLLayoutPanel* result = NULL; + +	BOOST_FOREACH(LLLayoutPanel* p, mPanels)  	{ -		*min_dimp = panel->getRelevantMinDim(); +		if (p->getName() == name) +		{ +			result = p; +			break; +		}  	} -	return NULL != panel; +	return result;  } -bool LLLayoutStack::getPanelMaxSize(const std::string& panel_name, S32* max_dimp) +void LLLayoutStack::createResizeBar(LLLayoutPanel* panelp)  { -	LLLayoutPanel* panel = findEmbeddedPanelByName(panel_name); +	BOOST_FOREACH(LLLayoutPanel* lp, mPanels) +	{ +		if (lp->mResizeBar == NULL) +		{ +			LLResizeBar::Side side = (mOrientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM; +			LLRect resize_bar_rect = getRect(); -	if (panel) +			LLResizeBar::Params resize_params; +			resize_params.name("resize"); +			resize_params.resizing_view(lp); +			resize_params.min_size(lp->getRelevantMinDim()); +			resize_params.side(side); +			resize_params.snapping_enabled(false); +			LLResizeBar* resize_bar = LLUICtrlFactory::create<LLResizeBar>(resize_params); +			lp->mResizeBar = resize_bar; +			LLView::addChild(resize_bar, 0); +		} +	} +	// bring all resize bars to the front so that they are clickable even over the panels +	// with a bit of overlap +	for (e_panel_list_t::iterator panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)  	{ -		if (max_dimp) *max_dimp = panel->mMaxDim; +		LLResizeBar* resize_barp = (*panel_it)->mResizeBar; +		sendChildToFront(resize_barp);  	} +} -	return NULL != panel; +// update layout stack animations, etc. once per frame +// NOTE: we use this to size world view based on animating UI, *before* we draw the UI +// we might still need to call updateLayout during UI draw phase, in case UI elements +// are resizing themselves dynamically +//static  +void LLLayoutStack::updateClass() +{ +	for (instance_iter it = beginInstances(); it != endInstances(); ++it) +	{ +		it->updateLayout(); +	}  } -static LLFastTimer::DeclareTimer FTM_UPDATE_LAYOUT("Update LayoutStacks"); -void LLLayoutStack::updateLayout(BOOL force_resize) +void LLLayoutStack::updateFractionalSizes()  { -	LLFastTimer ft(FTM_UPDATE_LAYOUT); -	static LLUICachedControl<S32> resize_bar_overlap ("UIResizeBarOverlap", 0); -	calcMinExtents(); -	createResizeBars(); +	F32 total_resizable_dim = 0; +	S32 num_auto_resize_panels = 0; + +	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels) +	{ +		if (panelp->mAutoResize) +		{ +			total_resizable_dim += llmax(0, panelp->getLayoutDim() - panelp->getRelevantMinDim()); +			num_auto_resize_panels++; +		} +	} -	// calculate current extents -	F32 total_size = 0.f; +	F32 total_fractional_size = 0.f; +	 +	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels) +	{ +		if (panelp->mAutoResize) +		{ +			F32 panel_resizable_dim = llmax(0.f, (F32)(panelp->getLayoutDim() - panelp->getRelevantMinDim())); +			panelp->mFractionalSize = llmin(MAX_FRACTIONAL_VALUE, (panel_resizable_dim == 0.f) +																	? (1.f - MAX_FRACTIONAL_VALUE) +																	: panel_resizable_dim / total_resizable_dim); +			total_fractional_size += panelp->mFractionalSize; +			// check for NaNs +			llassert(panelp->mFractionalSize == panelp->mFractionalSize); +		} +	} +	if (total_fractional_size == 0.f) +	{ // equal distribution +		BOOST_FOREACH(LLLayoutPanel* panelp, mPanels) +		{ +			if (panelp->mAutoResize) +			{ +				panelp->mFractionalSize = 1.f / (F32)num_auto_resize_panels; +			} +		} +	} +	else +	{ // renormalize +		BOOST_FOREACH(LLLayoutPanel* panelp, mPanels) +		{ +			if (panelp->mAutoResize) +			{ +				panelp->mFractionalSize /= total_fractional_size; +			} +		} +	} +} + +bool LLLayoutStack::animatePanels() +{ +	bool animation_in_progress = false; +	  	//  	// animate visibility  	// -	e_panel_list_t::iterator panel_it; -	for (panel_it = mPanels.begin(); panel_it != mPanels.end();	++panel_it) +	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)  	{ -		LLLayoutPanel* panelp = (*panel_it); -		if (panelp->getVisible())  +		if (panelp->getVisible())  		{ -			if (mAnimate) +			if (mAnimate && panelp->mVisibleAmt < 1.f)  			{  				if (!mAnimatedThisFrame)  				{ @@ -345,15 +575,21 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  						panelp->mVisibleAmt = 1.f;  					}  				} +				 +				animation_in_progress = true;  			}  			else  			{ -				panelp->mVisibleAmt = 1.f; +				if (panelp->mVisibleAmt != 1.f) +				{ +					panelp->mVisibleAmt = 1.f; +					animation_in_progress = true; +				}  			}  		}  		else // not visible  		{ -			if (mAnimate) +			if (mAnimate && panelp->mVisibleAmt > 0.f)  			{  				if (!mAnimatedThisFrame)  				{ @@ -363,297 +599,206 @@ void LLLayoutStack::updateLayout(BOOL force_resize)  						panelp->mVisibleAmt = 0.f;  					}  				} + +				animation_in_progress = true;  			}  			else  			{ -				panelp->mVisibleAmt = 0.f; +				if (panelp->mVisibleAmt != 0.f) +				{ +					panelp->mVisibleAmt = 0.f; +					animation_in_progress = true; +				}  			}  		}  		F32 collapse_state = panelp->mCollapsed ? 1.f : 0.f; -		panelp->mCollapseAmt = lerp(panelp->mCollapseAmt, collapse_state, LLCriticalDamp::getInterpolant(mCloseTimeConstant)); - -        total_size += panelp->mFractionalSize * panelp->getCollapseFactor(); -        // want n-1 panel gaps for n panels -		if (panel_it != mPanels.begin()) -		{ -			total_size += mPanelSpacing; -		} -	} - -	S32 num_resizable_panels = 0; -	F32 shrink_headroom_available = 0.f; -	F32 shrink_headroom_total = 0.f; -	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) -	{ -		LLLayoutPanel* panelp = (*panel_it); - -		// panels that are not fully visible do not count towards shrink headroom -		if (panelp->getCollapseFactor() < 1.f)  -		{ -			continue; -		} - -		F32 cur_size = panelp->mFractionalSize; -		F32 min_size = (F32)panelp->getRelevantMinDim(); -		 -		// if currently resizing a panel or the panel is flagged as not automatically resizing -		// only track total available headroom, but don't use it for automatic resize logic -		if (panelp->mResizeBar->hasMouseCapture()  -			|| (!panelp->mAutoResize  -				&& !force_resize)) -		{ -			shrink_headroom_total += cur_size - min_size; -		} -		else -		{ -			num_resizable_panels++; -			 -			shrink_headroom_available += cur_size - min_size; -			shrink_headroom_total += cur_size - min_size; -		} -	} - -	// calculate how many pixels need to be distributed among layout panels -	// positive means panels need to grow, negative means shrink -	F32 pixels_to_distribute = (mOrientation == HORIZONTAL) -							? getRect().getWidth() - total_size -							: getRect().getHeight() - total_size; - -	// now we distribute the pixels... -	F32 cur_x = 0.f; -	F32 cur_y = (F32)getRect().getHeight(); - -	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) -	{ -		LLLayoutPanel* panelp = (*panel_it); - -		F32 min_size = panelp->getRelevantMinDim(); -		F32 delta_size = 0.f; - -		// if panel can automatically resize (not animating, and resize flag set)... -		if (panelp->getCollapseFactor() == 1.f  -			&& (force_resize || panelp->mAutoResize)  -			&& !panelp->mResizeBar->hasMouseCapture())  +		if (panelp->mCollapseAmt != collapse_state)  		{ -			if (pixels_to_distribute < 0.f) +			if (!mAnimatedThisFrame)  			{ -				// shrink proportionally to amount over minimum -				// so we can do this in one pass -				delta_size = (shrink_headroom_available > 0.f)  -					? pixels_to_distribute * ((F32)(panelp->mFractionalSize - min_size) / shrink_headroom_available)  -					: 0.f; -				shrink_headroom_available -= (panelp->mFractionalSize - min_size); +				panelp->mCollapseAmt = lerp(panelp->mCollapseAmt, collapse_state, LLCriticalDamp::getInterpolant(mCloseTimeConstant));  			} -			else +			animation_in_progress = true; +			 +			if (llabs(panelp->mCollapseAmt - collapse_state) < 0.001f)  			{ -				// grow all elements equally -				delta_size = pixels_to_distribute / (F32)num_resizable_panels; -				num_resizable_panels--; +				panelp->mCollapseAmt = collapse_state;  			} -			 -			panelp->mFractionalSize = llmax(min_size, panelp->mFractionalSize + delta_size); -			pixels_to_distribute -= delta_size;  		} +	} -		// adjust running headroom count based on new sizes -		shrink_headroom_total += delta_size; +	mAnimatedThisFrame = true; -		LLRect panel_rect; -		if (mOrientation == HORIZONTAL) -		{ -			panel_rect.setLeftTopAndSize(llround(cur_x),  -										llround(cur_y),  -										llround(panelp->mFractionalSize),  -										getRect().getHeight()); -		} -		else -		{ -			panel_rect.setLeftTopAndSize(llround(cur_x),  -										llround(cur_y),  -										getRect().getWidth(),  -										llround(panelp->mFractionalSize)); -		} -		panelp->setShape(panel_rect); +	return animation_in_progress; +} -		LLRect resize_bar_rect = panel_rect; -		if (mOrientation == HORIZONTAL) -		{ -			resize_bar_rect.mLeft = panel_rect.mRight - resize_bar_overlap; -			resize_bar_rect.mRight = panel_rect.mRight + mPanelSpacing + resize_bar_overlap; -		} -		else -		{ -			resize_bar_rect.mTop = panel_rect.mBottom + resize_bar_overlap; -			resize_bar_rect.mBottom = panel_rect.mBottom - mPanelSpacing - resize_bar_overlap; -		} -		(*panel_it)->mResizeBar->setRect(resize_bar_rect); +void LLLayoutStack::updatePanelRect( LLLayoutPanel* resized_panel, const LLRect& new_rect ) +{ +	S32 new_dim = (mOrientation == HORIZONTAL) +					? new_rect.getWidth() +					: new_rect.getHeight(); +	S32 delta_dim = new_dim - resized_panel->getVisibleDim(); +	if (delta_dim == 0) return; -		F32 size = ((*panel_it)->mFractionalSize * (*panel_it)->getCollapseFactor()) + (F32)mPanelSpacing; -		if (mOrientation == HORIZONTAL) -		{ -			cur_x += size; -		} -		else //VERTICAL -		{ -			cur_y -= size; -		} -	} +	F32 total_visible_fraction = 0.f; +	F32 delta_auto_resize_headroom = 0.f; +	F32 total_auto_resize_headroom = 0.f; -	// update resize bars with new limits -	LLLayoutPanel* last_resizeable_panel = NULL; -	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) -	{ -		LLLayoutPanel* panelp = (*panel_it); -		S32 relevant_min = panelp->getRelevantMinDim(); +	LLLayoutPanel* other_resize_panel = NULL; +	LLLayoutPanel* following_panel = NULL; -		if (mOrientation == HORIZONTAL) +	BOOST_REVERSE_FOREACH(LLLayoutPanel* panelp, mPanels) +	{ +		if (panelp->mAutoResize)  		{ -			(*panel_it)->mResizeBar->setResizeLimits( -				relevant_min,  -				relevant_min + llround(shrink_headroom_total)); +			total_auto_resize_headroom += (F32)(panelp->mTargetDim - panelp->getRelevantMinDim()); +			total_visible_fraction += panelp->mFractionalSize * panelp->getAutoResizeFactor();  		} -		else //VERTICAL + +		if (panelp == resized_panel)  		{ -			(*panel_it)->mResizeBar->setResizeLimits( -				relevant_min,  -				relevant_min + llround(shrink_headroom_total)); +			other_resize_panel = following_panel;  		} -		// toggle resize bars based on panel visibility, resizability, etc -		BOOL resize_bar_enabled = panelp->getVisible() && (*panel_it)->mUserResize; -		(*panel_it)->mResizeBar->setVisible(resize_bar_enabled); - -		if ((*panel_it)->mUserResize || (*panel_it)->mAutoResize) +		if (panelp->getVisible() && !panelp->mCollapsed)  		{ -			last_resizeable_panel = (*panel_it); +			following_panel = panelp;  		}  	} -	// hide last resize bar as there is nothing past it -	// resize bars need to be in between two resizable panels -	if (last_resizeable_panel) +	if (resized_panel->mAutoResize == FALSE)  	{ -		last_resizeable_panel->mResizeBar->setVisible(FALSE); +		delta_auto_resize_headroom += -delta_dim;  	} - -	// not enough room to fit existing contents -	if (force_resize == FALSE -		// layout did not complete by reaching target position -		&& ((mOrientation == VERTICAL && llround(cur_y) != -mPanelSpacing) -			|| (mOrientation == HORIZONTAL && llround(cur_x) != getRect().getWidth() + mPanelSpacing))) +	if (other_resize_panel && other_resize_panel->mAutoResize == FALSE)  	{ -		// do another layout pass with all stacked elements contributing -		// even those that don't usually resize -		llassert_always(force_resize == FALSE); -		updateLayout(TRUE); +		delta_auto_resize_headroom += delta_dim;  	} -	 mAnimatedThisFrame = true; -} // end LLLayoutStack::updateLayout +	//delta_auto_resize_headroom = (total_visible_fraction > 0.f) +	//								? delta_auto_resize_headroom / total_visible_fraction +	//								: 0.f; -LLLayoutPanel* LLLayoutStack::findEmbeddedPanel(LLPanel* panelp) const -{ -	if (!panelp) return NULL; +	F32 fraction_given_up = 0.f; +	F32 fraction_remaining = 1.f; +	F32 updated_auto_resize_headroom = total_auto_resize_headroom + delta_auto_resize_headroom; -	e_panel_list_t::const_iterator panel_it; -	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) +	enum  	{ -		if ((*panel_it) == panelp) -		{ -			return *panel_it; -		} -	} -	return NULL; -} +		BEFORE_RESIZED_PANEL, +		RESIZED_PANEL, +		NEXT_PANEL, +		AFTER_RESIZED_PANEL +	} which_panel = BEFORE_RESIZED_PANEL; -LLLayoutPanel* LLLayoutStack::findEmbeddedPanelByName(const std::string& name) const -{ -	LLLayoutPanel* result = NULL; - -	for (e_panel_list_t::const_iterator panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) +	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)  	{ -		LLLayoutPanel* p = *panel_it; +		if (!panelp->getVisible() || panelp->mCollapsed) continue; -		if (p->getName() == name) +		if (panelp == resized_panel)  		{ -			result = p; -			break; +			which_panel = RESIZED_PANEL;  		} -	} - -	return result; -} - -// Compute sum of min_width or min_height of children -void LLLayoutStack::calcMinExtents() -{ -	mMinWidth = 0; -	mMinHeight = 0; -	e_panel_list_t::iterator panel_it; -	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) -	{ -		if (mOrientation == HORIZONTAL) +		switch(which_panel)  		{ -            mMinWidth += (*panel_it)->getRelevantMinDim(); -			if (panel_it != mPanels.begin()) +		case BEFORE_RESIZED_PANEL: +			if (panelp->mAutoResize) +			{	// freeze current size as fraction of overall auto_resize space +				F32 fractional_adjustment_factor = total_auto_resize_headroom / updated_auto_resize_headroom; +				F32 new_fractional_size = llclamp(panelp->mFractionalSize * fractional_adjustment_factor, +													0.f, +													MAX_FRACTIONAL_VALUE); +				F32 fraction_delta = (new_fractional_size - panelp->mFractionalSize); +				fraction_given_up -= fraction_delta; +				fraction_remaining -= panelp->mFractionalSize; +				panelp->mFractionalSize += fraction_delta; +				llassert(!llisnan(panelp->mFractionalSize)); +			} +			else  			{ -				mMinWidth += mPanelSpacing; +				// leave non auto-resize panels alone  			} -		} -		else //VERTICAL -		{ -			mMinHeight += (*panel_it)->getRelevantMinDim(); -			if (panel_it != mPanels.begin()) +			break; +		case RESIZED_PANEL: +			if (panelp->mAutoResize) +			{	// freeze new size as fraction +				F32 new_fractional_size = (updated_auto_resize_headroom == 0.f) +					? 1.f +					: llmin(MAX_FRACTIONAL_VALUE, ((F32)(new_dim - panelp->getRelevantMinDim()) / updated_auto_resize_headroom)); +				fraction_given_up -= new_fractional_size - panelp->mFractionalSize; +				fraction_remaining -= panelp->mFractionalSize; +				panelp->mFractionalSize = new_fractional_size; +				llassert(!llisnan(panelp->mFractionalSize)); +			} +			else +			{	// freeze new size as original size +				panelp->mTargetDim = new_dim; +				fraction_remaining -= fraction_given_up; +			} +			which_panel = NEXT_PANEL; +			break; +		case NEXT_PANEL: +			if (panelp->mAutoResize) +			{ +				F32 new_fractional_size = (F32)(panelp->mTargetDim - panelp->getRelevantMinDim() + delta_auto_resize_headroom)  +												/ updated_auto_resize_headroom; +				fraction_given_up -= new_fractional_size - panelp->mFractionalSize; +				fraction_remaining -= panelp->mFractionalSize; +				panelp->mFractionalSize = new_fractional_size; +			} +			else +			{ +				panelp->mTargetDim -= delta_dim; +			} +			which_panel = AFTER_RESIZED_PANEL; +			break; +		case AFTER_RESIZED_PANEL: +			if (panelp->mAutoResize)  			{ -				mMinHeight += mPanelSpacing; +				panelp->mFractionalSize += (panelp->mFractionalSize / fraction_remaining) * fraction_given_up;  			} +		default: +			break;  		}  	}  } -void LLLayoutStack::createResizeBars() +void LLLayoutStack::reshape(S32 width, S32 height, BOOL called_from_parent)  { -	for (e_panel_list_t::iterator panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) +	mNeedsLayout = true; +	LLView::reshape(width, height, called_from_parent); +} + +void LLLayoutStack::updateResizeBarLimits() +{ +	LLLayoutPanel* previous_visible_panelp = NULL; +	BOOST_REVERSE_FOREACH(LLLayoutPanel* visible_panelp, mPanels)  	{ -		LLLayoutPanel* lp = (*panel_it); -		if (lp->mResizeBar == NULL) +		if (!visible_panelp->getVisible() || visible_panelp->mCollapsed)  		{ -			LLResizeBar::Side side = (mOrientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM; -			LLRect resize_bar_rect = getRect(); - -			LLResizeBar::Params resize_params; -			resize_params.name("resize"); -			resize_params.resizing_view(lp); -			resize_params.min_size(lp->getRelevantMinDim()); -			resize_params.side(side); -			resize_params.snapping_enabled(false); -			LLResizeBar* resize_bar = LLUICtrlFactory::create<LLResizeBar>(resize_params); -			lp->mResizeBar = resize_bar; -			LLView::addChild(resize_bar, 0); +			visible_panelp->mResizeBar->setVisible(FALSE); +			continue; +		} -			// bring all resize bars to the front so that they are clickable even over the panels -			// with a bit of overlap -			for (e_panel_list_t::iterator panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) -			{ -				LLResizeBar* resize_barp = (*panel_it)->mResizeBar; -				sendChildToFront(resize_barp); -			} +		// toggle resize bars based on panel visibility, resizability, etc +		if (visible_panelp->mUserResize  +			&& previous_visible_panelp  +			&& previous_visible_panelp->mUserResize) +		{ +			visible_panelp->mResizeBar->setVisible(TRUE); +			visible_panelp->mResizeBar->setResizeLimits(visible_panelp->getRelevantMinDim(),  +														visible_panelp->getVisibleDim()  +															+ (previous_visible_panelp->getVisibleDim()  +																- previous_visible_panelp->getRelevantMinDim())); +		} +		else +		{ +			visible_panelp->mResizeBar->setVisible(FALSE);  		} -	} -} -// update layout stack animations, etc. once per frame -// NOTE: we use this to size world view based on animating UI, *before* we draw the UI -// we might still need to call updateLayout during UI draw phase, in case UI elements -// are resizing themselves dynamically -//static  -void LLLayoutStack::updateClass() -{ -	for (instance_iter it = beginInstances(); it != endInstances(); ++it) -	{ -		it->updateLayout(); +		previous_visible_panelp = visible_panelp;  	}  } diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index 3b308a359d..a343e11cec 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -5,7 +5,7 @@   *   * $LicenseInfo:firstyear=2001&license=viewerlgpl$   * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. + * Copyright (C) 2010, Linden Reshasearch, Inc.   *    * This library is free software; you can redistribute it and/or   * modify it under the terms of the GNU Lesser General Public @@ -72,12 +72,11 @@ public:  	/*virtual*/ void removeChild(LLView*);  	/*virtual*/ BOOL postBuild();  	/*virtual*/ bool addChild(LLView* child, S32 tab_group = 0); +	/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); +  	static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node = NULL); -	S32 getMinWidth() const { return mMinWidth; } -	S32 getMinHeight() const { return mMinHeight; } -	  	typedef enum e_animate  	{  		NO_ANIMATE, @@ -85,47 +84,27 @@ public:  	} EAnimate;  	void addPanel(LLLayoutPanel* panel, EAnimate animate = NO_ANIMATE); -	void removePanel(LLPanel* panel);  	void collapsePanel(LLPanel* panel, BOOL collapsed = TRUE);  	S32 getNumPanels() { return mPanels.size(); } -	/** -	 * Moves panel_to_move before target_panel inside layout stack (both panels should already be there). -	 * If move_to_front is true target_panel is ignored and panel_to_move is moved to the beginning of mPanels -	 */ -	void movePanel(LLPanel* panel_to_move, LLPanel* target_panel, bool move_to_front = false);  	void updatePanelAutoResize(const std::string& panel_name, BOOL auto_resize);  	void setPanelUserResize(const std::string& panel_name, BOOL user_resize); -	/** -	 * Gets minimal dimension along layout_stack axis of the specified by name panel. -	 * -	 * @returns true if specified by panel_name internal panel exists, false otherwise. -	 */ -	bool getPanelMinSize(const std::string& panel_name, S32* min_dimp); - -	/** -	 * Gets maximal dimension along layout_stack axis of the specified by name panel. -	 * -	 * @returns true if specified by panel_name internal panel exists, false otherwise. -	 */ -	bool getPanelMaxSize(const std::string& panel_name, S32* max_dim); -	 -	void updateLayout(BOOL force_resize = FALSE); -	 +	void updateLayout(); +  	S32 getPanelSpacing() const { return mPanelSpacing; } -	BOOL getAnimate () const { return mAnimate; } -	void setAnimate (BOOL animate) { mAnimate = animate; }  	static void updateClass();  protected:  	LLLayoutStack(const Params&);  	friend class LLUICtrlFactory; +	friend class LLLayoutPanel;  private: -	void createResizeBars(); -	void calcMinExtents(); +	void updateResizeBarLimits(); +	bool animatePanels(); +	void createResizeBar(LLLayoutPanel* panel);  	const ELayoutOrientation mOrientation; @@ -134,9 +113,9 @@ private:  	LLLayoutPanel* findEmbeddedPanel(LLPanel* panelp) const;  	LLLayoutPanel* findEmbeddedPanelByName(const std::string& name) const; +	void updateFractionalSizes(); +	void updatePanelRect( LLLayoutPanel* param1, const LLRect& new_rect ); -	S32 mMinWidth;  // calculated by calcMinExtents -	S32 mMinHeight;  // calculated by calcMinExtents  	S32 mPanelSpacing;  	// true if we already applied animation this frame @@ -145,6 +124,7 @@ private:  	bool mClip;  	F32 mOpenTimeConstant;  	F32 mCloseTimeConstant; +	bool mNeedsLayout;  }; // end class LLLayoutStack @@ -156,8 +136,7 @@ public:  	struct Params : public LLInitParam::Block<Params, LLPanel::Params>  	{  		Optional<S32>			expanded_min_dim, -								min_dim, -								max_dim; +								min_dim;  		Optional<bool>			user_resize,  								auto_resize; @@ -168,14 +147,17 @@ public:  	void initFromParams(const Params& p); +	void handleReshape(const LLRect& new_rect, bool by_user); +  	void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); +	 + +	void setVisible(BOOL visible); +	S32 getLayoutDim() const;  	S32 getMinDim() const { return mMinDim; }  	void setMinDim(S32 value) { mMinDim = value; if (!mExpandedMinDimSpecified) mExpandedMinDim = value; } -	S32 getMaxDim() const { return mMaxDim; } -	void setMaxDim(S32 value) { mMaxDim = value; } -  	S32 getExpandedMinDim() const { return mExpandedMinDim; }  	void setExpandedMinDim(S32 value) { mExpandedMinDim = value; mExpandedMinDimSpecified = true; } @@ -191,8 +173,14 @@ public:  		return min_dim;  	} -	F32 getCollapseFactor(); -	void setOrientation(LLLayoutStack::ELayoutOrientation orientation) { mOrientation = orientation; } +	F32 getAutoResizeFactor() const; +	F32 getVisibleAmount() const; +	S32 getVisibleDim() const; + +	void setOrientation(LLLayoutStack::ELayoutOrientation orientation); +	void storeOriginalDim(); + +	void setIgnoreReshape(bool ignore) { mIgnoreReshape = ignore; }  protected:  	LLLayoutPanel(const Params& p); @@ -201,13 +189,14 @@ protected:  	S32		mExpandedMinDim;  	S32		mMinDim; -	S32		mMaxDim;  	bool	mAutoResize;  	bool	mUserResize;  	bool	mCollapsed;  	F32		mVisibleAmt;  	F32		mCollapseAmt;  	F32		mFractionalSize; +	S32		mTargetDim; +	bool	mIgnoreReshape;  	LLLayoutStack::ELayoutOrientation mOrientation;  	class LLResizeBar* mResizeBar;  }; diff --git a/indra/llui/llresizebar.cpp b/indra/llui/llresizebar.cpp index 02f60c76fa..87aeb4d7a7 100644 --- a/indra/llui/llresizebar.cpp +++ b/indra/llui/llresizebar.cpp @@ -79,6 +79,8 @@ LLResizeBar::LLResizeBar(const LLResizeBar::Params& p)  BOOL LLResizeBar::handleMouseDown(S32 x, S32 y, MASK mask)  { +	if (!canResize()) return FALSE; +  	// Route future Mouse messages here preemptively.  (Release on mouse up.)  	// No handler needed for focus lost since this clas has no state that depends on it.  	gFocusMgr.setMouseCapture( this ); @@ -243,7 +245,7 @@ BOOL LLResizeBar::handleHover(S32 x, S32 y, MASK mask)  		handled = TRUE;  	} -	if( handled ) +	if( handled && canResize() )  	{  		switch( mSide )  		{ diff --git a/indra/llui/llresizebar.h b/indra/llui/llresizebar.h index 0725fbd846..6daf191918 100644 --- a/indra/llui/llresizebar.h +++ b/indra/llui/llresizebar.h @@ -70,6 +70,7 @@ public:  	void			setResizeLimits( S32 min_size, S32 max_size ) { mMinSize = min_size; mMaxSize = max_size; }  	void			setEnableSnapping(BOOL enable) { mSnappingEnabled = enable; }  	void			setAllowDoubleClickSnapping(BOOL allow) { mAllowDoubleClickSnapping = allow; } +	bool			canResize() { return getEnabled() && mMaxSize > mMinSize; }  private:  	S32				mDragLastScreenX; diff --git a/indra/llui/llwindowshade.cpp b/indra/llui/llwindowshade.cpp index ae8b30b1ba..a8bb29374e 100644 --- a/indra/llui/llwindowshade.cpp +++ b/indra/llui/llwindowshade.cpp @@ -176,12 +176,12 @@ void LLWindowShade::draw()  	{  		hide();  	} -	else if (notification_area->getCollapseFactor() < 0.01f) +	else if (notification_area->getVisibleAmount() < 0.01f)  	{  		displayLatestNotification();  	} -	if (!notification_area->getVisible() && (notification_area->getCollapseFactor() < 0.001f)) +	if (!notification_area->getVisible() && (notification_area->getVisibleAmount() < 0.001f))  	{  		getChildRef<LLLayoutPanel>("background_area").setBackgroundVisible(false);  		setMouseOpaque(false); diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 954b9f2b15..228fbefd19 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -1747,7 +1747,7 @@ void LLWindowWin32::gatherInput()  	LLMemType m1(LLMemType::MTYPE_GATHER_INPUT); -	while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE) +	while ((msg_count < MAX_MESSAGE_PER_UPDATE) && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))  	{  		mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput");  		TranslateMessage(&msg); diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 42de47e777..f530d10ddc 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -621,7 +621,6 @@ void LLChatHistory::initFromParams(const LLChatHistory::Params& p)  	panel_p.has_border = false;  	panel_p.mouse_opaque = false;  	panel_p.min_dim = 30; -	panel_p.max_dim = S32_MAX;  	panel_p.auto_resize = true;  	panel_p.user_resize = false; diff --git a/indra/newview/llchicletbar.cpp b/indra/newview/llchicletbar.cpp index a879651060..a32fd307f1 100644 --- a/indra/newview/llchicletbar.cpp +++ b/indra/newview/llchicletbar.cpp @@ -42,28 +42,6 @@ namespace  {  	const std::string& PANEL_CHICLET_NAME	= "chiclet_list_panel"; -	S32 get_panel_min_width(LLLayoutStack* stack, LLView* panel) -	{ -		S32 minimal_width = 0; -		llassert(stack); -		if ( stack && panel && panel->getVisible() ) -		{ -			stack->getPanelMinSize(panel->getName(), &minimal_width); -		} -		return minimal_width; -	} - -	S32 get_panel_max_width(LLLayoutStack* stack, LLPanel* panel) -	{ -		S32 max_width = 0; -		llassert(stack); -		if ( stack && panel && panel->getVisible() ) -		{ -			stack->getPanelMaxSize(panel->getName(), &max_width); -		} -		return max_width; -	} -  	S32 get_curr_width(LLUICtrl* ctrl)  	{  		S32 cur_width = 0; @@ -234,15 +212,10 @@ void LLChicletBar::reshape(S32 width, S32 height, BOOL called_from_parent)  	{  		// Firstly, update layout stack to ensure we deal with correct panel sizes.  		{ -			BOOL saved_anim = mToolbarStack->getAnimate();  			// Set chiclet panel to be autoresized by default.  			mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE); -			// Disable animation to prevent layout updating in several frames. -			mToolbarStack->setAnimate(FALSE);  			// Force the updating of layout to reset panels collapse factor.  			mToolbarStack->updateLayout(); -			// Restore animate state. -			mToolbarStack->setAnimate(saved_anim);  		}  		// chiclet bar is narrowed diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index b13a9aab88..d8e4aa03f7 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -2025,7 +2025,6 @@ void LLPanelLandOptions::refresh()  		}  		mSeeAvatarsCtrl->set(parcel->getSeeAVs()); -		mSeeAvatarsCtrl->setLabel(getString("see_avs_text"));  		mSeeAvatarsCtrl->setEnabled(can_change_options && parcel->getHaveNewParcelLimitData());  		BOOL can_change_landing_point = LLViewerParcelMgr::isParcelModifiableByAgent(parcel,  diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp index 29af81d64c..2681d4b34d 100644 --- a/indra/newview/llfloaternotificationsconsole.cpp +++ b/indra/newview/llfloaternotificationsconsole.cpp @@ -220,7 +220,7 @@ void LLFloaterNotificationConsole::addChannel(const std::string& name, bool open  void LLFloaterNotificationConsole::removeChannel(const std::string& name)  {  	LLPanel* panelp = getChild<LLPanel>(name); -	getChildRef<LLLayoutStack>("notification_channels").removePanel(panelp); +	getChildRef<LLView>("notification_channels").removeChild(panelp);  	delete panelp;  	updateResizeLimits(); diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index ecd4c2c3de..3167c51970 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -349,10 +349,6 @@ BOOL LLFolderView::addFolder( LLFolderViewFolder* folder)  	{  		mFolders.insert(mFolders.begin(), folder);  	} -	if (folder->numSelected()) -	{ -		recursiveIncrementNumDescendantsSelected(folder->numSelected()); -	}  	folder->setShowLoadStatus(mShowLoadStatus);  	folder->setOrigin(0, 0);  	folder->reshape(getRect().getWidth(), 0); @@ -694,26 +690,6 @@ BOOL LLFolderView::changeSelection(LLFolderViewItem* selection, BOOL selected)  	return rv;  } -void LLFolderView::extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items) -{ -	// now store resulting selection -	if (mAllowMultiSelect) -	{ -		LLFolderViewItem *cur_selection = getCurSelectedItem(); -		LLFolderViewFolder::extendSelection(selection, cur_selection, items); -		for (S32 i = 0; i < items.count(); i++) -		{ -			addToSelectionList(items[i]); -		} -	} -	else -	{ -		setSelection(selection, FALSE, FALSE); -	} - -	mSignalSelectCallback = SIGNAL_KEYBOARD_FOCUS; -} -  static LLFastTimer::DeclareTimer FTM_SANITIZE_SELECTION("Sanitize Selection");  void LLFolderView::sanitizeSelection()  { diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index 8af01e9102..d4305a2fe2 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -106,6 +106,8 @@ public:  	U32 getSortOrder() const;  	BOOL isFilterModified(); +	bool getAllowMultiSelect() { return mAllowMultiSelect; } +  	// Close all folders in the view  	void closeAllFolders();  	void openTopLevelFolders(); @@ -141,8 +143,6 @@ public:  	// children, and keeps track of selected objects.  	virtual BOOL changeSelection(LLFolderViewItem* selection, BOOL selected); -	virtual void extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items); -  	virtual std::set<LLUUID> getSelectionList() const;  	// make sure if ancestor is selected, descendents are not @@ -156,7 +156,6 @@ public:  	void setDraggingOverItem(LLFolderViewItem* item) { mDraggingOverItem = item; }  	LLFolderViewItem* getDraggingOverItem() { return mDraggingOverItem; } -  	// deletion functionality   	void removeSelectedItems(); diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index f27fd035db..50d62b29d3 100644 --- a/indra/newview/llfolderviewitem.cpp +++ b/indra/newview/llfolderviewitem.cpp @@ -386,13 +386,6 @@ void LLFolderViewItem::changeSelectionFromRoot(LLFolderViewItem* selection, BOOL  	getRoot()->changeSelection(selection, selected);  } -void LLFolderViewItem::extendSelectionFromRoot(LLFolderViewItem* selection) -{ -	LLDynamicArray<LLFolderViewItem*> selected_items; - -	getRoot()->extendSelection(selection, NULL, selected_items); -} -  std::set<LLUUID> LLFolderViewItem::getSelectionList() const  {  	std::set<LLUUID> selection; @@ -496,10 +489,6 @@ BOOL LLFolderViewItem::setSelection(LLFolderViewItem* selection, BOOL openitem,  	if (selection == this && !mIsSelected)  	{  		selectItem(); -		if (mListener) -		{ -			mListener->selectItem(); -		}  	}  	else if (mIsSelected)	// Deselect everything else.  	{ @@ -510,7 +499,7 @@ BOOL LLFolderViewItem::setSelection(LLFolderViewItem* selection, BOOL openitem,  BOOL LLFolderViewItem::changeSelection(LLFolderViewItem* selection, BOOL selected)  { -	if (selection == this && mIsSelected != selected) +	if (selection == this)  	{  		if (mIsSelected)  		{ @@ -520,10 +509,6 @@ BOOL LLFolderViewItem::changeSelection(LLFolderViewItem* selection, BOOL selecte  		{  			selectItem();  		} -		if (mListener) -		{ -			mListener->selectItem(); -		}  		return TRUE;  	}  	return FALSE; @@ -531,29 +516,18 @@ BOOL LLFolderViewItem::changeSelection(LLFolderViewItem* selection, BOOL selecte  void LLFolderViewItem::deselectItem(void)  { -	llassert(mIsSelected); -  	mIsSelected = FALSE; - -	// Update ancestors' count of selected descendents. -	LLFolderViewFolder* parent_folder = getParentFolder(); -	if (parent_folder) -	{ -		parent_folder->recursiveIncrementNumDescendantsSelected(-1); -	}  }  void LLFolderViewItem::selectItem(void)  { -	llassert(!mIsSelected); - -	mIsSelected = TRUE; - -	// Update ancestors' count of selected descendents. -	LLFolderViewFolder* parent_folder = getParentFolder(); -	if (parent_folder) +	if (mIsSelected == FALSE)  	{ -		parent_folder->recursiveIncrementNumDescendantsSelected(1); +		if (mListener) +		{ +			mListener->selectItem(); +		} +		mIsSelected = TRUE;  	}  } @@ -697,7 +671,7 @@ BOOL LLFolderViewItem::handleMouseDown( S32 x, S32 y, MASK mask )  		}  		else if (mask & MASK_SHIFT)  		{ -			extendSelectionFromRoot(this); +			getParentFolder()->extendSelectionTo(this);  		}  		else  		{ @@ -812,7 +786,7 @@ BOOL LLFolderViewItem::handleMouseUp( S32 x, S32 y, MASK mask )  		}  		else if (mask & MASK_SHIFT)  		{ -			extendSelectionFromRoot(this); +			getParentFolder()->extendSelectionTo(this);  		}  		else  		{ @@ -1125,7 +1099,6 @@ void LLFolderViewItem::draw()  LLFolderViewFolder::LLFolderViewFolder( const LLFolderViewItem::Params& p ):   	LLFolderViewItem( p ),	// 0 = no create time -	mNumDescendantsSelected(0),  	mIsOpen(FALSE),  	mExpanderHighlighted(FALSE),  	mCurHeight(0.f), @@ -1572,21 +1545,6 @@ BOOL LLFolderViewFolder::hasFilteredDescendants()  	return mMostFilteredDescendantGeneration >= getRoot()->getFilter()->getCurrentGeneration();  } -void LLFolderViewFolder::recursiveIncrementNumDescendantsSelected(S32 increment) -{ -	LLFolderViewFolder* parent_folder = this; -	do -	{ -		parent_folder->mNumDescendantsSelected += increment; - -		// Make sure we don't have negative values. -		llassert(parent_folder->mNumDescendantsSelected >= 0); - -		parent_folder = parent_folder->getParentFolder(); -	} -	while(parent_folder); -} -  // Passes selection information on to children and record selection  // information if necessary.  BOOL LLFolderViewFolder::setSelection(LLFolderViewItem* selection, BOOL openitem, @@ -1599,10 +1557,6 @@ BOOL LLFolderViewFolder::setSelection(LLFolderViewItem* selection, BOOL openitem  		{  			selectItem();  		} -		if (mListener) -		{ -			mListener->selectItem(); -		}  		rv = TRUE;  	}  	else @@ -1663,10 +1617,6 @@ BOOL LLFolderViewFolder::changeSelection(LLFolderViewItem* selection, BOOL selec  				deselectItem();  			}  		} -		if (mListener && selected) -		{ -			mListener->selectItem(); -		}  	}  	for (folders_t::iterator iter = mFolders.begin(); @@ -1690,119 +1640,261 @@ BOOL LLFolderViewFolder::changeSelection(LLFolderViewItem* selection, BOOL selec  	return rv;  } -void LLFolderViewFolder::extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& selected_items) +LLFolderViewFolder* LLFolderViewFolder::getCommonAncestor(LLFolderViewItem* item_a, LLFolderViewItem* item_b, bool& reverse)  { -	// pass on to child folders first -	for (folders_t::iterator iter = mFolders.begin(); -		iter != mFolders.end();) +	if (!item_a->getParentFolder() || !item_b->getParentFolder()) return NULL; + +	std::deque<LLFolderViewFolder*> item_a_ancestors; + +	LLFolderViewFolder* parent = item_a->getParentFolder(); +	while(parent)  	{ -		folders_t::iterator fit = iter++; -		(*fit)->extendSelection(selection, last_selected, selected_items); +		item_a_ancestors.push_back(parent); +		parent = parent->getParentFolder(); +	} + +	std::deque<LLFolderViewFolder*> item_b_ancestors; +	 +	parent = item_b->getParentFolder(); +	while(parent) +	{ +		item_b_ancestors.push_back(parent); +		parent = parent->getParentFolder();  	} -	// handle selection of our immediate children... -	BOOL reverse_select = FALSE; -	BOOL found_last_selected = FALSE; -	BOOL found_selection = FALSE; -	LLDynamicArray<LLFolderViewItem*> items_to_select; -	LLFolderViewItem* item; +	LLFolderViewFolder* common_ancestor = item_a->getRoot(); -	//...folders first... -	for (folders_t::iterator iter = mFolders.begin(); -		iter != mFolders.end();) +	while(item_a_ancestors.size() > item_b_ancestors.size())  	{ -		folders_t::iterator fit = iter++; -		item = (*fit); -		if(item == selection) -		{ -			found_selection = TRUE; -		} -		else if (item == last_selected) +		item_a = item_a_ancestors.front(); +		item_a_ancestors.pop_front(); +	} + +	while(item_b_ancestors.size() > item_a_ancestors.size()) +	{ +		item_b = item_b_ancestors.front(); +		item_b_ancestors.pop_front(); +	} + +	while(item_a_ancestors.size()) +	{ +		common_ancestor = item_a_ancestors.front(); + +		if (item_a_ancestors.front() == item_b_ancestors.front())  		{ -			found_last_selected = TRUE; -			if (found_selection) +			// which came first, sibling a or sibling b? +			for (folders_t::iterator it = common_ancestor->mFolders.begin(), end_it = common_ancestor->mFolders.end(); +				it != end_it; +				++it)  			{ -				reverse_select = TRUE; +				LLFolderViewItem* item = *it; + +				if (item == item_a) +				{ +					reverse = false; +					return common_ancestor; +				} +				if (item == item_b) +				{ +					reverse = true; +					return common_ancestor; +				}  			} -		} -		if (found_selection || found_last_selected) -		{ -			// deselect currently selected items so they can be pushed back on queue -			if (item->isSelected()) +			for (items_t::iterator it = common_ancestor->mItems.begin(), end_it = common_ancestor->mItems.end(); +				it != end_it; +				++it)  			{ -				item->changeSelection(item, FALSE); +				LLFolderViewItem* item = *it; + +				if (item == item_a) +				{ +					reverse = false; +					return common_ancestor; +				} +				if (item == item_b) +				{ +					reverse = true; +					return common_ancestor; +				}  			} -			items_to_select.put(item); +			break;  		} -		if (found_selection && found_last_selected) -		{ -			break; -		}		 +		item_a = item_a_ancestors.front(); +		item_a_ancestors.pop_front(); +		item_b = item_b_ancestors.front(); +		item_b_ancestors.pop_front();  	} -	if (!(found_selection && found_last_selected)) +	return NULL; +} + +void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFolderViewItem* end, bool reverse, std::vector<LLFolderViewItem*>& items) +{ +	bool selecting = start == NULL; +	if (reverse)  	{ -		//,,,then items -		for (items_t::iterator iter = mItems.begin(); -			iter != mItems.end();) +		for (items_t::reverse_iterator it = mItems.rbegin(), end_it = mItems.rend(); +			it != end_it; +			++it)  		{ -			items_t::iterator iit = iter++; -			item = (*iit); -			if(item == selection) +			if (*it == end)  			{ -				found_selection = TRUE; +				return;  			} -			else if (item == last_selected) +			if (selecting)  			{ -				found_last_selected = TRUE; -				if (found_selection) -				{ -					reverse_select = TRUE; -				} +				items.push_back(*it);  			} -			if (found_selection || found_last_selected) +			if (*it == start)  			{ -				// deselect currently selected items so they can be pushed back on queue -				if (item->isSelected()) -				{ -					item->changeSelection(item, FALSE); -				} -				items_to_select.put(item); +				selecting = true; +			} +		} +		for (folders_t::reverse_iterator it = mFolders.rbegin(), end_it = mFolders.rend(); +			it != end_it; +			++it) +		{ +			if (*it == end) +			{ +				return;  			} -			if (found_selection && found_last_selected) +			if (selecting)  			{ -				break; +				items.push_back(*it); +			} + +			if (*it == start) +			{ +				selecting = true;  			}  		}  	} - -	if (found_last_selected && found_selection) +	else  	{ -		// we have a complete selection inside this folder -		for (S32 index = reverse_select ? items_to_select.getLength() - 1 : 0;  -			reverse_select ? index >= 0 : index < items_to_select.getLength(); reverse_select ? index-- : index++) +		for (folders_t::iterator it = mFolders.begin(), end_it = mFolders.end(); +			it != end_it; +			++it)  		{ -			LLFolderViewItem* item = items_to_select[index]; -			if (item->changeSelection(item, TRUE)) +			if (*it == end)  			{ -				selected_items.put(item); +				return; +			} + +			if (selecting) +			{ +				items.push_back(*it); +			} + +			if (*it == start) +			{ +				selecting = true; +			} +		} +		for (items_t::iterator it = mItems.begin(), end_it = mItems.end(); +			it != end_it; +			++it) +		{ +			if (*it == end) +			{ +				return; +			} + +			if (selecting) +			{ +				items.push_back(*it); +			} + +			if (*it == start) +			{ +				selecting = true;  			}  		}  	} -	else if (found_selection) +} + +void LLFolderViewFolder::extendSelectionTo(LLFolderViewItem* new_selection) +{ +	if (getRoot()->getAllowMultiSelect() == FALSE) return; + +	LLFolderViewItem* cur_selected_item = getRoot()->getCurSelectedItem(); +	if (cur_selected_item == NULL)  	{ -		// last selection was not in this folder....go ahead and select just the new item -		if (selection->changeSelection(selection, TRUE)) +		cur_selected_item = new_selection; +	} + + +	bool reverse = false; +	LLFolderViewFolder* common_ancestor = getCommonAncestor(cur_selected_item, new_selection, reverse); +	if (!common_ancestor) return; + +	LLFolderViewItem* last_selected_item_from_cur = cur_selected_item; +	LLFolderViewFolder* cur_folder = cur_selected_item->getParentFolder(); + +	std::vector<LLFolderViewItem*> items_to_select_forward; + +	while(cur_folder != common_ancestor) +	{ +		cur_folder->gatherChildRangeExclusive(last_selected_item_from_cur, NULL, reverse, items_to_select_forward); +			 +		last_selected_item_from_cur = cur_folder; +		cur_folder = cur_folder->getParentFolder(); +	} + +	std::vector<LLFolderViewItem*> items_to_select_reverse; + +	LLFolderViewItem* last_selected_item_from_new = new_selection; +	cur_folder = new_selection->getParentFolder(); +	while(cur_folder != common_ancestor) +	{ +		cur_folder->gatherChildRangeExclusive(last_selected_item_from_new, NULL, !reverse, items_to_select_reverse); + +		last_selected_item_from_new = cur_folder; +		cur_folder = cur_folder->getParentFolder(); +	} + +	common_ancestor->gatherChildRangeExclusive(last_selected_item_from_cur, last_selected_item_from_new, reverse, items_to_select_forward); + +	for (std::vector<LLFolderViewItem*>::reverse_iterator it = items_to_select_reverse.rbegin(), end_it = items_to_select_reverse.rend(); +		it != end_it; +		++it) +	{ +		items_to_select_forward.push_back(*it); +	} + +	LLFolderView* root = getRoot(); + +	for (std::vector<LLFolderViewItem*>::iterator it = items_to_select_forward.begin(), end_it = items_to_select_forward.end(); +		it != end_it; +		++it) +	{ +		LLFolderViewItem* item = *it; +		if (item->isSelected()) +		{ +			root->removeFromSelectionList(item); +		} +		else  		{ -			selected_items.put(selection); +			item->selectItem();  		} +		root->addToSelectionList(item); +	} + +	if (new_selection->isSelected()) +	{ +		root->removeFromSelectionList(new_selection);  	} +	else +	{ +		new_selection->selectItem(); +	} +	root->addToSelectionList(new_selection);  } +  void LLFolderViewFolder::destroyView()  {  	for (items_t::iterator iter = mItems.begin(); @@ -1874,19 +1966,11 @@ void LLFolderViewFolder::extractItem( LLFolderViewItem* item )  		ft = std::find(mFolders.begin(), mFolders.end(), f);  		if (ft != mFolders.end())  		{ -			if ((*ft)->numSelected()) -			{ -				recursiveIncrementNumDescendantsSelected(-(*ft)->numSelected()); -			}  			mFolders.erase(ft);  		}  	}  	else  	{ -		if ((*it)->isSelected()) -		{ -			recursiveIncrementNumDescendantsSelected(-1); -		}  		mItems.erase(it);  	}  	//item has been removed, need to update filter @@ -2055,11 +2139,6 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)  {  	mItems.push_back(item); -	if (item->isSelected()) -	{ -		recursiveIncrementNumDescendantsSelected(1); -	} -	  	item->setRect(LLRect(0, 0, getRect().getWidth(), 0));  	item->setVisible(FALSE); @@ -2097,10 +2176,6 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)  BOOL LLFolderViewFolder::addFolder(LLFolderViewFolder* folder)  {  	mFolders.push_back(folder); -	if (folder->numSelected()) -	{ -		recursiveIncrementNumDescendantsSelected(folder->numSelected()); -	}  	folder->setOrigin(0, 0);  	folder->reshape(getRect().getWidth(), 0);  	folder->setVisible(FALSE); diff --git a/indra/newview/llfolderviewitem.h b/indra/newview/llfolderviewitem.h index 3433e3f7f3..29c5b2246d 100644 --- a/indra/newview/llfolderviewitem.h +++ b/indra/newview/llfolderviewitem.h @@ -164,9 +164,6 @@ protected:  	// helper function to change the selection from the root.  	void changeSelectionFromRoot(LLFolderViewItem* selection, BOOL selected); -	// helper function to change the selection from the root. -	void extendSelectionFromRoot(LLFolderViewItem* selection); -  	// this is an internal method used for adding items to folders. A  	// no-op at this level, but reimplemented in derived classes.  	virtual BOOL addItem(LLFolderViewItem*) { return FALSE; } @@ -224,9 +221,6 @@ public:  	// Returns TRUE if the selection state of this item was changed.  	virtual BOOL changeSelection(LLFolderViewItem* selection, BOOL selected); -	// this method is used to group select items -	virtual void extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items) { } -  	// this method is used to deselect this element  	void deselectItem(); @@ -373,13 +367,6 @@ public:  	typedef std::list<LLFolderViewItem*> items_t;  	typedef std::list<LLFolderViewFolder*> folders_t; -private: -	S32		mNumDescendantsSelected; - -public:		// Accessed needed by LLFolderViewItem -	void recursiveIncrementNumDescendantsSelected(S32 increment); -	S32 numSelected(void) const { return mNumDescendantsSelected + (isSelected() ? 1 : 0); } -  protected:  	items_t mItems;  	folders_t mFolders; @@ -461,7 +448,7 @@ public:  	virtual BOOL changeSelection(LLFolderViewItem* selection, BOOL selected);  	// this method is used to group select items -	virtual void extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items); +	void extendSelectionTo(LLFolderViewItem* selection);  	// Returns true is this object and all of its children can be removed.  	virtual BOOL isRemovable(); @@ -551,7 +538,6 @@ public:  	time_t getCreationDate() const;  	bool isTrash() const; -	S32 getNumSelectedDescendants(void) const { return mNumDescendantsSelected; }  	folders_t::const_iterator getFoldersBegin() const { return mFolders.begin(); }  	folders_t::const_iterator getFoldersEnd() const { return mFolders.end(); } @@ -560,6 +546,8 @@ public:  	items_t::const_iterator getItemsBegin() const { return mItems.begin(); }  	items_t::const_iterator getItemsEnd() const { return mItems.end(); }  	items_t::size_type getItemsCount() const { return mItems.size(); } +	LLFolderViewFolder* getCommonAncestor(LLFolderViewItem* item_a, LLFolderViewItem* item_b, bool& reverse); +	void gatherChildRangeExclusive(LLFolderViewItem* start, LLFolderViewItem* end, bool reverse,  std::vector<LLFolderViewItem*>& items);  };  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index f5cda52d44..228260c41a 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -385,9 +385,6 @@ void LLIMFloater::onSlide()  	getChild<LLButton>("slide_left_btn")->setVisible(mControlPanel->getParent()->getVisible());  	getChild<LLButton>("slide_right_btn")->setVisible(!mControlPanel->getParent()->getVisible()); - -	LLLayoutStack* stack = getChild<LLLayoutStack>("im_panels"); -	if (stack) stack->setAnimate(true);  }  //static diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index eaf9b53eb9..5916ed60a4 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -1234,7 +1234,7 @@ void LLItemBridge::selectItem()  	LLViewerInventoryItem* item = static_cast<LLViewerInventoryItem*>(getItem());  	if(item && !item->isFinished())  	{ -		item->fetchFromServer(); +		LLInventoryModelBackgroundFetch::instance().start(item->getUUID(), false);  	}  } diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp index 91fdd67806..5f0c744192 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.cpp +++ b/indra/newview/llinventorymodelbackgroundfetch.cpp @@ -50,7 +50,7 @@ LLInventoryModelBackgroundFetch::LLInventoryModelBackgroundFetch() :  	mMinTimeBetweenFetches(0.3f),  	mMaxTimeBetweenFetches(10.f),  	mTimelyFetchPending(FALSE), -	mBulkFetchCount(0) +	mFetchCount(0)  {  } @@ -60,7 +60,7 @@ LLInventoryModelBackgroundFetch::~LLInventoryModelBackgroundFetch()  bool LLInventoryModelBackgroundFetch::isBulkFetchProcessingComplete() const  { -	return mFetchQueue.empty() && mBulkFetchCount<=0; +	return mFetchQueue.empty() && mFetchCount<=0;  }  bool LLInventoryModelBackgroundFetch::libraryFetchStarted() const @@ -103,44 +103,60 @@ BOOL LLInventoryModelBackgroundFetch::backgroundFetchActive() const  	return mBackgroundFetchActive;  } -void LLInventoryModelBackgroundFetch::start(const LLUUID& cat_id, BOOL recursive) +void LLInventoryModelBackgroundFetch::start(const LLUUID& id, BOOL recursive)  { -	if (!mAllFoldersFetched || cat_id.notNull()) -	{ -		LL_DEBUGS("InventoryFetch") << "Start fetching category: " << cat_id << ", recursive: " << recursive << LL_ENDL; +	if (id.isNull()) return; -		mBackgroundFetchActive = TRUE; -		if (cat_id.isNull()) +	LLViewerInventoryCategory* cat = gInventory.getCategory(id); +	if (cat) +	{	// it's a folder, do a bulk fetch +		if (!mAllFoldersFetched)  		{ -			if (!mRecursiveInventoryFetchStarted) +			LL_DEBUGS("InventoryFetch") << "Start fetching category: " << id << ", recursive: " << recursive << LL_ENDL; + +			mBackgroundFetchActive = TRUE; +			if (id.isNull())  			{ -				mRecursiveInventoryFetchStarted |= recursive; -				mFetchQueue.push_back(FetchQueueInfo(gInventory.getRootFolderID(), recursive)); -				gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL); +				if (!mRecursiveInventoryFetchStarted) +				{ +					mRecursiveInventoryFetchStarted |= recursive; +					mFetchQueue.push_back(FetchQueueInfo(gInventory.getRootFolderID(), recursive)); +					gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL); +				} +				if (!mRecursiveLibraryFetchStarted) +				{ +					mRecursiveLibraryFetchStarted |= recursive; +					mFetchQueue.push_back(FetchQueueInfo(gInventory.getLibraryRootFolderID(), recursive)); +					gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL); +				}  			} -			if (!mRecursiveLibraryFetchStarted) +			else  			{ -				mRecursiveLibraryFetchStarted |= recursive; -				mFetchQueue.push_back(FetchQueueInfo(gInventory.getLibraryRootFolderID(), recursive)); -				gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL); +				// Specific folder requests go to front of queue. +				if (mFetchQueue.empty() || mFetchQueue.front().mUUID != id) +				{ +					mFetchQueue.push_front(FetchQueueInfo(id, recursive)); +					gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL); +				} +				if (id == gInventory.getLibraryRootFolderID()) +				{ +					mRecursiveLibraryFetchStarted |= recursive; +				} +				if (id == gInventory.getRootFolderID()) +				{ +					mRecursiveInventoryFetchStarted |= recursive; +				}  			}  		} -		else +	} +	else if (LLViewerInventoryItem* itemp = gInventory.getItem(id)) +	{ +		if (!itemp->mIsComplete && (mFetchQueue.empty() || mFetchQueue.front().mUUID != id))  		{ -			// Specific folder requests go to front of queue. -			if (mFetchQueue.empty() || mFetchQueue.front().mCatUUID != cat_id) -			{ -				mFetchQueue.push_front(FetchQueueInfo(cat_id, recursive)); -				gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL); -			} -			if (cat_id == gInventory.getLibraryRootFolderID()) -			{ -				mRecursiveLibraryFetchStarted |= recursive; -			} -			if (cat_id == gInventory.getRootFolderID()) -			{ -				mRecursiveInventoryFetchStarted |= recursive; -			} +			mBackgroundFetchActive = TRUE; + +			mFetchQueue.push_front(FetchQueueInfo(id, false, false)); +			gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL);  		}  	}  } @@ -158,7 +174,7 @@ void LLInventoryModelBackgroundFetch::stopBackgroundFetch()  	{  		mBackgroundFetchActive = FALSE;  		gIdleCallbacks.deleteFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL); -		mBulkFetchCount=0; +		mFetchCount=0;  		mMinTimeBetweenFetches=0.0f;  	}  } @@ -183,10 +199,9 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  	if (mBackgroundFetchActive && gAgent.getRegion())  	{  		// If we'll be using the capability, we'll be sending batches and the background thing isn't as important. -		std::string url = gAgent.getRegion()->getCapability("FetchInventoryDescendents2");    -		if (gSavedSettings.getBOOL("UseHTTPInventory") && !url.empty())  +		if (gSavedSettings.getBOOL("UseHTTPInventory"))   		{ -			bulkFetch(url); +			bulkFetch();  			return;  		} @@ -230,7 +245,7 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  			}  			const FetchQueueInfo info = mFetchQueue.front(); -			LLViewerInventoryCategory* cat = gInventory.getCategory(info.mCatUUID); +			LLViewerInventoryCategory* cat = gInventory.getCategory(info.mUUID);  			// Category has been deleted, remove from queue.  			if (!cat) @@ -258,7 +273,7 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  				}  			}  			// Do I have all my children? -			else if (gInventory.isCategoryComplete(info.mCatUUID)) +			else if (gInventory.isCategoryComplete(info.mUUID))  			{  				// Finished with this category, remove from queue.  				mFetchQueue.pop_front(); @@ -313,15 +328,35 @@ void LLInventoryModelBackgroundFetch::backgroundFetch()  	}  } -void LLInventoryModelBackgroundFetch::incrBulkFetch(S16 fetching)  +void LLInventoryModelBackgroundFetch::incrFetchCount(S16 fetching)   {   -	mBulkFetchCount += fetching;  -	if (mBulkFetchCount < 0) +	mFetchCount += fetching;  +	if (mFetchCount < 0)  	{ -		mBulkFetchCount = 0;  +		mFetchCount = 0;   	}  } +class LLInventoryModelFetchItemResponder : public LLInventoryModel::fetchInventoryResponder +{ +public: +	LLInventoryModelFetchItemResponder(const LLSD& request_sd) : LLInventoryModel::fetchInventoryResponder(request_sd) {}; +	void result(const LLSD& content);			 +	void error(U32 status, const std::string& reason); +}; + +void LLInventoryModelFetchItemResponder::result( const LLSD& content ) +{ +	LLInventoryModel::fetchInventoryResponder::result(content); +	LLInventoryModelBackgroundFetch::instance().incrFetchCount(-1); +} + +void LLInventoryModelFetchItemResponder::error( U32 status, const std::string& reason ) +{ +	LLInventoryModel::fetchInventoryResponder::error(status, reason); +	LLInventoryModelBackgroundFetch::instance().incrFetchCount(-1); +} +  class LLInventoryModelFetchDescendentsResponder: public LLHTTPClient::Responder  { @@ -458,7 +493,7 @@ void LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)  		}  	} -	fetcher->incrBulkFetch(-1); +	fetcher->incrFetchCount(-1);  	if (fetcher->isBulkFetchProcessingComplete())  	{ @@ -477,7 +512,7 @@ void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::str  	llinfos << "LLInventoryModelFetchDescendentsResponder::error "  		<< status << ": " << reason << llendl; -	fetcher->incrBulkFetch(-1); +	fetcher->incrFetchCount(-1);  	if (status==499) // timed out  	{ @@ -508,12 +543,14 @@ BOOL LLInventoryModelFetchDescendentsResponder::getIsRecursive(const LLUUID& cat  // Bundle up a bunch of requests to send all at once.  // static    -void LLInventoryModelBackgroundFetch::bulkFetch(std::string url) +void LLInventoryModelBackgroundFetch::bulkFetch()  {  	//Background fetch is called from gIdleCallbacks in a loop until background fetch is stopped.  	//If there are items in mFetchQueue, we want to check the time since the last bulkFetch was   	//sent.  If it exceeds our retry time, go ahead and fire off another batch.    	//Stopbackgroundfetch will be run from the Responder instead of here.   +	LLViewerRegion* region = gAgent.getRegion(); +	if (!region) return;  	S16 max_concurrent_fetches=8;  	F32 new_min_time = 0.5f;			//HACK!  Clean this up when old code goes away entirely. @@ -523,12 +560,13 @@ void LLInventoryModelBackgroundFetch::bulkFetch(std::string url)  	}  	if (gDisconnected || -		(mBulkFetchCount > max_concurrent_fetches) || +		(mFetchCount > max_concurrent_fetches) ||  		(mFetchTimer.getElapsedTimeF32() < mMinTimeBetweenFetches))  	{  		return; // just bail if we are disconnected  	}	 +	U32 item_count=0;  	U32 folder_count=0;  	U32 max_batch_size=5; @@ -536,83 +574,159 @@ void LLInventoryModelBackgroundFetch::bulkFetch(std::string url)  	uuid_vec_t recursive_cats; -	LLSD body; -	LLSD body_lib; +	LLSD folder_request_body; +	LLSD folder_request_body_lib; +	LLSD item_request_body; +	LLSD item_request_body_lib; -	while (!(mFetchQueue.empty()) && (folder_count < max_batch_size)) +	while (!(mFetchQueue.empty()) && ((item_count + folder_count) < max_batch_size))  	{  		const FetchQueueInfo& fetch_info = mFetchQueue.front(); -		const LLUUID &cat_id = fetch_info.mCatUUID; -        if (cat_id.isNull()) //DEV-17797 -        { -			LLSD folder_sd; -			folder_sd["folder_id"]		= LLUUID::null.asString(); -			folder_sd["owner_id"]		= gAgent.getID(); -			folder_sd["sort_order"]		= (LLSD::Integer)sort_order; -			folder_sd["fetch_folders"]	= (LLSD::Boolean)FALSE; -			folder_sd["fetch_items"]	= (LLSD::Boolean)TRUE; -			body["folders"].append(folder_sd); -            folder_count++; -        } -        else -        { -		    const LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id); +		if (fetch_info.mIsCategory) +		{ + +			const LLUUID &cat_id = fetch_info.mUUID; +			if (cat_id.isNull()) //DEV-17797 +			{ +				LLSD folder_sd; +				folder_sd["folder_id"]		= LLUUID::null.asString(); +				folder_sd["owner_id"]		= gAgent.getID(); +				folder_sd["sort_order"]		= (LLSD::Integer)sort_order; +				folder_sd["fetch_folders"]	= (LLSD::Boolean)FALSE; +				folder_sd["fetch_items"]	= (LLSD::Boolean)TRUE; +				folder_request_body["folders"].append(folder_sd); +				folder_count++; +			} +			else +			{ +				const LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id); -		    if (cat) -		    { -			    if (LLViewerInventoryCategory::VERSION_UNKNOWN == cat->getVersion()) -			    { -				    LLSD folder_sd; -				    folder_sd["folder_id"]		= cat->getUUID(); -				    folder_sd["owner_id"]		= cat->getOwnerID(); -				    folder_sd["sort_order"]		= (LLSD::Integer)sort_order; -				    folder_sd["fetch_folders"]	= TRUE; //(LLSD::Boolean)sFullFetchStarted; -				    folder_sd["fetch_items"]	= (LLSD::Boolean)TRUE; -				     -				    if (ALEXANDRIA_LINDEN_ID == cat->getOwnerID()) -					    body_lib["folders"].append(folder_sd); -				    else -					    body["folders"].append(folder_sd); -				    folder_count++; -			    } -				// May already have this folder, but append child folders to list. -			    if (fetch_info.mRecursive) -			    {	 -					LLInventoryModel::cat_array_t* categories; -					LLInventoryModel::item_array_t* items; -					gInventory.getDirectDescendentsOf(cat->getUUID(), categories, items); -					for (LLInventoryModel::cat_array_t::const_iterator it = categories->begin(); -						 it != categories->end(); -						 ++it) +				if (cat) +				{ +					if (LLViewerInventoryCategory::VERSION_UNKNOWN == cat->getVersion())  					{ -						mFetchQueue.push_back(FetchQueueInfo((*it)->getUUID(), fetch_info.mRecursive)); -				    } -			    } -		    } -        } -		if (fetch_info.mRecursive) -			recursive_cats.push_back(cat_id); +						LLSD folder_sd; +						folder_sd["folder_id"]		= cat->getUUID(); +						folder_sd["owner_id"]		= cat->getOwnerID(); +						folder_sd["sort_order"]		= (LLSD::Integer)sort_order; +						folder_sd["fetch_folders"]	= TRUE; //(LLSD::Boolean)sFullFetchStarted; +						folder_sd["fetch_items"]	= (LLSD::Boolean)TRUE; +				     +						if (ALEXANDRIA_LINDEN_ID == cat->getOwnerID()) +							folder_request_body_lib["folders"].append(folder_sd); +						else +							folder_request_body["folders"].append(folder_sd); +						folder_count++; +					} +					// May already have this folder, but append child folders to list. +					if (fetch_info.mRecursive) +					{	 +						LLInventoryModel::cat_array_t* categories; +						LLInventoryModel::item_array_t* items; +						gInventory.getDirectDescendentsOf(cat->getUUID(), categories, items); +						for (LLInventoryModel::cat_array_t::const_iterator it = categories->begin(); +							 it != categories->end(); +							 ++it) +						{ +							mFetchQueue.push_back(FetchQueueInfo((*it)->getUUID(), fetch_info.mRecursive)); +						} +					} +				} +			} +			if (fetch_info.mRecursive) +				recursive_cats.push_back(cat_id); +		} +		else +		{ +			LLViewerInventoryItem* itemp = gInventory.getItem(fetch_info.mUUID); +			if (itemp) +			{ +				LLSD item_sd; +				item_sd["owner_id"] = itemp->getPermissions().getOwner(); +				item_sd["item_id"] = itemp->getUUID(); +				if (itemp->getPermissions().getOwner() == gAgent.getID()) +				{ +					item_request_body.append(item_sd); +				} +				else +				{ +					item_request_body_lib.append(item_sd); +				} +				//itemp->fetchFromServer(); +				item_count++; +			} +		}  		mFetchQueue.pop_front();  	} -	if (folder_count > 0) +	if (item_count + folder_count > 0)  	{ -		mBulkFetchCount++; -		if (body["folders"].size()) +		if (folder_count)  		{ -			LLInventoryModelFetchDescendentsResponder *fetcher = new LLInventoryModelFetchDescendentsResponder(body, recursive_cats); -			LLHTTPClient::post(url, body, fetcher, 300.0); +			std::string url = region->getCapability("FetchInventoryDescendents2");    +			mFetchCount++; +			if (folder_request_body["folders"].size()) +			{ +				LLInventoryModelFetchDescendentsResponder *fetcher = new LLInventoryModelFetchDescendentsResponder(folder_request_body, recursive_cats); +				LLHTTPClient::post(url, folder_request_body, fetcher, 300.0); +			} +			if (folder_request_body_lib["folders"].size()) +			{ +				std::string url_lib = gAgent.getRegion()->getCapability("FetchLibDescendents2"); + +				LLInventoryModelFetchDescendentsResponder *fetcher = new LLInventoryModelFetchDescendentsResponder(folder_request_body_lib, recursive_cats); +				LLHTTPClient::post(url_lib, folder_request_body_lib, fetcher, 300.0); +			}  		} -		if (body_lib["folders"].size()) +		if (item_count)  		{ -			std::string url_lib = gAgent.getRegion()->getCapability("FetchLibDescendents2"); -			 -			LLInventoryModelFetchDescendentsResponder *fetcher = new LLInventoryModelFetchDescendentsResponder(body_lib, recursive_cats); -			LLHTTPClient::post(url_lib, body_lib, fetcher, 300.0); +			std::string url; + +			if (item_request_body.size()) +			{ +				mFetchCount++; +				url = region->getCapability("FetchInventory2"); +				if (!url.empty()) +				{ +					LLSD body; +					body["agent_id"]	= gAgent.getID(); +					body["items"] = item_request_body; + +					LLHTTPClient::post(url, body, new LLInventoryModelFetchItemResponder(body)); +				} +				//else +				//{ +				//	LLMessageSystem* msg = gMessageSystem; +				//	msg->newMessage("FetchInventory"); +				//	msg->nextBlock("AgentData"); +				//	msg->addUUID("AgentID", gAgent.getID()); +				//	msg->addUUID("SessionID", gAgent.getSessionID()); +				//	msg->nextBlock("InventoryData"); +				//	msg->addUUID("OwnerID", mPermissions.getOwner()); +				//	msg->addUUID("ItemID", mUUID); +				//	gAgent.sendReliableMessage(); +				//} +			} + +			if (item_request_body_lib.size()) +			{ +				mFetchCount++; + +				url = region->getCapability("FetchLib2"); +				if (!url.empty()) +				{ +					LLSD body; +					body["agent_id"]	= gAgent.getID(); +					body["items"] = item_request_body_lib; + +					LLHTTPClient::post(url, body, new LLInventoryModelFetchItemResponder(body)); +				} +			}  		}  		mFetchTimer.reset();  	} +  	else if (isBulkFetchProcessingComplete())  	{  		setAllFoldersFetched(); @@ -624,7 +738,7 @@ bool LLInventoryModelBackgroundFetch::fetchQueueContainsNoDescendentsOf(const LL  	for (fetch_queue_t::const_iterator it = mFetchQueue.begin();  		 it != mFetchQueue.end(); ++it)  	{ -		const LLUUID& fetch_id = (*it).mCatUUID; +		const LLUUID& fetch_id = (*it).mUUID;  		if (gInventory.isObjectDescendentOf(fetch_id, cat_id))  			return false;  	} diff --git a/indra/newview/llinventorymodelbackgroundfetch.h b/indra/newview/llinventorymodelbackgroundfetch.h index c35c785ceb..0745407a8c 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.h +++ b/indra/newview/llinventorymodelbackgroundfetch.h @@ -60,10 +60,10 @@ public:  	bool inventoryFetchInProgress() const;      void findLostItems();	 +	void incrFetchCount(S16 fetching);  protected: -	void incrBulkFetch(S16 fetching);  	bool isBulkFetchProcessingComplete() const; -	void bulkFetch(std::string url); +	void bulkFetch();  	void backgroundFetch();  	static void backgroundFetchCB(void*); // background fetch idle function @@ -77,7 +77,7 @@ private:  	BOOL mAllFoldersFetched;  	BOOL mBackgroundFetchActive; -	S16 mBulkFetchCount; +	S16 mFetchCount;  	BOOL mTimelyFetchPending;  	S32 mNumFetchRetries; @@ -87,11 +87,11 @@ private:  	struct FetchQueueInfo  	{ -		FetchQueueInfo(const LLUUID& id, BOOL recursive) : -			mCatUUID(id), mRecursive(recursive) -		{ -		} -		LLUUID mCatUUID; +		FetchQueueInfo(const LLUUID& id, BOOL recursive, bool is_category = true) : +			mUUID(id), mRecursive(recursive), mIsCategory(is_category) +		{} +		LLUUID mUUID; +		bool mIsCategory;  		BOOL mRecursive;  	};  	typedef std::deque<FetchQueueInfo> fetch_queue_t; diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 9d069c3996..e40cc4662b 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -248,7 +248,6 @@ BOOL LLSidepanelInventory::postBuild()  		// Disable user_resize on main inventory panel by default  		inv_stack->setPanelUserResize(MAIN_INVENTORY_LAYOUT_PANEL_NAME, false); -		inv_stack->setPanelUserResize(INBOX_OUTBOX_LAYOUT_PANEL_NAME, false);  		// Collapse marketplace panel by default  		inv_stack->collapsePanel(getChild<LLLayoutPanel>(INBOX_OUTBOX_LAYOUT_PANEL_NAME), true); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 7e02a41e7e..3923b4510a 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -804,9 +804,8 @@ bool idle_startup()  #ifdef _WIN32  		MSG msg;  		while( PeekMessage( &msg, /*All hWnds owned by this thread */ NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE ) ) -		{ -			display_startup(); -		} +		{ } +		display_startup();  #endif  		timeout.reset();  		return FALSE; diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp index ddbcdfc3f7..6f6411ce3c 100644 --- a/indra/newview/llwearablelist.cpp +++ b/indra/newview/llwearablelist.cpp @@ -63,7 +63,7 @@ struct LLWearableArrivedData  LLWearableList::~LLWearableList()  { -	llassert_always(mList.empty()) ; +	cleanup();  }  void LLWearableList::cleanup()  diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index ba18306686..d695cd1f89 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -20,8 +20,6 @@  			<menu_item_call label="Væk" name="Set Away"/>  			<menu_item_call label="Optaget" name="Set Busy"/>  		</menu> -		<menu_item_call label="Anmod om administrator status" name="Request Admin Options"/> -		<menu_item_call label="Stop administrator status" name="Leave Admin Options"/>  		<menu_item_call label="Afslut [APP_NAME]" name="Quit"/>  	</menu>  	<menu label="Kommunikér" name="Communicate"> @@ -36,11 +34,10 @@  		<menu_item_check label="Søg" name="Search"/>  		<menu_item_call label="Foto" name="Take Snapshot"/>  		<menu_item_call label="Opret landemærke for dette sted" name="Create Landmark Here"/> -		<menu label="Profil for sted" name="Land"> -			<menu_item_call label="Profil for sted" name="Place Profile"/> -			<menu_item_call label="Om land" name="About Land"/> -			<menu_item_call label="Region/Estate" name="Region/Estate"/> -		</menu> +		<menu_item_separator/> +		<menu_item_call label="Profil for sted" name="Place Profile"/> +		<menu_item_call label="Om land" name="About Land"/> +		<menu_item_call label="Region/Estate" name="Region/Estate"/>  		<menu_item_call label="Køb dette land" name="Buy Land"/>  		<menu_item_call label="Mit land" name="My Land"/>  		<menu label="Vis" name="LandShow"> @@ -56,7 +53,7 @@  		</menu>  		<menu_item_call label="Teleport hjem" name="Teleport Home"/>  		<menu_item_call label="Sæt dette sted som 'Hjem'" name="Set Home to Here"/> -		<menu label="Sol" name="Environment Settings"> +		<menu label="Sol" name="Sun">  			<menu_item_call label="Solopgang" name="Sunrise"/>  			<menu_item_call label="Middag" name="Noon"/>  			<menu_item_call label="Solnedgang" name="Sunset"/> @@ -155,22 +152,22 @@  			<menu_item_check label="Vis muse-sigte" name="ShowCrosshairs"/>  		</menu>  		<menu label="Gengivelsestyper" name="Rendering Types"> -			<menu_item_check label="Simpel" name="Simple"/> -			<menu_item_check label="Alpha" name="Alpha"/> -			<menu_item_check label="Træer" name="Tree"/> -			<menu_item_check label="Avatarer" name="Character"/> -			<menu_item_check label="Surface Patch" name="Surface Patch"/> -			<menu_item_check label="Himmel" name="Sky"/> -			<menu_item_check label="Vand" name="Water"/> -			<menu_item_check label="Jord" name="Ground"/> -			<menu_item_check label="Volume" name="Volume"/> -			<menu_item_check label="Græs" name="Grass"/> -			<menu_item_check label="Skyer" name="Clouds"/> -			<menu_item_check label="Partikler" name="Particles"/> -			<menu_item_check label="Bump" name="Bump"/> +			<menu_item_check label="Simpel" name="Rendering Type Simple"/> +			<menu_item_check label="Alpha" name="Rendering Type Alpha"/> +			<menu_item_check label="Træer" name="Rendering Type Tree"/> +			<menu_item_check label="Avatarer" name="Rendering Type Character"/> +			<menu_item_check label="Surface Patch" name="Rendering Type Surface Patch"/> +			<menu_item_check label="Himmel" name="Rendering Type Sky"/> +			<menu_item_check label="Vand" name="Rendering Type Water"/> +			<menu_item_check label="Jord" name="Rendering Type Ground"/> +			<menu_item_check label="Volume" name="Rendering Type Volume"/> +			<menu_item_check label="Græs" name="Rendering Type Grass"/> +			<menu_item_check label="Skyer" name="Rendering Type Clouds"/> +			<menu_item_check label="Partikler" name="Rendering Type Particles"/> +			<menu_item_check label="Bump" name="Rendering Type Bump"/>  		</menu>  		<menu label="Gengivelsesegenskaber" name="Rendering Features"> -			<menu_item_check label="UI" name="UI"/> +			<menu_item_check label="UI" name="ToggleUI"/>  			<menu_item_check label="Valgte" name="Selected"/>  			<menu_item_check label="Fremhævede" name="Highlighted"/>  			<menu_item_check label="Dynamiske teksturer" name="Dynamic Textures"/> @@ -182,10 +179,7 @@  		<menu_item_call label="Tøm gruppe cache" name="ClearGroupCache"/>  		<menu_item_check label="Muse udjævning" name="Mouse Smoothing"/>  		<menu label="Shortcuts" name="Shortcuts"> -			<menu_item_call label="Billede (L$[COST])..." name="Upload Image"/> -			<menu_item_check label="Søg" name="Search"/>  			<menu_item_call label="Frigør taster" name="Release Keys"/> -			<menu_item_call label="Sæt UI størrelse til standard" name="Set UI Size to Default"/>  			<menu_item_check label="Vis avanceret menu (gammel genvej)" name="Show Advanced Menu - legacy shortcut"/>  			<menu_item_call label="Luk vindue" name="Close Window"/>  			<menu_item_call label="Luk alle vinduer" name="Close All Windows"/> @@ -194,13 +188,6 @@  			<menu_item_check label=""Joystick Flycam"" name="Joystick Flycam"/>  			<menu_item_call label="Nulstil udsyn" name="Reset View"/>  			<menu_item_call label="Se på den sidste der chattede" name="Look at Last Chatter"/> -			<menu label="Vælg byggeværktøj" name="Select Tool"> -				<menu_item_call label="Fokuseringsværktøj" name="Focus"/> -				<menu_item_call label="Flyt værktøj" name="Move"/> -				<menu_item_call label="Redigeringsværktøj" name="Edit"/> -				<menu_item_call label="Opret værktøj" name="Create"/> -				<menu_item_call label="Land værktøj" name="Land"/> -			</menu>  			<menu_item_call label="Zoom ind" name="Zoom In"/>  			<menu_item_call label="Zoom standard" name="Zoom Default"/>  			<menu_item_call label="Zoom ud" name="Zoom Out"/> @@ -276,9 +263,8 @@  			<menu_item_call label="Mist en netværkspakke" name="Drop a Packet"/>  		</menu>  		<menu_item_call label="Stød, skub & slag" name="Bumps, Pushes &amp; Hits"/> -		<menu label="Verden" name="World"> +		<menu label="Verden" name="DevelopWorld">  			<menu_item_check label="Vælg anden sol end region" name="Sim Sun Override"/> -			<menu_item_check label="Pejlelys blink effekt" name="Cheesy Beacon"/>  			<menu_item_check label="Fast vejr" name="Fixed Weather"/>  			<menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/>  		</menu> @@ -300,11 +286,11 @@  		</menu>  		<menu label="Avatar" name="Character">  			<menu label="Grab Baked Texture" name="Grab Baked Texture"> -				<menu_item_call label="Iris" name="Iris"/> -				<menu_item_call label="Hovede" name="Head"/> -				<menu_item_call label="Overkrop" name="Upper Body"/> -				<menu_item_call label="Underkrop" name="Lower Body"/> -				<menu_item_call label="Nederdel" name="Skirt"/> +				<menu_item_call label="Iris" name="Grab Iris"/> +				<menu_item_call label="Hovede" name="Grab Head"/> +				<menu_item_call label="Overkrop" name="Grab Upper Body"/> +				<menu_item_call label="Underkrop" name="Grab Lower Body"/> +				<menu_item_call label="Nederdel" name="Grab Skirt"/>  			</menu>  			<menu label="Avatar tests" name="Character Tests">  				<menu_item_call label="Skift avatar geometri" name="Toggle Character Geometry"/> @@ -326,8 +312,8 @@  		<menu_item_check label="Vis administrationsmenu" name="View Admin Options"/>  	</menu>  	<menu label="Administrér" name="Admin"> -		<menu label="Object"> -			<menu_item_call label="Tag kopi" name="Take Copy"/> +		<menu label="Object" name="AdminObject"> +			<menu_item_call label="Tag kopi" name="Admin Take Copy"/>  			<menu_item_call label="Gennemtving ejer til mig" name="Force Owner To Me"/>  			<menu_item_call label="Gennemtving ejer tolerance" name="Force Owner Permissive"/>  			<menu_item_call label="Slet" name="Delete"/> 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 4772f744ea..d198cd65a8 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -1206,10 +1206,6 @@ Only large parcels can be listed in search.               name="push_restrict_region_text">                  No Pushing (Region Override)              </panel.string> -            <panel.string -             name="see_avs_text"> -                    Avatars on other parcels can see -            </panel.string>              <text               type="string"               length="1" @@ -1524,24 +1520,24 @@ Only large parcels can be listed in search.               length="1"               follows="left|top"               text_color="LtGray" -             height="16" +             height="32"               layout="topleft"               left="274" -             top="166" +             top="150"               name="allow_label5" -             width="278"> -              and chat with avatars on this parcel +             width="205" +             wrap="true"> +              Avatars on other parcels can see and chat with avatars on this parcel              </text>              <check_box               height="16" -             label="See Avatars"               follows="top"               layout="topleft"               left="253"               top="150"               name="SeeAvatarsCheck"               tool_tip="Allows avatars on other parcels to see and chat with avatars on this parcel, and you to see and chat with them." -             width="120" /> +             width="10" />              <text               type="string"               length="1" 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 d101bca694..cd075abc41 100644 --- a/indra/newview/skins/default/xui/en/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml @@ -34,7 +34,6 @@           left_delta="0"           top_delta="0"           name="external_controls" -         user_resize="false"           width="620">              <web_browser               trusted_content="true"  diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml index a2739a8339..ca73883e53 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -16,7 +16,7 @@   min_width="250"   min_height="190">    <layout_stack -   animate="false"  +   animate="true"      default_tab_group="2"    follows="all"    height="320" @@ -32,8 +32,7 @@        min_width="115"        width="150"         height="320"  -      auto_resize="false" -      user_resize="false"> +      auto_resize="false">        <panel          name="panel_im_control_panel"          layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml index c3324a6aa4..ce788654aa 100644 --- a/indra/newview/skins/default/xui/en/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml @@ -37,7 +37,6 @@           min_height="20"           name="nav_controls"           top="400" -         user_resize="false"           width="800">              <button               follows="left|top" @@ -113,7 +112,6 @@           min_height="20"                    name="time_controls"           top_delta="0" -         user_resize="false"           width="800">              <button               follows="left|top" @@ -171,7 +169,6 @@           min_height="20"                    name="parcel_owner_controls"           top_delta="0" -         user_resize="false"           width="540">              <button               enabled="false" @@ -193,7 +190,6 @@           left_delta="0"           name="external_controls"           top_delta="0" -         user_resize="false"           width="540">            <web_browser               bottom="-30" diff --git a/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml b/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml new file mode 100644 index 0000000000..dbe75f8b53 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml @@ -0,0 +1,223 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_resize="true" + can_close="true" + bevel_style="in" + height="300" + layout="topleft" + min_height="40" + min_width="420" + name="Test Floater" + title="LAYOUTSTACK TESTS" + width="420"> +  <layout_stack name="test_stack" +              left="0" +              top="0" +              width="100" +              height="250" +              follows="left|top|bottom" +              orientation="vertical"> +    <layout_panel name="flex" +                  auto_resize="true" +                  user_resize="true" +                  bg_alpha_color="blue" +                  height="11" +                  min_height="0" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="white">flex</text> +    </layout_panel> +    <layout_panel name="fixed" +                auto_resize="false" +                  user_resize="true" +                height="50" +                  min_height="0" +                bg_alpha_color="green" +                background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="black">fixed</text> +    </layout_panel> +    <layout_panel name="fixed" +                auto_resize="false" +                  user_resize="true" +                height="50" +                  min_height="0" +                bg_alpha_color="green" +                background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="black">fixed</text> +    </layout_panel> +    <layout_panel name="fixed" +                auto_resize="false" +                  user_resize="true" +                height="50" +                bg_alpha_color="green" +                background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="black">fixed</text> +    </layout_panel> +  </layout_stack> +  <layout_stack name="test_stack" +              left_pad="5" +              top="0" +              width="100" +              height="250" +              follows="left|top|bottom" +              orientation="vertical"> +    <layout_panel name="flex" +                  auto_resize="true" +                  user_resize="true" +                  bg_alpha_color="blue" +                  height="100" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="white">flex</text> +    </layout_panel> +    <layout_panel name="flex" +                  auto_resize="true" +                  user_resize="true" +                  visible="false" +                  bg_alpha_color="blue" +                  height="100" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="white">flex</text> +    </layout_panel> +    <layout_panel name="fixed" +                  auto_resize="false" +                  user_resize="true" +                  height="50" +                  min_height="10" +                  bg_alpha_color="green" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="black">fixed</text> +    </layout_panel> +    <layout_panel name="fixed" +                auto_resize="false" +                  user_resize="true" +                height="50" +                min_height="10" +                bg_alpha_color="green" +                background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="black">fixed</text> +    </layout_panel> +    <layout_panel name="flex" +                  auto_resize="true" +                  user_resize="true" +                  bg_alpha_color="blue" +                  height="100" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="white">flex</text> +    </layout_panel> +    <layout_panel name="flex" +                  auto_resize="true" +                  user_resize="true" +                  bg_alpha_color="blue" +                  height="100" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="white">flex</text> +    </layout_panel> +    <layout_panel name="flex" +                  auto_resize="true" +                  user_resize="true" +                  bg_alpha_color="blue" +                  height="100" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="white">flex</text> +    </layout_panel> +    <layout_panel name="flex" +                  auto_resize="true" +                  user_resize="true" +                  bg_alpha_color="blue" +                  height="100" +                  visible="true" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="white">flex</text> +    </layout_panel> +  </layout_stack> +  <layout_stack name="test_stack" +               left_pad="5" +               top="0" +               width="100" +               height="250" +               follows="left|top|bottom" +               orientation="vertical"> +    <layout_panel name="flex" +                  auto_resize="true" +                  user_resize="true" +                  height="11" +                  bg_alpha_color="blue" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="white">flex</text> +    </layout_panel> +    <layout_panel name="fixed" +                auto_resize="false" +                  user_resize="true" +                height="50" +                bg_alpha_color="green" +                background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="black">fixed</text> +    </layout_panel> +    <layout_panel name="flex" +                  auto_resize="true" +                  user_resize="true" +                  bg_alpha_color="blue" +                  height="11" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="white">flex</text> +    </layout_panel> +  </layout_stack> +  <layout_stack name="test_stack" +               left_pad="5" +               top="0" +               width="100" +               height="250" +               follows="left|top|bottom" +               orientation="vertical"> +    <layout_panel name="fixed" +                auto_resize="false" +                  user_resize="true" +                height="50" +                bg_alpha_color="green" +                background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="black">fixed</text> +    </layout_panel> +    <layout_panel name="fixed" +                auto_resize="false" +                  user_resize="true" +                height="50" +                bg_alpha_color="green" +                background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="black">fixed</text> +    </layout_panel> +    <layout_panel name="fixed" +                auto_resize="false" +                  user_resize="true" +                height="50" +                bg_alpha_color="green" +                background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="black">fixed</text> +    </layout_panel> +    <layout_panel name="flex" +                  auto_resize="true" +                  user_resize="true" +                  bg_alpha_color="blue" +                  height="11" +                  min_height="0" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="white">flex</text> +    </layout_panel> +    <layout_panel name="flex" +                  auto_resize="true" +                  user_resize="true" +                  bg_alpha_color="blue" +                  height="11" +                  min_height="0" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="white">flex</text> +    </layout_panel> +    <layout_panel name="flex" +                  auto_resize="true" +                  user_resize="true" +                  bg_alpha_color="blue" +                  height="11" +                  min_height="0" +                  background_visible="true"> +      <text follows="top|left|right" halign="center" text_color="white">flex</text> +    </layout_panel> +  </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml index 3921cfcd2c..06d4327293 100644 --- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml @@ -22,6 +22,7 @@ or specifying its path in the "Editor Path" field.</string>       layout="topleft"       left="0"       mouse_opaque="false" +     default_tab_group="1"       name="main_panel"       right="750"       top="0"> @@ -196,6 +197,7 @@ or specifying its path in the "Editor Path" field.</string>           left="10"           name="name_list"           right="-10" +         tab_group="1"           search_column="1"           top="80">              <scroll_list.columns diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml index 6807b01fa3..cea19ec75c 100644 --- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml @@ -49,7 +49,6 @@           width="263">          <layout_panel           follows="top|left|right" -         user_resize="false"           auto_resize="false"           layout="topleft"           min_height="20" @@ -89,7 +88,7 @@               visible="true"               width="20" />          </layout_panel> -        <layout_panel name="leave_call_panel" height="26" min_height="26" user_resize="false" auto_resize="false"> +        <layout_panel name="leave_call_panel" height="26" min_height="26" auto_resize="false">          <layout_stack           clip="true"           follows="left|top|right" @@ -110,7 +109,6 @@            </layout_panel>            <layout_panel             auto_resize="false" -           user_resize="false"             follows="top|right"             height="23"             visible="true" @@ -133,7 +131,6 @@            top_pad="0"            height="132"            name="callers_panel" -          user_resize="false"             auto_resize="true"            width="280">          <avatar_list diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml index 57d1c92acb..cea10adca8 100644 --- a/indra/newview/skins/default/xui/en/floater_web_content.xml +++ b/indra/newview/skins/default/xui/en/floater_web_content.xml @@ -31,7 +31,6 @@        min_height="20"        name="nav_controls"        top="400" -      user_resize="false"        width="770">        <button          image_overlay="Arrow_Left_Off" @@ -160,7 +159,6 @@        left_delta="0"        name="external_controls"        top_delta="0" -      user_resize="false"        auto_resize="true"        width="585">        <web_browser @@ -173,8 +171,7 @@      </layout_panel>      <layout_panel name="status_bar"                     height="23" -                  auto_resize="false" -                  user_resize="false"> +                  auto_resize="false">        <text          type="string"          length="200" diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index b4be17e677..a87027a113 100644 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml @@ -23,7 +23,6 @@                left="0"                top="0"                width="1024" -              user_resize="false"                auto_resize="false"                visible="true">        <view mouse_opaque="false" @@ -40,7 +39,6 @@                    name="nav_bar_container"                    tab_stop="false"                    width="1024" -                  user_resize="false"                    visible="false"/>      <layout_panel auto_resize="true"                      follows="all" diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml index 0f42000ae7..e91f5af3d5 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml @@ -3,6 +3,7 @@   layout="topleft"   left="0"   mouse_opaque="false" + can_tear_off="true"   name="menu_inventory_add"   visible="false">              <menu diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index ec2dd10248..9cf848d485 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -118,7 +118,7 @@          </menu_item_call>          <menu_item_call           label="Walk / run / fly..." -         name="Stop Animating My Avatar"> +         name="Walk / run / fly">            <menu_item_call.on_click             function="Floater.ToggleOrBringToFront"             parameter="moveview" /> @@ -144,23 +144,6 @@          </menu_item_call>        </menu> -      <menu_item_call -       label="Request Admin Status" -       name="Request Admin Options" -       shortcut="control|alt|G" -       visible="false"> -        <menu_item_call.on_click -         function="Advanced.RequestAdminStatus" /> -      </menu_item_call> -      <menu_item_call -       label="Leave Admin Status" -       name="Leave Admin Options" -       shortcut="control|alt|shift|G" -       visible="false"> -        <menu_item_call.on_click -         function="Advanced.LeaveAdminStatus" /> -      </menu_item_call> -        <menu_item_separator/>        <menu_item_call @@ -525,7 +508,7 @@          <menu           create_jump_keys="true"           label="Sun" -         name="Environment Settings" +         name="Sun"           tear_off="true">              <menu_item_call               label="Sunrise" @@ -1452,7 +1435,7 @@           tear_off="true">              <menu_item_check               label="Simple" -             name="Simple" +             name="Rendering Type Simple"               shortcut="control|alt|shift|1">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1463,7 +1446,7 @@              </menu_item_check>              <menu_item_check               label="Alpha" -             name="Alpha" +             name="Rendering Type Alpha"               shortcut="control|alt|shift|2">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1474,7 +1457,7 @@              </menu_item_check>              <menu_item_check               label="Tree" -             name="Tree" +             name="Rendering Type Tree"               shortcut="control|alt|shift|3">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1485,7 +1468,7 @@              </menu_item_check>              <menu_item_check               label="Avatars" -             name="Character" +             name="Rendering Type Character"               shortcut="control|alt|shift|4">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1496,7 +1479,7 @@              </menu_item_check>              <menu_item_check               label="Surface Patch" -             name="Surface Patch" +             name="Rendering Type Surface Patch"               shortcut="control|alt|shift|5">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1507,7 +1490,7 @@              </menu_item_check>              <menu_item_check               label="Sky" -             name="Sky" +             name="Rendering Type Sky"               shortcut="control|alt|shift|6">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1518,7 +1501,7 @@              </menu_item_check>              <menu_item_check               label="Water" -             name="Water" +             name="Rendering Type Water"               shortcut="control|alt|shift|7">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1529,7 +1512,7 @@              </menu_item_check>              <menu_item_check               label="Ground" -             name="Ground" +             name="Rendering Type Ground"               shortcut="control|alt|shift|8">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1540,7 +1523,7 @@              </menu_item_check>              <menu_item_check               label="Volume" -             name="Volume" +             name="Rendering Type Volume"               shortcut="control|alt|shift|9">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1551,7 +1534,7 @@              </menu_item_check>              <menu_item_check               label="Grass" -             name="Grass" +             name="Rendering Type Grass"               shortcut="control|alt|shift|0">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1562,7 +1545,7 @@              </menu_item_check>              <menu_item_check               label="Clouds" -             name="Clouds" +             name="Rendering Type Clouds"               shortcut="control|alt|shift|-">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1573,7 +1556,7 @@              </menu_item_check>              <menu_item_check               label="Particles" -             name="Particles" +             name="Rendering Type Particles"               shortcut="control|alt|shift|=">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1584,7 +1567,7 @@              </menu_item_check>              <menu_item_check               label="Bump" -             name="Bump" +             name="Rendering Type Bump"               shortcut="control|alt|shift|\">                  <menu_item_check.on_check                   function="Advanced.CheckRenderType" @@ -1601,7 +1584,7 @@           tear_off="true">              <menu_item_check               label="UI" -             name="UI" +             name="ToggleUI"               shortcut="control|alt|F1">                  <menu_item_check.on_check                   function="Advanced.CheckFeature" @@ -1734,28 +1717,6 @@           name="Shortcuts"           tear_off="true"           visible="false"> -          <menu_item_call -             label="Image (L$[COST])..." -             name="Upload Image" -             shortcut="control|U"> -            <menu_item_call.on_click -               function="File.UploadImage" -               parameter="" /> -            <menu_item_call.on_enable -               function="File.EnableUpload" /> -            </menu_item_call> -            <menu_item_check -               label="Search" -               name="Search" -               shortcut="control|F"> -            <menu_item_check.on_check -             function="Floater.Visible" -             parameter="search" /> -            <menu_item_check.on_click -             function="Floater.Toggle" -             parameter="search" /> -            </menu_item_check> -              <!-- This second, alternative shortcut for Show Advanced Menu is for backward compatibility.  The main shortcut has been changed so it's Linux-friendly, where the old shortcut is typically eaten by the window manager. -->              <menu_item_check                 label="Show Advanced Menu - legacy shortcut" @@ -1842,55 +1803,6 @@              <menu_item_separator/> -            <menu -             create_jump_keys="true" -             label="Select Build Tool" -             name="Select Tool" -             tear_off="true"> -                <menu_item_call -                 label="Focus Tool" -                 name="Focus" -                 shortcut="control|1"> -                    <menu_item_call.on_click -                     function="Tools.SelectTool" -                     parameter="focus" /> -                </menu_item_call> -                <menu_item_call -                 label="Move Tool" -                 name="Move" -                 shortcut="control|2"> -                    <menu_item_call.on_click -                     function="Tools.SelectTool" -                     parameter="move" /> -                </menu_item_call> -                <menu_item_call -                 label="Edit Tool" -                 name="Edit" -                 shortcut="control|3"> -                    <menu_item_call.on_click -                     function="Tools.SelectTool" -                     parameter="edit" /> -                </menu_item_call> -                <menu_item_call -                 label="Create Tool" -                 name="Create" -                 shortcut="control|4"> -                    <menu_item_call.on_click -                     function="Tools.SelectTool" -                     parameter="create" /> -                </menu_item_call> -                <menu_item_call -                 label="Land Tool" -                 name="Land" -                 shortcut="control|5"> -                    <menu_item_call.on_click -                     function="Tools.SelectTool" -                     parameter="land" /> -                </menu_item_call> -            </menu> - -            <menu_item_separator/> -              <menu_item_call               label="Zoom In"               name="Zoom In" @@ -2853,7 +2765,7 @@          <menu           create_jump_keys="true"           label="World" -         name="World" +         name="DevelopWorld"           tear_off="true">              <menu_item_check               label="Sim Sun Override" @@ -2866,16 +2778,6 @@                   parameter="SkyOverrideSimSunPosition" />              </menu_item_check>              <menu_item_check -             label="Cheesy Beacon" -             name="Cheesy Beacon"> -                <menu_item_check.on_check -                 function="CheckControl" -                 parameter="CheesyBeacon" /> -                <menu_item_check.on_click -                 function="ToggleControl" -                 parameter="CheesyBeacon" /> -            </menu_item_check> -            <menu_item_check               label="Fixed Weather"               name="Fixed Weather">                  <menu_item_check.on_check @@ -3099,7 +3001,7 @@               tear_off="true">                  <menu_item_call                   label="Iris" -                 name="Iris"> +                 name="Grab Iris">                      <menu_item_call.on_click                       function="Advanced.GrabBakedTexture"                       parameter="iris" /> @@ -3109,7 +3011,7 @@                  </menu_item_call>                  <menu_item_call                   label="Head" -                 name="Head"> +                 name="Grab Head">                      <menu_item_call.on_click                       function="Advanced.GrabBakedTexture"                       parameter="head" /> @@ -3119,7 +3021,7 @@                  </menu_item_call>                  <menu_item_call                   label="Upper Body" -                 name="Upper Body"> +                 name="Grab Upper Body">                      <menu_item_call.on_click                       function="Advanced.GrabBakedTexture"                       parameter="upper" /> @@ -3129,7 +3031,7 @@                  </menu_item_call>                  <menu_item_call                   label="Lower Body" -                 name="Lower Body"> +                 name="Grab Lower Body">                      <menu_item_call.on_click                       function="Advanced.GrabBakedTexture"                       parameter="lower" /> @@ -3139,7 +3041,7 @@                  </menu_item_call>                  <menu_item_call                   label="Skirt" -                 name="Skirt"> +                 name="Grab Skirt">                      <menu_item_call.on_click                       function="Advanced.GrabBakedTexture"                       parameter="skirt" /> @@ -3458,10 +3360,11 @@          <menu           create_jump_keys="true"           label="Object" +         name="AdminObject"           tear_off="true">              <menu_item_call               label="Take Copy" -             name="Take Copy" +             name="Admin Take Copy"               shortcut="control|alt|shift|O">                  <menu_item_call.on_click                   function="Admin.ForceTakeCopy" /> @@ -3730,7 +3633,7 @@          <menu           create_jump_keys="true"           label="Help" -         name="Help" +         name="DeprecatedHelp"           tear_off="true">              <menu_item_call               label="Official Linden Blog" diff --git a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml index 93cafd4a53..d68fa6ca6c 100644 --- a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml @@ -27,8 +27,7 @@           mouse_opaque="false"           width="147"           top="0" -         name="speakers_list_panel" -         user_resize="false"> +         name="speakers_list_panel">              <avatar_list               color="DkGray2"               follows="all" @@ -50,7 +49,6 @@           min_height="25"           width="130"           name="call_btn_panel" -         user_resize="false"           visible="false">              <button               follows="all" @@ -68,7 +66,6 @@           min_height="25"           width="130"           name="end_call_btn_panel" -         user_resize="false"           visible="false">              <button               follows="all" @@ -85,7 +82,6 @@           min_height="25"           width="130"           name="voice_ctrls_btn_panel" -         user_resize="false"           visible="false">              <button               follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml index b5e1a5f16d..f4722b05d6 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml @@ -31,7 +31,6 @@       width="1000">          <layout_panel           auto_resize="false" -         user_resize="false"            min_width="2"           width="2" />          <layout_panel @@ -40,8 +39,7 @@           height="28"           layout="topleft"           width="310" -         min_width="188" -         user_resize="false"> +         min_width="188">            <panel              left="0"              filename="panel_nearby_chat_bar.xml" @@ -61,8 +59,7 @@           width="82"           top_delta="0"           min_width="52" -         name="gesture_panel" -         user_resize="false"> +         name="gesture_panel">              <gesture_combo_list               follows="left|right"               height="23" @@ -80,7 +77,6 @@          </layout_panel>          <layout_panel           auto_resize="false" -         user_resize="false"            min_width="3"           name="after_gesture_panel"           width="3"/> diff --git a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml index 41d1036a4d..6d4008a4ed 100644 --- a/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml @@ -28,7 +28,6 @@           mouse_opaque="false"           name="chiclet_list_panel"           top="0" -         user_resize="false"           width="189">        <chiclet_panel               chiclet_padding="4" @@ -78,7 +77,6 @@        </chiclet_panel>      </layout_panel>      <layout_panel auto_resize="false" -                      user_resize="false"                        width="4"                        min_width="4"/>      <layout_panel @@ -90,7 +88,6 @@           min_width="37"           name="im_well_panel"           top="0" -         user_resize="false"           width="37">        <chiclet_im_well               follows="right" @@ -139,7 +136,6 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well           min_width="37"           name="notification_well_panel"           top="0" -         user_resize="false"           width="37">        <chiclet_notification               follows="right" diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml index 6c8d994bc6..d4a2745d1d 100644 --- a/indra/newview/skins/default/xui/en/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml @@ -289,8 +289,7 @@            left="0"            top="0"            width="290" -          height="16" -          user_resize="false"> +          height="16">          <text           follows="left|top"           font.style="BOLD" @@ -327,8 +326,7 @@            left="0"            top="0"            width="290" -          height="16" -          user_resize="false"> +          height="16">          <text           follows="left|top"           font.style="BOLD" @@ -357,8 +355,7 @@            left="0"            top="0"            width="290" -          height="215" -          user_resize="false"> +          height="215">          <text           auto_resize="false"           follows="left|top" @@ -416,7 +413,6 @@  			  layout="bottomleft"  			  left="0"  			  name="layout_panel1" -		      user_resize="false"   		      auto_resize="true"  			  width="101">  			  <button @@ -436,7 +432,6 @@  			  layout="bottomleft"  			  left_pad="3"  			  name="show_on_map_btn_lp" -		      user_resize="false"   		      auto_resize="true"  			  width="100">  			  <button @@ -455,7 +450,6 @@  			  layout="bottomleft"  			  left_pad="3"  			  name="edit_btn_lp" -		      user_resize="false"   		      auto_resize="true"  			  width="101">  			  <button diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml index e512d63f9e..3509eaa285 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml @@ -319,7 +319,6 @@  			  layout="bottomleft"  			  left="0"  			  name="save_changes_btn_lp" -		      user_resize="false"   		      auto_resize="true"  			  width="156">  			  <button @@ -339,7 +338,6 @@  			  layout="bottomleft"  			  left_pad="3"  			  name="show_on_map_btn_lp" -		      user_resize="false"   		      auto_resize="true"  			  width="157">  			  <button diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml index 2ec2e03e8c..0faa1598b1 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml @@ -201,7 +201,6 @@  			  layout="topleft"  			  left="0"  			  name="layout_panel1" -		      user_resize="false"   		      auto_resize="true"  			  width="150">  		        <button @@ -221,7 +220,6 @@  			  layout="topleft"  			  left_pad="4"  			  name="layout_panel2" -		      user_resize="false"   		      auto_resize="true"  			  width="146">  		        <button diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml index 442eb8c28d..2c7c8133d1 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml @@ -435,7 +435,6 @@  			  layout="bottomleft"  			  name="save_changes_btn_lp"  			  top="0" -		      user_resize="false"   		      auto_resize="true"  			  width="153">          <button @@ -456,7 +455,6 @@  			  left_pad="3"  			  name="show_on_map_btn_lp"  			  top="0" -		      user_resize="false"   		      auto_resize="true"  			  width="154">          <button diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml index c8764a6a84..69a692e2c4 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml @@ -454,7 +454,6 @@               left="0"			               mouse_opaque="false"               name="save_as_btn_lp" -             user_resize="false"                auto_resize="true"               width="154">                  <button @@ -474,7 +473,6 @@               left_pad="3"			               mouse_opaque="false"               name="revert_btn_lp" -             user_resize="false"                auto_resize="true"               width="152">                  <button diff --git a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml index c1dc2aaaf7..ad10e53a4e 100644 --- a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml @@ -26,8 +26,7 @@           mouse_opaque="false"           width="145"           top="0" -         name="speakers_list_panel" -         user_resize="false"> +         name="speakers_list_panel">              <avatar_list               color="DkGray2"               follows="all" @@ -48,8 +47,7 @@           layout="topleft"           min_height="28"           width="130" -         name="group_info_btn_panel" -         user_resize="false"> +         name="group_info_btn_panel">              <button               follows="left|right|bottom"               height="23" @@ -66,8 +64,7 @@           layout="topleft"           min_height="28"           width="130" -         name="call_btn_panel" -         user_resize="false"> +         name="call_btn_panel">              <button               follows="all"               height="23" @@ -84,7 +81,6 @@           min_height="28"           width="130"           name="end_call_btn_panel" -         user_resize="false"           visible="false">              <button               follows="all" @@ -101,7 +97,6 @@           min_height="28"           width="130"           name="voice_ctrls_btn_panel" -         user_resize="false"           visible="false">              <button               follows="all" diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index ec3f3b48bc..206496cc0e 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -97,6 +97,7 @@ background_visible="true"         follows="all"         layout="topleft"         auto_resize="true" +       user_resize="true"         height="513"         width="313">     <accordion @@ -195,7 +196,6 @@ background_visible="true"  				layout="bottomleft"  				left="0"  				name="btn_refresh_lp" -			    user_resize="false"   			    auto_resize="false"  				width="24">  					<button @@ -215,7 +215,6 @@ background_visible="true"  				layout="bottomleft"  				left_pad="3"  				name="btn_chat_lp" -			    user_resize="false"   			    auto_resize="true"  				width="91">  					<button @@ -234,7 +233,6 @@ background_visible="true"  				layout="bottomleft"  				left_pad="3"  				name="call_btn_lp" -			    user_resize="false"   			    auto_resize="true"  				width="91">  					<button @@ -255,7 +253,6 @@ background_visible="true"  				layout="bottomleft"  				left_pad="3"  				name="btn_apply_lp" -			    user_resize="false"   			    auto_resize="true"  				width="91">  					<button diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml index 9f73b7c540..8fcd6ccbaf 100644 --- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml @@ -32,8 +32,7 @@           min_height="20"           width="140"           name="view_profile_btn_panel" -         top="0"  -         user_resize="false"> +         top="0" >              <button               follows="left|top|right"               height="23" @@ -49,8 +48,7 @@           layout="topleft"           min_height="25"           width="140" -         name="add_friend_btn_panel" -         user_resize="false"> +         name="add_friend_btn_panel">              <button               follows="left|top|right"               height="23" @@ -66,8 +64,7 @@           layout="topleft"           min_height="25"           width="140" -         name="teleport_btn_panel" -         user_resize="false"> +         name="teleport_btn_panel">          <button               auto_resize="false"               follows="left|top|right" @@ -84,8 +81,7 @@           layout="topleft"           min_height="25"           width="140" -         name="share_btn_panel" -         user_resize="false"> +         name="share_btn_panel">             <button               auto_resize="true"               follows="left|top|right" @@ -101,8 +97,7 @@           layout="topleft"           min_height="25"           width="140" -         name="pay_btn_panel" -         user_resize="false"> +         name="pay_btn_panel">             <button               auto_resize="true"               follows="left|top|right" @@ -118,8 +113,7 @@           layout="topleft"           min_height="25"           width="140" -         name="call_btn_panel" -         user_resize="false"> +         name="call_btn_panel">              <button               follows="left|top|right"               height="23" @@ -135,7 +129,6 @@           min_height="25"           width="140"           name="end_call_btn_panel" -         user_resize="false"           visible="false">              <button               follows="left|top|right" @@ -152,7 +145,6 @@           min_height="25"           width="140"           name="voice_ctrls_btn_panel" -         user_resize="false"           visible="false">              <button               follows="left|top|right" @@ -169,7 +161,6 @@         layout="topleft"         min_height="0"         width="140" -       name="spacer" -       user_resize="false" /> +       name="spacer"/>      </layout_stack>  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml index 23d8cb11ca..2a5933e3e9 100644 --- a/indra/newview/skins/default/xui/en/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml @@ -114,7 +114,6 @@  		       height="25"  		       layout="topleft"  		       name="options_gear_btn_panel" -		       user_resize="false"  		       width="32">  		          <menu_button  		           follows="bottom|left" @@ -135,7 +134,6 @@  		       height="25"  		       layout="topleft"  		       name="add_btn_panel" -		       user_resize="false"  		       width="32">  		          <button  		           follows="bottom|left" @@ -156,7 +154,6 @@  		       height="25"  		       layout="topleft"  		       name="dummy_panel" -		       user_resize="false"  		       width="212">  		          <icon  		           follows="bottom|left|right" @@ -173,7 +170,6 @@  		       height="25"  		       layout="topleft"  		       name="trash_btn_panel" -		       user_resize="false"  		       width="31">  		          <dnd_button  		           follows="bottom|left" diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index 6521bf2a4e..223326dd06 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -48,7 +48,6 @@ name="login"  layout="topleft"  width="705"  min_width="705" -user_resize="false"  height="80">  <text  follows="left|bottom" @@ -165,7 +164,6 @@ follows="right|bottom"  name="links"  width="205"  min_width="205" -user_resize="false"  height="80">     <text  follows="right|bottom" diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index e6c5110999..9f84cdc43e 100644 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -119,7 +119,6 @@         height="25"         layout="topleft"         name="options_gear_btn_panel" -       user_resize="false"         width="32">            <menu_button             follows="bottom|left" @@ -140,7 +139,6 @@         height="25"         layout="topleft"         name="add_btn_panel" -       user_resize="false"         width="32">            <button             follows="bottom|left" @@ -161,7 +159,6 @@         height="25"         layout="topleft"         name="dummy_panel" -       user_resize="false"         width="212">            <icon             follows="bottom|left|right" @@ -178,7 +175,6 @@         height="25"         layout="topleft"         name="trash_btn_panel" -       user_resize="false"         width="31">            <dnd_button             follows="bottom|left" 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 7a8e872dc9..9dee68efa7 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -141,7 +141,6 @@             max_width="5"             min_width="5"             name="nav_bar_resize_handle_panel" -           user_resize="false"             width="5">               <icon                 follows="top|right" diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml index bfc503f05b..d1cb64f7ad 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml @@ -196,7 +196,6 @@  			name="stop"  			mouse_opaque="false"  			auto_resize="false" -			user_resize="false"  			layout="topleft"  			top="0"  			height="22" @@ -224,7 +223,6 @@  			name="play"  			mouse_opaque="false"  			auto_resize="false" -			user_resize="false"  			layout="topleft"  			top="0"  			height="22" @@ -252,7 +250,6 @@  			name="pause"  			mouse_opaque="false"  			auto_resize="false" -			user_resize="false"  			layout="topleft"  			top="0"  			min_width="22" @@ -279,7 +276,6 @@  			name="volume_slider_ctrl"  			mouse_opaque="false"  			auto_resize="true" -			user_resize="false"  			follows="left|right"  			layout="topleft"  			top="0" @@ -304,7 +300,6 @@  			name="mute"  			mouse_opaque="false"  			auto_resize="false" -			user_resize="false"  			layout="topleft"  			top="0"  			height="72" @@ -333,7 +328,6 @@  			name="zoom"  			mouse_opaque="false"  			auto_resize="false" -			user_resize="false"  			layout="topleft"  			top="0"  			height="28" @@ -361,7 +355,6 @@  			name="unzoom"  			mouse_opaque="false"  			auto_resize="false" -			user_resize="false"  			layout="topleft"  			top="0"  			min_width="21" @@ -388,8 +381,7 @@  		<layout_panel  			name="right_bookend"  			width="0" -			mouse_opaque="false" -			user_resize="false" /> +			mouse_opaque="false"/>  	  </layout_stack>  	</panel>    </panel> diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml index e1cd78bad8..b61f110e32 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml @@ -198,7 +198,6 @@ It is calculated as border_size + 2*UIResizeBarOverlap                   height="154"                   name="add_button_and_combobox"                   width="311" -                 user_resize="false"                   visible="true">              <!-- List containing items from the COF and Base outfit --> @@ -271,8 +270,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap                   height="30"                   name="filter_panel"                   width="311" -                 visible="false" -                 user_resize="false"> +                 visible="false">                      <filter_editor  		             background_image="TextField_Search_Off" @@ -515,7 +513,6 @@ It is calculated as border_size + 2*UIResizeBarOverlap                       left="0"			                       mouse_opaque="false"                       name="save_btn_lp" -                     user_resize="false"                        auto_resize="true"                       width="156">          <button @@ -550,7 +547,6 @@ It is calculated as border_size + 2*UIResizeBarOverlap                       left_pad="3"			                       mouse_opaque="false"                       name="revert_btn_lp" -                     user_resize="false"                        auto_resize="true"                       width="147">          <button diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml index 2ad2416179..405d9513db 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml @@ -84,7 +84,6 @@                       left="0"			                       mouse_opaque="false"                       name="save_btn_lp" -                     user_resize="false"                        auto_resize="true"                       width="156">                      <button @@ -118,7 +117,6 @@                       left_pad="3"			                       mouse_opaque="false"                       name="wear_btn_lp" -                     user_resize="false"                        auto_resize="true"                       width="147">                      <button diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 0ebfd9c037..98c7c49ff4 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -284,7 +284,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  				       height="25"  				       layout="topleft"  				       name="options_gear_btn_panel" -				       user_resize="false"  				       width="32">  				          <menu_button  				           follows="bottom|left" @@ -305,7 +304,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  				       height="25"  				       layout="topleft"  				       name="add_btn_panel" -				       user_resize="false"  				       width="32">  				          <button  				           follows="bottom|left" @@ -326,7 +324,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  				       height="25"  				       layout="topleft"  				       name="dummy_panel" -				       user_resize="false"  				       width="210">  				          <icon  				           follows="bottom|left|right" @@ -343,7 +340,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  				       height="25"  				       layout="topleft"  				       name="trash_btn_panel" -				       user_resize="false"  				       width="31">  				          <dnd_button  				           follows="bottom|left" @@ -602,7 +598,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			layout="bottomleft"  			left="0"  			name="view_profile_btn_lp" -		    user_resize="false"   		    auto_resize="true"  			width="68">  				<button @@ -623,7 +618,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			layout="bottomleft"  			left_pad="3"  			name="im_btn_lp" -		    user_resize="false"   		    auto_resize="true"  			width="41">  				<button @@ -644,7 +638,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			layout="bottomleft"  			left_pad="3"  			name="call_btn_lp" -		    user_resize="false"   		    auto_resize="true"  			width="52">  				<button @@ -665,7 +658,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			layout="bottomleft"  			left_pad="3"  			name="share_btn_lp" -		    user_resize="false"   		    auto_resize="true"  			width="66">  				<button @@ -686,7 +678,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			layout="bottomleft"  			left_pad="3"  			name="teleport_btn_lp" -		    user_resize="false"   		    auto_resize="true"  			width="77">  				<button @@ -720,7 +711,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			left="0"			  			mouse_opaque="false"  			name="group_info_btn_lp" -		    user_resize="false"   		    auto_resize="true"  			width="108">  				<button @@ -743,7 +733,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			left_pad="3"  			mouse_opaque="false"  			name="chat_btn_lp" -		    user_resize="false"   		    auto_resize="true"  			width="101">  				<button @@ -766,7 +755,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M  			left_pad="3"  			mouse_opaque="false"  			name="group_call_btn_lp" -		    user_resize="false"   		    auto_resize="true"  			width="96">  				<button diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml index 24046d5cca..79d190e1e0 100644 --- a/indra/newview/skins/default/xui/en/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml @@ -139,7 +139,6 @@  			  layout="bottomleft"  			  left="0"  			  name="layout_panel1" -		      user_resize="false"   		      auto_resize="true"  			  width="101">  			  <button @@ -158,7 +157,6 @@  			  layout="bottomleft"  			  left_pad="3"  			  name="show_on_map_btn_lp" -		      user_resize="false"   		      auto_resize="true"  			  width="100">  			  <button @@ -177,7 +175,6 @@  			  layout="bottomleft"  			  left_pad="3"  			  name="edit_btn_lp" -		      user_resize="false"   		      auto_resize="true"  			  width="101">  			  <button diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml index 85f402dfa2..8def96cada 100644 --- a/indra/newview/skins/default/xui/en/panel_picks.xml +++ b/indra/newview/skins/default/xui/en/panel_picks.xml @@ -102,7 +102,6 @@ bg_opaque_color="DkGray2"  			  layout="bottomleft"  			  left="0"  			  name="gear_menu_btn" -		      user_resize="false"   		      auto_resize="true"  			  width="51">  				<button @@ -124,7 +123,6 @@ bg_opaque_color="DkGray2"  			  height="18"  			  layout="bottomleft"  			  name="trash_btn_lp" -		      user_resize="false"   		      auto_resize="true"  			  width="18">  				<button @@ -170,7 +168,6 @@ bg_opaque_color="DkGray2"  			  layout="topleft"  			  left="0"  			  name="info_btn_lp" -		      user_resize="false"   		      auto_resize="true"  			  top="0"  			  width="95"> @@ -192,7 +189,6 @@ bg_opaque_color="DkGray2"  			  layout="bottomleft"   			  left_pad="2"  			  name="teleport_btn_lp" -		      user_resize="false"   		      auto_resize="true"  			  width="117">  		        <button @@ -212,7 +208,6 @@ bg_opaque_color="DkGray2"  			  height="28"  			  layout="bottomleft"  			  name="show_on_map_btn_lp" -		      user_resize="false"   		      auto_resize="true"   			  left_pad="2"  			  width="90"> diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml index e280115bda..308acf0c0c 100644 --- a/indra/newview/skins/default/xui/en/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml @@ -238,7 +238,6 @@                   mouse_opaque="false"                   name="here_panel"                   top="0" -                 user_resize="false"                   width="60">                      <icon                       follows="top|left" @@ -259,7 +258,6 @@                   mouse_opaque="false"                   name="for_sale_panel"                   top="0" -                 user_resize="false"                   width="60">                      <icon                       follows="top|left" diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml index 670aa47313..f169dbb702 100644 --- a/indra/newview/skins/default/xui/en/panel_places.xml +++ b/indra/newview/skins/default/xui/en/panel_places.xml @@ -92,7 +92,6 @@ background_visible="true"  			left="0"			  			mouse_opaque="false"  			name="lp1" -		    user_resize="false"   		    auto_resize="true"  			width="193"> @@ -115,7 +114,6 @@ background_visible="true"  					left="0"			  					mouse_opaque="false"  					name="teleport_btn_lp" -				    user_resize="false"   				    auto_resize="true"  					width="109">  						<button @@ -137,7 +135,6 @@ background_visible="true"  					left_pad="3"  					mouse_opaque="false"  					name="chat_btn_lp" -				    user_resize="false"   				    auto_resize="true"  					width="86">  						<button @@ -161,7 +158,6 @@ background_visible="true"  			left_pad="0"			  			mouse_opaque="false"  			name="lp2" -		    user_resize="false"   		    auto_resize="true"  			width="116"> @@ -185,7 +181,6 @@ background_visible="true"  					left_pad="0"  					mouse_opaque="false"  					name="edit_btn_lp" -				    user_resize="false"   				    auto_resize="true"  					width="84">  						<button @@ -208,7 +203,6 @@ background_visible="true"  					left_pad="0"  					mouse_opaque="false"  					name="overflow_btn_lp" -				    user_resize="false"   				    auto_resize="true"  					width="24">  						<menu_button @@ -246,7 +240,6 @@ background_visible="true"  					left_pad="3"			  					mouse_opaque="false"  					name="profile_btn_lp" -				    user_resize="false"   				    auto_resize="true"  					width="102">  						<button @@ -283,7 +276,6 @@ background_visible="true"  					mouse_opaque="false"  					name="close_btn_lp"  					top="0" -				    user_resize="false"   				    auto_resize="true"  					width="51">  						<button @@ -324,7 +316,6 @@ background_visible="true"  			mouse_opaque="false"  			name="save_btn_lp"  			top="0" -		    user_resize="false"   		    auto_resize="true"  			width="153">  				<button @@ -347,7 +338,6 @@ background_visible="true"  			mouse_opaque="false"  			name="cancel_btn_lp"  			top="0" -		    user_resize="false"   		    auto_resize="true"  			width="154">  				<button diff --git a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml index 2e0bb88f53..e9427a2388 100644 --- a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml +++ b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml @@ -50,7 +50,6 @@           layout="topleft"           left="0"           name="postcard_image_size_lp" -         user_resize="false"            auto_resize="false"           top="0"           right="-1" @@ -99,7 +98,6 @@           layout="topleft"           left="0"           name="postcard_image_format_quality_lp" -         user_resize="false"            auto_resize="true"           top="0"           right="-1" diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml index 273c252474..198ccd6e2f 100644 --- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml @@ -31,8 +31,7 @@  		width="0"  		name="left_bookend_bottom"  		mouse_opaque="false" -		layout="topleft" -		user_resize="false" /> +		layout="topleft"/>  	<layout_panel  		name="media_progress_indicator"  		mouse_opaque="false" @@ -41,7 +40,6 @@  		left="0"  		top="0"  		auto_resize="false" -		user_resize="false"  		min_width="100"  		width="200">  	  <progress_bar @@ -59,8 +57,7 @@  		name="right_bookend_bottom"  		width="0"  		mouse_opaque="false" -		layout="topleft" -		user_resize="false" /> +		layout="topleft"/>    </layout_stack>    <layout_stack  	  name="media_controls" @@ -79,13 +76,11 @@  		top="0"  		width="0"  		mouse_opaque="false" -		layout="topleft" -		user_resize="false" /> +		layout="topleft"/>  	<layout_panel  		name="back"  		top="0"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		mouse_opaque="false"  		min_width="22" @@ -114,7 +109,6 @@  		name="fwd"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		min_width="22"  		top="0" @@ -142,7 +136,6 @@  		name="home"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		top="0"  		height="22" @@ -170,7 +163,6 @@  		name="media_stop"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		top="0"  		height="22" @@ -198,7 +190,6 @@  		name="reload"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		top="0"  		height="22" @@ -226,7 +217,6 @@  		name="stop"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		top="0"  		height="22" @@ -254,7 +244,6 @@  		name="play"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		top="0"  		height="22" @@ -282,7 +271,6 @@  		name="pause"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		top="0"  		min_width="22" @@ -310,7 +298,6 @@  		name="media_address"  		mouse_opaque="false"  		auto_resize="true" -		user_resize="false"  		height="24"  		follows="left|right|bottom"  		layout="topleft" @@ -343,8 +330,7 @@  			layout="topleft"  			width="16"  			mouse_opaque="false" -			auto_resize="false" -			user_resize="false"> +			auto_resize="false">  		  <icon  			  name="media_whitelist_flag"  			  follows="top|right" @@ -358,8 +344,7 @@  			layout="topleft"  			width="16"  			mouse_opaque="false" -			auto_resize="false" -			user_resize="false"> +			auto_resize="false">  		  <icon  			  name="media_secure_lock_flag"  			  height="16" @@ -374,7 +359,6 @@  		name="media_play_position"  		mouse_opaque="false"  		auto_resize="true" -		user_resize="false"  		follows="left|right"  		layout="topleft"  		top="0" @@ -399,7 +383,6 @@  		name="skip_back"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		top="0"  		min_width="22" @@ -428,7 +411,6 @@  		name="skip_forward"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		top="0"  		min_width="22" @@ -455,7 +437,6 @@  		name="media_volume"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		top="0"  		height="72" @@ -511,7 +492,6 @@  		name="zoom_frame"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		top="0"  		height="28" @@ -539,7 +519,6 @@  		name="close"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		top="0"  		min_width="21" @@ -567,7 +546,6 @@  		name="new_window"  		mouse_opaque="false"  		auto_resize="false" -		user_resize="false"  		layout="topleft"  		top="0"  		min_width="22" @@ -596,8 +574,7 @@  		mouse_opaque="false"  		top="0"  		width="0" -		layout="topleft" -		user_resize="false" /> +		layout="topleft"/>    </layout_stack>    <panel  	  name="media_region" diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml index 4535c56339..7275e8d89b 100644 --- a/indra/newview/skins/default/xui/en/panel_progress.xml +++ b/indra/newview/skins/default/xui/en/panel_progress.xml @@ -20,14 +20,12 @@           layout="topleft"           min_width="10"           name="panel1" -         user_resize="false"           width="150" />          <layout_panel           height="768"           layout="topleft"           min_width="640"           name="panel2" -         user_resize="false"           width="640">              <layout_stack               follows="left|right|top|bottom" @@ -121,7 +119,6 @@           layout="topleft"           min_width="10"           name="panel6" -         user_resize="false"           width="150" />      </layout_stack>      <button diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml index ae0215a578..b966358f18 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml @@ -96,7 +96,6 @@           layout="topleft"           left="0"           name="local_image_size_lp" -         user_resize="false"            auto_resize="false"           top="0"           right="-1" @@ -145,7 +144,6 @@           layout="topleft"           left="0"           name="local_image_format_quality_lp" -         user_resize="false"            auto_resize="true"           top="0"           right="-1" diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml index 91ac9ad658..5bd383b81e 100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml @@ -84,7 +84,6 @@           layout="topleft"           left="0"           name="profile_image_size_lp" -         user_resize="false"            auto_resize="false"           top="0"           right="-1" @@ -132,7 +131,6 @@           layout="topleft"           left="0"           name="profile_image_metadata_lp" -         user_resize="false"            auto_resize="true"           top="0"           right="-1" diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml index 3c69a0cb6c..58911bed56 100644 --- a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml +++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml @@ -20,7 +20,6 @@                  mouse_opaque="false">    <layout_panel name="vertical_toolbar_panel"                  auto_resize="true" -                user_resize="false"                  width="1024"                  height="500"                  mouse_opaque="false"> @@ -34,7 +33,6 @@                    mouse_opaque="false">        <layout_panel name="left_toolbar_panel"                      auto_resize="false" -                    user_resize="false"                      height="500"                      width="30"                      mouse_opaque="false"> @@ -61,7 +59,6 @@        </layout_panel>        <layout_panel name="non_toolbar_panel"                      auto_resize="true" -                    user_resize="false"                      mouse_opaque="false"                      height="100"                      width="200"> @@ -102,7 +99,6 @@        </layout_panel>        <layout_panel name="right_toolbar_panel"                      auto_resize="false" -                    user_resize="false"                      height="500"                      width="30"                      mouse_opaque="false"> @@ -132,7 +128,6 @@    </layout_panel>    <layout_panel name="bottom_toolbar_panel"                  auto_resize="false" -                user_resize="false"                  height="30"                  width="1024"                  mouse_opaque="false"> diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml index b52784d6bc..d4162f6d9a 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml @@ -34,7 +34,6 @@                   min_dim="150"                   width="330"                   follows="bottom|left|right" -                 user_resize="false"                   height="300">                   <panel                        class="panel_main_inventory" @@ -52,12 +51,10 @@                   width="330"  								 layout="topleft"                   auto_resize="true" -                 user_resize="false"                   follows="bottom|left|right"                   name="inbox_outbox_layout_panel"                   visible="false"                   min_dim="35" -                 max_dim="235"                   expanded_min_dim="125"                   height="235">  							 <layout_stack @@ -75,13 +72,11 @@                   width="330"  								 layout="topleft"                   auto_resize="true" -                 user_resize="false"                   follows="left|right|top"                   name="inbox_layout_panel"                   visible="false"                   min_dim="35" -                 max_dim="200" -                 expanded_min_dim="90" +                   height="200">                   <panel                        follows="all" @@ -157,12 +152,10 @@                   width="330"                   layout="topleft"                   auto_resize="true" -                 user_resize="false"                   follows="all"                   name="outbox_layout_panel"                   visible="false"                   min_dim="35" -                 max_dim="200"                   expanded_min_dim="90"                   height="200">                   <panel @@ -312,7 +305,6 @@                       left="0"			                       mouse_opaque="false"                       name="info_btn_lp" -                     user_resize="false"                        auto_resize="true"                       width="101">                      <button @@ -334,7 +326,6 @@                       left_pad="1"			                       mouse_opaque="false"                       name="share_btn_lp" -                     user_resize="false"                        auto_resize="true"                       width="100">                      <button @@ -356,7 +347,6 @@                       left_pad="1"			                       mouse_opaque="false"                       name="shop_btn_lp" -                     user_resize="false"                        auto_resize="true"                       width="100">                      <button diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml index c072ea9b5a..24c961fa26 100644 --- a/indra/newview/skins/default/xui/pl/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml @@ -20,8 +20,6 @@  			<menu_item_call label="Tryb oddalenia" name="Set Away"/>  			<menu_item_call label="Tryb pracy" name="Set Busy"/>  		</menu> -		<menu_item_call label="Zażądaj statusu administratora" name="Request Admin Options"/> -		<menu_item_call label="Wyłącz atatus administratora" name="Leave Admin Options"/>  		<menu_item_call label="Wyłącz [APP_NAME]" name="Quit"/>  	</menu>  	<menu label="Komunikacja" name="Communicate"> @@ -36,11 +34,10 @@  		<menu_item_check label="Szukaj" name="Search"/>  		<menu_item_call label="Zrób zdjęcie" name="Take Snapshot"/>  		<menu_item_call label="Zapamiętaj to miejsce (LM)" name="Create Landmark Here"/> -		<menu label="Miejsce" name="Land"> -			<menu_item_call label="Profil miejsca" name="Place Profile"/> -			<menu_item_call label="O posiadłości" name="About Land"/> -			<menu_item_call label="Region/Majątek" name="Region/Estate"/> -		</menu> +		<menu_item_separator/> +		<menu_item_call label="Profil miejsca" name="Place Profile"/> +		<menu_item_call label="O posiadłości" name="About Land"/> +		<menu_item_call label="Region/Majątek" name="Region/Estate"/>  		<menu_item_call label="Kup posiadłość" name="Buy Land"/>  		<menu_item_call label="Moje posiadłości" name="My Land"/>  		<menu label="Pokaż" name="LandShow"> @@ -56,7 +53,7 @@  		</menu>  		<menu_item_call label="Teleportuj do Miejsca Startu" name="Teleport Home"/>  		<menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here"/> -		<menu label="Słońce" name="Environment Settings"> +		<menu label="Słońce" name="Sun">  			<menu_item_call label="Wschód Słońca" name="Sunrise"/>  			<menu_item_call label="Południe" name="Noon"/>  			<menu_item_call label="Zachód Słońca" name="Sunset"/> @@ -153,22 +150,22 @@  			<menu_item_check label="Pokaż celownik myszki" name="ShowCrosshairs"/>  		</menu>  		<menu label="Rodzaje renderowania" name="Rendering Types"> -			<menu_item_check label="Podstawowe" name="Simple"/> -			<menu_item_check label="Maska alpha" name="Alpha"/> -			<menu_item_check label="Drzewo" name="Tree"/> -			<menu_item_check label="Awatary" name="Character"/> -			<menu_item_check label="Płaszczyzna powierzchni" name="SurfacePath"/> -			<menu_item_check label="Niebo" name="Sky"/> -			<menu_item_check label="Woda" name="Water"/> -			<menu_item_check label="Ziemia" name="Ground"/> -			<menu_item_check label="Głośność" name="Volume"/> -			<menu_item_check label="Trawa" name="Grass"/> -			<menu_item_check label="Chmury" name="Clouds"/> -			<menu_item_check label="Cząsteczki" name="Particles"/> -			<menu_item_check label="Zderzenie" name="Bump"/> +			<menu_item_check label="Podstawowe" name="Rendering Type Simple"/> +			<menu_item_check label="Maska alpha" name="Rendering Type Alpha"/> +			<menu_item_check label="Drzewo" name="Rendering Type Tree"/> +			<menu_item_check label="Awatary" name="Rendering Type Character"/> +			<menu_item_check label="Płaszczyzna powierzchni" name="Rendering Type Surface Patch"/> +			<menu_item_check label="Niebo" name="Rendering Type Sky"/> +			<menu_item_check label="Woda" name="Rendering Type Water"/> +			<menu_item_check label="Ziemia" name="Rendering Type Ground"/> +			<menu_item_check label="Głośność" name="Rendering Type Volume"/> +			<menu_item_check label="Trawa" name="Rendering Type Grass"/> +			<menu_item_check label="Chmury" name="Rendering Type Clouds"/> +			<menu_item_check label="Cząsteczki" name="Rendering Type Particles"/> +			<menu_item_check label="Zderzenie" name="Rendering Type Bump"/>  		</menu>  		<menu label="Opcje renderowania" name="Rendering Features"> -			<menu_item_check label="UI" name="UI"/> +			<menu_item_check label="UI" name="ToggleUI"/>  			<menu_item_check label="Zaznaczone" name="Selected"/>  			<menu_item_check label="Podświetlenie" name="Highlighted"/>  			<menu_item_check label="Tekstury dynamiczne" name="Dynamic Textures"/> @@ -180,10 +177,7 @@  		<menu_item_call label="Wyczyść bufor danych grupy" name="ClearGroupCache"/>  		<menu_item_check label="Wygładzanie ruchu myszki" name="Mouse Smoothing"/>  		<menu label="Skróty" name="Shortcuts"> -			<menu_item_call label="Obraz (L$[COST])..." name="Upload Image"/> -			<menu_item_check label="Szukaj" name="Search"/>  			<menu_item_call label="Zwolnij klawisze" name="Release Keys"/> -			<menu_item_call label="Domyślne ustawienia rozmiaru interfejsu" name="Set UI Size to Default"/>  			<menu_item_check label="Pokaż menu Zaawansowane - skrót" name="Show Advanced Menu - legacy shortcut"/>  			<menu_item_call label="Zamknij okno" name="Close Window"/>  			<menu_item_call label="Zamknij wszystkie okna" name="Close All Windows"/> @@ -192,13 +186,6 @@  			<menu_item_check label="Wolna kamera" name="Joystick Flycam"/>  			<menu_item_call label="Reset widoku" name="Reset View"/>  			<menu_item_call label="Zobacz ostatniego rozmówcę" name="Look at Last Chatter"/> -			<menu label="Wybierz narzędzie budowania" name="Select Tool"> -				<menu_item_call label="Narzędzie ogniskowej" name="Focus"/> -				<menu_item_call label="Narzędzie ruchu" name="Move"/> -				<menu_item_call label="Narzędzie edycji" name="Edit"/> -				<menu_item_call label="Stwórz narzędzie" name="Create"/> -				<menu_item_call label="Narzędzia posiadłości" name="Land"/> -			</menu>  			<menu_item_call label="Przybliż" name="Zoom In"/>  			<menu_item_call label="Domyślne przybliżenie" name="Zoom Default"/>  			<menu_item_call label="Oddal" name="Zoom Out"/> @@ -267,9 +254,8 @@  			<menu_item_call label="Upuść pakiet pamięci" name="Drop a Packet"/>  		</menu>  		<menu_item_call label="Zderzenia, popchnięcia &  uderzenia" name="Bumps, Pushes &amp; Hits"/> -		<menu label="Świat" name="World"> +		<menu label="Świat" name="DevelopWorld">  			<menu_item_check label="Domyślne ustawienia środowiska Regionu" name="Sim Sun Override"/> -			<menu_item_check label="Efekty emiterów" name="Cheesy Beacon"/>  			<menu_item_check label="Ustalona pogoda" name="Fixed Weather"/>  			<menu_item_call label="Zachowaj bufor pamięci obiektów regionu" name="Dump Region Object Cache"/>  		</menu> @@ -291,11 +277,11 @@  		</menu>  		<menu label="Awatar" name="Character">  			<menu label="Przesuń bakowaną teksturę" name="Grab Baked Texture"> -				<menu_item_call label="Tęczówka oka" name="Iris"/> -				<menu_item_call label="Głowa" name="Head"/> -				<menu_item_call label="Górna część ciała" name="Upper Body"/> -				<menu_item_call label="Dolna część ciała" name="Lower Body"/> -				<menu_item_call label="Spódnica" name="Skirt"/> +				<menu_item_call label="Tęczówka oka" name="Grab Iris"/> +				<menu_item_call label="Głowa" name="Grab Head"/> +				<menu_item_call label="Górna część ciała" name="Grab Upper Body"/> +				<menu_item_call label="Dolna część ciała" name="Grab Lower Body"/> +				<menu_item_call label="Spódnica" name="Grab Skirt"/>  			</menu>  			<menu label="Testy postaci" name="Character Tests">  				<menu_item_call label="Przesuń geometrię postaci" name="Toggle Character Geometry"/> @@ -316,8 +302,8 @@  		<menu_item_check label="Pokaż menu administratora" name="View Admin Options"/>  	</menu>  	<menu label="Administrator" name="Admin"> -		<menu label="Object"> -			<menu_item_call label="Weź kopię" name="Take Copy"/> +		<menu label="Object" name="AdminObject"> +			<menu_item_call label="Weź kopię" name="Admin Take Copy"/>  			<menu_item_call label="Reset właściciela" name="Force Owner To Me"/>  			<menu_item_call label="Reset przyzwolenia właściciela" name="Force Owner Permissive"/>  			<menu_item_call label="Usuń" name="Delete"/> diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml index f7be781cac..b6bb79bcbc 100644 --- a/indra/newview/skins/default/xui/zh/menu_viewer.xml +++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml @@ -20,8 +20,6 @@  			<menu_item_call label="離開" name="Set Away"/>  			<menu_item_call label="忙碌" name="Set Busy"/>  		</menu> -		<menu_item_call label="要求 Admin 狀態" name="Request Admin Options"/> -		<menu_item_call label="離開 Admin 狀態" name="Leave Admin Options"/>  		<menu_item_call label="結束退出 [APP_NAME]" name="Quit"/>  	</menu>  	<menu label="溝通" name="Communicate"> @@ -36,11 +34,10 @@  		<menu_item_check label="搜尋" name="Search"/>  		<menu_item_call label="拍攝快照" name="Take Snapshot"/>  		<menu_item_call label="將此處記下地標" name="Create Landmark Here"/> -		<menu label="地點檔案" name="Land"> -			<menu_item_call label="地點檔案" name="Place Profile"/> -			<menu_item_call label="關於土地" name="About Land"/> -			<menu_item_call label="地區 / 領地" name="Region/Estate"/> -		</menu> +		<menu_item_separator/> +		<menu_item_call label="地點檔案" name="Place Profile"/> +		<menu_item_call label="關於土地" name="About Land"/> +		<menu_item_call label="地區 / 領地" name="Region/Estate"/>  		<menu_item_call label="購買這塊土地" name="Buy Land"/>  		<menu_item_call label="我的土地" name="My Land"/>  		<menu label="顯示" name="LandShow"> @@ -56,7 +53,7 @@  		</menu>  		<menu_item_call label="瞬間瞬間傳送回家" name="Teleport Home"/>  		<menu_item_call label="設定家在此處" name="Set Home to Here"/> -		<menu label="太陽" name="Environment Settings"> +		<menu label="太陽" name="Sun">  			<menu_item_call label="日出" name="Sunrise"/>  			<menu_item_call label="中午" name="Noon"/>  			<menu_item_call label="日落" name="Sunset"/> @@ -154,22 +151,22 @@  			<menu_item_check label="顯示第一人稱視角準星" name="ShowCrosshairs"/>  		</menu>  		<menu label="Rendering Types" name="Rendering Types"> -			<menu_item_check label="簡單" name="Simple"/> -			<menu_item_check label="半透明" name="Alpha"/> -			<menu_item_check label="樹木" name="Tree"/> -			<menu_item_check label="化身" name="Character"/> -			<menu_item_check label="地表" name="SurfacePath"/> -			<menu_item_check label="天空" name="Sky"/> -			<menu_item_check label="水文" name="Water"/> -			<menu_item_check label="地面" name="Ground"/> -			<menu_item_check label="體積" name="Volume"/> -			<menu_item_check label="草地" name="Grass"/> -			<menu_item_check label="雲彩" name="Clouds"/> -			<menu_item_check label="粒子效果" name="Particles"/> -			<menu_item_check label="碰撞" name="Bump"/> +			<menu_item_check label="簡單" name="Rendering Type Simple"/> +			<menu_item_check label="半透明" name="Rendering Type Alpha"/> +			<menu_item_check label="樹木" name="Rendering Type Tree"/> +			<menu_item_check label="化身" name="Rendering Type Character"/> +			<menu_item_check label="地表" name="Rendering Type Surface Patch"/> +			<menu_item_check label="天空" name="Rendering Type Sky"/> +			<menu_item_check label="水文" name="Rendering Type Water"/> +			<menu_item_check label="地面" name="Rendering Type Ground"/> +			<menu_item_check label="體積" name="Rendering Type Volume"/> +			<menu_item_check label="草地" name="Rendering Type Grass"/> +			<menu_item_check label="雲彩" name="Rendering Type Clouds"/> +			<menu_item_check label="粒子效果" name="Rendering Type Particles"/> +			<menu_item_check label="碰撞" name="Rendering Type Bump"/>  		</menu>  		<menu label="Rendering Features" name="Rendering Features"> -			<menu_item_check label="UI" name="UI"/> +			<menu_item_check label="UI" name="ToggleUI"/>  			<menu_item_check label="Selected" name="Selected"/>  			<menu_item_check label="Highlighted" name="Highlighted"/>  			<menu_item_check label="Dynamic Textures" name="Dynamic Textures"/> @@ -182,10 +179,7 @@  		<menu_item_call label="清除群組快取資料" name="ClearGroupCache"/>  		<menu_item_check label="滑鼠平滑移動" name="Mouse Smoothing"/>  		<menu label="快速鍵" name="Shortcuts"> -			<menu_item_call label="圖像(L$[COST])..." name="Upload Image"/> -			<menu_item_check label="搜尋" name="Search"/>  			<menu_item_call label="釋出按鍵" name="Release Keys"/> -			<menu_item_call label="設定使用者界面大小至預設值" name="Set UI Size to Default"/>  			<menu_item_check label="顯示進階選單 - 舊版捷徑" name="Show Advanced Menu - legacy shortcut"/>  			<menu_item_call label="關閉視窗" name="Close Window"/>  			<menu_item_call label="關閉全部視窗" name="Close All Windows"/> @@ -194,13 +188,6 @@  			<menu_item_check label="Joystick Flycam" name="Joystick Flycam"/>  			<menu_item_call label="重設視角" name="Reset View"/>  			<menu_item_call label="注視上一位聊天者" name="Look at Last Chatter"/> -			<menu label="選擇建造工具" name="Select Tool"> -				<menu_item_call label="聚焦工具" name="Focus"/> -				<menu_item_call label="移動工具" name="Move"/> -				<menu_item_call label="編輯工具" name="Edit"/> -				<menu_item_call label="創造工具" name="Create"/> -				<menu_item_call label="土地工具" name="Land"/> -			</menu>  			<menu_item_call label="Zoom In" name="Zoom In"/>  			<menu_item_call label="Zoom Default" name="Zoom Default"/>  			<menu_item_call label="Zoom Out" name="Zoom Out"/> @@ -306,9 +293,8 @@  			<menu_item_call label="開始錄製" name="Start Record"/>  			<menu_item_call label="停止錄製" name="Stop Record"/>  		</menu> -		<menu label="世界" name="World"> +		<menu label="世界" name="DevelopWorld">  			<menu_item_check label="模擬器太陽設定覆蓋" name="Sim Sun Override"/> -			<menu_item_check label="Cheesy Beacon" name="Cheesy Beacon"/>  			<menu_item_check label="固定天氣" name="Fixed Weather"/>  			<menu_item_call label="傾印地區物件快取" name="Dump Region Object Cache"/>  		</menu> @@ -340,11 +326,11 @@  		</menu>  		<menu label="化身" name="Character">  			<menu label="Grab Baked Texture" name="Grab Baked Texture"> -				<menu_item_call label="Iris" name="Iris"/> -				<menu_item_call label="頭部" name="Head"/> -				<menu_item_call label="Upper Body" name="Upper Body"/> -				<menu_item_call label="Lower Body" name="Lower Body"/> -				<menu_item_call label="裙子" name="Skirt"/> +				<menu_item_call label="Iris" name="Grab Iris"/> +				<menu_item_call label="頭部" name="Grab Head"/> +				<menu_item_call label="Upper Body" name="Grab Upper Body"/> +				<menu_item_call label="Lower Body" name="Grab Lower Body"/> +				<menu_item_call label="裙子" name="Grab Skirt"/>  			</menu>  			<menu label="Character Tests" name="Character Tests">  				<menu_item_call label="Appearance To XML" name="Appearance To XML"/> @@ -378,8 +364,8 @@  		<menu_item_check label="Show Admin Menu" name="View Admin Options"/>  	</menu>  	<menu label="Admin" name="Admin"> -		<menu label="Object"> -			<menu_item_call label="取得副本" name="Take Copy"/> +		<menu label="Object" name="AdminObject"> +			<menu_item_call label="取得副本" name="Admin Take Copy"/>  			<menu_item_call label="強制擁有者為我" name="Force Owner To Me"/>  			<menu_item_call label="Force Owner Permissive" name="Force Owner Permissive"/>  			<menu_item_call label="刪除" name="Delete"/> @@ -415,7 +401,7 @@  			<menu_item_call label="身體物理" name="Physics"/>  			<menu_item_call label="全部衣服" name="All Clothes"/>  		</menu> -		<menu label="幫助" name="Help"> +		<menu label="幫助" name="DeprecatedHelp">  			<menu_item_call label="林登官方部落格" name="Official Linden Blog"/>  			<menu_item_call label="Scripting Portal" name="Scripting Portal"/>  			<menu label="臭蟲回報" name="Bug Reporting">  | 
