diff options
| -rw-r--r-- | indra/llmath/tests/v3math_test.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/llfolderview.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llfolderview.h | 1 | ||||
| -rw-r--r-- | indra/newview/llslurl.cpp | 6 | 
4 files changed, 26 insertions, 4 deletions
| diff --git a/indra/llmath/tests/v3math_test.cpp b/indra/llmath/tests/v3math_test.cpp index df7a77002f..e4ae1c10ef 100644 --- a/indra/llmath/tests/v3math_test.cpp +++ b/indra/llmath/tests/v3math_test.cpp @@ -564,4 +564,22 @@ namespace tut  		z1 = U8_to_F32(F32_to_U8(z, lowerz, upperz), lowerz, upperz);  		ensure("2:quantize8: Fail ", is_approx_equal(x1, vec3a.mV[VX]) && is_approx_equal(y1, vec3a.mV[VY]) && is_approx_equal(z1, vec3a.mV[VZ]));  	} + +	template<> template<> +	void v3math_object::test<35>() +	{ +		LLSD sd = LLSD::emptyArray(); +		sd[0] = 1.f; + +		LLVector3 parsed_1(sd); +		ensure("1:LLSD parse: Fail ", is_approx_equal(parsed_1.mV[VX], 1.f) && is_approx_equal(parsed_1.mV[VY], 0.f) && is_approx_equal(parsed_1.mV[VZ], 0.f)); + +		sd[1] = 2.f; +		LLVector3 parsed_2(sd); +		ensure("2:LLSD parse: Fail ", is_approx_equal(parsed_2.mV[VX], 1.f) && is_approx_equal(parsed_2.mV[VY], 2.f) && is_approx_equal(parsed_2.mV[VZ], 0.f)); + +		sd[2] = 3.f; +		LLVector3 parsed_3(sd); +		ensure("3:LLSD parse: Fail ", is_approx_equal(parsed_3.mV[VX], 1.f) && is_approx_equal(parsed_3.mV[VY], 2.f) && is_approx_equal(parsed_3.mV[VZ], 3.f)); +	}  } diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 0751378428..8181e5a823 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -181,6 +181,7 @@ LLFolderView::Params::Params()  // Default constructor  LLFolderView::LLFolderView(const Params& p)  :	LLFolderViewFolder(p), +	mRunningHeight(0),  	mScrollContainer( NULL ),  	mPopupMenuHandle(),  	mAllowMultiSelect(p.allow_multiselect), @@ -479,6 +480,7 @@ S32 LLFolderView::arrange( S32* unused_width, S32* unused_height, S32 filter_gen  		target_height = running_height;  	} +	mRunningHeight = running_height;  	LLRect scroll_rect = mScrollContainer->getContentWindowRect();  	reshape( llmax(scroll_rect.getWidth(), total_width), running_height ); @@ -524,10 +526,11 @@ void LLFolderView::reshape(S32 width, S32 height, BOOL called_from_parent)  	LLRect scroll_rect;  	if (mScrollContainer)  	{ +		LLView::reshape(width, height, called_from_parent);  		scroll_rect = mScrollContainer->getContentWindowRect();  	}  	width = llmax(mMinWidth, scroll_rect.getWidth()); -	height = llmax(height, scroll_rect.getHeight()); +	height = llmax(mRunningHeight, scroll_rect.getHeight());  	// restrict width with scroll container's width  	if (mUseEllipses) diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index 705a76a7b4..8af01e9102 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -314,6 +314,7 @@ protected:  	signal_t						mReshapeSignal;  	S32								mSignalSelectCallback;  	S32								mMinWidth; +	S32								mRunningHeight;  	std::map<LLUUID, LLFolderViewItem*> mItemMap;  	BOOL							mDragAndDropThisFrame; diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp index 4cf1df1655..a853726dea 100644 --- a/indra/newview/llslurl.cpp +++ b/indra/newview/llslurl.cpp @@ -273,11 +273,11 @@ LLSLURL::LLSLURL(const std::string& slurl)  			mRegion = LLURI::unescape(path_array[0].asString());  			path_array.erase(0); -			// parse the x, y, z -			if(path_array.size() >= 3) +			// parse the x, y, and optionally z +			if(path_array.size() >= 2)  			{	 -			  mPosition = LLVector3(path_array); +			  mPosition = LLVector3(path_array); // this construction handles LLSD without all components (values default to 0.f)  			  if((F32(mPosition[VX]) < 0.f) ||                                (mPosition[VX] > REGION_WIDTH_METERS) ||  			     (F32(mPosition[VY]) < 0.f) ||  | 
