diff options
Diffstat (limited to 'indra/newview')
136 files changed, 1877 insertions, 786 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index eed84671c1..7ac7a09d56 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1068,17 +1068,6 @@        <key>Value</key>        <integer>23</integer>      </map> -    <key>ButtonVPad</key> -    <map> -      <key>Comment</key> -      <string>Default vertical spacing between buttons (pixels)</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>S32</string> -      <key>Value</key> -      <integer>1</integer> -    </map>      <key>CacheLocation</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 2b582c90f0..628982973c 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -38,7 +38,6 @@  #include "llagentlistener.h"  #include "llagentwearables.h"  #include "llagentui.h" -  #include "llanimationstates.h"  #include "llbottomtray.h"  #include "llcallingcard.h" @@ -65,6 +64,7 @@  #include "llsky.h"  #include "llsmoothstep.h"  #include "llstatusbar.h" +#include "llteleportflags.h"  #include "lltool.h"  #include "lltoolmgr.h"  #include "lltrans.h" diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 58b36a85dc..07b3399637 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -84,11 +84,14 @@  #include "llsecondlifeurls.h"  // Linden library includes +#include "llimagej2c.h"  #include "llmemory.h"  #include "llprimitive.h"  #include "llurlaction.h" +#include "llvfile.h"  #include "llvfsthread.h"  #include "llvolumemgr.h" +#include "llxfermanager.h"  #include "llnotificationmanager.h"  #include "llnotifications.h" @@ -389,7 +392,6 @@ bool handleCrashSubmitBehaviorChanged(const LLSD& newvalue)  static void settings_to_globals()  {  	LLBUTTON_H_PAD		= gSavedSettings.getS32("ButtonHPad"); -	LLBUTTON_V_PAD		= gSavedSettings.getS32("ButtonVPad");  	BTN_HEIGHT_SMALL	= gSavedSettings.getS32("ButtonHeightSmall");  	BTN_HEIGHT			= gSavedSettings.getS32("ButtonHeight"); diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index c1bfbca868..40e74061b5 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -325,6 +325,7 @@ extern BOOL		gUseWireframe;  // VFS globals - gVFS is for general use  // gStaticVFS is read-only and is shipped w/ the viewer  // it has pre-cache data like the UI .TGAs +class LLVFS;  extern LLVFS	*gStaticVFS;  extern LLMemoryInfo gSysMemory; diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 1512707a26..ee60df1b4b 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -334,12 +334,12 @@ LLChatHistory::~LLChatHistory()  {  	static LLUICachedControl<S32> texteditor_border ("UITextEditorBorder", 0); -	LLRect old_text_rect = mTextRect; -	mTextRect = mScroller->getContentWindowRect(); -	mTextRect.stretch(-texteditor_border); -	mTextRect.mLeft += mLeftTextPad; -	mTextRect.mRight -= mRightTextPad; -	if (mTextRect != old_text_rect) +	LLRect old_text_rect = mVisibleTextRect; +	mVisibleTextRect = mScroller->getContentWindowRect(); +	mVisibleTextRect.stretch(-texteditor_border); +	mVisibleTextRect.mLeft += mLeftTextPad; +	mVisibleTextRect.mRight -= mRightTextPad; +	if (mVisibleTextRect != old_text_rect)  	{  		needsReflow();  	} diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index bd6936f05c..9c37c953fe 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -51,8 +51,16 @@ public:  	/*virtual*/ bool	getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const   	{  		// more label always spans width of text box -		width = mEditor.getTextRect().getWidth() - mEditor.getHPad();  -		height = llceil(mStyle->getFont()->getLineHeight()); +		if (num_chars == 0) +		{ +			width = 0;  +			height = 0; +		} +		else +		{ +			width = mEditor.getDocumentView()->getRect().getWidth() - mEditor.getHPad();  +			height = llceil(mStyle->getFont()->getLineHeight()); +		}  		return true;  	}  	/*virtual*/ S32		getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const  @@ -104,7 +112,8 @@ private:  LLExpandableTextBox::LLTextBoxEx::Params::Params()  :	more_label("more_label") -{} +{ +}  LLExpandableTextBox::LLTextBoxEx::LLTextBoxEx(const Params& p)  :	LLTextBox(p), @@ -117,16 +126,13 @@ LLExpandableTextBox::LLTextBoxEx::LLTextBoxEx(const Params& p)  void LLExpandableTextBox::LLTextBoxEx::reshape(S32 width, S32 height, BOOL called_from_parent)  { +	hideExpandText();  	LLTextBox::reshape(width, height, called_from_parent);  	if (getTextPixelHeight() > getRect().getHeight())  	{  		showExpandText();  	} -	else -	{ -		hideExpandText(); -	}  }  void LLExpandableTextBox::LLTextBoxEx::setText(const LLStringExplicit& text,const LLStyle::Params& input_params) @@ -317,7 +323,8 @@ void LLExpandableTextBox::expandTextBox()  	mTextBox->hideExpandText();  	S32 text_delta = mTextBox->getVerticalTextDelta(); -	text_delta += mTextBox->getVPad() * 2 + mScroll->getBorderWidth() * 2; +	text_delta += mTextBox->getVPad() * 2; +	text_delta += mScroll->getBorderWidth() * 2;  	// no need to expand  	if(text_delta <= 0)  	{ diff --git a/indra/newview/llfilepicker.h b/indra/newview/llfilepicker.h index ab2455620f..7ecbc3db60 100644 --- a/indra/newview/llfilepicker.h +++ b/indra/newview/llfilepicker.h @@ -64,11 +64,6 @@ extern "C" {  #if LL_GTK  # include "gtk/gtk.h"  #endif // LL_GTK - -// also mostly for Linux, for some X11-specific filepicker usability tweaks -#if LL_X11 -#include "SDL/SDL_syswm.h" -#endif  }  class LLFilePicker diff --git a/indra/newview/llfloateranimpreview.h b/indra/newview/llfloateranimpreview.h index 09b04f1f42..dd2c0b809a 100644 --- a/indra/newview/llfloateranimpreview.h +++ b/indra/newview/llfloateranimpreview.h @@ -33,6 +33,7 @@  #ifndef LL_LLFLOATERANIMPREVIEW_H  #define LL_LLFLOATERANIMPREVIEW_H +#include "llassettype.h"  #include "llfloaternamedesc.h"  #include "lldynamictexture.h"  #include "llcharacter.h" diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp index c1a4a845e5..698ccec9c1 100644 --- a/indra/newview/llfloaterauction.cpp +++ b/indra/newview/llfloaterauction.cpp @@ -35,7 +35,6 @@  #include "llfloaterauction.h"  #include "llfloaterregioninfo.h" -#include "lldir.h"  #include "llgl.h"  #include "llimagej2c.h"  #include "llimagetga.h" @@ -43,6 +42,7 @@  #include "llvfile.h"  #include "llvfs.h"  #include "llwindow.h" +#include "message.h"  #include "llagent.h"  #include "llcombobox.h" diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp index 68f06b1e5b..e925796526 100644 --- a/indra/newview/llfloaterbump.cpp +++ b/indra/newview/llfloaterbump.cpp @@ -33,11 +33,11 @@  #include "llviewerprecompiledheaders.h" -#include "llfloaterbump.h" +#include "llsd.h" +#include "mean_collision_data.h" +#include "llfloaterbump.h"  #include "llscrolllistctrl.h" - -#include "llsd.h"  #include "lluictrlfactory.h"  #include "llviewermessage.h" diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp index 51c18196f2..bc89f93763 100644 --- a/indra/newview/llfloateropenobject.cpp +++ b/indra/newview/llfloateropenobject.cpp @@ -71,11 +71,14 @@ LLFloaterOpenObject::~LLFloaterOpenObject()  {  //	sInstance = NULL;  } +  // virtual  BOOL LLFloaterOpenObject::postBuild()  {  	childSetTextArg("object_name", "[DESC]", std::string("Object") ); // *Note: probably do not want to translate this  	mPanelInventoryObject = getChild<LLPanelObjectInventory>("object_contents"); +	 +	refresh();  	return TRUE;  } @@ -94,29 +97,57 @@ void LLFloaterOpenObject::onOpen(const LLSD& key)  		return;  	}  	mObjectSelection = LLSelectMgr::getInstance()->getEditSelection(); +	refresh();  } +  void LLFloaterOpenObject::refresh()  {  	mPanelInventoryObject->refresh(); -	std::string name; -	BOOL enabled; +	std::string name = ""; +	 +	// Enable the copy || copy & wear buttons only if we have something we can copy or copy & wear (respectively). +	bool copy_enabled = false; +	bool wear_enabled = false;  	LLSelectNode* node = mObjectSelection->getFirstRootNode(); -	if (node) +	if (node)   	{  		name = node->mName; -		enabled = TRUE; -	} -	else -	{ -		name = ""; -		enabled = FALSE; +		copy_enabled = true; +		 +		LLViewerObject* object = node->getObject(); +		if (object) +		{ +			// this folder is coming from an object, as there is only one folder in an object, the root, +			// we need to collect the entire contents and handle them as a group +			InventoryObjectList inventory_objects; +			object->getInventoryContents(inventory_objects); +			 +			if (!inventory_objects.empty()) +			{ +				for (InventoryObjectList::iterator it = inventory_objects.begin();  +					 it != inventory_objects.end();  +					 ++it) +				{ +					LLInventoryItem* item = static_cast<LLInventoryItem*> ((LLInventoryObject*)(*it)); +					LLInventoryType::EType type = item->getInventoryType(); +					if (type == LLInventoryType::IT_OBJECT  +						|| type == LLInventoryType::IT_ATTACHMENT  +						|| type == LLInventoryType::IT_WEARABLE +						|| type == LLInventoryType::IT_GESTURE) +					{ +						wear_enabled = true; +						break; +					} +				} +			} +		}  	}  	childSetTextArg("object_name", "[DESC]", name); -	childSetEnabled("copy_to_inventory_button", enabled); -	childSetEnabled("copy_and_wear_button", enabled); +	childSetEnabled("copy_to_inventory_button", copy_enabled); +	childSetEnabled("copy_and_wear_button", wear_enabled);  } diff --git a/indra/newview/llfloaterpostcard.cpp b/indra/newview/llfloaterpostcard.cpp index 572eeb57fe..8da44e2035 100644 --- a/indra/newview/llfloaterpostcard.cpp +++ b/indra/newview/llfloaterpostcard.cpp @@ -56,9 +56,8 @@  #include "llstatusbar.h"  #include "llviewerregion.h"  #include "lleconomy.h" +#include "message.h" -#include "llgl.h" -#include "llglheaders.h"  #include "llimagejpeg.h"  #include "llimagej2c.h"  #include "llvfile.h" diff --git a/indra/newview/llfloaterpostcard.h b/indra/newview/llfloaterpostcard.h index 49cce53106..0a44b50779 100644 --- a/indra/newview/llfloaterpostcard.h +++ b/indra/newview/llfloaterpostcard.h @@ -70,7 +70,7 @@ public:  	void sendPostcard(); -protected: +private:  	LLPointer<LLImageJPEG> mJPEGImage;  	LLPointer<LLViewerTexture> mViewerImage; @@ -78,7 +78,7 @@ protected:  	LLAssetID mAssetID;  	LLVector2 mImageScale;  	LLVector3d mPosTakenGlobal; -	boolean mHasFirstMsgFocus; +	bool mHasFirstMsgFocus;  }; diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 2b1c0979b6..496fa62d05 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -42,6 +42,8 @@  #include "llglheaders.h"  #include "llregionflags.h"  #include "llstl.h" +#include "llvfile.h" +#include "llxfermanager.h"  #include "indra_constants.h"  #include "message.h" @@ -52,7 +54,6 @@  #include "llcheckboxctrl.h"  #include "llcombobox.h"  #include "llfilepicker.h" -#include "llfloaterdaycycle.h"  #include "llfloatergodtools.h"	// for send_sim_wide_deletes()  #include "llfloatertopobjects.h" // added to fix SL-32336  #include "llfloatergroups.h" diff --git a/indra/newview/llfloaterregioninfo.h b/indra/newview/llfloaterregioninfo.h index 704166d106..a21b96bf16 100644 --- a/indra/newview/llfloaterregioninfo.h +++ b/indra/newview/llfloaterregioninfo.h @@ -35,9 +35,12 @@  #define LL_LLFLOATERREGIONINFO_H  #include <vector> +#include "llassettype.h"  #include "llfloater.h" +#include "llhost.h"  #include "llpanel.h" +class LLDispatcher;  class LLLineEditor;  class LLMessageSystem;  class LLPanelRegionInfo; @@ -51,6 +54,7 @@ class LLNameListCtrl;  class LLSliderCtrl;  class LLSpinCtrl;  class LLTextBox; +class LLVFS;  class LLPanelRegionGeneralInfo;  class LLPanelRegionDebugInfo; diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index 932e49c79b..9f3dcae8ef 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -40,11 +40,14 @@  // linden library includes  #include "llassetstorage.h"  #include "llfontgl.h" -#include "llgl.h"			// for renderer +#include "llimagej2c.h"  #include "llinventory.h"  #include "llnotificationsutil.h"  #include "llstring.h"  #include "llsys.h" +#include "llvfile.h" +#include "llvfs.h" +#include "mean_collision_data.h"  #include "message.h"  #include "v3math.h" diff --git a/indra/newview/llfloaterurldisplay.cpp b/indra/newview/llfloaterurldisplay.cpp index 3b9321a876..4b67cbb308 100644 --- a/indra/newview/llfloaterurldisplay.cpp +++ b/indra/newview/llfloaterurldisplay.cpp @@ -33,13 +33,14 @@  #include "llviewerprecompiledheaders.h" +#include "llregionhandle.h" +#include "v3dmath.h" +  #include "llfloaterurldisplay.h"  #include "llpanelplace.h"  #include "lluictrlfactory.h" -#include "v3dmath.h" -  ////////////////////////////////////////////////////////////////////////////  // LLFloaterURLDisplay diff --git a/indra/newview/llfloaterurlentry.cpp b/indra/newview/llfloaterurlentry.cpp index 5e769feea6..91d0f0e370 100644 --- a/indra/newview/llfloaterurlentry.cpp +++ b/indra/newview/llfloaterurlentry.cpp @@ -32,6 +32,8 @@  #include "llviewerprecompiledheaders.h" +#include "llhttpclient.h" +  #include "llfloaterurlentry.h"  #include "llpanellandmedia.h" diff --git a/indra/newview/llfloatervoicedevicesettings.cpp b/indra/newview/llfloatervoicedevicesettings.cpp index 3951f4291f..43024a4bd0 100644 --- a/indra/newview/llfloatervoicedevicesettings.cpp +++ b/indra/newview/llfloatervoicedevicesettings.cpp @@ -40,6 +40,7 @@  #include "llcombobox.h"  #include "llfocusmgr.h"  #include "lliconctrl.h" +#include "llsliderctrl.h"  #include "llviewercontrol.h"  #include "llvoiceclient.h"  #include "llvoicechannel.h" @@ -60,6 +61,9 @@ LLPanelVoiceDeviceSettings::LLPanelVoiceDeviceSettings()  	mOutputDevice = gSavedSettings.getString("VoiceOutputAudioDevice");  	mDevicesUpdated = FALSE; +	// grab "live" mic volume level +	mMicVolume = gSavedSettings.getF32("AudioLevelMic"); +  	// ask for new device enumeration  	// now do this in onOpen() instead...  	//gVoiceClient->refreshDeviceLists(); @@ -71,6 +75,10 @@ LLPanelVoiceDeviceSettings::~LLPanelVoiceDeviceSettings()  BOOL LLPanelVoiceDeviceSettings::postBuild()  { +	LLSlider* volume_slider = getChild<LLSlider>("mic_volume_slider"); +	// set mic volume tuning slider based on last mic volume setting +	volume_slider->setValue(mMicVolume); +  	childSetCommitCallback("voice_input_device", onCommitInputDevice, this);  	childSetCommitCallback("voice_output_device", onCommitOutputDevice, this); @@ -149,6 +157,15 @@ void LLPanelVoiceDeviceSettings::apply()  		gSavedSettings.setString("VoiceOutputAudioDevice", s);  		mOutputDevice = s;  	} + +	// assume we are being destroyed by closing our embedding window +	LLSlider* volume_slider = getChild<LLSlider>("mic_volume_slider"); +	if(volume_slider) +	{ +		F32 slider_value = (F32)volume_slider->getValue().asReal(); +		gSavedSettings.setF32("AudioLevelMic", slider_value); +		mMicVolume = slider_value; +	}  }  void LLPanelVoiceDeviceSettings::cancel() @@ -161,12 +178,22 @@ void LLPanelVoiceDeviceSettings::cancel()  	if(mCtrlOutputDevices)  		mCtrlOutputDevices->setSimple(mOutputDevice); + +	gSavedSettings.setF32("AudioLevelMic", mMicVolume); +	LLSlider* volume_slider = getChild<LLSlider>("mic_volume_slider"); +	if(volume_slider) +	{ +		volume_slider->setValue(mMicVolume); +	}  }  void LLPanelVoiceDeviceSettings::refresh()  { -	// update the live input level display -	gVoiceClient->tuningSetMicVolume(); +	//grab current volume +	LLSlider* volume_slider = getChild<LLSlider>("mic_volume_slider"); +	// set mic volume tuning slider based on last mic volume setting +	F32 current_volume = (F32)volume_slider->getValue().asReal(); +	gVoiceClient->tuningSetMicVolume(current_volume);  	// Fill in popup menus  	mCtrlInputDevices = getChild<LLComboBox>("voice_input_device"); @@ -236,6 +263,7 @@ void LLPanelVoiceDeviceSettings::initialize()  {  	mInputDevice = gSavedSettings.getString("VoiceInputAudioDevice");  	mOutputDevice = gSavedSettings.getString("VoiceOutputAudioDevice"); +	mMicVolume = gSavedSettings.getF32("AudioLevelMic");  	mDevicesUpdated = FALSE;  	// ask for new device enumeration diff --git a/indra/newview/llfloatervoicedevicesettings.h b/indra/newview/llfloatervoicedevicesettings.h index 20958af780..d67283d0a2 100644 --- a/indra/newview/llfloatervoicedevicesettings.h +++ b/indra/newview/llfloatervoicedevicesettings.h @@ -56,6 +56,7 @@ protected:  	static void onCommitInputDevice(LLUICtrl* ctrl, void* user_data);  	static void onCommitOutputDevice(LLUICtrl* ctrl, void* user_data); +	F32 mMicVolume;  	std::string mInputDevice;  	std::string mOutputDevice;  	class LLComboBox		*mCtrlInputDevices; diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index 7ca491a698..98f9171237 100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -74,8 +74,8 @@  #include "llmapimagetype.h"  #include "llweb.h"  #include "llslider.h" +#include "message.h" -#include "llglheaders.h"  #include "llwindow.h"			// copyTextToClipboard()  //--------------------------------------------------------------------------- diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 1c5d7ae9b9..321982ceb6 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -411,7 +411,12 @@ S32 LLFolderView::arrange( S32* unused_width, S32* unused_height, S32 filter_gen  			folderp->setVisible(show_folder_state == LLInventoryFilter::SHOW_ALL_FOLDERS || // always show folders?  									(folderp->getFiltered(filter_generation) || folderp->hasFilteredDescendants(filter_generation))); // passed filter or has descendants that passed filter  		} -		if (folderp->getVisible()) + +		// Need to call arrange regardless of visibility, since children's visibility +		// might need to be changed too (e.g. even though a folder is invisible, its +		// children also need to be set invisible for state-tracking purposes, e.g. +		// llfolderviewitem::filter). +		// if (folderp->getVisible())  		{  			S32 child_height = 0;  			S32 child_width = 0; @@ -479,13 +484,13 @@ void LLFolderView::filter( LLInventoryFilter& filter )  	if (getCompletedFilterGeneration() < filter.getCurrentGeneration())  	{ -		mFiltered = FALSE; +		mPassedFilter = FALSE;  		mMinWidth = 0;  		LLFolderViewFolder::filter(filter);  	}  	else  	{ -		mFiltered = TRUE; +		mPassedFilter = TRUE;  	}  } diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index fe793fbcb8..135821f662 100644 --- a/indra/newview/llfolderviewitem.cpp +++ b/indra/newview/llfolderviewitem.cpp @@ -122,7 +122,7 @@ LLFolderViewItem::LLFolderViewItem(LLFolderViewItem::Params p)  	mHasVisibleChildren(FALSE),  	mIndentation(0),  	mNumDescendantsSelected(0), -	mFiltered(FALSE), +	mPassedFilter(FALSE),  	mLastFilterGeneration(-1),  	mStringMatchOffset(std::string::npos),  	mControlLabelRotation(0.f), @@ -224,17 +224,17 @@ BOOL LLFolderViewItem::potentiallyVisible()  BOOL LLFolderViewItem::getFiltered()   {  -	return mFiltered && mLastFilterGeneration >= getRoot()->getFilter()->getMinRequiredGeneration();  +	return mPassedFilter && mLastFilterGeneration >= getRoot()->getFilter()->getMinRequiredGeneration();   }  BOOL LLFolderViewItem::getFiltered(S32 filter_generation)   { -	return mFiltered && mLastFilterGeneration >= filter_generation; +	return mPassedFilter && mLastFilterGeneration >= filter_generation;  }  void LLFolderViewItem::setFiltered(BOOL filtered, S32 filter_generation)  { -	mFiltered = filtered; +	mPassedFilter = filtered;  	mLastFilterGeneration = filter_generation;  } @@ -424,19 +424,20 @@ S32 LLFolderViewItem::getItemHeight()  void LLFolderViewItem::filter( LLInventoryFilter& filter)  { -	BOOL filtered = mListener && filter.check(this); +	const BOOL previous_passed_filter = mPassedFilter; +	const BOOL passed_filter = mListener && filter.check(this); -	// if our visibility will change as a result of this filter, then +	// If our visibility will change as a result of this filter, then  	// we need to be rearranged in our parent folder -	if (getVisible() != filtered) +	if (mParentFolder)  	{ -		if (mParentFolder) -		{ +		if (getVisible() != passed_filter) +			mParentFolder->requestArrange(); +		if (passed_filter != previous_passed_filter)  			mParentFolder->requestArrange(); -		}  	} -	setFiltered(filtered, filter.getCurrentGeneration()); +	setFiltered(passed_filter, filter.getCurrentGeneration());  	mStringMatchOffset = filter.getStringMatchOffset();  	filter.decrementFilterCount(); @@ -1243,7 +1244,7 @@ void LLFolderViewFolder::filter( LLInventoryFilter& filter)  	if (getLastFilterGeneration() < filter_generation)  	{  		if (getLastFilterGeneration() >= must_pass_generation &&		// folder has been compared to a valid precursor filter -			!mFiltered)													// and did not pass the filter +			!mPassedFilter)													// and did not pass the filter  		{  			// go ahead and flag this folder as done  			mLastFilterGeneration = filter_generation;			 @@ -1381,7 +1382,7 @@ void LLFolderViewFolder::setFiltered(BOOL filtered, S32 filter_generation)  {  	// if this folder is now filtered, but wasn't before  	// (it just passed) -	if (filtered && !mFiltered) +	if (filtered && !mPassedFilter)  	{  		// reset current height, because last time we drew it  		// it might have had more visible items than now diff --git a/indra/newview/llfolderviewitem.h b/indra/newview/llfolderviewitem.h index 43a5fd8de5..620aa070b9 100644 --- a/indra/newview/llfolderviewitem.h +++ b/indra/newview/llfolderviewitem.h @@ -121,6 +121,9 @@ public:  	static const F32 FOLDER_CLOSE_TIME_CONSTANT;  	static const F32 FOLDER_OPEN_TIME_CONSTANT; +	// Mostly for debugging printout purposes. +	const std::string& getSearchableLabel() { return mSearchableLabel; } +  protected:  	friend class LLUICtrlFactory;  	friend class LLFolderViewEventListener; @@ -149,7 +152,7 @@ protected:  	BOOL						mHasVisibleChildren;  	S32							mIndentation;  	S32							mNumDescendantsSelected; -	BOOL						mFiltered; +	BOOL						mPassedFilter;  	S32							mLastFilterGeneration;  	std::string::size_type		mStringMatchOffset;  	F32							mControlLabelRotation; @@ -157,8 +160,8 @@ protected:  	BOOL						mDragAndDropTarget;  	LLUIImagePtr				mArrowImage;  	LLUIImagePtr				mBoxImage; -	BOOL                            mIsLoading; -	LLTimer                         mTimeSinceRequestStart; +	BOOL                        mIsLoading; +	LLTimer                     mTimeSinceRequestStart;  	bool						mDontShowInHierarchy;  	// helper function to change the selection from the root. @@ -203,7 +206,7 @@ public:  	virtual S32 arrange( S32* width, S32* height, S32 filter_generation );  	virtual S32 getItemHeight();  	void setDontShowInHierarchy(bool dont_show) { mDontShowInHierarchy = dont_show; } -	bool getDontShowInHierarchy() { return mDontShowInHierarchy; } +	bool getDontShowInHierarchy() const { return mDontShowInHierarchy; }  	// applies filters to control visibility of inventory items  	virtual void filter( LLInventoryFilter& filter); @@ -332,7 +335,7 @@ public:  		EAcceptance* accept,  		std::string& tooltip_msg); - private: +private:  	static std::map<U8, LLFontGL*> sFonts; // map of styles to fonts  }; diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp index 6ca8c025b1..ff75d461df 100644 --- a/indra/newview/llgroupactions.cpp +++ b/indra/newview/llgroupactions.cpp @@ -35,6 +35,8 @@  #include "llgroupactions.h" +#include "message.h" +  #include "llagent.h"  #include "llcommandhandler.h"  #include "llfloaterreg.h" diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h index 3184fd8e35..bc7a43e852 100644 --- a/indra/newview/llimfloater.h +++ b/indra/newview/llimfloater.h @@ -33,9 +33,10 @@  #ifndef LL_IMFLOATER_H  #define LL_IMFLOATER_H -#include "lltransientdockablefloater.h" +#include "llinstantmessage.h"  #include "lllogchat.h"  #include "lltooldraganddrop.h" +#include "lltransientdockablefloater.h"  class LLLineEditor;  class LLPanelChatControlPanel; diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp index 42d061ff72..cb35a287e9 100644 --- a/indra/newview/llinspectobject.cpp +++ b/indra/newview/llinspectobject.cpp @@ -416,18 +416,6 @@ void LLInspectObject::updateDescription(LLSelectNode* nodep)  	LLTextBox* textbox = getChild<LLTextBox>("object_description");  	textbox->setValue(desc); - -	// Truncate description text to fit in widget -	// *HACK: OMG, use lower-left corner to truncate text -	// Don't round the position, we want the left of the character -	S32 corner_index = textbox->getDocIndexFromLocalCoord( 0, 0, FALSE); -	LLWString desc_wide = textbox->getWText(); -	// index == length if position is past last character -	if (corner_index < (S32)desc_wide.length()) -	{ -		desc_wide = desc_wide.substr(0, corner_index); -		textbox->setWText(desc_wide); -	}  }  void LLInspectObject::updateMediaCurrentURL() diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index d507fa70e2..e2f9663000 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -1471,13 +1471,14 @@ BOOL LLFolderBridge::isItemRemovable()  	{  		return FALSE;  	} +  	// Allow protected types to be removed, but issue a warning. -	/* -	if(LLFolderType::lookupIsProtectedType(category->getPreferredType())) +	// Restrict to god mode so users don't inadvertently mess up their inventory. +	if(LLFolderType::lookupIsProtectedType(category->getPreferredType()) && +	   !gAgent.isGodlike())  	{  		return FALSE;  	} -	*/  	LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get());  	LLFolderViewFolder* folderp = dynamic_cast<LLFolderViewFolder*>(panel ? panel->getRootFolder()->getItemByID(mUUID) : NULL); @@ -2508,8 +2509,8 @@ void LLFolderBridge::folderOptionsMenu()  			mItems.push_back(std::string("Wear As Ensemble"));  		}  		mItems.push_back(std::string("Remove From Outfit")); -		if (is_sidepanel) -			mItems.push_back(std::string("Outfit Separator")); + +		mItems.push_back(std::string("Outfit Separator"));  	}  	hide_context_entries(*mMenu, mItems, disabled_items); diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index 81b10f5a62..522edd0cb5 100644 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -40,6 +40,7 @@  #include "llinventorymodel.h"	// gInventory.backgroundFetchActive()  #include "llviewercontrol.h"  #include "llviewerinventory.h" +#include "llfolderview.h"  // linden library includes  #include "lltrans.h" @@ -329,7 +330,6 @@ void LLInventoryFilter::setFilterSubString(const std::string& string)  		mFilterSubString = string;  		LLStringUtil::toUpper(mFilterSubString);  		LLStringUtil::trimHead(mFilterSubString); -  		if (less_restrictive)  		{  			setModified(FILTER_LESS_RESTRICTIVE); @@ -512,21 +512,21 @@ void LLInventoryFilter::setModified(EFilterBehavior behavior)  		// if not keeping current filter results, update last valid as well  		switch(mFilterBehavior)  		{ -		case FILTER_RESTART: -			mMustPassGeneration = mFilterGeneration; -			mMinRequiredGeneration = mFilterGeneration; -			break; -		case FILTER_LESS_RESTRICTIVE: -			mMustPassGeneration = mFilterGeneration; -			break; -		case FILTER_MORE_RESTRICTIVE: -			mMinRequiredGeneration = mFilterGeneration; -			// must have passed either current filter generation (meaningless, as it hasn't been run yet) -			// or some older generation, so keep the value -			mMustPassGeneration = llmin(mMustPassGeneration, mFilterGeneration); -			break; -		default: -			llerrs << "Bad filter behavior specified" << llendl; +			case FILTER_RESTART: +				mMustPassGeneration = mFilterGeneration; +				mMinRequiredGeneration = mFilterGeneration; +				break; +			case FILTER_LESS_RESTRICTIVE: +				mMustPassGeneration = mFilterGeneration; +				break; +			case FILTER_MORE_RESTRICTIVE: +				mMinRequiredGeneration = mFilterGeneration; +				// must have passed either current filter generation (meaningless, as it hasn't been run yet) +				// or some older generation, so keep the value +				mMustPassGeneration = llmin(mMustPassGeneration, mFilterGeneration); +				break; +			default: +				llerrs << "Bad filter behavior specified" << llendl;  		}  	}  	else diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 5d8a8805b5..0a8108899a 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -59,7 +59,8 @@  BOOL LLInventoryModel::sBackgroundFetchActive = FALSE;  BOOL LLInventoryModel::sAllFoldersFetched = FALSE; -BOOL LLInventoryModel::sFullFetchStarted = FALSE; +BOOL LLInventoryModel::sMyInventoryFetchStarted = FALSE; +BOOL LLInventoryModel::sLibraryFetchStarted = FALSE;  S32  LLInventoryModel::sNumFetchRetries = 0;  F32  LLInventoryModel::sMinTimeBetweenFetches = 0.3f;  F32  LLInventoryModel::sMaxTimeBetweenFetches = 10.f; @@ -1342,11 +1343,11 @@ bool LLInventoryModel::isBulkFetchProcessingComplete()  			&& sBulkFetchCount<=0)  ?  TRUE : FALSE ) ;  } -class fetchDescendentsResponder: public LLHTTPClient::Responder +class LLInventoryModelFetchDescendentsResponder: public LLHTTPClient::Responder  {  	public: -		fetchDescendentsResponder(const LLSD& request_sd) : mRequestSD(request_sd) {}; -		//fetchDescendentsResponder() {}; +		LLInventoryModelFetchDescendentsResponder(const LLSD& request_sd) : mRequestSD(request_sd) {}; +		//LLInventoryModelFetchDescendentsResponder() {};  		void result(const LLSD& content);  		void error(U32 status, const std::string& reason);  	public: @@ -1356,7 +1357,7 @@ class fetchDescendentsResponder: public LLHTTPClient::Responder  };  //If we get back a normal response, handle it here -void  fetchDescendentsResponder::result(const LLSD& content) +void  LLInventoryModelFetchDescendentsResponder::result(const LLSD& content)  {  	if (content.has("folders"))	  	{ @@ -1423,7 +1424,8 @@ void  fetchDescendentsResponder::result(const LLSD& content)  				LLSD category = *category_it;  				tcategory->fromLLSD(category);  -				if (LLInventoryModel::sFullFetchStarted) +				if (LLInventoryModel::sMyInventoryFetchStarted || +					LLInventoryModel::sLibraryFetchStarted)  				{  					sFetchQueue.push_back(tcategory->getUUID());  				} @@ -1475,20 +1477,16 @@ void  fetchDescendentsResponder::result(const LLSD& content)  	if (LLInventoryModel::isBulkFetchProcessingComplete())  	{  		llinfos << "Inventory fetch completed" << llendl; -		if (LLInventoryModel::sFullFetchStarted) -		{ -			LLInventoryModel::sAllFoldersFetched = TRUE; -		} -		LLInventoryModel::stopBackgroundFetch(); +		LLInventoryModel::setAllFoldersFetched();  	}  	gInventory.notifyObservers("fetchDescendents");  }  //If we get back an error (not found, etc...), handle it here -void fetchDescendentsResponder::error(U32 status, const std::string& reason) +void LLInventoryModelFetchDescendentsResponder::error(U32 status, const std::string& reason)  { -	llinfos << "fetchDescendentsResponder::error " +	llinfos << "LLInventoryModelFetchDescendentsResponder::error "  		<< status << ": " << reason << llendl;  	LLInventoryModel::incrBulkFetch(-1); @@ -1508,11 +1506,7 @@ void fetchDescendentsResponder::error(U32 status, const std::string& reason)  	{  		if (LLInventoryModel::isBulkFetchProcessingComplete())  		{ -			if (LLInventoryModel::sFullFetchStarted) -			{ -				LLInventoryModel::sAllFoldersFetched = TRUE; -			} -			LLInventoryModel::stopBackgroundFetch(); +			LLInventoryModel::setAllFoldersFetched();  		}  	}  	gInventory.notifyObservers("fetchDescendents"); @@ -1580,7 +1574,8 @@ void LLInventoryModel::bulkFetch(std::string url)  					    body["folders"].append(folder_sd);  				    folder_count++;  			    } -			    if (sFullFetchStarted) +			    if (sMyInventoryFetchStarted || +					sLibraryFetchStarted)  			    {	//Already have this folder but append child folders to list.  				    // add all children to queue  				    parent_cat_map_t::iterator cat_it = gInventory.mParentChildCategoryTree.find(cat->getUUID()); @@ -1605,22 +1600,18 @@ void LLInventoryModel::bulkFetch(std::string url)  			sBulkFetchCount++;  			if (body["folders"].size())  			{ -				LLHTTPClient::post(url, body, new fetchDescendentsResponder(body),300.0); +				LLHTTPClient::post(url, body, new LLInventoryModelFetchDescendentsResponder(body),300.0);  			}  			if (body_lib["folders"].size())  			{  				std::string url_lib = gAgent.getRegion()->getCapability("FetchLibDescendents"); -				LLHTTPClient::post(url_lib, body_lib, new fetchDescendentsResponder(body_lib),300.0); +				LLHTTPClient::post(url_lib, body_lib, new LLInventoryModelFetchDescendentsResponder(body_lib),300.0);  			}  			sFetchTimer.reset();  		}  	else if (isBulkFetchProcessingComplete())  	{ -		if (sFullFetchStarted) -		{ -			sAllFoldersFetched = TRUE; -		} -		stopBackgroundFetch(); +		setAllFoldersFetched();  	}	  } @@ -1636,7 +1627,6 @@ BOOL LLInventoryModel::backgroundFetchActive()  	return sBackgroundFetchActive;  } -//static   void LLInventoryModel::startBackgroundFetch(const LLUUID& cat_id)  {  	if (!sAllFoldersFetched) @@ -1644,9 +1634,16 @@ void LLInventoryModel::startBackgroundFetch(const LLUUID& cat_id)  		sBackgroundFetchActive = TRUE;  		if (cat_id.isNull())  		{ -			if (!sFullFetchStarted) +			if (!sMyInventoryFetchStarted)  			{ -				sFullFetchStarted = TRUE; +				sMyInventoryFetchStarted = TRUE; +				sFetchQueue.push_back(gInventory.getLibraryRootFolderID()); +				sFetchQueue.push_back(gInventory.getRootFolderID()); +				gIdleCallbacks.addFunction(&LLInventoryModel::backgroundFetch, NULL); +			} +			if (!sLibraryFetchStarted) +			{ +				sLibraryFetchStarted = TRUE;  				sFetchQueue.push_back(gInventory.getLibraryRootFolderID());  				sFetchQueue.push_back(gInventory.getRootFolderID());  				gIdleCallbacks.addFunction(&LLInventoryModel::backgroundFetch, NULL); @@ -1660,6 +1657,14 @@ void LLInventoryModel::startBackgroundFetch(const LLUUID& cat_id)  				sFetchQueue.push_front(cat_id);  				gIdleCallbacks.addFunction(&LLInventoryModel::backgroundFetch, NULL);  			} +			if (cat_id == gInventory.getLibraryRootFolderID()) +			{ +				sLibraryFetchStarted = TRUE; +			} +			if (cat_id == gInventory.getRootFolderID()) +			{ +				sMyInventoryFetchStarted = TRUE; +			}  		}  	}  } @@ -1681,10 +1686,20 @@ void LLInventoryModel::stopBackgroundFetch()  		gIdleCallbacks.deleteFunction(&LLInventoryModel::backgroundFetch, NULL);  		sBulkFetchCount=0;  		sMinTimeBetweenFetches=0.0f; -//		sFullFetchStarted=FALSE;  	}  } +// static +void LLInventoryModel::setAllFoldersFetched() +{ +	if (sMyInventoryFetchStarted && +		sLibraryFetchStarted) +	{ +		sAllFoldersFetched = TRUE; +	} +	stopBackgroundFetch(); +} +  //static   void LLInventoryModel::backgroundFetch(void*)  { @@ -1703,11 +1718,8 @@ void LLInventoryModel::backgroundFetch(void*)  		if (sFetchQueue.empty())  		{  			llinfos << "Inventory fetch completed" << llendl; -			if (sFullFetchStarted) -			{ -				sAllFoldersFetched = TRUE; -			} -			stopBackgroundFetch(); + +			setAllFoldersFetched();  			return;  		} diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index b744d821c7..27bbca493d 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -72,6 +72,8 @@ class LLInventoryCollectFunctor;  class LLInventoryModel  {  public: +	friend class LLInventoryModelFetchDescendentsResponder; +  	enum EHasChildren  	{  		CHILDREN_NO, @@ -282,9 +284,6 @@ public:  	// Make sure we have the descendents in the structure.  Returns true  	// if a fetch was performed.  	bool fetchDescendentsOf(const LLUUID& folder_id); -	 -	// Add categories to a list to be fetched in bulk. -	static void bulkFetch(std::string url);  	// call this method to request the inventory.  	//void requestFromServer(const LLUUID& agent_id); @@ -369,15 +368,7 @@ public:  	// Utility Functions  	void removeItem(const LLUUID& item_id); -	// start and stop background breadth-first fetching of inventory contents -	// this gets triggered when performing a filter-search -	static void startBackgroundFetch(const LLUUID& cat_id = LLUUID::null); // start fetch process      static void findLostItems(); -	static BOOL backgroundFetchActive(); -	static bool isEverythingFetched(); -	static void backgroundFetch(void*); // background fetch idle function -	static void incrBulkFetch(S16 fetching) {  sBulkFetchCount+=fetching; if (sBulkFetchCount<0) sBulkFetchCount=0; } -  	// Data about the agent's root folder and root library folder  	// are stored here, rather than in LLAgent where it used to be, because @@ -477,14 +468,11 @@ private:  	LLUUID mLibraryRootFolderID;  	LLUUID mLibraryOwnerID; -	// completing the fetch once per session should be sufficient -	static BOOL sBackgroundFetchActive;  	static BOOL sTimelyFetchPending;  	static S32  sNumFetchRetries;  	static LLFrameTimer sFetchTimer;  	static F32 sMinTimeBetweenFetches;  	static F32 sMaxTimeBetweenFetches; -	static S16 sBulkFetchCount;  	// Expected inventory cache version  	const static S32 sCurrentInvCacheVersion; @@ -510,11 +498,33 @@ private:  public:  	// *NOTE: DEBUG functionality  	void dumpInventory() const; -	static bool isBulkFetchProcessingComplete(); + +	//////////////////////////////////////////////////////////////////////////////// +	// Bulk / Background Fetch + +public: +	// Start and stop background breadth-first fetching of inventory contents. +	// This gets triggered when performing a filter-search +	void startBackgroundFetch(const LLUUID& cat_id = LLUUID::null); +	static BOOL backgroundFetchActive(); +	static bool isEverythingFetched(); +	static void backgroundFetch(void*); // background fetch idle function +	static void incrBulkFetch(S16 fetching) {  sBulkFetchCount+=fetching; if (sBulkFetchCount<0) sBulkFetchCount=0; }  	static void stopBackgroundFetch(); // stop fetch process +	static bool isBulkFetchProcessingComplete(); + +	// Add categories to a list to be fetched in bulk. +	static void bulkFetch(std::string url); -	static BOOL sFullFetchStarted; +private: + 	static BOOL sMyInventoryFetchStarted; +	static BOOL sLibraryFetchStarted;  	static BOOL sAllFoldersFetched;  +	static void setAllFoldersFetched(); + +	// completing the fetch once per session should be sufficient +	static BOOL sBackgroundFetchActive; +	static S16 sBulkFetchCount;  };  // a special inventory model for the agent diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp index 08d56f8b9f..f25d2ef574 100644 --- a/indra/newview/lllandmarkactions.cpp +++ b/indra/newview/lllandmarkactions.cpp @@ -38,6 +38,7 @@  #include "llinventory.h"  #include "lllandmark.h"  #include "llparcel.h" +#include "llregionhandle.h"  #include "llnotificationsutil.h" diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index 33fd3e3bf1..fc9654e9ad 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -39,6 +39,8 @@  #include "lltrans.h"  #include "llviewercontrol.h" +#include "llinstantmessage.h" +  #include <boost/algorithm/string/trim.hpp>  #include <boost/algorithm/string/replace.hpp>  #include <boost/regex.hpp> diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 765b504afe..5f30ab4e01 100644 --- a/indra/newview/llmaniptranslate.cpp +++ b/indra/newview/llmaniptranslate.cpp @@ -101,6 +101,16 @@ const U32 ARROW_TO_AXIS[4] =  	VZ  }; +// Sort manipulator handles by their screen-space projection +struct ClosestToCamera +{ +	bool operator()(const LLManipTranslate::ManipulatorHandle& a, +					const LLManipTranslate::ManipulatorHandle& b) const +	{ +		return a.mEndPosition.mV[VZ] < b.mEndPosition.mV[VZ]; +	} +}; +  LLManipTranslate::LLManipTranslate( LLToolComposite* composite )  :	LLManip( std::string("Move"), composite ),  	mLastHoverMouseX(-1), @@ -273,7 +283,6 @@ void LLManipTranslate::restoreGL()  LLManipTranslate::~LLManipTranslate()  { -	for_each(mProjectedManipulators.begin(), mProjectedManipulators.end(), DeletePointer());  } @@ -888,8 +897,9 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)  		planar_manip_xy_visible = TRUE;  	} -	for_each(mProjectedManipulators.begin(), mProjectedManipulators.end(), DeletePointer()); -	mProjectedManipulators.clear(); +	// Project up to 9 manipulators to screen space 2*X, 2*Y, 2*Z, 3*planes +	std::vector<ManipulatorHandle> projected_manipulators; +	projected_manipulators.reserve(9);  	for (S32 i = 0; i < num_arrow_manips; i+= 2)  	{ @@ -899,12 +909,12 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)  		LLVector4 projected_end = mManipulatorVertices[i + 1] * transform;  		projected_end = projected_end * (1.f / projected_end.mV[VW]); -		ManipulatorHandle* projManipulator =  -			new ManipulatorHandle(LLVector3(projected_start.mV[VX], projected_start.mV[VY], projected_start.mV[VZ]),  +		ManipulatorHandle projected_manip( +				LLVector3(projected_start.mV[VX], projected_start.mV[VY], projected_start.mV[VZ]),   				LLVector3(projected_end.mV[VX], projected_end.mV[VY], projected_end.mV[VZ]),   				MANIPULATOR_IDS[i / 2],  				10.f); // 10 pixel hotspot for arrows -		mProjectedManipulators.insert(projManipulator); +		projected_manipulators.push_back(projected_manip);  	}  	if (planar_manip_yz_visible) @@ -916,12 +926,12 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)  		LLVector4 projected_end = mManipulatorVertices[i + 1] * transform;  		projected_end = projected_end * (1.f / projected_end.mV[VW]); -		ManipulatorHandle* projManipulator =  -			new ManipulatorHandle(LLVector3(projected_start.mV[VX], projected_start.mV[VY], projected_start.mV[VZ]),  +		ManipulatorHandle projected_manip( +				LLVector3(projected_start.mV[VX], projected_start.mV[VY], projected_start.mV[VZ]),   				LLVector3(projected_end.mV[VX], projected_end.mV[VY], projected_end.mV[VZ]),   				MANIPULATOR_IDS[i / 2],  				20.f); // 20 pixels for planar manipulators -		mProjectedManipulators.insert(projManipulator); +		projected_manipulators.push_back(projected_manip);  	}  	if (planar_manip_xz_visible) @@ -933,12 +943,12 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)  		LLVector4 projected_end = mManipulatorVertices[i + 1] * transform;  		projected_end = projected_end * (1.f / projected_end.mV[VW]); -		ManipulatorHandle* projManipulator =  -			new ManipulatorHandle(LLVector3(projected_start.mV[VX], projected_start.mV[VY], projected_start.mV[VZ]),  +		ManipulatorHandle projected_manip( +				LLVector3(projected_start.mV[VX], projected_start.mV[VY], projected_start.mV[VZ]),   				LLVector3(projected_end.mV[VX], projected_end.mV[VY], projected_end.mV[VZ]),   				MANIPULATOR_IDS[i / 2],  				20.f); // 20 pixels for planar manipulators -		mProjectedManipulators.insert(projManipulator); +		projected_manipulators.push_back(projected_manip);  	}  	if (planar_manip_xy_visible) @@ -950,12 +960,12 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)  		LLVector4 projected_end = mManipulatorVertices[i + 1] * transform;  		projected_end = projected_end * (1.f / projected_end.mV[VW]); -		ManipulatorHandle* projManipulator =  -			new ManipulatorHandle(LLVector3(projected_start.mV[VX], projected_start.mV[VY], projected_start.mV[VZ]),  +		ManipulatorHandle projected_manip( +				LLVector3(projected_start.mV[VX], projected_start.mV[VY], projected_start.mV[VZ]),   				LLVector3(projected_end.mV[VX], projected_end.mV[VY], projected_end.mV[VZ]),   				MANIPULATOR_IDS[i / 2],  				20.f); // 20 pixels for planar manipulators -		mProjectedManipulators.insert(projManipulator); +		projected_manipulators.push_back(projected_manip);  	}  	LLVector2 manip_start_2d; @@ -967,13 +977,18 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)  	LLVector2 mousePos((F32)x - half_width, (F32)y - half_height);  	LLVector2 mouse_delta; -	for (minpulator_list_t::iterator iter = mProjectedManipulators.begin(); -		 iter != mProjectedManipulators.end(); ++iter) +	// Keep order consistent with insertion via stable_sort +	std::stable_sort( projected_manipulators.begin(), +		projected_manipulators.end(), +		ClosestToCamera() ); + +	std::vector<ManipulatorHandle>::iterator it = projected_manipulators.begin(); +	for ( ; it != projected_manipulators.end(); ++it)  	{ -		ManipulatorHandle* manipulator = *iter; +		ManipulatorHandle& manipulator = *it;  		{ -			manip_start_2d.setVec(manipulator->mStartPosition.mV[VX] * half_width, manipulator->mStartPosition.mV[VY] * half_height); -			manip_end_2d.setVec(manipulator->mEndPosition.mV[VX] * half_width, manipulator->mEndPosition.mV[VY] * half_height); +			manip_start_2d.setVec(manipulator.mStartPosition.mV[VX] * half_width, manipulator.mStartPosition.mV[VY] * half_height); +			manip_end_2d.setVec(manipulator.mEndPosition.mV[VX] * half_width, manipulator.mEndPosition.mV[VY] * half_height);  			manip_dir = manip_end_2d - manip_start_2d;  			mouse_delta = mousePos - manip_start_2d; @@ -985,9 +1000,9 @@ void LLManipTranslate::highlightManipulators(S32 x, S32 y)  			if (mouse_pos_manip > 0.f &&  				mouse_pos_manip < manip_length && -				mouse_dist_manip_squared < manipulator->mHotSpotRadius * manipulator->mHotSpotRadius) +				mouse_dist_manip_squared < manipulator.mHotSpotRadius * manipulator.mHotSpotRadius)  			{ -				mHighlightedPart = manipulator->mManipID; +				mHighlightedPart = manipulator.mManipID;  				break;  			}  		} diff --git a/indra/newview/llmaniptranslate.h b/indra/newview/llmaniptranslate.h index 25ff35cc72..d20b86b2f4 100644 --- a/indra/newview/llmaniptranslate.h +++ b/indra/newview/llmaniptranslate.h @@ -89,17 +89,6 @@ protected:  	F32			getMinGridScale();  private: -	struct compare_manipulators -	{ -		bool operator() (const ManipulatorHandle* const a, const ManipulatorHandle* const b) const -		{ -			if (a->mEndPosition.mV[VZ] != b->mEndPosition.mV[VZ]) -				return (a->mEndPosition.mV[VZ] < b->mEndPosition.mV[VZ]); -			else -				return a->mManipID < b->mManipID;			 -		} -	}; -	  	S32			mLastHoverMouseX;  	S32			mLastHoverMouseY;  	BOOL		mSendUpdateOnMouseUp; @@ -116,8 +105,6 @@ private:  	LLVector3d	mDragCursorStartGlobal;  	LLVector3d	mDragSelectionStartGlobal;  	LLTimer		mUpdateTimer; -	typedef std::set<ManipulatorHandle*, compare_manipulators> minpulator_list_t; -	minpulator_list_t mProjectedManipulators;  	LLVector4	mManipulatorVertices[18];  	F32			mSnapOffsetMeters;  	LLVector3	mSnapOffsetAxis; diff --git a/indra/newview/llmediadataclient.cpp b/indra/newview/llmediadataclient.cpp index 2694075a58..91064eea6b 100755 --- a/indra/newview/llmediadataclient.cpp +++ b/indra/newview/llmediadataclient.cpp @@ -402,7 +402,7 @@ std::ostream& operator<<(std::ostream &s, const LLMediaDataClient::request_queue  	LLMediaDataClient::request_queue_t::const_iterator end = q.end();  	while (iter != end)  	{ -		s << "\t" << i << "]: " << (*iter)->getObject()->getID().asString(); +		s << "\t" << i << "]: " << (*iter)->getObject()->getID().asString() << "(" << (*iter)->getObject()->getMediaInterest() << ")";  		iter++;  		i++;  	} diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index 08bc1fac8b..cdab3b2310 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -34,10 +34,12 @@  #include "llnavigationbar.h" -#include <llfloaterreg.h> -#include <llfocusmgr.h> -#include <lliconctrl.h> -#include <llmenugl.h> +#include "llregionhandle.h" + +#include "llfloaterreg.h" +#include "llfocusmgr.h" +#include "lliconctrl.h" +#include "llmenugl.h"  #include "llagent.h"  #include "llviewerregion.h" diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index 8fb4ea4211..8dbaa5ac53 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -32,6 +32,8 @@  #include "llviewerprecompiledheaders.h" +#include "message.h" +  #include "llfloaterreg.h"  #include "lltrans.h" diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h index 83a8dcd9f0..515c86bae8 100644 --- a/indra/newview/llnotificationhandler.h +++ b/indra/newview/llnotificationhandler.h @@ -39,6 +39,7 @@  //#include "llnotificationsutil.h"  #include "llchannelmanager.h"  #include "llchat.h" +#include "llinstantmessage.h"  #include "llnotificationptr.h"  namespace LLNotificationsUI diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index 32c9faa688..35cd3edc81 100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp @@ -37,6 +37,7 @@  #include "llfloaterreg.h"  #include "llsdutil.h"  #include "llsdutil_math.h" +#include "llregionhandle.h"  #include "llaccordionctrl.h"  #include "llaccordionctrltab.h" @@ -367,6 +368,7 @@ void LLLandmarksPanel::initFavoritesInventoryPanel()  	initLandmarksPanel(mFavoritesInventoryPanel);  	mFavoritesInventoryPanel->getFilter()->setEmptyLookupMessage("FavoritesNoMatchingItems"); +  	initAccordion("tab_favorites", mFavoritesInventoryPanel);  } @@ -428,6 +430,7 @@ void LLLandmarksPanel::initLandmarksPanel(LLInventorySubTreePanel* inventory_lis  	}  	root_folder->setParentLandmarksPanel(this); +	inventory_list->saveFolderState();  }  void LLLandmarksPanel::initAccordion(const std::string& accordion_tab_name, LLInventorySubTreePanel* inventory_list) @@ -1030,21 +1033,30 @@ void LLLandmarksPanel::doCreatePick(LLLandmark* landmark)  //////////////////////////////////////////////////////////////////////////  static void filter_list(LLInventorySubTreePanel* inventory_list, const std::string& string)  { -	// Open the immediate children of the root folder, since those -	// are invisible in the UI and thus must always be open. -	inventory_list->getRootFolder()->openTopLevelFolders(); - +	// When search is cleared, restore the old folder state.  	if (string == "")  	{  		inventory_list->setFilterSubString(LLStringUtil::null); +		// Re-open folders that were open before +		inventory_list->restoreFolderState();  	} +	// Open the immediate children of the root folder, since those +	// are invisible in the UI and thus must always be open. +	inventory_list->getRootFolder()->openTopLevelFolders(); +  	if (inventory_list->getFilterSubString().empty() && string.empty())  	{  		// current filter and new filter empty, do nothing  		return;  	} +	// save current folder open state if no filter currently applied +	if (inventory_list->getRootFolder()->getFilterSubString().empty()) +	{ +		inventory_list->saveFolderState(); +	} +  	// Set new filter string  	inventory_list->setFilterSubString(string); diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index cef21e85d6..c0da8f3daa 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -530,11 +530,23 @@ BOOL LLPanelMainInventory::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,  	return handled;  } -void LLPanelMainInventory::changed(U32 mask) +// virtual +void LLPanelMainInventory::changed(U32)  { +	// empty, but must have this defined for abstract base class.  } +// virtual +void LLPanelMainInventory::draw() +{ +	if (mActivePanel && mFilterEditor) +	{ +		mFilterEditor->setText(mActivePanel->getFilterSubString()); +	}	 +	LLPanel::draw(); +} +  void LLPanelMainInventory::setFilterTextFromFilter()   {   	mFilterText = mActivePanel->getFilter()->getFilterText();  diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h index 92443df369..920de2665c 100644 --- a/indra/newview/llpanelmaininventory.h +++ b/indra/newview/llpanelmaininventory.h @@ -72,7 +72,8 @@ public:  									   void* cargo_data,  									   EAcceptance* accept,  									   std::string& tooltip_msg); -	/*virtual*/ void changed(U32 mask); +	/*virtual*/ void changed(U32); +	/*virtual*/ void draw();  	LLInventoryPanel* getPanel() { return mActivePanel; }  	LLInventoryPanel* getActivePanel() { return mActivePanel; } diff --git a/indra/newview/llpanelmediasettingsgeneral.cpp b/indra/newview/llpanelmediasettingsgeneral.cpp index 88eba14553..f574f55beb 100644 --- a/indra/newview/llpanelmediasettingsgeneral.cpp +++ b/indra/newview/llpanelmediasettingsgeneral.cpp @@ -67,7 +67,6 @@ const char *CHECKERBOARD_DATA_URL = "data:image/svg+xml,%3Csvg xmlns=%22http://w  ////////////////////////////////////////////////////////////////////////////////  //  LLPanelMediaSettingsGeneral::LLPanelMediaSettingsGeneral() : -	mControls( NULL ),  	mAutoLoop( NULL ),  	mFirstClick( NULL ),  	mAutoZoom( NULL ), @@ -93,7 +92,6 @@ BOOL LLPanelMediaSettingsGeneral::postBuild()  	mAutoPlay = getChild< LLCheckBoxCtrl >( LLMediaEntry::AUTO_PLAY_KEY );  	mAutoScale = getChild< LLCheckBoxCtrl >( LLMediaEntry::AUTO_SCALE_KEY );  	mAutoZoom = getChild< LLCheckBoxCtrl >( LLMediaEntry::AUTO_ZOOM_KEY ); -	mControls = getChild< LLComboBox >( LLMediaEntry::CONTROLS_KEY );  	mCurrentURL = getChild< LLTextBox >( LLMediaEntry::CURRENT_URL_KEY );  	mFirstClick = getChild< LLCheckBoxCtrl >( LLMediaEntry::FIRST_CLICK_INTERACT_KEY );  	mHeightPixels = getChild< LLSpinCtrl >( LLMediaEntry::HEIGHT_PIXELS_KEY ); @@ -211,7 +209,6 @@ void LLPanelMediaSettingsGeneral::clearValues( void* userdata, bool editable)  	self->mAutoPlay->clear();  	self->mAutoScale->clear();  	self->mAutoZoom ->clear(); -	self->mControls->clear();  	self->mCurrentURL->clear();  	self->mFirstClick->clear();  	self->mHeightPixels->clear(); @@ -221,7 +218,6 @@ void LLPanelMediaSettingsGeneral::clearValues( void* userdata, bool editable)  	self->mAutoPlay ->setEnabled(editable);  	self->mAutoScale ->setEnabled(editable);  	self->mAutoZoom  ->setEnabled(editable); -	self->mControls ->setEnabled(editable);  	self->mCurrentURL ->setEnabled(editable);  	self->mFirstClick ->setEnabled(editable);  	self->mHeightPixels ->setEnabled(editable); @@ -283,7 +279,6 @@ void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& media_  		{ LLMediaEntry::AUTO_PLAY_KEY,				self->mAutoPlay,		"LLCheckBoxCtrl" },  		{ LLMediaEntry::AUTO_SCALE_KEY,				self->mAutoScale,		"LLCheckBoxCtrl" },  		{ LLMediaEntry::AUTO_ZOOM_KEY,				self->mAutoZoom,		"LLCheckBoxCtrl" }, -		{ LLMediaEntry::CONTROLS_KEY,				self->mControls,		"LLComboBox" },  		{ LLMediaEntry::CURRENT_URL_KEY,			self->mCurrentURL,		"LLTextBox" },  		{ LLMediaEntry::HEIGHT_PIXELS_KEY,			self->mHeightPixels,	"LLSpinCtrl" },  		{ LLMediaEntry::HOME_URL_KEY,				self->mHomeURL,			"LLLineEditor" }, @@ -416,7 +411,6 @@ void LLPanelMediaSettingsGeneral::getValues( LLSD &fill_me_in )  	fill_me_in[LLMediaEntry::AUTO_PLAY_KEY] = (LLSD::Boolean)mAutoPlay->getValue();  	fill_me_in[LLMediaEntry::AUTO_SCALE_KEY] = (LLSD::Boolean)mAutoScale->getValue();  	fill_me_in[LLMediaEntry::AUTO_ZOOM_KEY] = (LLSD::Boolean)mAutoZoom->getValue(); -	fill_me_in[LLMediaEntry::CONTROLS_KEY] = (LLSD::Integer)mControls->getCurrentIndex();  	//Don't fill in current URL: this is only supposed to get changed via navigate  	// fill_me_in[LLMediaEntry::CURRENT_URL_KEY] = mCurrentURL->getValue();  	fill_me_in[LLMediaEntry::HEIGHT_PIXELS_KEY] = (LLSD::Integer)mHeightPixels->getValue(); diff --git a/indra/newview/llpanelmediasettingsgeneral.h b/indra/newview/llpanelmediasettingsgeneral.h index c6895b1dc9..5f90321362 100644 --- a/indra/newview/llpanelmediasettingsgeneral.h +++ b/indra/newview/llpanelmediasettingsgeneral.h @@ -37,7 +37,6 @@  class LLButton;  class LLCheckBoxCtrl; -class LLComboBox;  class LLLineEditor;  class LLSpinCtrl;  class LLTextureCtrl; @@ -90,7 +89,6 @@ private:  	void checkHomeUrlPassesWhitelist(); -	LLComboBox* mControls;  	LLCheckBoxCtrl* mAutoLoop;  	LLCheckBoxCtrl* mFirstClick;  	LLCheckBoxCtrl* mAutoZoom; diff --git a/indra/newview/llpanelmediasettingspermissions.cpp b/indra/newview/llpanelmediasettingspermissions.cpp index 2f3f550e35..a23aed2e98 100644 --- a/indra/newview/llpanelmediasettingspermissions.cpp +++ b/indra/newview/llpanelmediasettingspermissions.cpp @@ -51,9 +51,11 @@  #include "llnamebox.h"  #include "lltrans.h"  #include "llfloatermediasettings.h" +  ////////////////////////////////////////////////////////////////////////////////  //  LLPanelMediaSettingsPermissions::LLPanelMediaSettingsPermissions() : +	mControls( NULL ),      mPermsOwnerInteract( 0 ),      mPermsOwnerControl( 0 ),  	mPermsGroupName( 0 ), @@ -71,6 +73,7 @@ LLPanelMediaSettingsPermissions::LLPanelMediaSettingsPermissions() :  BOOL LLPanelMediaSettingsPermissions::postBuild()  {      // connect member vars with UI widgets +	mControls = getChild< LLComboBox >( LLMediaEntry::CONTROLS_KEY );      mPermsOwnerInteract = getChild< LLCheckBoxCtrl >( LLPanelContents::PERMS_OWNER_INTERACT_KEY );      mPermsOwnerControl = getChild< LLCheckBoxCtrl >( LLPanelContents::PERMS_OWNER_CONTROL_KEY );      mPermsGroupInteract = getChild< LLCheckBoxCtrl >( LLPanelContents::PERMS_GROUP_INTERACT_KEY ); @@ -123,19 +126,22 @@ void LLPanelMediaSettingsPermissions::draw()  void LLPanelMediaSettingsPermissions::clearValues( void* userdata, bool editable)  {	  	LLPanelMediaSettingsPermissions *self =(LLPanelMediaSettingsPermissions *)userdata; + +	self->mControls->clear();  	self->mPermsOwnerInteract->clear();  	self->mPermsOwnerControl->clear(); -	self->mPermsGroupInteract ->clear(); +	self->mPermsGroupInteract->clear();  	self->mPermsGroupControl->clear(); -	self->mPermsWorldInteract ->clear(); -	self->mPermsWorldControl ->clear(); +	self->mPermsWorldInteract->clear(); +	self->mPermsWorldControl->clear(); +	self->mControls->setEnabled(editable);  	self->mPermsOwnerInteract->setEnabled(editable); -	self->mPermsOwnerControl ->setEnabled(editable); +	self->mPermsOwnerControl->setEnabled(editable);  	self->mPermsGroupInteract->setEnabled(editable); -	self->mPermsGroupControl ->setEnabled(editable); +	self->mPermsGroupControl->setEnabled(editable);  	self->mPermsWorldInteract->setEnabled(editable); -	self->mPermsWorldControl ->setEnabled(editable); +	self->mPermsWorldControl->setEnabled(editable);  }  //////////////////////////////////////////////////////////////////////////////// @@ -175,6 +181,7 @@ void LLPanelMediaSettingsPermissions::initValues( void* userdata, const LLSD& me      } data_set [] =       {  +		{ LLMediaEntry::CONTROLS_KEY,					self->mControls,			"LLComboBox" },          { LLPanelContents::PERMS_OWNER_INTERACT_KEY,    self->mPermsOwnerInteract,  "LLCheckBoxCtrl" },          { LLPanelContents::PERMS_OWNER_CONTROL_KEY,     self->mPermsOwnerControl,   "LLCheckBoxCtrl" },          { LLPanelContents::PERMS_GROUP_INTERACT_KEY,    self->mPermsGroupInteract,  "LLCheckBoxCtrl" }, @@ -194,27 +201,27 @@ void LLPanelMediaSettingsPermissions::initValues( void* userdata, const LLSD& me          {              if ( data_set[ i ].ctrl_type == "LLCheckBoxCtrl" )              { -				// the sense of the checkboxes changed and it made sense -				// to just reverse their sense back again here and avoid  -				// changing server code. +				// Most recent change to the "sense" of these checkboxes +				// means the value in the checkbox matches that on the server                  static_cast< LLCheckBoxCtrl* >( data_set[ i ].ctrl_ptr )-> -                    setValue( ! media_settings[ base_key ].asBoolean() ); +                    setValue( media_settings[ base_key ].asBoolean() );              }              else              if ( data_set[ i ].ctrl_type == "LLComboBox" )                  static_cast< LLComboBox* >( data_set[ i ].ctrl_ptr )->                      setCurrentByIndex( media_settings[ base_key ].asInteger() ); +  			data_set[ i ].ctrl_ptr->setEnabled(editable);              data_set[ i ].ctrl_ptr->setTentative( media_settings[ tentative_key ].asBoolean() );          };      }; +  	self->childSetEnabled("media_perms_label_owner", editable );  	self->childSetText("media_perms_label_owner",  LLTrans::getString("Media Perms Owner") );  	self->childSetEnabled("media_perms_label_group", editable );  	self->childSetText("media_perms_label_group",  LLTrans::getString("Media Perms Group") );  	self->childSetEnabled("media_perms_label_anyone", editable );  	self->childSetText("media_perms_label_anyone", LLTrans::getString("Media Perms Anyone") ); -	  }  //////////////////////////////////////////////////////////////////////////////// @@ -228,6 +235,9 @@ void LLPanelMediaSettingsPermissions::preApply()  //  void LLPanelMediaSettingsPermissions::getValues( LLSD &fill_me_in )  { +	// moved over from the 'General settings' tab +	fill_me_in[LLMediaEntry::CONTROLS_KEY] = (LLSD::Integer)mControls->getCurrentIndex(); +      // *NOTE: For some reason, gcc does not like these symbol references in the       // expressions below (inside the static_casts).  I have NO idea why :(.      // For some reason, assigning them to const temp vars here fixes the link @@ -237,13 +247,13 @@ void LLPanelMediaSettingsPermissions::getValues( LLSD &fill_me_in )      const U8 group = LLMediaEntry::PERM_GROUP;      const U8 anyone = LLMediaEntry::PERM_ANYONE;      const LLSD::Integer control = static_cast<LLSD::Integer>( -        (mPermsOwnerControl->getValue() ? none : owner ) | -        (mPermsGroupControl->getValue() ? none : group ) | -        (mPermsWorldControl->getValue() ? none : anyone )); +		(mPermsOwnerControl->getValue() ? owner : none ) | +		(mPermsGroupControl->getValue() ? group: none  ) | +		(mPermsWorldControl->getValue() ? anyone : none ));      const LLSD::Integer interact = static_cast<LLSD::Integer>( -        (mPermsOwnerInteract->getValue() ? none : owner ) | -        (mPermsGroupInteract->getValue() ? none : group ) | -        (mPermsWorldInteract->getValue() ? none : anyone )); +		(mPermsOwnerInteract->getValue() ? owner: none  ) | +		(mPermsGroupInteract->getValue() ? group : none ) | +		(mPermsWorldInteract->getValue() ? anyone : none ));      fill_me_in[LLMediaEntry::PERMS_CONTROL_KEY] = control;      fill_me_in[LLMediaEntry::PERMS_INTERACT_KEY] = interact;  } @@ -255,3 +265,5 @@ void LLPanelMediaSettingsPermissions::postApply()  {      // no-op  } + + diff --git a/indra/newview/llpanelmediasettingspermissions.h b/indra/newview/llpanelmediasettingspermissions.h index 45a596c615..bd0c3b8ab5 100644 --- a/indra/newview/llpanelmediasettingspermissions.h +++ b/indra/newview/llpanelmediasettingspermissions.h @@ -65,6 +65,7 @@ public:  	static void clearValues( void* userdata,  bool editable);  private: +	LLComboBox* mControls;  	LLCheckBoxCtrl* mPermsOwnerInteract;  	LLCheckBoxCtrl* mPermsOwnerControl;  	LLNameBox* mPermsGroupName; diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index 7d21867efc..498782fb44 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -38,6 +38,7 @@  #include "llagentpicksinfo.h"  #include "llavatarconstants.h"  #include "llcommandhandler.h" +#include "lldispatcher.h"  #include "llflatlistview.h"  #include "llfloaterreg.h"  #include "llfloaterworldmap.h" diff --git a/indra/newview/llpanelplace.cpp b/indra/newview/llpanelplace.cpp index 71d763b562..6985b73200 100644 --- a/indra/newview/llpanelplace.cpp +++ b/indra/newview/llpanelplace.cpp @@ -40,6 +40,7 @@  #include "llsecondlifeurls.h"  #include "llfloater.h"  #include "llfloaterreg.h" +#include "llregionhandle.h"  #include "llagent.h"  #include "llviewerwindow.h" diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp index 6ba3790fe2..b845f38ace 100644 --- a/indra/newview/llpanelplaceinfo.cpp +++ b/indra/newview/llpanelplaceinfo.cpp @@ -39,6 +39,8 @@  #include "llsecondlifeurls.h"  #include "llsdutil_math.h" +#include "llregionhandle.h" +#include "message.h"  #include "lliconctrl.h"  #include "lltextbox.h" diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index 0c7cc9af38..402d50ba9c 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -35,6 +35,7 @@  #include "llpanelplaceprofile.h"  #include "llparcel.h" +#include "message.h"  #include "lliconctrl.h"  #include "lllineeditor.h" diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index e21eb01da3..685104a8b1 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -54,6 +54,7 @@  #include "llavatarpropertiesprocessor.h"  #include "llfloaterworldmap.h"  #include "llinventorybridge.h" +#include "llinventoryobserver.h"  #include "llinventorymodel.h"  #include "lllandmarkactions.h"  #include "lllandmarklist.h" @@ -62,6 +63,7 @@  #include "llpanelpick.h"  #include "llpanelplaceprofile.h"  #include "llpanelteleporthistory.h" +#include "llremoteparcelrequest.h"  #include "llteleporthistorystorage.h"  #include "lltoggleablemenu.h"  #include "llviewerinventory.h" @@ -85,8 +87,10 @@ static void onSLURLBuilt(std::string& slurl);  class LLPlacesParcelObserver : public LLParcelObserver  {  public: -	LLPlacesParcelObserver(LLPanelPlaces* places_panel) -	: mPlaces(places_panel) {} +	LLPlacesParcelObserver(LLPanelPlaces* places_panel) : +		LLParcelObserver(), +		mPlaces(places_panel) +	{}  	/*virtual*/ void changed()  	{ @@ -101,8 +105,10 @@ private:  class LLPlacesInventoryObserver : public LLInventoryObserver  {  public: -	LLPlacesInventoryObserver(LLPanelPlaces* places_panel) -	: mPlaces(places_panel) {} +	LLPlacesInventoryObserver(LLPanelPlaces* places_panel) : +		LLInventoryObserver(), +		mPlaces(places_panel) +	{}  	/*virtual*/ void changed(U32 mask)  	{ @@ -114,6 +120,59 @@ private:  	LLPanelPlaces*		mPlaces;  }; +class LLPlacesRemoteParcelInfoObserver : public LLRemoteParcelInfoObserver +{ +public: +	LLPlacesRemoteParcelInfoObserver(LLPanelPlaces* places_panel) : +		LLRemoteParcelInfoObserver(), +		mPlaces(places_panel) +	{} + +	~LLPlacesRemoteParcelInfoObserver() +	{ +		// remove any in-flight observers +		std::set<LLUUID>::iterator it; +		for (it = mParcelIDs.begin(); it != mParcelIDs.end(); ++it) +		{ +			const LLUUID &id = *it; +			LLRemoteParcelInfoProcessor::getInstance()->removeObserver(id, this); +		} +		mParcelIDs.clear(); +	} + +	/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data) +	{ +		if (mPlaces) +		{ +			mPlaces->changedGlobalPos(LLVector3d(parcel_data.global_x, +												 parcel_data.global_y, +												 parcel_data.global_z)); +		} + +		mParcelIDs.erase(parcel_data.parcel_id); +		LLRemoteParcelInfoProcessor::getInstance()->removeObserver(parcel_data.parcel_id, this); +	} +	/*virtual*/ void setParcelID(const LLUUID& parcel_id) +	{ +		if (!parcel_id.isNull()) +		{ +			mParcelIDs.insert(parcel_id); +			LLRemoteParcelInfoProcessor::getInstance()->addObserver(parcel_id, this); +			LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(parcel_id); +		} +	} +	/*virtual*/ void setErrorStatus(U32 status, const std::string& reason) +	{ +		llerrs << "Can't complete remote parcel request. Http Status: " +			   << status << ". Reason : " << reason << llendl; +	} + +private: +	std::set<LLUUID>	mParcelIDs; +	LLPanelPlaces*		mPlaces; +}; + +  static LLRegisterPanelClassWrapper<LLPanelPlaces> t_places("panel_places");  LLPanelPlaces::LLPanelPlaces() @@ -131,6 +190,7 @@ LLPanelPlaces::LLPanelPlaces()  {  	mParcelObserver = new LLPlacesParcelObserver(this);  	mInventoryObserver = new LLPlacesInventoryObserver(this); +	mRemoteParcelObserver = new LLPlacesRemoteParcelInfoObserver(this);  	gInventory.addObserver(mInventoryObserver); @@ -149,6 +209,7 @@ LLPanelPlaces::~LLPanelPlaces()  	delete mInventoryObserver;  	delete mParcelObserver; +	delete mRemoteParcelObserver;  }  BOOL LLPanelPlaces::postBuild() @@ -239,7 +300,6 @@ void LLPanelPlaces::onOpen(const LLSD& key)  	mItem = NULL;  	isLandmarkEditModeOn = false;  	togglePlaceInfoPanel(TRUE); -	updateVerbs();  	if (mPlaceInfoType == AGENT_INFO_TYPE)  	{ @@ -282,6 +342,10 @@ void LLPanelPlaces::onOpen(const LLSD& key)  		{  			LLUUID parcel_id = key["id"].asUUID();  			mPlaceProfile->setParcelID(parcel_id); + +			// query the server to get the global 3D position of this +			// parcel - we need this for teleport/mapping functions. +			mRemoteParcelObserver->setParcelID(parcel_id);  		}  		else  		{ @@ -306,6 +370,8 @@ void LLPanelPlaces::onOpen(const LLSD& key)  		mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal);  	} +	updateVerbs(); +  	LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance();  	if (!parcel_mgr)  		return; @@ -837,6 +903,12 @@ void LLPanelPlaces::changedInventory(U32 mask)  	gInventory.removeObserver(mInventoryObserver);  } +void LLPanelPlaces::changedGlobalPos(const LLVector3d &global_pos) +{ +	mPosGlobal = global_pos; +	updateVerbs(); +} +  void LLPanelPlaces::updateVerbs()  {  	bool is_place_info_visible; @@ -853,6 +925,7 @@ void LLPanelPlaces::updateVerbs()  	bool is_agent_place_info_visible = mPlaceInfoType == AGENT_INFO_TYPE;  	bool is_create_landmark_visible = mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE; +	bool have_3d_pos = ! mPosGlobal.isExactlyZero();  	mTeleportBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn);  	mShowOnMapBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn); @@ -862,7 +935,7 @@ void LLPanelPlaces::updateVerbs()  	mCancelBtn->setVisible(isLandmarkEditModeOn);  	mCloseBtn->setVisible(is_create_landmark_visible && !isLandmarkEditModeOn); -	mShowOnMapBtn->setEnabled(!is_create_landmark_visible && !isLandmarkEditModeOn); +	mShowOnMapBtn->setEnabled(!is_create_landmark_visible && !isLandmarkEditModeOn && have_3d_pos);  	mOverflowBtn->setEnabled(is_place_info_visible && !is_create_landmark_visible);  	if (is_place_info_visible) @@ -871,12 +944,12 @@ void LLPanelPlaces::updateVerbs()  		{  			// We don't need to teleport to the current location  			// so check if the location is not within the current parcel. -			mTeleportBtn->setEnabled(!mPosGlobal.isExactlyZero() && +			mTeleportBtn->setEnabled(have_3d_pos &&  									 !LLViewerParcelMgr::getInstance()->inAgentParcel(mPosGlobal));  		}  		else if (mPlaceInfoType == LANDMARK_INFO_TYPE || mPlaceInfoType == REMOTE_PLACE_INFO_TYPE)  		{ -			mTeleportBtn->setEnabled(TRUE); +			mTeleportBtn->setEnabled(have_3d_pos);  		}  	}  	else diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index 5f9aed6357..5ee8704992 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -47,6 +47,7 @@ class LLPanelPlacesTab;  class LLParcelSelection;  class LLPlacesInventoryObserver;  class LLPlacesParcelObserver; +class LLRemoteParcelInfoObserver;  class LLTabContainer;  class LLToggleableMenu; @@ -65,6 +66,8 @@ public:  	void changedParcelSelection();  	// Called on agent inventory change to find out when inventory gets usable.  	void changedInventory(U32 mask); +	// Called when we receive the global 3D position of a parcel. +	void changedGlobalPos(const LLVector3d &global_pos);  	void setItem(LLInventoryItem* item); @@ -112,6 +115,7 @@ private:  	LLPlacesInventoryObserver*	mInventoryObserver;  	LLPlacesParcelObserver*		mParcelObserver; +	LLRemoteParcelInfoObserver* mRemoteParcelObserver;  	// Pointer to a landmark item or to a linked landmark  	LLPointer<LLInventoryItem>	mItem; diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index 3fe51106e4..7b2ac38568 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -57,6 +57,7 @@  #include "llsliderctrl.h"  #include "llstring.h"  #include "llviewercontrol.h" +#include "llviewerdisplay.h"  #include "llviewerparcelmgr.h"  #include "llviewermedia.h"  #include "llviewermediafocus.h" @@ -66,8 +67,11 @@  #include "llfloatertools.h"  // to enable hide if build tools are up +// Functions pulled from pipeline.cpp  glh::matrix4f glh_get_current_modelview();  glh::matrix4f glh_get_current_projection(); +// Functions pulled from llviewerdisplay.cpp +bool get_hud_matrices(glh::matrix4f &proj, glh::matrix4f &model);  // Warning: make sure these two match!  const LLPanelPrimMediaControls::EZoomLevel LLPanelPrimMediaControls::kZoomLevels[] = { ZOOM_NONE, ZOOM_MEDIUM }; @@ -564,9 +568,6 @@ void LLPanelPrimMediaControls::updateShape()  		//  		// Calculate position and shape of the controls  		// -		LLVector3 min, max; - -		glh::matrix4f mat = glh_get_current_projection()*glh_get_current_modelview();  		std::vector<LLVector3>::iterator vert_it;  		std::vector<LLVector3>::iterator vert_end;  		std::vector<LLVector3> vect_face; @@ -603,8 +604,18 @@ void LLPanelPrimMediaControls::updateShape()  		vert_it = vect_face.begin();  		vert_end = vect_face.end(); -		min = LLVector3(1,1,1); -		max = LLVector3(-1,-1,-1); +		glh::matrix4f mat; +		if (!is_hud)  +		{ +			mat = glh_get_current_projection() * glh_get_current_modelview(); +		} +		else { +			glh::matrix4f proj, modelview; +			if (get_hud_matrices(proj, modelview)) +				mat = proj * modelview; +		} +		LLVector3 min = LLVector3(1,1,1); +		LLVector3 max = LLVector3(-1,-1,-1);  		for(; vert_it != vert_end; ++vert_it)  		{  			// project silhouette vertices into screen space @@ -633,10 +644,15 @@ void LLPanelPrimMediaControls::updateShape()  		media_controls_rect.mRight += getRect().getWidth() - mMediaRegion->getRect().mRight;  		// keep all parts of HUD on-screen -		media_controls_rect.intersectWith(getParent()->getLocalRect()); +		LLRect window_rect = getParent()->getLocalRect(); +		media_controls_rect.intersectWith(window_rect); -		// clamp to minimum size, keeping centered -		media_controls_rect.setCenterAndSize(media_controls_rect.getCenterX(), media_controls_rect.getCenterY(), +		// clamp to minimum size, keeping rect inside window +		S32 centerX = media_controls_rect.getCenterX(); +		S32 centerY = media_controls_rect.getCenterY(); +		window_rect.stretch(-mMinWidth/2, -mMinHeight/2); +		window_rect.clampPointToRect(centerX, centerY); +		media_controls_rect.setCenterAndSize(centerX, centerY,  											 llmax(mMinWidth, media_controls_rect.getWidth()), llmax(mMinHeight, media_controls_rect.getHeight()));  		setShape(media_controls_rect, true); diff --git a/indra/newview/llpreviewgesture.h b/indra/newview/llpreviewgesture.h index 9d26539453..19fa1dcc37 100644 --- a/indra/newview/llpreviewgesture.h +++ b/indra/newview/llpreviewgesture.h @@ -33,8 +33,9 @@  #ifndef LL_LLPREVIEWGESTURE_H  #define LL_LLPREVIEWGESTURE_H -#include "llpreview.h" +#include "llassettype.h"  #include "llmultigesture.h" +#include "llpreview.h"  class LLMultiGesture;  class LLLineEditor; @@ -46,6 +47,7 @@ class LLScrollListItem;  class LLButton;  class LLGestureStep;  class LLRadioGroup; +class LLVFS;  class LLPreviewGesture : public LLPreview  { diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h index 28a409d3ee..9d194c5557 100644 --- a/indra/newview/llpreviewscript.h +++ b/indra/newview/llpreviewscript.h @@ -51,6 +51,7 @@ struct 	LLEntryAndEdCore;  class LLMenuBarGL;  class LLFloaterScriptSearch;  class LLKeywordToken; +class LLVFS;  class LLViewerInventoryItem;  // Inner, implementation class.  LLPreviewScript and LLLiveLSLEditor each own one of these. diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h index 3a16e25ef6..c04f6b1858 100644 --- a/indra/newview/llremoteparcelrequest.h +++ b/indra/newview/llremoteparcelrequest.h @@ -38,6 +38,7 @@  #include "llhttpclient.h"  #include "llpanel.h" +class LLMessageSystem;  class LLRemoteParcelInfoObserver;  class LLRemoteParcelRequestResponder : public LLHTTPClient::Responder diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 44930f03c5..6e99d5a5f0 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -3494,7 +3494,7 @@ void LLSelectMgr::deselectAllIfTooFar()  	// HACK: Don't deselect when we're navigating to rate an object's  	// owner or creator.  JC -	if (gPieObject->getVisible() || gPieRate->getVisible() ) +	if (gMenuObject->getVisible())  	{  		return;  	} @@ -5493,11 +5493,15 @@ void dialog_refresh_all()  	gFloaterTools->dirty(); -	gPieObject->needsArrange(); +	gMenuObject->needsArrange(); -	if( gPieAttachment->getVisible() ) +	if( gMenuAttachmentSelf->getVisible() )  	{ -		gPieAttachment->arrange(); +		gMenuAttachmentSelf->arrange(); +	} +	if( gMenuAttachmentOther->getVisible() ) +	{ +		gMenuAttachmentOther->arrange();  	}  	LLFloaterProperties::dirtyAll(); diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp index 449bdefb8f..25518d87d6 100644 --- a/indra/newview/llsidepaneliteminfo.cpp +++ b/indra/newview/llsidepaneliteminfo.cpp @@ -109,19 +109,30 @@ BOOL LLSidepanelItemInfo::postBuild()  {  	LLSidepanelInventorySubpanel::postBuild(); -	// build the UI -	// item name & description  	childSetPrevalidate("LabelItemName",&LLLineEditor::prevalidateASCIIPrintableNoPipe); -	//getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitName,this)); +	getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitName,this));  	childSetPrevalidate("LabelItemDesc",&LLLineEditor::prevalidateASCIIPrintableNoPipe); -	//getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLSidepanelItemInfo:: onCommitDescription, this)); - +	getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLSidepanelItemInfo:: onCommitDescription, this));  	// Creator information  	getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickCreator,this)); -  	// owner information  	getChild<LLUICtrl>("BtnOwner")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickOwner,this)); - +	// acquired date +	// owner permissions +	// Permissions debug text +	// group permissions +	getChild<LLUICtrl>("CheckShareWithGroup")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitPermissions, this)); +	// everyone permissions +	getChild<LLUICtrl>("CheckEveryoneCopy")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitPermissions, this)); +	// next owner permissions +	getChild<LLUICtrl>("CheckNextOwnerModify")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitPermissions, this)); +	getChild<LLUICtrl>("CheckNextOwnerCopy")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitPermissions, this)); +	getChild<LLUICtrl>("CheckNextOwnerTransfer")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitPermissions, this)); +	// Mark for sale or not, and sale info +	getChild<LLUICtrl>("CheckPurchase")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitSaleInfo, this)); +	getChild<LLUICtrl>("RadioSaleType")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitSaleType, this)); +	// "Price" label for edit +	getChild<LLUICtrl>("Edit Cost")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitSaleInfo, this));  	refresh();  	return TRUE;  } diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 8d3dcf8a99..72ef383be9 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -31,8 +31,14 @@   */  #include "llviewerprecompiledheaders.h" -#include "llagent.h" +  #include "lltexlayer.h" + +#include "llagent.h" +#include "llimagej2c.h" +#include "llimagetga.h" +#include "llvfile.h" +#include "llvfs.h"  #include "llviewerstats.h"  #include "llviewerregion.h"  #include "llvoavatar.h" diff --git a/indra/newview/lltexlayerparams.cpp b/indra/newview/lltexlayerparams.cpp index 0c7e61d00e..d55468841d 100644 --- a/indra/newview/lltexlayerparams.cpp +++ b/indra/newview/lltexlayerparams.cpp @@ -30,11 +30,14 @@   */  #include "llviewerprecompiledheaders.h" + +#include "lltexlayerparams.h" +  #include "llagent.h" +#include "llimagetga.h"  #include "lltexlayer.h"  #include "llvoavatarself.h"  #include "llwearable.h" -#include "lltexlayerparams.h"  #include "llui.h"  //----------------------------------------------------------------------------- diff --git a/indra/newview/lltexlayerparams.h b/indra/newview/lltexlayerparams.h index 2b80dbdba4..93d01352d4 100644 --- a/indra/newview/lltexlayerparams.h +++ b/indra/newview/lltexlayerparams.h @@ -34,7 +34,11 @@  #include "llviewervisualparam.h" +class LLImageRaw; +class LLImageTGA;  class LLTexLayer; +class LLTexLayerInterface; +class LLViewerTexture;  class LLVOAvatar;  class LLWearable; diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h index bc9c988648..4203cbbc43 100644 --- a/indra/newview/lltexturecache.h +++ b/indra/newview/lltexturecache.h @@ -40,6 +40,7 @@  #include "llworkerthread.h" +class LLImageFormatted;  class LLTextureCacheWorker;  class LLTextureCache : public LLWorkerThread diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index e29c96bec4..85259fdc1e 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -43,8 +43,10 @@  #include "llhttpclient.h"  #include "llhttpstatuscodes.h"  #include "llimage.h" +#include "llimagej2c.h"  #include "llimageworker.h"  #include "llworkerthread.h" +#include "message.h"  #include "llagent.h"  #include "lltexturecache.h" diff --git a/indra/newview/lltexturestatsuploader.cpp b/indra/newview/lltexturestatsuploader.cpp index e0358e1fca..1df73db9b0 100644 --- a/indra/newview/lltexturestatsuploader.cpp +++ b/indra/newview/lltexturestatsuploader.cpp @@ -34,6 +34,8 @@  #include "lltexturestatsuploader.h" +#include "llhttpclient.h" +  LLTextureStatsUploader::LLTextureStatsUploader()  {  } diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index ed9e2e8818..b7add03e0e 100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp @@ -34,6 +34,7 @@  #include "lltoastimpanel.h"  #include "llnotifications.h" +#include "llinstantmessage.h"  const S32 LLToastIMPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT	= 6; diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 6b9bff7b9e..766cf83a01 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -38,6 +38,7 @@  #include "llviewercontrol.h"  // library includes +#include "lldbstrings.h"  #include "llnotifications.h"  #include "lluiconstants.h"  #include "llrect.h" diff --git a/indra/newview/lltoastpanel.cpp b/indra/newview/lltoastpanel.cpp index afb9e261b0..755e647777 100644 --- a/indra/newview/lltoastpanel.cpp +++ b/indra/newview/lltoastpanel.cpp @@ -80,7 +80,7 @@ void LLToastPanel::snapToMessageHeight(LLTextBase* message, S32 maxLineCount)  		//Knowing the height is set to max allowed, getTextPixelHeight returns needed text height  		//Perhaps we need to pass maxLineCount as parameter to getTextPixelHeight to avoid previous reshape. -		S32 requiredTextHeight = message->getContentsRect().getHeight(); +		S32 requiredTextHeight = message->getTextBoundingRect().getHeight();  		S32 newTextHeight = llmin(requiredTextHeight, maxTextHeight);  		//Calculate last delta height deducting previous heightDelta  diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 5ed8dc5fb9..74fbce890d 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -1243,8 +1243,6 @@ bool LLToolPie::handleMediaClick(const LLPickInfo& pick)  		return false;  	} - -  	// Does this face have media?  	const LLTextureEntry* tep = objectp->getTE(pick.mObjectFace);  	if(!tep) @@ -1257,11 +1255,11 @@ bool LLToolPie::handleMediaClick(const LLPickInfo& pick)  	viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL; -	if (gSavedSettings.getBOOL("MediaOnAPrimUI") -		&& media_impl.notNull()) +	if (gSavedSettings.getBOOL("MediaOnAPrimUI"))  	{ -		if (!LLViewerMediaFocus::getInstance()->isFocusedOnFace(pick.getObject(), pick.mObjectFace) ) +		if (!LLViewerMediaFocus::getInstance()->isFocusedOnFace(pick.getObject(), pick.mObjectFace) || media_impl.isNull())  		{ +			// It's okay to give this a null impl  			LLViewerMediaFocus::getInstance()->setFocusFace(pick.getObject(), pick.mObjectFace, media_impl, pick.mNormal);  		}  		else @@ -1445,28 +1443,29 @@ BOOL LLToolPie::pickRightMouseDownCallback()  	{  		LLParcelSelectionHandle selection = LLViewerParcelMgr::getInstance()->selectParcelAt( mPick.mPosGlobal );  		gMenuHolder->setParcelSelection(selection); -		gPieLand->show(x, y); +		gMenuLand->show(x, y);  		showVisualContextMenuEffect();  	}  	else if (mPick.mObjectID == gAgent.getID() )  	{ -		if(!gPieSelf)  +		if(!gMenuAvatarSelf)   		{  			//either at very early startup stage or at late quitting stage,  			//this event is ignored.  			return TRUE ;  		} -		gPieSelf->show(x, y); +		gMenuAvatarSelf->show(x, y);  	}  	else if (object)  	{  		gMenuHolder->setObjectSelection(LLSelectMgr::getInstance()->getSelection()); +		bool is_other_attachment = (object->isAttachment() && !object->isHUDAttachment() && !object->permYouOwner());  		if (object->isAvatar()  -			|| (object->isAttachment() && !object->isHUDAttachment() && !object->permYouOwner())) +			|| is_other_attachment)  		{  			// Find the attachment's avatar  			while( object && object->isAttachment()) @@ -1477,20 +1476,30 @@ BOOL LLToolPie::pickRightMouseDownCallback()  			// Object is an avatar, so check for mute by id.  			LLVOAvatar* avatar = (LLVOAvatar*)object;  			std::string name = avatar->getFullname(); +			std::string mute_msg;  			if (LLMuteList::getInstance()->isMuted(avatar->getID(), avatar->getFullname()))  			{ -				gMenuHolder->childSetText("Avatar Mute", std::string("Unmute")); // *TODO:Translate +				mute_msg = LLTrans::getString("UnmuteAvatar");  			}  			else  			{ -				gMenuHolder->childSetText("Avatar Mute", std::string("Mute")); // *TODO:Translate +				mute_msg = LLTrans::getString("MuteAvatar");  			} -			gPieAvatar->show(x, y); +			if (is_other_attachment) +			{ +				gMenuAttachmentOther->getChild<LLUICtrl>("Avatar Mute")->setValue(mute_msg); +				gMenuAttachmentOther->show(x, y); +			} +			else +			{ +				gMenuAvatarOther->getChild<LLUICtrl>("Avatar Mute")->setValue(mute_msg); +				gMenuAvatarOther->show(x, y); +			}  		}  		else if (object->isAttachment())  		{ -			gPieAttachment->show(x, y); +			gMenuAttachmentSelf->show(x, y);  		}  		else  		{ @@ -1501,16 +1510,18 @@ BOOL LLToolPie::pickRightMouseDownCallback()  			{  				name = node->mName;  			} +			std::string mute_msg;  			if (LLMuteList::getInstance()->isMuted(object->getID(), name))  			{ -				gMenuHolder->childSetText("Object Mute", std::string("Unmute")); // *TODO:Translate +				mute_msg = LLTrans::getString("UnmuteObject");  			}  			else  			{ -				gMenuHolder->childSetText("Object Mute", std::string("Mute")); // *TODO:Translate +				mute_msg = LLTrans::getString("MuteObject");  			} -			gPieObject->show(x, y); +			gMenuHolder->childSetText("Object Mute", mute_msg); +			gMenuObject->show(x, y);  			showVisualContextMenuEffect();  		} diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp index f8c82f8b22..0b6bd4b401 100644 --- a/indra/newview/llurldispatcher.cpp +++ b/indra/newview/llurldispatcher.cpp @@ -41,6 +41,7 @@  #include "llfloaterurldisplay.h"  #include "llfloaterworldmap.h"  #include "llpanellogin.h" +#include "llregionhandle.h"  #include "llsidetray.h"  #include "llslurl.h"  #include "llstartup.h"			// gStartupState diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp index a041f3ac98..bb49804aff 100644 --- a/indra/newview/llviewerassetstorage.cpp +++ b/indra/newview/llviewerassetstorage.cpp @@ -32,12 +32,13 @@  #include "llviewerprecompiledheaders.h" -#include "linden_common.h" - -#include "llagent.h"  #include "llviewerassetstorage.h" +  #include "llvfile.h"  #include "llvfs.h" +#include "message.h" + +#include "llagent.h"  LLViewerAssetStorage::LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,  										   LLVFS *vfs, const LLHost &upstream_host) diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 5b733ed817..68a5147bc7 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -1009,10 +1009,10 @@ void render_hud_attachments()  	glh_set_current_modelview(current_mod);  } -BOOL setup_hud_matrices() +LLRect get_whole_screen_region()  {  	LLRect whole_screen = gViewerWindow->getWindowRectScaled(); - +	  	// apply camera zoom transform (for high res screenshots)  	F32 zoom_factor = LLViewerCamera::getInstance()->getZoomFactor();  	S16 sub_region = LLViewerCamera::getInstance()->getZoomSubRegion(); @@ -1024,52 +1024,43 @@ BOOL setup_hud_matrices()  		int tile_y = sub_region / num_horizontal_tiles;  		int tile_x = sub_region - (tile_y * num_horizontal_tiles);  		glh::matrix4f mat; - +		  		whole_screen.setLeftTopAndSize(tile_x * tile_width, gViewerWindow->getWindowHeightScaled() - (tile_y * tile_height), tile_width, tile_height);  	} - -	return setup_hud_matrices(whole_screen); +	return whole_screen;  } -BOOL setup_hud_matrices(const LLRect& screen_region) +bool get_hud_matrices(const LLRect& screen_region, glh::matrix4f &proj, glh::matrix4f &model)  {  	LLVOAvatar* my_avatarp = gAgent.getAvatarObject();  	if (my_avatarp && my_avatarp->hasHUDAttachment())  	{  		F32 zoom_level = gAgent.mHUDCurZoom;  		LLBBox hud_bbox = my_avatarp->getHUDBBox(); - -		// set up transform to keep HUD objects in front of camera -		glMatrixMode(GL_PROJECTION); +		  		F32 hud_depth = llmax(1.f, hud_bbox.getExtentLocal().mV[VX] * 1.1f); -		glh::matrix4f proj = gl_ortho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, hud_depth); +		proj = gl_ortho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, hud_depth);  		proj.element(2,2) = -0.01f; - +		  		F32 aspect_ratio = LLViewerCamera::getInstance()->getAspect(); - +		  		glh::matrix4f mat;  		F32 scale_x = (F32)gViewerWindow->getWindowWidthScaled() / (F32)screen_region.getWidth();  		F32 scale_y = (F32)gViewerWindow->getWindowHeightScaled() / (F32)screen_region.getHeight();  		mat.set_scale(glh::vec3f(scale_x, scale_y, 1.f));  		mat.set_translate(  			glh::vec3f(clamp_rescale((F32)screen_region.getCenterX(), 0.f, (F32)gViewerWindow->getWindowWidthScaled(), 0.5f * scale_x * aspect_ratio, -0.5f * scale_x * aspect_ratio), -						clamp_rescale((F32)screen_region.getCenterY(), 0.f, (F32)gViewerWindow->getWindowHeightScaled(), 0.5f * scale_y, -0.5f * scale_y), -						0.f)); +					   clamp_rescale((F32)screen_region.getCenterY(), 0.f, (F32)gViewerWindow->getWindowHeightScaled(), 0.5f * scale_y, -0.5f * scale_y), +					   0.f));  		proj *= mat; - -		glLoadMatrixf(proj.m); -		glh_set_current_projection(proj); - -		glMatrixMode(GL_MODELVIEW); -		glh::matrix4f model((GLfloat*) OGL_TO_CFR_ROTATION); +		 +		glh::matrix4f tmp_model((GLfloat*) OGL_TO_CFR_ROTATION);  		mat.set_scale(glh::vec3f(zoom_level, zoom_level, zoom_level));  		mat.set_translate(glh::vec3f(-hud_bbox.getCenterLocal().mV[VX] + (hud_depth * 0.5f), 0.f, 0.f)); - -		model *= mat; -		glLoadMatrixf(model.m); -		glh_set_current_modelview(model); - +		 +		tmp_model *= mat; +		model = tmp_model;		  		return TRUE;  	}  	else @@ -1078,6 +1069,35 @@ BOOL setup_hud_matrices(const LLRect& screen_region)  	}  } +bool get_hud_matrices(glh::matrix4f &proj, glh::matrix4f &model) +{ +	LLRect whole_screen = get_whole_screen_region(); +	return get_hud_matrices(whole_screen, proj, model); +} + +BOOL setup_hud_matrices() +{ +	LLRect whole_screen = get_whole_screen_region(); +	return setup_hud_matrices(whole_screen); +} + +BOOL setup_hud_matrices(const LLRect& screen_region) +{ +	glh::matrix4f proj, model; +	bool result = get_hud_matrices(screen_region, proj, model); +	if (!result) return result; +	 +	// set up transform to keep HUD objects in front of camera +	glMatrixMode(GL_PROJECTION); +	glLoadMatrixf(proj.m); +	glh_set_current_projection(proj); +	 +	glMatrixMode(GL_MODELVIEW); +	glLoadMatrixf(model.m); +	glh_set_current_modelview(model); +	return TRUE; +} +  static LLFastTimer::DeclareTimer FTM_SWAP("Swap");  void render_ui(F32 zoom_factor, int subfield) diff --git a/indra/newview/llviewergenericmessage.h b/indra/newview/llviewergenericmessage.h index 6e1f0945b8..6b0a2e5d81 100644 --- a/indra/newview/llviewergenericmessage.h +++ b/indra/newview/llviewergenericmessage.h @@ -36,6 +36,7 @@  class LLUUID;  class LLDispatcher; +class LLMessageSystem;  void send_generic_message(const std::string& method, diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 645a73c502..5605f425e0 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -518,7 +518,7 @@ bool LLViewerInventoryCategory::fetchDescendents()  		std::string url = gAgent.getRegion()->getCapability("WebFetchInventoryDescendents");  		if (!url.empty()) //Capability found.  Build up LLSD and use it.  		{ -			LLInventoryModel::startBackgroundFetch(mUUID);			 +			gInventory.startBackgroundFetch(mUUID);			  		}  		else  		{	//Deprecated, but if we don't have a capability, use the old system. diff --git a/indra/newview/llviewerjoint.h b/indra/newview/llviewerjoint.h index 0e993a2ebe..08c4ec36fd 100644 --- a/indra/newview/llviewerjoint.h +++ b/indra/newview/llviewerjoint.h @@ -37,7 +37,6 @@  // Header Files  //-----------------------------------------------------------------------------  #include "lljoint.h" -#include "llapr.h"  class LLFace;  class LLViewerJointMesh; diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h index 543679c44b..d62b0ada85 100644 --- a/indra/newview/llviewerjointmesh.h +++ b/indra/newview/llviewerjointmesh.h @@ -37,7 +37,6 @@  #include "llviewertexture.h"  #include "llpolymesh.h"  #include "v4color.h" -#include "llapr.h"  class LLDrawable;  class LLFace; diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 57e4ed0c1e..367c0c8343 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -249,6 +249,7 @@ static LLViewerMedia::impl_id_map sViewerMediaTextureIDMap;  static LLTimer sMediaCreateTimer;  static const F32 LLVIEWERMEDIA_CREATE_DELAY = 1.0f;  static F32 sGlobalVolume = 1.0f; +static F64 sLowestLoadableImplInterest = 0.0f;  //////////////////////////////////////////////////////////////////////////////////////////  static void add_media_impl(LLViewerMediaImpl* media) @@ -558,6 +559,26 @@ bool LLViewerMedia::getInWorldMediaDisabled()  	return sInWorldMediaDisabled;  } +////////////////////////////////////////////////////////////////////////////////////////// +// static +bool LLViewerMedia::isInterestingEnough(const LLUUID &object_id, const F64 &object_interest) +{ +	bool result = false; +	 +	if (LLViewerMediaFocus::getInstance()->getFocusedObjectID() == object_id) +	{ +		result = true; +	} +	else  +	{ +		llinfos << "object interest = " << object_interest << ", lowest loadable = " << sLowestLoadableImplInterest << llendl; +		if(object_interest > sLowestLoadableImplInterest) +			result = true; +	} +	 +	return result; +} +  LLViewerMedia::impl_list &LLViewerMedia::getPriorityList()  {  	return sViewerMediaImplList; @@ -683,6 +704,8 @@ void LLViewerMedia::updateMedia(void *dummy_arg)  	// Setting max_cpu to 0.0 disables CPU usage checking.  	bool check_cpu_usage = (max_cpu != 0.0f); +	LLViewerMediaImpl* lowest_interest_loadable = NULL; +	  	// Notes on tweakable params:  	// max_instances must be set high enough to allow the various instances used in the UI (for the help browser, search, etc.) to be loaded.  	// If max_normal + max_low is less than max_instances, things will tend to get unloaded instead of being set to slideshow. @@ -769,6 +792,9 @@ void LLViewerMedia::updateMedia(void *dummy_arg)  		if(!pimpl->getUsedInUI() && (new_priority != LLPluginClassMedia::PRIORITY_UNLOADED))  		{ +			// This is a loadable inworld impl -- the last one in the list in this class defines the lowest loadable interest. +			lowest_interest_loadable = pimpl; +			  			impl_count_total++;  		} @@ -799,6 +825,22 @@ void LLViewerMedia::updateMedia(void *dummy_arg)  		total_cpu += pimpl->getCPUUsage();  	} + +	// Re-calculate this every time. +	sLowestLoadableImplInterest	= 0.0f; + +	// Only do this calculation if we've hit the impl count limit -- up until that point we always need to load media data. +	if(lowest_interest_loadable && (impl_count_total >= (int)max_instances)) +	{ +		// Get the interest value of this impl's object for use by isInterestingEnough +		LLVOVolume *object = lowest_interest_loadable->getSomeObject(); +		if(object) +		{ +			// NOTE: Don't use getMediaInterest() here.  We want the pixel area, not the total media interest, +			// 		so that we match up with the calculation done in LLMediaDataClient. +			sLowestLoadableImplInterest = object->getPixelArea(); +		} +	}  	if(gSavedSettings.getBOOL("MediaPerformanceManagerDebug"))  	{ diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 349a66867a..26b822aba6 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -112,6 +112,8 @@ class LLViewerMedia  		static void setInWorldMediaDisabled(bool disabled);  		static bool getInWorldMediaDisabled(); +		static bool isInterestingEnough(const LLUUID& object_id, const F64 &object_interest); +	  		// Returns the priority-sorted list of all media impls.  		static impl_list &getPriorityList(); diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index f639c841e7..e04a54fbd6 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -144,9 +144,19 @@ void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 fac  		}  		mFocusedImplID = LLUUID::null; -		mFocusedObjectID = LLUUID::null; -		mFocusedObjectFace = 0; +		if (objectp.notNull()) +		{ +			// Still record the focused object...it may mean we need to load media data. +			// This will aid us in determining this object is "important enough" +			mFocusedObjectID = objectp->getID(); +			mFocusedObjectFace = face; +		} +		else { +			mFocusedObjectID = LLUUID::null; +			mFocusedObjectFace = 0; +		}  	} +	  }  void LLViewerMediaFocus::clearFocus() @@ -336,7 +346,7 @@ BOOL LLViewerMediaFocus::handleScrollWheel(S32 x, S32 y, S32 clicks)  void LLViewerMediaFocus::update()  { -	if(mFocusedImplID.notNull() || mFocusedObjectID.notNull()) +	if(mFocusedImplID.notNull())  	{  		// We have a focused impl/face.  		if(!getFocus()) diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 36d9e7935f..0be0b56bc3 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -134,11 +134,12 @@ LLMenuGL		*gPopupMenuView = NULL;  LLMenuBarGL		*gLoginMenuBarView = NULL;  // Pie menus -LLContextMenu	*gPieSelf	= NULL; -LLContextMenu	*gPieAvatar = NULL; -LLContextMenu	*gPieObject = NULL; -LLContextMenu	*gPieAttachment = NULL; -LLContextMenu	*gPieLand	= NULL; +LLContextMenu	*gMenuAvatarSelf	= NULL; +LLContextMenu	*gMenuAvatarOther = NULL; +LLContextMenu	*gMenuObject = NULL; +LLContextMenu	*gMenuAttachmentSelf = NULL; +LLContextMenu	*gMenuAttachmentOther = NULL; +LLContextMenu	*gMenuLand	= NULL;  const std::string SAVE_INTO_INVENTORY("Save Object Back to My Inventory");  const std::string SAVE_INTO_TASK_INVENTORY("Save Object Back to Object Contents"); @@ -146,7 +147,6 @@ const std::string SAVE_INTO_TASK_INVENTORY("Save Object Back to Object Contents"  LLMenuGL* gAttachSubMenu = NULL;  LLMenuGL* gDetachSubMenu = NULL;  LLMenuGL* gTakeOffClothes = NULL; -LLContextMenu* gPieRate = NULL;  LLContextMenu* gAttachScreenPieMenu = NULL;  LLContextMenu* gAttachPieMenu = NULL;  LLContextMenu* gAttachBodyPartPieMenus[8]; @@ -376,25 +376,31 @@ void init_menus()  	gMenuHolder->addChild( gPopupMenuView );  	/// -	/// Pie menus +	/// Context menus  	/// -	gPieSelf = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>("menu_pie_self.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); +	const widget_registry_t& registry = +		LLViewerMenuHolderGL::child_registry_t::instance(); +	gMenuAvatarSelf = LLUICtrlFactory::createFromFile<LLContextMenu>( +		"menu_avatar_self.xml", gMenuHolder, registry); +	gMenuAvatarOther = LLUICtrlFactory::createFromFile<LLContextMenu>( +		"menu_avatar_other.xml", gMenuHolder, registry); -	// TomY TODO: what shall we do about these?  	gDetachScreenPieMenu = gMenuHolder->getChild<LLContextMenu>("Object Detach HUD", true);  	gDetachPieMenu = gMenuHolder->getChild<LLContextMenu>("Object Detach", true); -	gPieAvatar = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>("menu_pie_avatar.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); - -	gPieObject = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>("menu_pie_object.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); +	gMenuObject = LLUICtrlFactory::createFromFile<LLContextMenu>( +		"menu_object.xml", gMenuHolder, registry);  	gAttachScreenPieMenu = gMenuHolder->getChild<LLContextMenu>("Object Attach HUD");  	gAttachPieMenu = gMenuHolder->getChild<LLContextMenu>("Object Attach"); -	gPieRate = gMenuHolder->getChild<LLContextMenu>("Rate Menu"); -	gPieAttachment = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>("menu_pie_attachment.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); +	gMenuAttachmentSelf = LLUICtrlFactory::createFromFile<LLContextMenu>( +		"menu_attachment_self.xml", gMenuHolder, registry); +	gMenuAttachmentOther = LLUICtrlFactory::createFromFile<LLContextMenu>( +		"menu_attachment_other.xml", gMenuHolder, registry); -	gPieLand = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>("menu_pie_land.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); +	gMenuLand = LLUICtrlFactory::createFromFile<LLContextMenu>( +		"menu_land.xml", gMenuHolder, registry);  	///  	/// set up the colors @@ -403,12 +409,13 @@ void init_menus()  	LLColor4 context_menu_color = LLUIColorTable::instance().getColor("MenuPopupBgColor"); -	gPieSelf->setBackgroundColor( context_menu_color ); -	gPieAvatar->setBackgroundColor( context_menu_color ); -	gPieObject->setBackgroundColor( context_menu_color ); -	gPieAttachment->setBackgroundColor( context_menu_color ); +	gMenuAvatarSelf->setBackgroundColor( context_menu_color ); +	gMenuAvatarOther->setBackgroundColor( context_menu_color ); +	gMenuObject->setBackgroundColor( context_menu_color ); +	gMenuAttachmentSelf->setBackgroundColor( context_menu_color ); +	gMenuAttachmentOther->setBackgroundColor( context_menu_color ); -	gPieLand->setBackgroundColor( context_menu_color ); +	gMenuLand->setBackgroundColor( context_menu_color );  	color = LLUIColorTable::instance().getColor( "MenuPopupBgColor" );  	gPopupMenuView->setBackgroundColor( color ); @@ -2263,20 +2270,23 @@ void cleanup_menus()  	delete gMenuParcelObserver;  	gMenuParcelObserver = NULL; -	delete gPieSelf; -	gPieSelf = NULL; +	delete gMenuAvatarSelf; +	gMenuAvatarSelf = NULL; + +	delete gMenuAvatarOther; +	gMenuAvatarOther = NULL; -	delete gPieAvatar; -	gPieAvatar = NULL; +	delete gMenuObject; +	gMenuObject = NULL; -	delete gPieObject; -	gPieObject = NULL; +	delete gMenuAttachmentSelf; +	gMenuAttachmentSelf = NULL; -	delete gPieAttachment; -	gPieAttachment = NULL; +	delete gMenuAttachmentOther; +	gMenuAttachmentSelf = NULL; -	delete gPieLand; -	gPieLand = NULL; +	delete gMenuLand; +	gMenuLand = NULL;  	delete gMenuBarView;  	gMenuBarView = NULL; @@ -4911,7 +4921,7 @@ class LLEditDelete : public view_listener_t  		// When deleting an object we may not actually be done  		// Keep selection so we know what to delete when confirmation is needed about the delete -		gPieObject->hide(); +		gMenuObject->hide();  		return true;  	}  }; @@ -4944,7 +4954,7 @@ void handle_object_delete()  		// When deleting an object we may not actually be done  		// Keep selection so we know what to delete when confirmation is needed about the delete -		gPieObject->hide(); +		gMenuObject->hide();  		return;  } @@ -6006,7 +6016,7 @@ public:  protected:  	virtual void done()  	{ -		gPieAttachment->buildDrawLabels(); +		gMenuAttachmentSelf->buildDrawLabels();  		gInventory.removeObserver(this);  		delete this;  	} diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h index 01a6b34170..d3c34f0de4 100644 --- a/indra/newview/llviewermenu.h +++ b/indra/newview/llviewermenu.h @@ -36,6 +36,7 @@  #include "llmenugl.h"  #include "llsafehandle.h" +class LLMessageSystem;  class LLSD;  class LLUICtrl;  class LLView; @@ -160,21 +161,13 @@ extern LLMenuGL*		gPopupMenuView;  extern LLViewerMenuHolderGL*	gMenuHolder;  extern LLMenuBarGL*		gLoginMenuBarView; -// Pie menus -extern LLContextMenu		*gPieSelf; -extern LLContextMenu		*gPieAvatar; -extern LLContextMenu		*gPieObject; -extern LLContextMenu		*gPieAttachment; - -extern LLContextMenu		*gPieLand; -extern LLContextMenu		*gPieRate; - -// Pie menus -extern LLContextMenu	*gPieSelfSimple; -extern LLContextMenu	*gPieAvatarSimple; -extern LLContextMenu	*gPieObjectSimple; -extern LLContextMenu	*gPieAttachmentSimple; -extern LLContextMenu	*gPieLandSimple; +// Context menus in 3D scene +extern LLContextMenu		*gMenuAvatarSelf; +extern LLContextMenu		*gMenuAvatarOther; +extern LLContextMenu		*gMenuObject; +extern LLContextMenu		*gMenuAttachmentSelf; +extern LLContextMenu		*gMenuAttachmentOther; +extern LLContextMenu		*gMenuLand;  // Needed to build menus when attachment site list available  extern LLMenuGL* gAttachSubMenu; diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index a1c3806b27..48794bbc1a 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -40,6 +40,12 @@  #include "llfloaterreg.h"  #include "llfloaterbuycurrency.h"  #include "llfloatersnapshot.h" +#include "llimage.h"
 +#include "llimagebmp.h"
 +#include "llimagepng.h"
 +#include "llimagej2c.h"
 +#include "llimagejpeg.h"
 +#include "llimagetga.h"
  #include "llinventorymodel.h"	// gInventory  #include "llresourcedata.h"  #include "llfloaterperms.h" @@ -47,6 +53,8 @@  #include "llviewercontrol.h"	// gSavedSettings  #include "llviewertexturelist.h"  #include "lluictrlfactory.h" +#include "llvfile.h" +#include "llvfs.h"  #include "llviewerinventory.h"  #include "llviewermenu.h"	// gMenuHolder  #include "llviewerregion.h" @@ -67,6 +75,7 @@  #include "lltransactiontypes.h"  #include "lluuid.h"  #include "llvorbisencode.h" +#include "message.h"  // system libraries  #include <boost/tokenizer.hpp> diff --git a/indra/newview/llviewermenufile.h b/indra/newview/llviewermenufile.h index da78537a29..1e6d13f1c6 100644 --- a/indra/newview/llviewermenufile.h +++ b/indra/newview/llviewermenufile.h @@ -34,6 +34,7 @@  #define LLVIEWERMENUFILE_H  #include "llfoldertype.h" +#include "llassetstorage.h"  #include "llinventorytype.h"  class LLTransactionID; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 487db16e6e..ea40f2aae1 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -38,8 +38,14 @@  #include "lleconomy.h"  #include "llfloaterreg.h"  #include "llfollowcamparams.h" +#include "llregionhandle.h"  #include "llsdserialize.h" +#include "llteleportflags.h"  #include "lltransactionflags.h" +#include "llvfile.h" +#include "llvfs.h" +#include "llxfermanager.h" +#include "mean_collision_data.h"  #include "llagent.h"  #include "llcallingcard.h" diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h index 1a98828010..8404d6fde0 100644 --- a/indra/newview/llviewermessage.h +++ b/indra/newview/llviewermessage.h @@ -33,10 +33,12 @@  #ifndef LL_LLVIEWERMESSAGE_H  #define LL_LLVIEWERMESSAGE_H +#include "llassettype.h"  #include "llinstantmessage.h"  #include "llpointer.h"  #include "lltransactiontypes.h"  #include "lluuid.h" +#include "message.h"  #include "stdenums.h"  // @@ -47,6 +49,7 @@ class LLInventoryObject;  class LLInventoryItem;  class LLMeanCollisionData;  class LLMessageSystem; +class LLVFS;  class LLViewerObject;  class LLViewerRegion; diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp index 801c46035a..d7b55d7e97 100644 --- a/indra/newview/llviewernetwork.cpp +++ b/indra/newview/llviewernetwork.cpp @@ -34,8 +34,11 @@  #include "llviewerprecompiledheaders.h"  #include "llviewernetwork.h" -#include "llviewercontrol.h" +  #include "llevents.h" +#include "net.h" + +#include "llviewercontrol.h"  #include "lllogin.h"  struct LLGridData diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h index 6a0ad5757f..50f905416c 100644 --- a/indra/newview/llviewerprecompiledheaders.h +++ b/indra/newview/llviewerprecompiledheaders.h @@ -41,17 +41,6 @@  #include "linden_common.h" -// We may want to take the windows.h include out, but it used to be in  -// linden_common.h, and hence in all the libraries.  This is better. JC -#if LL_WINDOWS -	// Limit Windows API to small and manageable set. -	// If you get undefined symbols, find the appropriate -	// Windows header file and include that in your .cpp file. -	#define WIN32_LEAN_AND_MEAN -	#include <winsock2.h> -	#include <windows.h> -#endif -  // Work around stupid Microsoft STL warning  #ifdef LL_WINDOWS  #pragma warning (disable : 4702) // warning C4702: unreachable code @@ -76,21 +65,14 @@  //#include "llpreprocessor.h"  #include "llallocator.h"  #include "llapp.h" -#include "llapr.h"  #include "llcriticaldamp.h" -//#include "lldarray.h" -//#include "lldarrayptr.h"  #include "lldefs.h"  #include "lldepthstack.h" -//#include "lldqueueptr.h" -#include "llendianswizzle.h"  #include "llerror.h"  #include "llfasttimer.h"  #include "llframetimer.h"  #include "llhash.h"  #include "lllocalidhashmap.h" -#include "llmap.h" -//#include "llmemory.h"  #include "llnametable.h"  #include "llpointer.h"  #include "llpriqueuemap.h" @@ -100,7 +82,6 @@  //#include "llsecondlifeurls.h"  #include "llsd.h"  #include "llsingleton.h" -#include "llstack.h"  #include "llstat.h"  #include "llstl.h"  #include "llstrider.h" @@ -117,19 +98,7 @@  #include "timing.h"  #include "u64.h" -// Library includes from llimage -//#include "llblockdata.h" -#include "llimage.h" -#include "llimagebmp.h" -#include "llimagepng.h" -#include "llimagej2c.h" -#include "llimagejpeg.h" -#include "llimagetga.h" -#include "llmapimagetype.h" -  // Library includes from llmath project -//#include "camera.h" -//#include "coordframe.h"  #include "llmath.h"  #include "llbboxlocal.h"  #include "llcamera.h" @@ -157,80 +126,11 @@  ////#include "vmath.h"  #include "xform.h" -// Library includes from llmessage project -//#include "llassetstorage.h" -#include "llcachename.h" -#include "llcircuit.h" -#include "lldatapacker.h" -#include "lldbstrings.h" -#include "lldispatcher.h" -#include "lleventflags.h" -#include "llhost.h" -#include "llinstantmessage.h" -#include "llinvite.h" -//#include "llloginflags.h" -#include "llmail.h" -#include "llmessagethrottle.h" -#include "llnamevalue.h" -#include "llpacketack.h" -#include "llpacketbuffer.h" -#include "llpacketring.h" -#include "llpartdata.h" -//#include "llqueryflags.h" -//#include "llregionflags.h" -#include "llregionhandle.h" -#include "lltaskname.h" -#include "llteleportflags.h" -#include "llthrottle.h" -#include "lltransfermanager.h" -#include "lltransfersourceasset.h" -#include "lltransfersourcefile.h" -#include "lltransfertargetfile.h" -#include "lltransfertargetvfile.h" -#include "lluseroperation.h" -#include "llvehicleparams.h" -#include "llxfer.h" -#include "llxfer_file.h" -#include "llxfer_mem.h" -#include "llxfer_vfile.h" -#include "llxfermanager.h" -#include "machine.h" -#include "mean_collision_data.h" -#include "message.h" -#include "message_prehash.h" -#include "net.h" -//#include "network.h" -#include "partsyspacket.h" -#include "patch_code.h" -#include "patch_dct.h" -#include "sound_ids.h" - -// Builds work with all headers below commented out as of 2009-09-10 JC - -// Library includes from llprimitive -#include "imageids.h" -#include "legacy_object_types.h" -#include "llmaterialtable.h" -//#include "llprimitive.h" -#include "lltextureanim.h" -//#include "lltextureentry.h" -#include "lltreeparams.h" -//#include "llvolume.h" -#include "llvolumemgr.h" -#include "material_codes.h" -  // Library includes from llvfs -#include "llassettype.h"  #include "lldir.h" -//#include "lldir_linux.h" -//#include "lldir_mac.h" -//#include "lldir_win32.h" -#include "llvfile.h" -#include "llvfs.h" -// Library includes from llui -// In skinning-7, llui.h dependencies are changing too often. -//#include "llui.h" +// Library includes from llmessage project +#include "llcachename.h"  // llxuixml  #include "llinitparam.h" diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index 939d5e3970..a1a3bc6d6a 100644 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -39,6 +39,7 @@  #include "llfloaterreg.h"  #include "llmemory.h"  #include "lltimer.h" +#include "llvfile.h"  #include "llappviewer.h" diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index a5a40e9c2c..b45148a186 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -108,6 +108,19 @@ const F64 log_2 = log(2.0);  //----------------------------------------------------------------------------------------------  //namespace: LLViewerTextureAccess  //---------------------------------------------------------------------------------------------- + +LLLoadedCallbackEntry::LLLoadedCallbackEntry(loaded_callback_func cb, +					  S32 discard_level, +					  BOOL need_imageraw, // Needs image raw for the callback +					  void* userdata )  +	: mCallback(cb), +	  mLastUsedDiscard(MAX_DISCARD_LEVEL+1), +	  mDesiredDiscard(discard_level), +	  mNeedsImageRaw(need_imageraw), +	  mUserData(userdata) +{ +} +  LLViewerMediaTexture* LLViewerTextureManager::createMediaTexture(const LLUUID &media_id, BOOL usemipmaps, LLImageGL* gl_image)  {  	return new LLViewerMediaTexture(media_id, usemipmaps, gl_image) ;		 diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index 141979052d..d6fbd5d570 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -49,12 +49,14 @@  class LLFace;  class LLImageGL ; +class LLImageRaw;  class LLViewerObject;  class LLViewerTexture;  class LLViewerFetchedTexture ;  class LLViewerMediaTexture ;  class LLTexturePipelineTester ; +  typedef	void	(*loaded_callback_func)( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata );  class LLVFile; @@ -68,14 +70,7 @@ public:  	LLLoadedCallbackEntry(loaded_callback_func cb,  						  S32 discard_level,  						  BOOL need_imageraw, // Needs image raw for the callback -						  void* userdata )  -		: mCallback(cb), -		  mLastUsedDiscard(MAX_DISCARD_LEVEL+1), -		  mDesiredDiscard(discard_level), -		  mNeedsImageRaw(need_imageraw), -		  mUserData(userdata) -	{ -	} +						  void* userdata );  	loaded_callback_func	mCallback;  	S32						mLastUsedDiscard; diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index 028f8441ab..ab55bfd04d 100644 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -53,6 +53,7 @@ const BOOL GL_TEXTURE_NO = FALSE;  const BOOL IMMEDIATE_YES = TRUE;  const BOOL IMMEDIATE_NO = FALSE; +class LLImageJ2C;  class LLMessageSystem;  class LLTextureView; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 944fddbb50..9cacdaa3f9 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -32,6 +32,8 @@  #include "llviewerprecompiledheaders.h" +#include "llviewerwindow.h" +  #if LL_WINDOWS  #pragma warning (disable : 4355) // 'this' used in initializer list: yes, intentionally  #endif @@ -46,7 +48,6 @@  #include "llpanellogin.h"  #include "llviewerkeyboard.h"  #include "llviewermenu.h" -#include "llviewerwindow.h"  #include "llviewquery.h"  #include "llxmltree.h" @@ -257,19 +258,21 @@ public:  	virtual void recordMessage(LLError::ELevel level,  								const std::string& message)  	{ -		// only log warnings to chat console -		if (level == LLError::LEVEL_WARN) -		{ -			LLFloaterChat* chat_floater = LLFloaterReg::findTypedInstance<LLFloaterChat>("chat"); -			if (chat_floater && gSavedSettings.getBOOL("WarningsAsChat")) -			{ -				LLChat chat; -				chat.mText = message; -				chat.mSourceType = CHAT_SOURCE_SYSTEM; +		//FIXME: this is NOT thread safe, and will do bad things when a warning is issued from a non-UI thread -				chat_floater->addChat(chat, FALSE, FALSE); -			} -		} +		// only log warnings to chat console +		//if (level == LLError::LEVEL_WARN) +		//{ +			//LLFloaterChat* chat_floater = LLFloaterReg::findTypedInstance<LLFloaterChat>("chat"); +			//if (chat_floater && gSavedSettings.getBOOL("WarningsAsChat")) +			//{ +			//	LLChat chat; +			//	chat.mText = message; +			//	chat.mSourceType = CHAT_SOURCE_SYSTEM; + +			//	chat_floater->addChat(chat, FALSE, FALSE); +			//} +		//}  	}  }; @@ -3131,7 +3134,6 @@ void LLViewerWindow::pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback  		return;  	} -	// push back pick info object  	BOOL in_build_mode = LLFloaterReg::instanceVisible("build");  	if (in_build_mode || LLDrawPoolAlpha::sShowDebugAlpha)  	{ @@ -3140,27 +3142,8 @@ void LLViewerWindow::pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback  		pick_transparent = TRUE;  	} -	// center initial pick frame buffer region under mouse cursor -	// since that area is guaranteed to be onscreen and hence a valid -	// part of the framebuffer -	if (mPicks.empty()) -	{ -		mPickScreenRegion.setCenterAndSize(x, y_from_bot, PICK_DIAMETER, PICK_DIAMETER); - -		if (mPickScreenRegion.mLeft < mWorldViewRectScaled.mLeft) mPickScreenRegion.translate(mWorldViewRectScaled.mLeft - mPickScreenRegion.mLeft, 0); -		if (mPickScreenRegion.mBottom < mWorldViewRectScaled.mBottom) mPickScreenRegion.translate(0, mWorldViewRectScaled.mBottom - mPickScreenRegion.mBottom); -		if (mPickScreenRegion.mRight > mWorldViewRectScaled.mRight ) mPickScreenRegion.translate(mWorldViewRectScaled.mRight - mPickScreenRegion.mRight, 0); -		if (mPickScreenRegion.mTop > mWorldViewRectScaled.mTop ) mPickScreenRegion.translate(0, mWorldViewRectScaled.mTop - mPickScreenRegion.mTop); -	} - -	// set frame buffer region for picking results -	// stack multiple picks left to right -	LLRect screen_region = mPickScreenRegion; -	screen_region.translate(mPicks.size() * PICK_DIAMETER, 0); - -	LLPickInfo pick(LLCoordGL(x, y_from_bot), screen_region, mask, pick_transparent, TRUE, callback); - -	schedulePick(pick); +	LLPickInfo pick_info(LLCoordGL(x, y_from_bot), mask, pick_transparent, TRUE, callback); +	schedulePick(pick_info);  }  void LLViewerWindow::schedulePick(LLPickInfo& pick_info) @@ -3175,10 +3158,11 @@ void LLViewerWindow::schedulePick(LLPickInfo& pick_info)  		return;  	} -	llassert_always(pick_info.mScreenRegion.notEmpty());  	mPicks.push_back(pick_info);  	// delay further event processing until we receive results of pick +	// only do this for async picks so that handleMouseUp won't be called +	// until the pick triggered in handleMouseDown has been processed, for example  	mWindow->delayInputProcessing();  } @@ -3226,20 +3210,18 @@ LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot,  BOOL pick_trans  		return LLPickInfo();  	} -	pickAsync(x, y_from_bot, gKeyboard->currentMask(TRUE), NULL, pick_transparent); -	// assume that pickAsync put the results in the back of the mPicks list -	if(mPicks.size() != 0) -	{ -		mLastPick = mPicks.back(); -		mLastPick.fetchResults(); -		mPicks.pop_back(); -	} -	else +	BOOL in_build_mode = LLFloaterReg::instanceVisible("build"); +	if (in_build_mode || LLDrawPoolAlpha::sShowDebugAlpha)  	{ -		lldebugs << "List of last picks is empty: Using stub pick" << llendl; -		mLastPick = LLPickInfo(); +		// build mode allows interaction with all transparent objects +		// "Show Debug Alpha" means no object actually transparent +		pick_transparent = TRUE;  	} +	// shortcut queueing in mPicks and just update mLastPick in place +	mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), gKeyboard->currentMask(TRUE), pick_transparent, TRUE, NULL); +	mLastPick.fetchResults(); +  	return mLastPick;  } @@ -4886,13 +4868,11 @@ LLPickInfo::LLPickInfo()  }  LLPickInfo::LLPickInfo(const LLCoordGL& mouse_pos,  -					   const LLRect& screen_region,  						MASK keyboard_mask,   						BOOL pick_transparent,  						BOOL pick_uv_coords,  						void (*pick_callback)(const LLPickInfo& pick_info))  	: mMousePt(mouse_pos), -	  mScreenRegion(screen_region),  	  mKeyMask(keyboard_mask),  	  mPickCallback(pick_callback),  	  mPickType(PICK_INVALID), diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 1d564a1338..b488276a18 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -50,6 +50,7 @@  #include "llmousehandler.h"  #include "llcursortypes.h"  #include "llhandle.h" +#include "llimage.h"  #include <boost/function.hpp>  #include <boost/signals2.hpp> @@ -88,7 +89,6 @@ public:  public:  	LLPickInfo();  	LLPickInfo(const LLCoordGL& mouse_pos,  -		const LLRect& screen_region,  		MASK keyboard_mask,   		BOOL pick_transparent,   		BOOL pick_surface_info, @@ -120,7 +120,6 @@ public:  	LLVector3		mNormal;  	LLVector3		mBinormal;  	BOOL			mPickTransparent; -	LLRect			mScreenRegion;  	void		    getSurfaceInfo();  private: @@ -345,7 +344,6 @@ public:  	void			performPick();  	void			returnEmptyPicks(); -  	void			pickAsync(S32 x, S32 y_from_bot, MASK mask, void (*callback)(const LLPickInfo& pick_info), BOOL pick_transparent = FALSE);  	LLPickInfo		pickImmediate(S32 x, S32 y, BOOL pick_transparent);  	LLHUDIcon* cursorIntersectIcon(S32 mouse_x, S32 mouse_y, F32 depth, @@ -397,7 +395,7 @@ public:  private:  	bool                    shouldShowToolTipFor(LLMouseHandler *mh);  	static bool onAlert(const LLSD& notify); -	 +  	void			switchToolByMask(MASK mask);  	void			destroyWindow();  	void			drawMouselookInstructions(); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 368b964455..6e93bf1bf2 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -45,6 +45,7 @@  #include "llaudioengine.h"  #include "noise.h" +#include "sound_ids.h"  #include "llagent.h" //  Get state values from here  #include "llagentwearables.h" diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index 827b2266ea..347fae6156 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -125,7 +125,7 @@ class LLVoiceClient: public LLSingleton<LLVoiceClient>  		void tuningCaptureStartSendMessage(int duration);  		void tuningCaptureStopSendMessage(); -		void tuningSetMicVolume(float volume=0.5f); +		void tuningSetMicVolume(float volume);  		void tuningSetSpeakerVolume(float volume);  		float tuningGetEnergy(void); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 08e12f4ad9..801bd90423 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -68,6 +68,7 @@  #include "llmediaentry.h"  #include "llmediadataclient.h"  #include "llagent.h" +#include "llviewermediafocus.h"  const S32 MIN_QUIET_FRAMES_COALESCE = 30;  const F32 FORCE_SIMPLE_RENDER_AREA = 512.f; @@ -138,8 +139,7 @@ public:  		}  	virtual bool isInterestingEnough() const  		{ -			// TODO: use performance manager to control this -			return true; +			return LLViewerMedia::isInterestingEnough(mObject->getID(), getMediaInterest());  		}  	virtual std::string getCapabilityUrl(const std::string &name) const @@ -2089,6 +2089,9 @@ viewer_media_t LLVOVolume::getMediaImpl(U8 face_id) const  F64 LLVOVolume::getTotalMediaInterest() const  { +	if (LLViewerMediaFocus::getInstance()->getFocusedObjectID() == getID()) +		return F64_MAX; +	  	F64 interest = (F64)-1.0;  // means not interested;      int i = 0;  	const int end = getNumTEs(); diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 7433404942..a287d34402 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -37,7 +37,6 @@  #include "llviewertexture.h"  #include "llviewermedia.h"  #include "llframetimer.h" -#include "llapr.h"  #include "m3math.h"		// LLMatrix3  #include "m4math.h"		// LLMatrix4  #include <map> diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp index 697fefee3a..8be8f494da 100644 --- a/indra/newview/llwaterparammanager.cpp +++ b/indra/newview/llwaterparammanager.cpp @@ -51,16 +51,13 @@  #include "llsdserialize.h"  #include "v4math.h" -#include "llviewerdisplay.h"  #include "llviewercontrol.h" -#include "llviewerwindow.h"  #include "lldrawpoolwater.h"  #include "llagent.h"  #include "llviewerregion.h"  #include "llwlparammanager.h"  #include "llwaterparamset.h" -#include "llpostprocess.h"  #include "llfloaterwater.h"  #include "curl/curl.h" diff --git a/indra/newview/llwldaycycle.cpp b/indra/newview/llwldaycycle.cpp index fcc43c2b1f..000d50795f 100644 --- a/indra/newview/llwldaycycle.cpp +++ b/indra/newview/llwldaycycle.cpp @@ -33,11 +33,13 @@  #include "llviewerprecompiledheaders.h"  #include "llwldaycycle.h" -#include "llsdserialize.h" -#include "llwlparammanager.h" +  #include "llnotificationsutil.h" +#include "llsdserialize.h"  #include "llxmlnode.h" +#include "llwlparammanager.h" +  #include <map>  LLWLDayCycle::LLWLDayCycle() : mDayRate(120) diff --git a/indra/newview/llwlparammanager.cpp b/indra/newview/llwlparammanager.cpp index c3a70705cf..7cac564619 100644 --- a/indra/newview/llwlparammanager.cpp +++ b/indra/newview/llwlparammanager.cpp @@ -42,17 +42,12 @@  #include "llspinctrl.h"  #include "llcheckboxctrl.h"  #include "lluictrlfactory.h" -#include "llviewercamera.h"  #include "llcombobox.h"  #include "lllineeditor.h"  #include "llsdserialize.h"  #include "v4math.h" -#include "llviewerdisplay.h"  #include "llviewercontrol.h" -#include "llviewerwindow.h" -#include "lldrawpoolwater.h" -#include "llviewerregion.h"  #include "llwlparamset.h"  #include "llpostprocess.h" diff --git a/indra/newview/llworldmapmessage.cpp b/indra/newview/llworldmapmessage.cpp index 6a074d9697..06040a574c 100644 --- a/indra/newview/llworldmapmessage.cpp +++ b/indra/newview/llworldmapmessage.cpp @@ -33,6 +33,7 @@  #include "llviewerprecompiledheaders.h"  #include "llworldmapmessage.h" +#include "message.h"  #include "llworldmap.h"  #include "llagent.h" diff --git a/indra/newview/llxmlrpclistener.cpp b/indra/newview/llxmlrpclistener.cpp index af8cb6b9fb..15417614af 100644 --- a/indra/newview/llxmlrpclistener.cpp +++ b/indra/newview/llxmlrpclistener.cpp @@ -21,13 +21,14 @@  // external library headers  #include <boost/scoped_ptr.hpp>  #include <boost/range.hpp>          // boost::begin(), boost::end() +#include <xmlrpc-epi/xmlrpc.h> +#include "curl/curl.h" +  // other Linden headers  #include "llerror.h"  #include "stringize.h"  #include "llxmlrpctransaction.h" -#include <xmlrpc-epi/xmlrpc.h> -  #if LL_WINDOWS  #pragma warning (disable : 4355) // 'this' used in initializer list: yes, intentionally  #endif diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index cdbeed111e..b6995d2122 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -67,7 +67,7 @@  	 value="0 0 1 1" />  	<color  	 name="Yellow" -	 value="1 1 0 1" /> +	 value="0.114 0.65 0.1" />  	<color  	 name="Unused?"  	 value="1 0.5 0 1" /> @@ -513,7 +513,7 @@       reference="White" />      <color       name="ObjectChatColor" -     reference="0.7 0.8 0.9 1" /> +     reference="EmphasisColor" />      <color       name="OverdrivenColor"       value="1 0 0 1" /> diff --git a/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png b/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png Binary files differindex aa3898ca99..0ac5b72b8f 100644 --- a/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png +++ b/indra/newview/skins/default/textures/bottomtray/Notices_Unread.png diff --git a/indra/newview/skins/default/textures/bottomtray/Unread_IM.png b/indra/newview/skins/default/textures/bottomtray/Unread_IM.png Binary files differindex 598342ea80..5c0c85b864 100644 --- a/indra/newview/skins/default/textures/bottomtray/Unread_IM.png +++ b/indra/newview/skins/default/textures/bottomtray/Unread_IM.png diff --git a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png Binary files differindex 60676b43fd..dd9133bcc4 100644 --- a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png +++ b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png diff --git a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png Binary files differindex 98cde96aff..0080e71f41 100644 --- a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png +++ b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 24d3512bcb..0317d55768 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -143,6 +143,7 @@ with the same filename but different name    <texture name="DropDown_Over" file_name="widgets/DropDown_Over.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="DropDown_Press" file_name="widgets/DropDown_Press.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="DropDown_Selected" file_name="widgets/DropDown_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> +  <texture name="DropDown_On" file_name="widgets/DropDown_On.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="DropDown_Off" file_name="widgets/DropDown_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="DropTarget" file_name="widgets/DropTarget.png" preload="false" /> @@ -592,9 +593,9 @@ with the same filename but different name    <texture name="Unread_IM" file_name="bottomtray/Unread_IM.png" preload="false" />    <texture name="Unread_Msg" file_name="bottomtray/Unread_Msg.png" preload="false" /> -   -  <texture name="WellButton_Lit" file_name="bottomtray/WellButton_Lit.png" /> -  <texture name="WellButton_Lit_Selected" file_name="bottomtray/WellButton_Lit_Selected.png" /> + +  <texture name="WellButton_Lit" file_name="bottomtray/WellButton_Lit.png"  preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> +  <texture name="WellButton_Lit_Selected" file_name="bottomtray/WellButton_Lit_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />    <texture name="VoicePTT_Lvl1" file_name="bottomtray/VoicePTT_Lvl1.png" preload="false" />    <texture name="VoicePTT_Lvl2" file_name="bottomtray/VoicePTT_Lvl2.png" preload="false" /> 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 10b72144e7..1239152c32 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -1561,7 +1561,7 @@ Only large parcels can be listed in search.               left="10"               name="at URL:"               width="100"> -                Home URL: +                Home Page:              </text>              <line_editor               follows="left|top" @@ -1590,7 +1590,7 @@ Only large parcels can be listed in search.               left="10"               name="CurrentURL:"               width="100"> -                Current URL: +                Current Page:              </text>               <button       follows="top|right" 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 d6b20c8015..4b280ac59f 100644 --- a/indra/newview/skins/default/xui/en/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml @@ -171,7 +171,7 @@               enabled="false"               follows="left|top"               height="20" -             label="Send Current URL to Parcel" +             label="Send Current Page to Parcel"               layout="topleft"               left="0"               name="assign" diff --git a/indra/newview/skins/default/xui/en/floater_media_settings.xml b/indra/newview/skins/default/xui/en/floater_media_settings.xml index 8122386fae..681731b0da 100644 --- a/indra/newview/skins/default/xui/en/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_media_settings.xml @@ -1,7 +1,6 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <floater   legacy_header_height="18" - bottom="666"    can_close="true"    can_drag_on_left="false"    can_minimize="true" diff --git a/indra/newview/skins/default/xui/en/floater_preview_texture.xml b/indra/newview/skins/default/xui/en/floater_preview_texture.xml index 602a18ea56..abc30c335c 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml @@ -3,15 +3,15 @@   legacy_header_height="18"   auto_tile="true"   can_resize="true" - follows="left|bottom" - height="331" + follows="left|top" + height="313"   layout="topleft"   min_height="120" - min_width="300" + min_width="320"   name="preview_texture"   help_topic="preview_texture" - width="300"> -    <floater.string + width="320"> +   <floater.string       name="Title">          Texture: [NAME]      </floater.string> @@ -43,72 +43,38 @@       max_length="127"       name="desc"       width="190" /> -    <button -     follows="left|bottom" -     height="22" -     label="OK" -     layout="topleft" -     left="80" -     name="Keep" -     top="302" -     width="100" /> -    <button -     follows="left|bottom" -     height="22" -     label="Cancel" -     layout="topleft" -     left_pad="5" -     name="Discard" -     top_delta="0" -     width="100" /> -    <button -     follows="left|bottom" -     height="22" -     label="Save As" -     layout="topleft" -     left_pad="5" -     name="save_tex_btn" -     top_delta="0" -     width="100" />      <text       type="string" +     halign="right"       length="1" -     follows="left|bottom" +     follows="right|bottom"       height="16"       layout="topleft" -     left="13" +     left="110"       name="dimensions" -     top="309" -     width="303"> +     top="255" +     width="200">          [WIDTH]px x [HEIGHT]px      </text>      <text       type="string" +     halign="right"       length="1" -     bg_visible="false" -     border_drop_shadow_visible="false" -     border_visible="false" -     top="309" -     drop_shadow_visible="true" -     enabled="true"       follows="right|bottom" -     font="SansSerifSmall" -     h_pad="0" -     halign="right" -     height="14" -     left="54" -     mouse_opaque="true" -     name="aspect_ratio" -     v_pad="0" -     width="110"> -    	Preview Aspect Ratio +     height="16" +     layout="topleft" +     left_delta="-110" +     name="dimensions" +     top_pad="5" +     width="200"> +        Preview aspect ratio      </text>      <combo_box       allow_text_entry="true"  -     top="306"  +     top_delta="-3"        follows="right|bottom"  -     height="20" -     left="176" +     height="23" +     left_pad="10"       max_chars="20"       mouse_opaque="true"       enabled="true" @@ -140,4 +106,31 @@  		2:1  	</combo_item>  	</combo_box> +    <button +     follows="right|bottom" +     height="22" +     label="OK" +     layout="topleft" +     left="6" +     name="keep" +     top_pad="5" +     width="100" /> +    <button +     follows="right|bottom" +     height="22" +     label="Cancel" +     layout="topleft" +     left_pad="5" +     name="discard" +     top_delta="0" +     width="100" /> +    <button +     follows="right|bottom" +     height="22" +     label="Save As" +     layout="topleft" +     left_pad="5" +     name="save_tex_btn" +     top_delta="0" +     width="100" />  </floater> diff --git a/indra/newview/skins/default/xui/en/floater_select_key.xml b/indra/newview/skins/default/xui/en/floater_select_key.xml index 6050aede79..93aa1f0e31 100644 --- a/indra/newview/skins/default/xui/en/floater_select_key.xml +++ b/indra/newview/skins/default/xui/en/floater_select_key.xml @@ -21,7 +21,7 @@       word_wrap="true"       width="220">          Press a key to set your -Speak button toggle +Speak button trigger.      </text>      <button       height="23" diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml index 113da9ea4d..695021f755 100644 --- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml @@ -101,7 +101,7 @@      <filter_editor       follows="left|top|right"       height="23" -     label="Filter textures" +     label="Filter Textures"       layout="topleft"       left="175"       name="inventory search editor" diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml index 16f6e49092..cedf83f8b1 100644 --- a/indra/newview/skins/default/xui/en/inspect_object.xml +++ b/indra/newview/skins/default/xui/en/inspect_object.xml @@ -9,7 +9,7 @@   bg_opaque_image="Inspector_Background"   can_close="false"   can_minimize="false" - height="148" + height="150"   layout="topleft"   name="inspect_object"   single_instance="true" @@ -71,13 +71,15 @@ owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about     width="196">  L$300,000    </text> -   <text +  <text +   clip_partial="true"      follows="all"     font="SansSerifSmall" -   height="36" +   height="37"     left="8"     name="object_description"     top_pad="0" +   use_ellipses="true"      width="220"     word_wrap="true">  This is a really long description for an object being as how it is at least 80 characters in length and maybe more like 120 at this point. Who knows, really? @@ -90,7 +92,7 @@ This is a really long description for an object being as how it is at least 80 c     height="13"     left_delta="0"     name="object_media_url" -   top_pad="0" +   top_pad="-1"     width="291"     max_length = "50"     use_ellipses="true"> @@ -102,7 +104,7 @@ This is a really long description for an object being as how it is at least 80 c     label="Buy"     left="8"     name="buy_btn" -   top="119" +   top="121"     width="80" />    <button     follows="top|left" diff --git a/indra/newview/skins/default/xui/en/menu_attachment_other.xml b/indra/newview/skins/default/xui/en/menu_attachment_other.xml new file mode 100644 index 0000000000..5b94645b60 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_attachment_other.xml @@ -0,0 +1,105 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<!-- *NOTE: See also menu_avatar_other.xml --> +<context_menu + layout="topleft" + name="Avatar Pie"> +    <menu_item_call +     label="View Profile" +     name="Profile..."> +        <menu_item_call.on_click +         function="ShowAgentProfile" +         parameter="hit object" /> +    </menu_item_call> +   <menu_item_call +     enabled="false" +     label="Add Friend" +     name="Add Friend"> +        <menu_item_call.on_click +         function="Avatar.AddFriend" /> +        <menu_item_call.on_enable +         function="Avatar.EnableAddFriend" /> +    </menu_item_call> +    <menu_item_call +     label="IM" +     name="Send IM..."> +        <menu_item_call.on_click +         function="Avatar.SendIM" /> +    </menu_item_call> +    <menu_item_call +     label="Call" +     name="Call"> +        <menu_item_call.on_click +         function="Avatar.Call" /> +    </menu_item_call> +      <menu_item_call +         label="Invite to Group" +         name="Invite..."> +      <menu_item_call.on_click +         function="Avatar.InviteToGroup" /> +      </menu_item_call> +   <menu_item_separator /> +    <menu_item_call +     enabled="false" +     label="Block" +     name="Avatar Mute"> +        <menu_item_call.on_click +         function="Avatar.Mute" /> +        <menu_item_call.on_enable +         function="Avatar.EnableMute" /> +    </menu_item_call> +    <menu_item_call +     label="Report" +     name="abuse"> +        <menu_item_call.on_click +         function="Avatar.ReportAbuse" /> +    </menu_item_call> +        <menu_item_call +         label="Freeze" +         name="Freeze..."> +            <menu_item_call.on_click +             function="Avatar.Freeze" /> +            <menu_item_call.on_visible +             function="Avatar.EnableFreezeEject"/> +        </menu_item_call> +        <menu_item_call +         label="Eject" +         name="Eject..."> +            <menu_item_call.on_click +             function="Avatar.Eject" /> +            <menu_item_call.on_visible +             function="Avatar.EnableFreezeEject"/> +        </menu_item_call> +        <menu_item_call +         label="Debug" +         name="Debug..."> +            <menu_item_call.on_click +             function="Avatar.Debug" /> +            <menu_item_call.on_visible +             function="IsGodCustomerService"/> +        </menu_item_call> +	    <menu_item_call +         label="Zoom In" +          name="Zoom In"> +        <menu_item_call.on_click +           function="Tools.LookAtSelection" +           parameter="zoom" /> +    </menu_item_call> +   <menu_item_call +     enabled="false" +     label="Pay" +     name="Pay..."> +        <menu_item_call.on_click +         function="PayObject" /> +        <menu_item_call.on_enable +         function="EnablePayAvatar" /> +    </menu_item_call> +   <menu_item_separator /> +   <menu_item_call +       label="Object Profile" +       name="Object Inspect"> +         <menu_item_call.on_click +          function="Object.Inspect" /> +         <menu_item_call.on_enable +          function="Object.EnableInspect" /> +   </menu_item_call> +</context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml new file mode 100644 index 0000000000..c85dbbb1bc --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml @@ -0,0 +1,124 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<context_menu + layout="topleft" + name="Attachment Pie"> +    <menu_item_call +     enabled="false" +     label="Touch" +     layout="topleft" +     name="Attachment Object Touch"> +        <menu_item_call.on_click +         function="Object.Touch" /> +        <menu_item_call.on_enable +         function="Object.EnableTouch" +         name="EnableTouch" +         parameter="Touch" /> +    </menu_item_call> +    <!--menu_item_call +     label="Stand Up" +     layout="topleft" +     name="Stand Up"> +        <menu_item_call.on_click +         function="Self.StandUp" +         parameter="" /> +        <menu_item_call.on_enable +         function="Self.EnableStandUp" /> +    </menu_item_call--> +        <menu_item_call +     enabled="false" +     label="Edit" +     layout="topleft" +     name="Edit..."> +        <menu_item_call.on_click +         function="Object.Edit" /> +        <menu_item_call.on_enable +         function="EnableEdit" /> +    </menu_item_call> +    <menu_item_call +     enabled="false" +     label="Detach" +     layout="topleft" +     name="Detach"> +        <menu_item_call.on_click +         function="Attachment.Detach" /> +        <menu_item_call.on_enable +         function="Attachment.EnableDetach" /> +    </menu_item_call> +      <menu_item_call +     enabled="false" +     label="Drop" +     layout="topleft" +     name="Drop"> +        <menu_item_call.on_click +         function="Attachment.Drop" /> +        <menu_item_call.on_enable +         function="Attachment.EnableDrop" /> +    </menu_item_call> +    <!--menu_item_call +     label="My Profile" +     layout="topleft" +     name="Profile..."> +        <menu_item_call.on_click +         function="ShowAgentProfile" +         parameter="agent" /> +    </menu_item_call> +    <menu_item_call +     label="My Appearance" +     layout="topleft" +     name="Appearance..."> +        <menu_item_call.on_click +         function="ShowFloater" +         parameter="appearance" /> +        <menu_item_call.on_enable +         function="Edit.EnableCustomizeAvatar" /> + +    </menu_item_call--> +    <menu_item_separator +      layout="topleft" /> +     +       <menu_item_call +     label="Stand Up" +     layout="topleft" +     name="Stand Up"> +        <menu_item_call.on_click +         function="Self.StandUp" +         parameter="" /> +        <menu_item_call.on_enable +         function="Self.EnableStandUp" /> +    </menu_item_call> +     <menu_item_call +     label="My Appearance" +     layout="topleft" +     name="Appearance..."> +        <menu_item_call.on_click +         function="ShowFloater" +         parameter="appearance" /> +        <menu_item_call.on_enable +         function="Edit.EnableCustomizeAvatar" /> +    </menu_item_call> +   <menu_item_call +     label="My Friends" +     layout="topleft" +     name="Friends..."> +        <menu_item_call.on_click +         function="SideTray.PanelPeopleTab" +         parameter="friends_panel" /> +    </menu_item_call> +    <menu_item_call +     label="My Groups" +     layout="topleft" +     name="Groups..."> +        <menu_item_call.on_click +         function="SideTray.PanelPeopleTab" +         parameter="groups_panel" /> +    </menu_item_call> +   <menu_item_call +     label="My Profile" +     layout="topleft" +     name="Profile..."> +        <menu_item_call.on_click +         function="ShowAgentProfile" +         parameter="agent" /> +    </menu_item_call> +     +</context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_avatar_other.xml b/indra/newview/skins/default/xui/en/menu_avatar_other.xml new file mode 100644 index 0000000000..0ad41546d2 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_avatar_other.xml @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<!-- *NOTE: See also menu_attachment_other.xml --> +<context_menu + layout="topleft" + name="Avatar Pie"> +    <menu_item_call +     label="View Profile" +     name="Profile..."> +        <menu_item_call.on_click +         function="ShowAgentProfile" +         parameter="hit object" /> +    </menu_item_call> +   <menu_item_call +     enabled="false" +     label="Add Friend" +     name="Add Friend"> +        <menu_item_call.on_click +         function="Avatar.AddFriend" /> +        <menu_item_call.on_enable +         function="Avatar.EnableAddFriend" /> +    </menu_item_call> +    <menu_item_call +     label="IM" +     name="Send IM..."> +        <menu_item_call.on_click +         function="Avatar.SendIM" /> +    </menu_item_call> +    <menu_item_call +     label="Call" +     name="Call"> +        <menu_item_call.on_click +         function="Avatar.Call" /> +    </menu_item_call> +      <menu_item_call +         label="Invite to Group" +         name="Invite..."> +      <menu_item_call.on_click +         function="Avatar.InviteToGroup" /> +      </menu_item_call> +   <menu_item_separator /> +    <menu_item_call +     enabled="false" +     label="Block" +     name="Avatar Mute"> +        <menu_item_call.on_click +         function="Avatar.Mute" /> +        <menu_item_call.on_enable +         function="Avatar.EnableMute" /> +    </menu_item_call> +    <menu_item_call +     label="Report" +     name="abuse"> +        <menu_item_call.on_click +         function="Avatar.ReportAbuse" /> +    </menu_item_call> +        <menu_item_call +         label="Freeze" +         name="Freeze..."> +            <menu_item_call.on_click +             function="Avatar.Freeze" /> +            <menu_item_call.on_visible +             function="Avatar.EnableFreezeEject"/> +        </menu_item_call> +        <menu_item_call +         label="Eject" +         name="Eject..."> +            <menu_item_call.on_click +             function="Avatar.Eject" /> +            <menu_item_call.on_visible +             function="Avatar.EnableFreezeEject"/> +        </menu_item_call> +        <menu_item_call +         label="Debug" +         name="Debug..."> +            <menu_item_call.on_click +             function="Avatar.Debug" /> +            <menu_item_call.on_visible +             function="IsGodCustomerService"/> +        </menu_item_call> +	    <menu_item_call +         label="Zoom In" +          name="Zoom In"> +        <menu_item_call.on_click +           function="Tools.LookAtSelection" +           parameter="zoom" /> +    </menu_item_call> +   <menu_item_call +     enabled="false" +     label="Pay" +     name="Pay..."> +        <menu_item_call.on_click +         function="PayObject" /> +        <menu_item_call.on_enable +         function="EnablePayAvatar" /> +    </menu_item_call> +</context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml new file mode 100644 index 0000000000..c6ce612a76 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml @@ -0,0 +1,227 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<context_menu + layout="topleft" + name="Self Pie"> +       <menu_item_call +     label="Stand Up" +     layout="topleft" +     name="Stand Up"> +        <menu_item_call.on_click +         function="Self.StandUp" +         parameter="" /> +        <menu_item_call.on_enable +         function="Self.EnableStandUp" /> +    </menu_item_call> +    <context_menu +     label="Take Off >" +     layout="topleft" +     name="Take Off >"> +        <context_menu +         label="Clothes >" +         layout="topleft" +         name="Clothes >"> +            <menu_item_call +             enabled="false" +             label="Shirt" +             layout="topleft" +             name="Shirt"> +                <menu_item_call.on_click +                 function="Edit.TakeOff" +                 parameter="shirt" /> +                <menu_item_call.on_enable +                 function="Edit.EnableTakeOff" +                 parameter="shirt" /> +            </menu_item_call> +            <menu_item_call +             enabled="false" +             label="Pants" +             layout="topleft" +             name="Pants"> +                <menu_item_call.on_click +                 function="Edit.TakeOff" +                 parameter="pants" /> +                <menu_item_call.on_enable +                 function="Edit.EnableTakeOff" +                 parameter="pants" /> +            </menu_item_call> +            <menu_item_call +             enabled="false" +             label="Skirt" +             layout="topleft" +             name="Skirt"> +                <menu_item_call.on_click +                 function="Edit.TakeOff" +                 parameter="skirt" /> +                <menu_item_call.on_enable +                 function="Edit.EnableTakeOff" +                 parameter="skirt" /> +            </menu_item_call> +            <menu_item_call +             enabled="false" +             label="Shoes" +             layout="topleft" +             name="Shoes"> +                <menu_item_call.on_click +                 function="Edit.TakeOff" +                 parameter="shoes" /> +                <menu_item_call.on_enable +                 function="Edit.EnableTakeOff" +                 parameter="shoes" /> +            </menu_item_call> +            <menu_item_call +             enabled="false" +             label="Socks" +             layout="topleft" +             name="Socks"> +                <menu_item_call.on_click +                 function="Edit.TakeOff" +                 parameter="socks" /> +                <menu_item_call.on_enable +                 function="Edit.EnableTakeOff" +                 parameter="socks" /> +            </menu_item_call> +            <menu_item_call +             enabled="false" +             label="Jacket" +             layout="topleft" +             name="Jacket"> +                <menu_item_call.on_click +                 function="Edit.TakeOff" +                 parameter="jacket" /> +                <menu_item_call.on_enable +                 function="Edit.EnableTakeOff" +                 parameter="jacket" /> +            </menu_item_call> +            <menu_item_call +             enabled="false" +             label="Gloves" +             layout="topleft" +             name="Gloves"> +                <menu_item_call.on_click +                 function="Edit.TakeOff" +                 parameter="gloves" /> +                <menu_item_call.on_enable +                 function="Edit.EnableTakeOff" +                 parameter="gloves" /> +            </menu_item_call> +           <menu_item_call +                 enabled="false" +                 label="Undershirt" +                 layout="topleft" +                 name="Self Undershirt"> +                    <menu_item_call.on_click +                     function="Edit.TakeOff" +                     parameter="undershirt" /> +                    <menu_item_call.on_enable +                     function="Edit.EnableTakeOff" +                     parameter="undershirt" /> +                </menu_item_call> +               <menu_item_call +                 enabled="false" +                 label="Underpants" +                 layout="topleft" +                 name="Self Underpants"> +                    <menu_item_call.on_click +                     function="Edit.TakeOff" +                     parameter="underpants" /> +                    <menu_item_call.on_enable +                     function="Edit.EnableTakeOff" +                     parameter="underpants" /> +                </menu_item_call> +               <menu_item_call +                 enabled="false" +                 label="Tattoo" +                 layout="topleft" +                 name="Self Tattoo"> +                    <menu_item_call.on_click +                     function="Edit.TakeOff" +                     parameter="tattoo" /> +                    <menu_item_call.on_enable +                     function="Edit.EnableTakeOff" +                     parameter="tattoo" /> +                </menu_item_call> +               <menu_item_call +                 enabled="false" +                 label="Alpha" +                 layout="topleft" +                 name="Self Alpha"> +                    <menu_item_call.on_click +                     function="Edit.TakeOff" +                     parameter="alpha" /> +                    <menu_item_call.on_enable +                     function="Edit.EnableTakeOff" +                     parameter="alpha" /> +                </menu_item_call>				 +                <menu_item_separator +                 layout="topleft" /> +                <menu_item_call +                 label="All Clothes" +                 layout="topleft" +                 name="All Clothes"> +                    <menu_item_call.on_click +                     function="Edit.TakeOff" +                     parameter="all" /> +                </menu_item_call> +        </context_menu> +        <context_menu +         label="HUD >" +         layout="topleft" +         name="Object Detach HUD" /> +        <context_menu +         label="Detach >" +         layout="topleft" +         name="Object Detach" /> +        <menu_item_call +         label="Detach All" +         layout="topleft" +         name="Detach All"> +            <menu_item_call.on_click +             function="Self.RemoveAllAttachments" +             parameter="" /> +            <menu_item_call.on_enable +             function="Self.EnableRemoveAllAttachments" /> +        </menu_item_call> +    </context_menu> +     <menu_item_call +     label="My Appearance" +     layout="topleft" +     name="Appearance..."> +        <menu_item_call.on_click +         function="ShowFloater" +         parameter="appearance" /> +        <menu_item_call.on_enable +         function="Edit.EnableCustomizeAvatar" /> +    </menu_item_call> +   <menu_item_call +     label="My Friends" +     layout="topleft" +     name="Friends..."> +        <menu_item_call.on_click +         function="SideTray.PanelPeopleTab" +         parameter="friends_panel" /> +    </menu_item_call> +   <!--menu_item_call +     label="My Gestures" +     layout="topleft" +     name="Gestures..."> +        <menu_item_call.on_click +         function="ShowFloater" +         parameter="gestures" /> +    </menu_item_call--> +    <menu_item_call +     label="My Groups" +     layout="topleft" +     name="Groups..."> +        <menu_item_call.on_click +         function="SideTray.PanelPeopleTab" +         parameter="groups_panel" /> +    </menu_item_call> +   <menu_item_call +     label="My Profile" +     layout="topleft" +     name="Profile..."> +        <menu_item_call.on_click +         function="ShowAgentProfile" +         parameter="agent" /> +    </menu_item_call> +</context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index 660e3858ac..0f400777b8 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -339,6 +339,9 @@           function="Inventory.DoToSelected"           parameter="open" />      </menu_item_call> +    <menu_item_separator +     layout="topleft" +     name="Folder Wearables Separator" />      <menu_item_call       label="Replace Current Outfit"       layout="topleft" @@ -423,7 +426,8 @@           parameter="copy_uuid" />      </menu_item_call>      <menu_item_separator -     layout="topleft" /> +     layout="topleft"  +     name="Copy Separator" />      <menu_item_call       label="Copy"       layout="topleft" @@ -449,7 +453,8 @@           parameter="paste_link" />      </menu_item_call>      <menu_item_separator -     layout="topleft" /> +     layout="topleft"  +     name="Paste Separator" />      <menu_item_call       label="Remove Link"       layout="topleft" @@ -500,7 +505,8 @@           parameter="about" />      </menu_item_call>      <menu_item_separator -     layout="topleft" /> +     layout="topleft"  +     name="Animation Separator" />      <menu_item_call       label="Play in World"       layout="topleft" @@ -518,7 +524,8 @@           parameter="playlocal" />      </menu_item_call>      <menu_item_separator -     layout="topleft" /> +     layout="topleft"  +     name="Send Instant Message Separator" />      <menu_item_call       label="Send Instant Message"       layout="topleft" @@ -544,7 +551,8 @@           parameter="selected" />      </menu_item_call>      <menu_item_separator -     layout="topleft" /> +     layout="topleft"  +     name="Gesture Separator" />      <menu_item_call       label="Activate"       layout="topleft" @@ -562,7 +570,8 @@           parameter="deactivate" />      </menu_item_call>      <menu_item_separator -     layout="topleft" /> +     layout="topleft"  +     name="Texture Separator" />      <menu_item_call       label="Save As"       layout="topleft" @@ -572,7 +581,8 @@           parameter="save_as" />      </menu_item_call>      <menu_item_separator -     layout="topleft" /> +     layout="topleft"  +     name="Attach Separator"/>      <menu_item_call       label="Detach From Yourself"       layout="topleft" @@ -608,6 +618,9 @@       label="Attach To HUD"       layout="topleft"       name="Attach To HUD" /> +    <menu_item_separator +     layout="topleft"  +     name="Wearable Separator"/>      <menu_item_call       label="Edit"       layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_land.xml b/indra/newview/skins/default/xui/en/menu_land.xml new file mode 100644 index 0000000000..d88a2f8d25 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_land.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<context_menu + layout="topleft" + name="Land Pie"> +    <menu_item_call +     label="About Land" +     name="Place Information..."> +        <menu_item_call.on_click +         function="ShowFloater" +         parameter="about_land" /> +    </menu_item_call> + <!--   <menu_item_call +     label="Go Here" +     name="Go Here"> +        <menu_item_call.on_click +         function="GoToObject" /> +    </menu_item_call>--> +    <menu_item_call +     label="Sit Here" +     name="Sit Here"> +        <menu_item_call.on_click +         function="Land.Sit" /> +    </menu_item_call> +    <menu_item_separator +     layout="topleft" /> +        <menu_item_call +     enabled="false" +     label="Buy This Land" +     name="Land Buy"> +        <menu_item_call.on_click +         function="ShowFloater" +         parameter="buy land" /> +        <menu_item_call.on_enable +         function="World.EnableBuyLand" /> +    </menu_item_call> +   <menu_item_call +     enabled="false" +     label="Buy Pass" +     name="Land Buy Pass"> +        <menu_item_call.on_click +         function="Land.BuyPass" /> +        <menu_item_call.on_enable +         function="Land.EnableBuyPass" /> +    </menu_item_call> +            <menu_item_separator +     layout="topleft" /> +   <menu_item_call +     enabled="false" +     label="Build" +     name="Create"> +        <menu_item_call.on_click +         function="Land.Build" /> +        <menu_item_call.on_enable +         function="EnableEdit" /> +    </menu_item_call> +    <menu_item_call +     enabled="false" +     label="Edit Terrain" +     name="Edit Terrain"> +        <menu_item_call.on_click +         function="Land.Edit" /> +        <menu_item_call.on_enable +         function="EnableEdit" /> +    </menu_item_call> +</context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml new file mode 100644 index 0000000000..62500c5116 --- /dev/null +++ b/indra/newview/skins/default/xui/en/menu_object.xml @@ -0,0 +1,158 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<context_menu + layout="topleft" + name="Object Pie"> +   <menu_item_call +     enabled="false" +     label="Touch" +     name="Object Touch"> +        <menu_item_call.on_click +         function="Object.Touch" /> +        <menu_item_call.on_enable +         function="Object.EnableTouch" +         name="EnableTouch" +         parameter="Touch" /> +   </menu_item_call> +   <menu_item_call +     label="Edit" +     name="Edit..."> +        <menu_item_call.on_click +         function="Object.Edit" /> +        <menu_item_call.on_visible +         function="EnableEdit"/> +    </menu_item_call> +    <menu_item_call +      label="Build" +      name="Build"> +      <menu_item_call.on_click +       function="Object.Edit" /> +      <menu_item_call.on_visible +       function="VisibleBuild"/> +    </menu_item_call> +   <menu_item_call +     enabled="false" +     label="Open" +     name="Open"> +        <menu_item_call.on_click +         function="Object.Open" /> +        <menu_item_call.on_enable +         function="Object.EnableOpen" /> +   </menu_item_call> +   <menu_item_call +     enabled="false" +     label="Sit Here" +     name="Object Sit"> +        <menu_item_call.on_click +         function="Object.SitOrStand" /> +        <menu_item_call.on_enable +         function="Object.EnableSitOrStand" +         name="EnableSitOrStand" +         parameter="Sit Here,Stand Up" /> +    </menu_item_call> +   <menu_item_call +       label="Object Profile" +       name="Object Inspect"> +         <menu_item_call.on_click +          function="Object.Inspect" /> +         <menu_item_call.on_enable +          function="Object.EnableInspect" /> +   </menu_item_call> +<menu_item_separator layout="topleft" /> +   <context_menu +         label="Put On >" +         name="Put On" > +   <menu_item_call +      enabled="false" +      label="Wear" +      name="Wear"> +            <menu_item_call.on_click +             function="Object.AttachToAvatar" /> +            <menu_item_call.on_enable +             function="Object.EnableWear" /> +   </menu_item_call> +   <context_menu +         label="Attach >" +         name="Object Attach" /> +   <context_menu +         label="Attach HUD >" +         name="Object Attach HUD" /> +   </context_menu> +   <context_menu +         label="Remove >" +         name="Remove"> +   <menu_item_call +     enabled="false" +     label="Take" +     name="Pie Object Take"> +        <menu_item_call.on_click +         function="Tools.BuyOrTake" /> +        <menu_item_call.on_enable +         function="Tools.EnableBuyOrTake" +         parameter="Buy,Take" /> +    </menu_item_call> +   <menu_item_call +         enabled="false" +         label="Report Abuse" +         name="Report Abuse..."> +            <menu_item_call.on_click +             function="Object.ReportAbuse" /> +            <menu_item_call.on_enable +             function="Object.EnableReportAbuse" /> +   </menu_item_call> +   <menu_item_call +          enabled="false" +          label="Block" +          name="Object Mute"> +             <menu_item_call.on_click +              function="Object.Mute" /> +             <menu_item_call.on_enable +              function="Object.EnableMute" /> +   </menu_item_call> +   <menu_item_call +      enabled="false" +      label="Return" +      name="Return..."> +         <menu_item_call.on_click +          function="Object.Return" /> +         <menu_item_call.on_enable +          function="Object.EnableReturn" /> +     </menu_item_call> +     <menu_item_call +   enabled="false" +   label="Delete" +   name="Delete"> +      <menu_item_call.on_click +       function="Object.Delete" /> +      <menu_item_call.on_enable +       function="Object.EnableDelete" /> +    </menu_item_call> +    </context_menu> +   <menu_item_separator layout="topleft" /> +   <menu_item_call +   enabled="false" +   label="Take Copy" +   name="Take Copy"> +      <menu_item_call.on_click +       function="Tools.TakeCopy" /> +      <menu_item_call.on_enable +       function="Tools.EnableTakeCopy" /> +  </menu_item_call> +   <menu_item_call +   enabled="false" +   label="Pay" +   name="Pay..."> +  <menu_item_call.on_click +   function="PayObject" /> +  <menu_item_call.on_enable +   function="EnablePayObject" /> +</menu_item_call> +  <menu_item_call +   enabled="false" +   label="Buy" +   name="Buy..."> +      <menu_item_call.on_click +       function="Object.Buy" /> +      <menu_item_call.on_enable +       function="Object.EnableBuy" /> +   </menu_item_call> +</context_menu> diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index a41d492624..034f685ee9 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -114,7 +114,7 @@            width="82"            tool_tip="Shows/hides gestures">               <gesture_combo_box.drop_down_button -              pad_right="10"  +              pad_right="10"                use_ellipses="true" />           </gesture_combo_box>          </layout_panel> @@ -126,7 +126,7 @@           image_name="spacer24.tga"           layout="topleft"           left="0" -         min_width="4"  +         min_width="4"           name="DUMMY"           top="0"           width="4"/> @@ -168,7 +168,7 @@           image_name="spacer24.tga"           layout="topleft"           left="0" -         min_width="4"  +         min_width="4"           name="DUMMY"           top="0"           width="4"/> @@ -211,7 +211,7 @@           image_name="spacer24.tga"           layout="topleft"           left="0" -         min_width="4"  +         min_width="4"           name="DUMMY"           top="0"           width="4"/> @@ -243,7 +243,7 @@          <layout_panel           mouse_opaque="false"           follows="left|right" -         height="28" +         height="29"           layout="topleft"           top="0"           name="chiclet_list_panel" @@ -251,24 +251,24 @@           min_width="180"           user_resize="false"           auto_resize="true"> -<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same  +<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same  as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->              <chiclet_panel  	    mouse_opaque="false"               follows="left|right"               height="23"               layout="topleft" -             left="0" +             left="1"               min_width="180"               name="chiclet_list" -             top="4" +             top="6"               chiclet_padding="4"               scrolling_offset="40"               width="189">                  <button                   auto_resize="true"                   follows="right" -                 height="23" +                 height="29"                   image_selected="SegmentedBtn_Left_Off"                   image_unselected="SegmentedBtn_Left_Off"  		 image_hover_selected="SegmentedBtn_Left_Over" @@ -278,14 +278,16 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.  		 image_overlay="Arrow_Small_Left"                   layout="topleft"                   name="chicklet_left_scroll_button" +        scale_image="true"                   tab_stop="false" -                 top="0" +                 top="-2" +                 right_pad="2"                   visible="false" -                 width="20" /> +                 width="7" />                  <button                   auto_resize="true"                   follows="right" -                 height="23" +                 height="29"                   image_selected="SegmentedBtn_Right_Off"                   image_unselected="SegmentedBtn_Right_Off"  		 image_hover_selected="SegmentedBtn_Right_Over" @@ -295,10 +297,11 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.  		 image_overlay="Arrow_Small_Right"                   layout="topleft"                   name="chicklet_right_scroll_button" +        scale_image="true"                   tab_stop="false" -                 top="0" +                 top="-2"                   visible="false" -                 width="20" /> +                 width="7" />              </chiclet_panel>          </layout_panel>          <icon @@ -309,7 +312,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.           image_name="spacer24.tga"           layout="topleft"           left="0" -         min_width="4"  +         min_width="4"           top="0"           width="5"/>          <layout_panel @@ -320,18 +323,18 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.           min_height="28"           top="0"           name="im_well_panel" -         width="34" -         min_width="34" +         width="35" +         min_width="35"           user_resize="false">              <chiclet_im_well -             flash_period="0.3"  +             flash_period="0.3"               follows="right"               height="23"               layout="topleft"               left="0"               name="im_well"               top="4" -             width="34"> +             width="35">               <!--  Emulate 4 states of button by background images, see detains in EXT-3147. The same should be for notification_well button  xml attribute           Description @@ -342,21 +345,22 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well               -->                  <button                   auto_resize="true" -                 flash_color="EmphasisColor" +                 flash_color="Yellow"                   follows="right"                   halign="center"                   height="23" -                 image_overlay="Notices_Unread" -                 image_overlay_alignment="center"  -                 image_pressed="WellButton_Lit" -                 image_pressed_selected="WellButton_Lit_Selected" -                 image_selected="PushButton_Selected_Press" +                 image_overlay="Unread_IM" +                 image_overlay_alignment="center" +                 image_pressed="WellButton_Lit_Selected" +                 image_pressed_selected="WellButton_Lit" +                 image_selected="WellButton_Lit" +                 label_color="Black"                   left="0"                   max_displayed_count="99"                   name="Unread IM messages"                   pad_left="0"                   pad_right="0" -                 width="34" > +                 width="35" >                      <button.init_callback                       function="Button.SetDockableFloaterToggle"                       parameter="im_well_window" /> @@ -370,9 +374,10 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well           layout="topleft"           min_height="28"           top="0" +         left_pad="4"           name="notification_well_panel" -         width="34" -         min_width="34" +         width="35" +         min_width="35"           user_resize="false">              <chiclet_notification               flash_period="0.25" @@ -383,23 +388,24 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well               max_displayed_count="99"               name="notification_well"               top="4" -             width="34"> +             width="35">                <button -                 image_selected="PushButton_Selected_Press" -                 image_pressed="WellButton_Lit" -                 image_pressed_selected="WellButton_Lit_Selected" +                 bottom_pad="3" +                 image_selected="WellButton_Lit" +                 image_pressed="WellButton_Lit_Selected" +                 image_pressed_selected="WellButton_Lit "                auto_resize="true"                 halign="center"                 height="23"                 follows="right" -               flash_color="EmphasisColor" -               left="0" +               flash_color="Yellow" +                label_color="Black" +               left="5"                 name="Unread"                 image_overlay="Notices_Unread" -               image_overlay_alignment="center"  -               pad_right="0" -               pad_left="0" -               width="34" > +               image_overlay_alignment="center" +               pad_right="5" +               width="35" >                    <button.init_callback                     function="Button.SetDockableFloaterToggle"                     parameter="notification_well_window" /> @@ -413,7 +419,7 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well           height="10"           image_name="spacer24.tga"           layout="topleft" -         min_width="4"  +         min_width="4"           right="-1"           top="0"           width="4"/> diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index c9db75b5d8..6187b8f1e2 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -33,21 +33,31 @@ name="login_html"  start_url=""  top="0"  height="600" -     width="996" /> -<panel +     width="980" /> +<layout_stack  follows="left|bottom|right"  name="login_widgets"  layout="topleft" +orientation="horizontal"  top="519"  width="996" -     height="80"> +height="80"> +<layout_panel +auto_resize="false" +follows="left|bottom" +name="login" +layout="topleft" +width="695" +min_width="695" +user_resize="false" +height="80">  <text  follows="left|bottom"  font="SansSerifSmall"  height="16" -left="20"  name="first_name_text"  top="20" +left="20"  width="150">  First name:  </text> @@ -145,7 +155,7 @@ name="Typeregionname"   value="" />  <combo_box  allow_text_entry="true"  font="SansSerifSmall" -   follows="left|bottom" +   follows="left|right|bottom"     height="23"  layout="topleft"  top_pad="2" @@ -164,14 +174,20 @@ width="135"    name="connect_btn"    top="35"    width="90" /> - <text +</layout_panel> +<layout_panel +follows="right|bottom" +name="links" +width="200" +min_width="200" +user_resize="false" +height="80"> +   <text  follows="right|bottom"  font="SansSerifSmall" -text_color="EmphasisColor"  halign="right"  height="16"  top="12" -left_pad="5"  right="-10"  name="create_new_account_text"    width="180"> @@ -183,7 +199,9 @@ font="SansSerifSmall"  text_color="EmphasisColor"  halign="right"  height="16" -name="forgot_password_text"    top_pad="12" +name="forgot_password_text" +top_pad="12" +right="-10"    width="180">         Forgot your name or password?  </text> @@ -195,6 +213,7 @@ halign="right"  height="16"  name="login_help"  top_pad="2" +right="-10"      width="180">         Need help logging in?   </text>  <!--  <text @@ -208,5 +227,6 @@ top_pad="2"      word_wrap="true">         [VERSION]     </text>--> -</panel> +   </layout_panel> +</layout_stack>  </panel> 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 9990215dfd..4353b306cd 100644 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -17,7 +17,7 @@       text_pad_left="14"       follows="left|top|right"  	height="23" -     label="Filter" +     label="Filter Inventory"       layout="topleft"       left="15"  max_length="300" diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml index 24c40b32fb..5217ab3571 100644 --- a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml @@ -17,7 +17,7 @@     height="15"     left="10"     name="home_label"> -    Home URL: +    Home Page:    </text>    <text     visible="false"  @@ -27,7 +27,7 @@     left_delta="64"     text_color="red"     name="home_fails_whitelist_label"> -    (This URL does not pass the specified whitelist) +    (This page does not pass the specified whitelist)    </text>    <line_editor      bottom_delta="-24"  @@ -37,7 +37,7 @@     height="20"      left="10"      name="home_url" -   tool_tip="The home URL for this media source" +   tool_tip="The home page for this media source"     width="340">       <!--  <line_editor.commit_callback  	     function="Media.CommitHomeURL"/> --> @@ -69,7 +69,7 @@     height="15"      left="10"      name="current_url_label"> -    Current URL: +    Current Page:    </text>    <text      bottom_delta="-20"  @@ -79,7 +79,7 @@     height="20"      left="10"      name="current_url" -   tool_tip="The current URL for this media source" +   tool_tip="The current page for this media source"     value=""      width="340" />    <button  @@ -93,35 +93,6 @@     <button.commit_callback  	     function="Media.ResetCurrentUrl"/>    </button> -  <text  -   bottom_delta="-5"  -   follows="top|left"  -   height="15" -   left="10"  -   name="controls_label"> -    Controls: -  </text> -  <combo_box  -   allow_text_entry="false"  -   bottom_delta="-20" -   follows="left|top" -   height="18"  -   left="10"  -   max_chars="20" -   name="controls"  -   width="120"> -    <combo_item  -	 name="Standard"  -	 value="Standard"> -      Standard -    </combo_item> -    <combo_item  -	 name="Mini"  -	 value="Mini"> -      Mini -    </combo_item> -  </combo_box> -    <check_box      bottom_delta="-25"      enabled="true"  @@ -135,7 +106,6 @@     name="auto_loop"      radio_style="false"      width="150" /> -    <check_box      bottom_delta="-25"      visible="false"  diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml index 85f534c4a3..b5c2371510 100644 --- a/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml +++ b/indra/newview/skins/default/xui/en/panel_media_settings_permissions.xml @@ -4,13 +4,42 @@   enabled="true"    follows="left|top|right|bottom"   height="500"  - label="Controls"  + label="Customize"    left="102"    mouse_opaque="true"   name="Media settings for controls"    help_topic = "media_settings_controls"   width="365"> +  <text +   bottom_delta="-50" +   follows="top|left" +   height="15" +   left="10" +   name="controls_label"> +    Controls: +  </text> +  <combo_box +   allow_text_entry="false" +   bottom_delta="0" +   follows="left|top" +   height="18" +   left="100" +   max_chars="20" +   name="controls" +   width="120"> +    <combo_item +	 name="Standard" +	 value="Standard"> +      Standard +    </combo_item> +    <combo_item +	 name="Mini" +	 value="Mini"> +      Mini +    </combo_item> +  </combo_box> +    <text      bottom_delta="-50"      follows="top|left"  @@ -27,7 +56,7 @@     font="SansSerifSmall"     height="16"      initial_value="false" -   label="Disable Navigation & Interactivity"  +   label="Allow Navigation & Interactivity"      left="30"      mouse_opaque="true"     name="perms_owner_interact"  @@ -41,7 +70,7 @@     font="SansSerifSmall"     height="16"      initial_value="false" -   label="Hide Control Bar"  +   label="Show Control Bar"      left="30"      mouse_opaque="true"     name="perms_owner_control"  @@ -74,7 +103,7 @@     font="SansSerifSmall"     height="16"      initial_value="false" -   label="Disable Navigation & Interactivity"  +   label="Allow Navigation & Interactivity"      left="30"      mouse_opaque="true"     name="perms_group_interact"  @@ -88,7 +117,7 @@     font="SansSerifSmall"     height="16"      initial_value="false" -   label="Hide Control Bar"  +   label="Show Control Bar"      left="30"      mouse_opaque="true"     name="perms_group_control"  @@ -111,7 +140,7 @@     font="SansSerifSmall"     height="16"      initial_value="false" -   label="Disable Navigation & Interactivity"  +   label="Allow Navigation & Interactivity"      left="30"      mouse_opaque="true"     name="perms_anyone_interact"  @@ -125,7 +154,7 @@     font="SansSerifSmall"     height="16"      initial_value="false" -   label="Hide Control Bar"  +   label="Show Control Bar"      left="30"      mouse_opaque="true"     name="perms_anyone_control"  diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml index 6e82713f06..1f41a0d284 100644 --- a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml +++ b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml @@ -48,7 +48,7 @@     bottom_delta="0"     text_color="0.4 0.4 0.4 1.0"      name="home_url_fails_some_items_in_whitelist"> -    Entries that the home URL fails against are marked: +    Entries that the home page fails against are marked:    </text>    <button      bottom_delta="-36"  @@ -82,7 +82,7 @@     left="30"     text_color="0.6 0.0 0.0 1.0"     name="home_url_fails_whitelist"> -Warning: the home URL specified in the General tab  +Warning: the home page specified in the General tab   fails to pass this whitelist. It has been disabled   until a valid entry has been added.    </text> diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml index 07f9095640..d4a6c7f3b3 100644 --- a/indra/newview/skins/default/xui/en/panel_places.xml +++ b/indra/newview/skins/default/xui/en/panel_places.xml @@ -22,7 +22,7 @@ background_visible="true"       height="23"       layout="topleft"       left="15" -     label="Filter" +     label="Filter Places"       max_length="300"       name="Filter"       top="3" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 78b90eefcc..405ff02836 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -284,7 +284,7 @@ Avatars:       enabled_control="EnableVoiceChat"       control_name="PushToTalkToggle"       height="20" -     label="Toggle mode for microphone when I press the speak trigger key:" +     label="Toggle mode for microphone when I press the Speak trigger key:"       layout="topleft"       left="30"       name="push_to_talk_toggle_check" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml index 5332007baf..d8e3f4ccfb 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -348,23 +348,24 @@     label="Input/Output devices"     layout="topleft"     left="30" -   top="270" +   top="262"     name="device_settings_btn"     width="190">    </button>      <panel -     background_visible="true" +     background_visible="false"       bg_alpha_color="DkGray"       visiblity_control="ShowDeviceSettings"       border="false"       follows="top|left" -     height="145" +     height="120"       label="Device Settings"       layout="topleft"       left="0"       name="device_settings_panel"       class="panel_voice_device_settings" -     width="501"> +     width="501" +     top="285">        <panel.string          name="default_text">          Default @@ -397,8 +398,33 @@       left="165"       max_chars="128"       name="voice_input_device" -     top_pad="0" +     top_pad="-2"       width="200" /> +   <text +     type="string" +     length="1" +     follows="left|top" +     height="16" +     layout="topleft" +     left="165" +     name="My volume label" +     top_pad="5" +     width="200"> +        My volume: +    </text> +      <slider_bar +        control_name="AudioLevelMic" +     follows="left|top" +     height="17" +     increment="0.05" +     initial_value="1.0" +     layout="topleft" +     left="160" +     max_val="2" +     name="mic_volume_slider" +     tool_tip="Change the volume using this slider" +     top_pad="-2" +     width="220" />      <text       type="string"       text_color="EmphasisColor" @@ -408,7 +434,7 @@       layout="topleft"       left_pad="5"       name="wait_text" -     top_delta="5" +     top_delta="0"       width="110">          Please wait      </text> @@ -417,7 +443,7 @@       layout="topleft"       left_delta="0"       name="bar0" -     top_delta="-5" +     top_delta="0"       width="20" />      <locate       height="20" @@ -453,7 +479,7 @@               left="80"               name="speaker_icon"               mouse_opaque="false" -             top_pad="4" +             top_pad="-8"               visible="true"               width="22" />      <text @@ -475,7 +501,7 @@       left="165"       max_chars="128"       name="voice_output_device" -     top_pad="0" +     top_pad="-2"       width="200" />      </panel>      </panel> 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 b4f72a48bc..bffb28d16e 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 @@ -9,7 +9,7 @@  	width="800">    <string name="control_background_image_name">Inspector_Background</string>    <string name="skip_step">0.2</string> -  <string name="min_width">400</string> +  <string name="min_width">300</string>    <string name="min_height">120</string>    <string name="zoom_near_padding">1.0</string>    <string name="zoom_medium_padding">1.25</string> @@ -190,7 +190,7 @@  		layout="topleft"  		top="14"  		min_width="22" -		width="22"> +		width="24">  	  <button  		  image_overlay="Play_Off"  		  image_disabled="PushButton_Disabled" @@ -200,6 +200,8 @@  		  hover_glow_amount="0.15"  		  layout="topleft"  		  tool_tip = "Play media" +		  left_delta="2" +		  top="4"  		  height="22"  		  min_width="22"  		  width="22"> @@ -214,7 +216,7 @@  		layout="topleft"  		top="18"  		min_width="22" -		width="22"> +		width="24">  	  <button  		  image_overlay="Pause_Off"  		  image_disabled="PushButton_Disabled" @@ -224,6 +226,9 @@  		  hover_glow_amount="0.15"  		  layout="topleft"  		  height="22" +		  width="22" +		  left_delta="-1" +		  top="4"  		  tool_tip = "Pause media">  		<button.commit_callback  			function="MediaCtrl.Pause" /> diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml index d006fd0700..e04af2bad6 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml @@ -39,26 +39,38 @@  	     top="4"  	     width="18" />      <button -	     follows="top|right" -	     height="25" -	     image_overlay="BackArrow_Off" -	     layout="topleft" -	     name="back_btn" -	     picture_style="true" -	     right="-5" -	     tab_stop="false" -	     top="0" -	     width="25" /> +     follows="top|right" +     height="23" +     image_overlay="BackArrow_Off" +     layout="topleft" +     left="10" +     name="back_btn" +     tab_stop="false" +     top="0" +     width="23" /> +    <text +     follows="top|left|right" +     font="SansSerifHugeBold" +     height="26" +     layout="topleft" +     left_pad="10" +     name="title" +     text_color="white" +     top="0" +     use_ellipses="true" +     value="Item Properties" +     width="275" />  	<panel           follows="all"           height="500"           label=""           layout="topleft" -         left="5" +         left="10"           help_topic=""           top="30" -		 border="1" -         width="313"> +         width="313" +   background_visible="true" +   bg_alpha_color="DkGray2">  	    <text	 	 	   		     type="string"  		     length="1" @@ -98,7 +110,7 @@  		     border_style="line"      		 border_thickness="1"  	    	 follows="left|top|right" -	    	 height="16" +	    	 height="23"  		     layout="topleft"      		 left_delta="78"  		     max_length="127" @@ -109,7 +121,7 @@  		     type="string"  		     length="1"  		     follows="left|top" -		     height="16" +		     height="23"  		     layout="topleft"  		     left="10"  		     name="LabelCreatorTitle" @@ -121,7 +133,7 @@  		     type="string"  		     length="1"  		     follows="left|top" -		     height="16" +		     height="23"  		     layout="topleft"  		     left_delta="78"  		     name="LabelCreatorName" @@ -131,7 +143,7 @@  	     </text>  	     <button  			 follows="top|right" -			 height="16" +			 height="23"  			 label="Profile..."  			 layout="topleft"  			 left_delta="144" @@ -142,7 +154,7 @@  			 type="string"  			 length="1"  			 follows="left|top" -			 height="16" +			 height="23"  			 layout="topleft"  			 left="10"  			 name="LabelOwnerTitle" @@ -154,7 +166,7 @@  			 type="string"  			 length="1"  			 follows="left|top" -			 height="16" +			 height="23"  			 layout="topleft"  			 left_delta="78"  			 name="LabelOwnerName" @@ -164,7 +176,7 @@  	     </text>  	     <button  			 follows="top|right" -			 height="16" +			 height="23"  			 label="Profile..."  			 layout="topleft"  			 left_delta="144" @@ -175,7 +187,7 @@  			 type="string"  			 length="1"  			 follows="left|top" -			 height="16" +			 height="23"  			 layout="topleft"  			 left="10"  			 name="LabelAcquiredTitle" @@ -187,7 +199,7 @@  			 type="string"  			 length="1"  			 follows="left|top" -			 height="16" +			 height="23"  			 layout="topleft"  			 left_delta="78"  			 name="LabelAcquiredDate" @@ -199,7 +211,7 @@  			 type="string"  			 length="1"  			 follows="left|top" -			 height="10" +			 height="23"  			 layout="topleft"  			 left="10"  			 name="OwnerLabel" @@ -208,7 +220,7 @@  			You:  	    </text>  	    <check_box -			 height="16" +			 height="23"  			 label="Edit"  			 layout="topleft"  			 left_pad="5" @@ -216,7 +228,7 @@  			 top_delta="0"  			 width="78" />  	    <check_box -			 height="16" +			 height="23"  			 label="Copy"  			 layout="topleft"  			 left_delta="0" @@ -224,7 +236,7 @@  			 top_pad="5"  			 width="88" />  	    <check_box -			 height="16" +			 height="23"  			 label="Resell"  			 layout="topleft"  			 left_delta="0" @@ -480,31 +492,4 @@  			Price: L$  	    </text-->  	</panel> -    <panel -		 height="25" -		 layout="bottomright" -		 help_topic="button_tab" -		 name="button_panel" -		 left="5" -		 bottom="5" -		 width="313"> -	    <button -		     follows="bottom|right" -		     height="25" -		     label="Cancel" -		     layout="topleft" -		     name="cancel_btn" -		     right="-1" -		     top="0" -		     width="70" /> -	    <button -		     follows="bottom|right" -		     height="25" -		     label="Save" -		     layout="topleft" -		     name="save_btn" -		     left_pad="-135" -		     top="0" -		     width="60" /> -	</panel>  </panel> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 79b7bef765..2f50c5ee6c 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -460,7 +460,7 @@ Returns the rotation of detected object number (returns <0,0,0,1> if numbe  	</string>  	<string name="LSLTipText_llDetectedGroup" translate="false">  integer llDetectedGroup(integer number) -Returns an integer that is a boolean representing if the detected object or avatar is in the same group that the prim containing the script is set to +Returns TRUE if detected object is part of same group as owner  	</string>  	<string name="LSLTipText_llDetectedLinkNumber" translate="false">  integer llDetectedLinkNumber(integer number) @@ -2112,6 +2112,10 @@ this texture in your inventory  		Unknown file extension .%s  Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh  	</string> +  <string name="MuteObject">Block</string> +  <string name="MuteAvatar">Block</string> +  <string name="UnmuteObject">Unblock</string> +  <string name="UnmuteAvatar">Unblock</string>  	<string name="AddLandmarkNavBarMenu">Add to My Landmarks...</string>  	<string name="EditLandmarkNavBarMenu">Edit my Landmark...</string> diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml index 28ed560543..d7aa71a441 100644 --- a/indra/newview/skins/default/xui/en/widgets/button.xml +++ b/indra/newview/skins/default/xui/en/widgets/button.xml @@ -18,5 +18,6 @@  	font="SansSerifSmall"          hover_glow_amount="0.15"          halign="center" +        pad_bottom="2"           scale_image="true">  </button> diff --git a/indra/newview/skins/default/xui/en/widgets/floater.xml b/indra/newview/skins/default/xui/en/widgets/floater.xml index 19fb520b44..85d0c633af 100644 --- a/indra/newview/skins/default/xui/en/widgets/floater.xml +++ b/indra/newview/skins/default/xui/en/widgets/floater.xml @@ -9,8 +9,6 @@   background_visible="true"   background_opaque="false"   header_height="25" -         top="0" -         left="0"    close_image="Icon_Close_Foreground"   restore_image="Icon_Restore_Foreground"   minimize_image="Icon_Minimize_Foreground" diff --git a/indra/newview/tests/llcapabilitylistener_test.cpp b/indra/newview/tests/llcapabilitylistener_test.cpp index 4759c7dc91..ca7d02fc68 100644 --- a/indra/newview/tests/llcapabilitylistener_test.cpp +++ b/indra/newview/tests/llcapabilitylistener_test.cpp @@ -50,6 +50,7 @@  #include "tests/networkio.h"  #include "tests/commtest.h"  #include "tests/wrapllerrs.h" +#include "message.h"  #include "stringize.h"  #if defined(LL_WINDOWS)  | 
