diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llexpandabletextbox.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/llexpandabletextbox.h | 10 | ||||
| -rw-r--r-- | indra/newview/llpanelpicks.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llviewermedia.cpp | 15 | ||||
| -rw-r--r-- | indra/newview/llviewermedia.h | 1 | ||||
| -rw-r--r-- | indra/newview/llviewermediafocus.cpp | 44 | ||||
| -rw-r--r-- | indra/newview/llviewermediafocus.h | 6 | ||||
| -rw-r--r-- | indra/newview/llviewerwindow.cpp | 22 | ||||
| -rw-r--r-- | indra/newview/skins/default/textures/textures.xml | 36 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_bottomtray.xml | 1 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_pick_list_item.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/widgets/expandable_text.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/widgets/panel.xml | 3 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/widgets/tool_tip.xml | 10 | 
14 files changed, 145 insertions, 22 deletions
diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index 48b5fc11b7..7bc48185e6 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -51,7 +51,7 @@ public:  	/*virtual*/ void	getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const   	{  		// more label always spans width of text box -		width = mEditor.getTextRect().getWidth();  +		width = mEditor.getTextRect().getWidth() - mEditor.getHPad();   		height = llceil(mStyle->getFont()->getLineHeight());  	}  	/*virtual*/ S32		getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const  @@ -153,6 +153,11 @@ void LLExpandableTextBox::LLTextBoxEx::showExpandText()  {  	if (!mExpanderVisible)  	{ +		// make sure we're scrolled to top when collapsing +		if (mScroller) +		{ +			mScroller->goToTop(); +		}  		// get fully visible lines  		std::pair<S32, S32> visible_lines = getVisibleLines(true);  		S32 last_line = visible_lines.second - 1; diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h index d45527aabb..3fe646c29c 100644 --- a/indra/newview/llexpandabletextbox.h +++ b/indra/newview/llexpandabletextbox.h @@ -69,16 +69,6 @@ protected:  		virtual S32 getVerticalTextDelta();  		/** -		 * Returns text vertical padding -		 */ -		virtual S32 getVPad() { return mVPad; } - -		/** -		 * Returns text horizontal padding -		 */ -		virtual S32 getHPad() { return mHPad; } - -		/**  		 * Shows "More" link  		 */  		void showExpandText(); diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index aa6909560d..6181531f82 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -73,10 +73,10 @@ LLPanelPicks::LLPanelPicks()  	mPopupMenu(NULL),  	mProfilePanel(NULL),  	mPickPanel(NULL), -	mPicksList(NULL) -	, mPanelPickInfo(NULL) -	, mPanelPickEdit(NULL) -	, mOverflowMenu(NULL) +	mPicksList(NULL), +	mPanelPickInfo(NULL), +	mPanelPickEdit(NULL), +	mOverflowMenu(NULL)  {  } diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index b623185e0b..e89f17cf72 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -604,7 +604,7 @@ void LLViewerMedia::updateMedia()  		pimpl->setPriority(new_priority); -		if(!pimpl->getUsedInUI()) +		if(pimpl->getUsedInUI())  		{  			// Any impls used in the UI should not be in the proximity list.  			pimpl->mProximity = -1; @@ -2073,6 +2073,19 @@ const std::list< LLVOVolume* >* LLViewerMediaImpl::getObjectList() const  	return &mObjectList ;  } +LLVOVolume *LLViewerMediaImpl::getSomeObject() +{ +	LLVOVolume *result = NULL; +	 +	std::list< LLVOVolume* >::iterator iter = mObjectList.begin() ; +	if(iter != mObjectList.end()) +	{ +		result = *iter; +	} +	 +	return result; +} +  //////////////////////////////////////////////////////////////////////////////////////////  //static  void LLViewerMedia::toggleMusicPlay(void*) diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index b04432730a..dac0482078 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -250,6 +250,7 @@ public:  	void addObject(LLVOVolume* obj) ;  	void removeObject(LLVOVolume* obj) ;  	const std::list< LLVOVolume* >* getObjectList() const ; +	LLVOVolume *getSomeObject();  	void setUpdated(BOOL updated) ;  	BOOL isUpdated() ; diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index 0ef4679057..2f7040aaa3 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -50,6 +50,7 @@  #include "llmediaentry.h"  #include "llkeyboard.h"  #include "lltoolmgr.h" +#include "llvovolume.h"  //  // LLViewerMediaFocus @@ -473,3 +474,46 @@ LLViewerObject* LLViewerMediaFocus::getHoverObject()  {  	return gObjectList.findObject(mHoverObjectID);  } + +void LLViewerMediaFocus::focusZoomOnMedia(LLUUID media_id) +{ +	LLViewerMediaImpl* impl = LLViewerMedia::getMediaImplFromTextureID(media_id); +	 +	if(impl) +	{	 +		// Get the first object from the media impl's object list.  This is completely arbitrary, but should suffice. +		LLVOVolume *obj = impl->getSomeObject(); +		if(obj) +		{ +			// This media is attached to at least one object.  Figure out which face it's on. +			S32 face = obj->getFaceIndexWithMediaImpl(impl, -1); +			 +			// We don't have a proper pick normal here, and finding a face's real normal is... complicated. +			// For now, use +z to look at the top of the object. +			LLVector3 normal(0.0f, 0.0f, 1.0f); +			 +			// Attempt to focus/zoom on that face. +			setFocusFace(obj, face, impl, normal); +			 +			if(mMediaControls.get()) +			{ +				mMediaControls.get()->resetZoomLevel(); +				mMediaControls.get()->nextZoomLevel(); +			} +		} +	} +} + +LLUUID LLViewerMediaFocus::getControlsMediaID() +{ +	if(getFocusedMediaImpl()) +	{ +		return mFocusedImplID; +	} +	else if(getHoverMediaImpl()) +	{ +		return mHoverImplID; +	} +	 +	return LLUUID::null; +} diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h index c1179de39d..e5f36d341c 100644 --- a/indra/newview/llviewermediafocus.h +++ b/indra/newview/llviewermediafocus.h @@ -81,6 +81,12 @@ public:  	LLViewerMediaImpl* getHoverMediaImpl();  	LLViewerObject* getHoverObject();  	S32 getHoverFace() { return mHoverObjectFace; } +	 +	// Try to focus/zoom on the specified media (if it's on an object in world). +	void focusZoomOnMedia(LLUUID media_id); +	 +	// Return the ID of the media instance the controls are currently attached to (either focus or hover). +	LLUUID getControlsMediaID();  protected:  	/*virtual*/ void	onFocusReceived(); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index ba32e07464..b574a9c110 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2424,19 +2424,35 @@ void LLViewerWindow::updateUI()  	BOOL handled_by_top_ctrl = FALSE;  	LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl();  	LLMouseHandler* mouse_captor = gFocusMgr.getMouseCapture(); +	LLView* captor_view = dynamic_cast<LLView*>(mouse_captor); + +	//FIXME: only include captor and captor's ancestors if mouse is truly over them --RN  	//build set of views containing mouse cursor by traversing UI hierarchy and testing   	//screen rect against mouse cursor  	view_handle_set_t mouse_hover_set; -	// start at current mouse captor (if is a view) or UI root -	LLView* root_view = NULL; -	root_view = dynamic_cast<LLView*>(mouse_captor); +	// constraint mouse enter events to children of mouse captor +	LLView* root_view = captor_view; + +	// if mouse captor doesn't exist or isn't a LLView +	// then allow mouse enter events on entire UI hierarchy  	if (!root_view)  	{  		root_view = mRootView;  	} +	// include all ancestors of captor_view as automatically having mouse +	if (captor_view) +	{ +		LLView* captor_parent_view = captor_view->getParent(); +		while(captor_parent_view) +		{ +			mouse_hover_set.insert(captor_parent_view->getHandle()); +			captor_parent_view = captor_parent_view->getParent(); +		} +	} +  	// aggregate visible views that contain mouse cursor in display order  	// while the top_ctrl contains the mouse cursor, only it and its descendants will receive onMouseEnter events diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 79c70c4d8f..b497ca5e7a 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -260,6 +260,42 @@    <texture name="Overhead_M" file_name="world/Overhead_M.png" preload="false" />    <texture name="Overhead_S" file_name="world/Overhead_S.png" preload="false" /> +  <texture name="parcel_drk_Build" file_name="icons/parcel_drk_Build.png" preload="false" /> + <texture name="parcel_drk_BuildNo" file_name="icons/parcel_drk_BuildNo.png" preload="false" /> + <texture name="parcel_drk_Damage" file_name="icons/parcel_drk_Damage.png" preload="false" /> + <texture name="parcel_drk_DamageNo" file_name="icons/parcel_drk_DamageNo.png" preload="false" /> + <texture name="parcel_drk_Fly" file_name="icons/parcel_drk_Fly.png" preload="false" /> + <texture name="parcel_drk_FlyNo" file_name="icons/parcel_drk_FlyNo.png" preload="false" /> + <texture name="parcel_drk_ForSale" file_name="icons/parcel_drk_ForSale.png" preload="false" /> + <texture name="parcel_drk_ForSaleNo" file_name="icons/parcel_drk_ForSaleNo.png" preload="false" /> + <texture name="parcel_drk_M" file_name="icons/parcel_drk_M.png" preload="false" /> + <texture name="parcel_drk_PG" file_name="icons/parcel_drk_PG.png" preload="false" /> + <texture name="parcel_drk_Push" file_name="icons/parcel_drk_Push.png" preload="false" /> + <texture name="parcel_drk_PushNo" file_name="icons/parcel_drk_PushNo.png" preload="false" /> + <texture name="parcel_drk_R" file_name="icons/parcel_drk_R.png" preload="false" /> + <texture name="parcel_drk_Scripts" file_name="icons/parcel_drk_Scripts.png" preload="false" /> + <texture name="parcel_drk_ScriptsNo" file_name="icons/parcel_drk_ScriptsNo.png" preload="false" /> + <texture name="parcel_drk_Voice" file_name="icons/parcel_drk_Voice.png" preload="false" /> + <texture name="parcel_drk_VoiceNo" file_name="icons/parcel_drk_VoiceNo.png" preload="false" /> + + <texture name="parcel_lght_Build" file_name="icons/parcel_lght_Build.png" preload="false" /> + <texture name="parcel_lght_BuildNo" file_name="icons/parcel_lght_BuildNo.png" preload="false" /> + <texture name="parcel_lght_Damage" file_name="icons/parcel_lght_Damage.png" preload="false" /> + <texture name="parcel_lght_DamageNo" file_name="icons/parcel_lght_DamageNo.png" preload="false" /> + <texture name="parcel_lght_Fly" file_name="icons/parcel_lght_Fly.png" preload="false" /> + <texture name="parcel_lght_FlyNo" file_name="icons/parcel_lght_FlyNo.png" preload="false" /> + <texture name="parcel_lght_ForSale" file_name="icons/parcel_lght_ForSale.png" preload="false" /> + <texture name="parcel_lght_ForSaleNo" file_name="icons/parcel_lght_ForSaleNo.png" preload="false" /> + <texture name="parcel_lght_M" file_name="icons/parcel_lght_M.png" preload="false" /> + <texture name="parcel_lght_PG" file_name="icons/parcel_lght_PG.png" preload="false" /> + <texture name="parcel_lght_Push" file_name="icons/parcel_lght_Push.png" preload="false" /> + <texture name="parcel_lght_PushNo" file_name="icons/parcel_lght_PushNo.png" preload="false" /> + <texture name="parcel_lght_R" file_name="icons/parcel_lght_R.png" preload="false" /> + <texture name="parcel_lght_Scripts" file_name="icons/parcel_lght_Scripts.png" preload="false" /> + <texture name="parcel_lght_ScriptsNo" file_name="icons/parcel_lght_ScriptsNo.png" preload="false" /> + <texture name="parcel_lght_Voice" file_name="icons/parcel_lght_Voice.png" preload="false" /> + <texture name="parcel_lght_VoiceNo" file_name="icons/parcel_lght_VoiceNo.png" preload="false" /> +    <texture name="Progress_1" file_name="icons/Progress_1.png" preload="false" />    <texture name="Progress_2" file_name="icons/Progress_2.png" preload="false" />    <texture name="Progress_3" file_name="icons/Progress_3.png" preload="false" /> diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index 9065c6b3e8..73a1bae1c6 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -10,6 +10,7 @@   left="0"   name="bottom_tray"   top="28" + chrome="true"    border_visible="false"   width="1000">      <layout_stack diff --git a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml index 1074dd4627..38ea6b6196 100644 --- a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml @@ -57,7 +57,7 @@       use_ellipses="false"       width="197"       word_wrap="false" /> -    <text +    <expandable_text       follows="top|left|right"       font="SansSerifSmall"       height="40" diff --git a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml index 319beac291..f59c46b2f5 100644 --- a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml +++ b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml @@ -3,7 +3,7 @@   max_height="300" >   <textbox     more_label="More"  -  follows="left|top" +  follows="left|top|right"    name="text"     allow_scroll="true"     use_ellipses="true" diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml index 1bd5a5bda2..7262c0dc5c 100644 --- a/indra/newview/skins/default/xui/en/widgets/panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/panel.xml @@ -7,4 +7,5 @@  <panel bg_opaque_color="PanelFocusBackgroundColor"         bg_alpha_color="PanelDefaultBackgroundColor"         background_visible="false" -       background_opaque="false"/> +       background_opaque="false" +       chrome="false"/>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml new file mode 100644 index 0000000000..6b49f832fd --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<!-- See also settings.xml UIFloater* settings for configuration --> +<tool_tip name="tooltip" +          max_width="200" +          padding="4" +          wrap="true" +          font="SansSerif" +          bg_opaque_color="ToolTipBgColor" +          background_visible="true" + />  | 
