diff options
47 files changed, 512 insertions, 173 deletions
| @@ -65,3 +65,5 @@ db0fe9bb65187f365e58a717dd23d0f4754a9c1d DRTVWR-17_2.3.0-beta2  1ed382c6a08ba3850b6ce9061bc551ddece0ea07 DRTVWR-25_2.4.0-release  345b17e7cf630db77e840b4fe3451bd476d750a3 DRTVWR-32_2.5.0-beta1  54d772d8687c69b1d773f6ce14bbc7bdc9d6c05f DRTVWR-33_2.5.0-beta2 +b723921b5c711bd24dbe77dc76ef488b544dac78 2.5.0-beta3 +b723921b5c711bd24dbe77dc76ef488b544dac78 DRTVWR-34_2.5.0-beta3 diff --git a/doc/contributions.txt b/doc/contributions.txt index 4e91bbdd36..8765240caa 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -373,20 +373,23 @@ JB Kraft  Joghert LeSabre  	VWR-64  Jonathan Yap +	STORM-435  	STORM-523  	STORM-596  	STORM-615  	STORM-616 +	STORM-643  	STORM-679  	STORM-723  	STORM-726  	STORM-737 -	STORM-869  	STORM-785  	STORM-812 +	STORM-829 +	STORM-844 +	STORM-869  	VWR-17801  	VWR-24347 -	STORM-844  Kage Pixel  	VWR-11  Ken March @@ -769,6 +772,7 @@ Twisted Laws  	STORM-466  	STORM-467  	STORM-844 +	STORM-643  Vadim Bigbear  	VWR-2681  Vector Hastings diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp index d1c74b6fa1..28dc3bd313 100644 --- a/indra/llimage/llimageworker.cpp +++ b/indra/llimage/llimageworker.cpp @@ -38,6 +38,12 @@ LLImageDecodeThread::LLImageDecodeThread(bool threaded)  	mCreationMutex = new LLMutex(getAPRPool());  } +//virtual  +LLImageDecodeThread::~LLImageDecodeThread() +{ +	delete mCreationMutex ; +} +  // MAIN THREAD  // virtual  S32 LLImageDecodeThread::update(U32 max_time_ms) diff --git a/indra/llimage/llimageworker.h b/indra/llimage/llimageworker.h index c3c92ec832..c684222fa5 100644 --- a/indra/llimage/llimageworker.h +++ b/indra/llimage/llimageworker.h @@ -73,6 +73,8 @@ public:  public:  	LLImageDecodeThread(bool threaded = true); +	virtual ~LLImageDecodeThread(); +  	handle_t decodeImage(LLImageFormatted* image,  						 U32 priority, S32 discard, BOOL needs_aux,  						 Responder* responder); diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 69333ff4a3..a23f809b71 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2473,16 +2473,24 @@ namespace {  		if(data["required"].asBoolean())  		{ -			apply_callback = &apply_update_ok_callback;  			if(LLStartUp::getStartupState() <= STATE_LOGIN_WAIT)  			{  				// The user never saw the progress bar. +				apply_callback = &apply_update_ok_callback;  				notification_name = "RequiredUpdateDownloadedVerboseDialog";  			} -			else +			else if(LLStartUp::getStartupState() < STATE_WORLD_INIT)  			{ +				// The user is logging in but blocked. +				apply_callback = &apply_update_ok_callback;  				notification_name = "RequiredUpdateDownloadedDialog";  			} +			else +			{ +				// The user is already logged in; treat like an optional update. +				apply_callback = &apply_update_callback; +				notification_name = "DownloadBackgroundTip"; +			}  		}  		else  		{ diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp index 1b94d8cbcd..80920c80d6 100644 --- a/indra/newview/llfloatermap.cpp +++ b/indra/newview/llfloatermap.cpp @@ -83,7 +83,8 @@ LLFloaterMap::~LLFloaterMap()  BOOL LLFloaterMap::postBuild()  {  	mMap = getChild<LLNetMap>("Net Map"); -	mMap->setToolTipMsg(getString("ToolTipMsg"));	 +	mMap->setToolTipMsg(gSavedSettings.getBOOL("DoubleClickTeleport") ?  +		getString("AltToolTipMsg") : getString("ToolTipMsg"));  	sendChildToBack(mMap);  	mTextBoxNorth = getChild<LLTextBox> ("floater_map_north"); diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 0931f77281..add591895b 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -1363,6 +1363,36 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)  	floater->getChildView("auto_snapshot_check")->setVisible(		is_advance);  	floater->getChildView("image_quality_slider")->setVisible(	is_advance && show_slider); +	if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot")) +	{ //clamp snapshot resolution to window size when showing UI or HUD in snapshot + +		LLSpinCtrl* width_ctrl = floater->getChild<LLSpinCtrl>("snapshot_width"); +		LLSpinCtrl* height_ctrl = floater->getChild<LLSpinCtrl>("snapshot_height"); + +		S32 width = gViewerWindow->getWindowWidthRaw(); +		S32 height = gViewerWindow->getWindowHeightRaw(); + +		width_ctrl->setMaxValue(width); +		 +		height_ctrl->setMaxValue(height); + +		if (width_ctrl->getValue().asInteger() > width) +		{ +			width_ctrl->forceSetValue(width); +		} +		if (height_ctrl->getValue().asInteger() > height) +		{ +			height_ctrl->forceSetValue(height); +		} +	} +	else +	{  +		LLSpinCtrl* width = floater->getChild<LLSpinCtrl>("snapshot_width"); +		width->setMaxValue(6016); +		LLSpinCtrl* height = floater->getChild<LLSpinCtrl>("snapshot_height"); +		height->setMaxValue(6016); +	} +		  	LLSnapshotLivePreview* previewp = getPreviewView(floater);  	BOOL got_bytes = previewp && previewp->getDataSize() > 0;  	BOOL got_snap = previewp && previewp->getSnapshotUpToDate(); @@ -1810,6 +1840,13 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL  		previewp->getSize(width, height); +		if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot")) +		{ //clamp snapshot resolution to window size when showing UI or HUD in snapshot +			width = llmin(width, gViewerWindow->getWindowWidthRaw()); +			height = llmin(height, gViewerWindow->getWindowHeightRaw()); +		} + +		  		if(checkImageSize(previewp, width, height, TRUE, previewp->getMaxImageSize()))  		{  			resetSnapshotSizeOnUI(view, width, height) ; diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp index 1a8ec4991d..93039d935d 100644 --- a/indra/newview/llnetmap.cpp +++ b/indra/newview/llnetmap.cpp @@ -47,6 +47,7 @@  #include "llagentcamera.h"  #include "llappviewer.h" // for gDisconnected  #include "llcallingcard.h" // LLAvatarTracker +#include "llfloaterworldmap.h"  #include "lltracker.h"  #include "llsurface.h"  #include "llviewercamera.h" @@ -91,7 +92,8 @@ LLNetMap::LLNetMap (const Params & p)  	mObjectImagep(),  	mClosestAgentToCursor(),  	mClosestAgentAtLastRightClick(), -	mToolTipMsg() +	mToolTipMsg(), +	mPopupMenu(NULL)  {  	mDotRadius = llmax(DOT_SCALE * mPixelsPerMeter, MIN_DOT_RADIUS);  	setScale(gSavedSettings.getF32("MiniMapScale")); @@ -102,6 +104,21 @@ LLNetMap::~LLNetMap()  	gSavedSettings.setF32("MiniMapScale", mScale);  } +BOOL LLNetMap::postBuild() +{ +	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; +	 +	registrar.add("Minimap.Zoom", boost::bind(&LLNetMap::handleZoom, this, _2)); +	registrar.add("Minimap.Tracker", boost::bind(&LLNetMap::handleStopTracking, this, _2)); + +	mPopupMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_mini_map.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); +	if (mPopupMenu && !LLTracker::isTracking(0)) +	{ +		mPopupMenu->setItemEnabled ("Stop Tracking", false); +	} +	return TRUE; +} +  void LLNetMap::setScale( F32 scale )  {  	scale = llclamp(scale, MAP_SCALE_MIN, MAP_SCALE_MAX); @@ -354,16 +371,49 @@ void LLNetMap::draw()  				pos_map = globalPosToView(pos_global); +				LLUUID uuid(NULL);  				BOOL show_as_friend = FALSE;  				if( i < regionp->mMapAvatarIDs.count())  				{ -					show_as_friend = (LLAvatarTracker::instance().getBuddyInfo(regionp->mMapAvatarIDs.get(i)) != NULL); +					uuid = regionp->mMapAvatarIDs.get(i); +					show_as_friend = (LLAvatarTracker::instance().getBuddyInfo(uuid) != NULL);  				} + +				LLColor4 color = show_as_friend ? map_avatar_friend_color : map_avatar_color;  				LLWorldMapView::drawAvatar(  					pos_map.mV[VX], pos_map.mV[VY],  -					show_as_friend ? map_avatar_friend_color : map_avatar_color,  +					color,   					pos_map.mV[VZ], mDotRadius); +				if(uuid.notNull()) +				{ +					bool selected = false; +					uuid_vec_t::iterator sel_iter = gmSelected.begin(); +					for (; sel_iter != gmSelected.end(); sel_iter++) +					{ +						if(*sel_iter == uuid) +						{ +							selected = true; +							break; +						} +					} +					if(selected) +					{ +						if( (pos_map.mV[VX] < 0) || +							(pos_map.mV[VY] < 0) || +							(pos_map.mV[VX] >= getRect().getWidth()) || +							(pos_map.mV[VY] >= getRect().getHeight()) ) +						{ +							S32 x = llround( pos_map.mV[VX] ); +							S32 y = llround( pos_map.mV[VY] ); +							LLWorldMapView::drawTrackingCircle( getRect(), x, y, color, 1, 10); +						} else +						{ +							LLWorldMapView::drawTrackingDot(pos_map.mV[VX],pos_map.mV[VY],color,0.f); +						} +					} +				} +  				F32	dist_to_cursor = dist_vec(LLVector2(pos_map.mV[VX], pos_map.mV[VY]),  											  LLVector2(local_mouse_x,local_mouse_y));  				if(dist_to_cursor < min_pick_dist && dist_to_cursor < closest_dist) @@ -460,6 +510,13 @@ void LLNetMap::draw()  	gGL.popUIMatrix();  	LLUICtrl::draw(); + +	if (LLTracker::isTracking(0)) +	{ +		mPopupMenu->setItemEnabled ("Stop Tracking", true); +	} +	 +  }  void LLNetMap::reshape(S32 width, S32 height, BOOL called_from_parent) @@ -600,7 +657,6 @@ BOOL LLNetMap::handleToolTip( S32 x, S32 y, MASK mask )  	args["[REGION]"] = region_name;  	std::string msg = mToolTipMsg;  	LLStringUtil::format(msg, args); -  	LLToolTipMgr::instance().show(LLToolTip::Params()  		.message(msg)  		.sticky_rect(sticky_rect)); @@ -793,6 +849,9 @@ BOOL LLNetMap::handleMouseDown( S32 x, S32 y, MASK mask )  BOOL LLNetMap::handleMouseUp( S32 x, S32 y, MASK mask )  { +	if(abs(mMouseDown.mX-x)<3 && abs(mMouseDown.mY-y)<3) +		handleClick(x,y,mask); +  	if (hasMouseCapture())  	{  		if (mPanning) @@ -821,6 +880,53 @@ BOOL LLNetMap::handleMouseUp( S32 x, S32 y, MASK mask )  	return FALSE;  } +BOOL LLNetMap::handleRightMouseDown(S32 x, S32 y, MASK mask) +{ +	if (mPopupMenu) +	{ +		mPopupMenu->buildDrawLabels(); +		mPopupMenu->updateParent(LLMenuGL::sMenuContainer); +		LLMenuGL::showPopup(this, mPopupMenu, x, y); +	} +	return TRUE; +} + +BOOL LLNetMap::handleClick(S32 x, S32 y, MASK mask) +{ +	// TODO: allow clicking an avatar on minimap to select avatar in the nearby avatar list +	// if(mClosestAgentToCursor.notNull()) +	//     mNearbyList->selectUser(mClosestAgentToCursor); +	// Needs a registered observer i guess to accomplish this without using +	// globals to tell the mNearbyList in llpeoplepanel to select the user +	return TRUE; +} + +BOOL LLNetMap::handleDoubleClick(S32 x, S32 y, MASK mask) +{ +	LLVector3d pos_global = viewPosToGlobal(x, y); +	 +	// If we're not tracking a beacon already, double-click will set one  +	if (!LLTracker::isTracking(NULL)) +	{ +		LLFloaterWorldMap* world_map = LLFloaterWorldMap::getInstance(); +		if (world_map) +		{ +			world_map->trackLocation(pos_global); +		} +	} +	 +	if (gSavedSettings.getBOOL("DoubleClickTeleport")) +	{ +		// If DoubleClickTeleport is on, double clicking the minimap will teleport there +		gAgent.teleportViaLocationLookAt(pos_global); +	} +	else  +	{ +		LLFloaterReg::showInstance("world_map"); +	} +	return TRUE; +} +  // static  bool LLNetMap::outsideSlop( S32 x, S32 y, S32 start_x, S32 start_y, S32 slop )  { @@ -871,3 +977,38 @@ BOOL LLNetMap::handleHover( S32 x, S32 y, MASK mask )  	return TRUE;  } + +void LLNetMap::handleZoom(const LLSD& userdata) +{ +	std::string level = userdata.asString(); +	 +	F32 scale = 0.0f; +	if (level == std::string("default")) +	{ +		LLControlVariable *pvar = gSavedSettings.getControl("MiniMapScale"); +		if(pvar) +		{ +			pvar->resetToDefault(); +			scale = gSavedSettings.getF32("MiniMapScale"); +		} +	} +	else if (level == std::string("close")) +		scale = LLNetMap::MAP_SCALE_MAX; +	else if (level == std::string("medium")) +		scale = LLNetMap::MAP_SCALE_MID; +	else if (level == std::string("far")) +		scale = LLNetMap::MAP_SCALE_MIN; +	if (scale != 0.0f) +	{ +		setScale(scale); +	} +} + +void LLNetMap::handleStopTracking (const LLSD& userdata) +{ +	if (mPopupMenu) +	{ +		mPopupMenu->setItemEnabled ("Stop Tracking", false); +		LLTracker::stopTracking ((void*)LLTracker::isTracking(NULL)); +	} +} diff --git a/indra/newview/llnetmap.h b/indra/newview/llnetmap.h index e053b1c177..20fcee0814 100644 --- a/indra/newview/llnetmap.h +++ b/indra/newview/llnetmap.h @@ -39,6 +39,7 @@ class LLCoordGL;  class LLImageRaw;  class LLViewerTexture;  class LLFloaterMap; +class LLMenuGL;  class LLNetMap : public LLUICtrl  { @@ -72,7 +73,12 @@ public:  	/*virtual*/ BOOL	handleHover( S32 x, S32 y, MASK mask );  	/*virtual*/ BOOL	handleToolTip( S32 x, S32 y, MASK mask);  	/*virtual*/ void	reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); -	 + +	/*virtual*/ BOOL 	postBuild(); +	/*virtual*/ BOOL	handleRightMouseDown( S32 x, S32 y, MASK mask ); +	/*virtual*/ BOOL	handleClick(S32 x, S32 y, MASK mask); +	/*virtual*/ BOOL	handleDoubleClick( S32 x, S32 y, MASK mask ); +  	void			setScale( F32 scale );  	void			setToolTipMsg(const std::string& msg) { mToolTipMsg = msg; }  	void			renderScaledPointGlobal( const LLVector3d& pos, const LLColor4U &color, F32 radius ); @@ -120,6 +126,16 @@ private:  	LLUUID			mClosestAgentAtLastRightClick;  	std::string		mToolTipMsg; + +public: +	void			setSelected(uuid_vec_t uuids) { gmSelected=uuids; }; + +private: +	void handleZoom(const LLSD& userdata); +	void handleStopTracking (const LLSD& userdata); + +	LLMenuGL*		mPopupMenu; +	uuid_vec_t		gmSelected;  }; diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 53529b9f8b..73c4722b82 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -625,8 +625,13 @@ void LLPanelAvatarProfile::processGroupProperties(const LLAvatarGroups* avatar_g  	getChild<LLUICtrl>("sl_groups")->setValue(groups);  } -void LLPanelAvatarProfile::got_full_name_callback( const LLUUID& id, const std::string& full_name, bool is_group ) +static void got_full_name_callback( LLHandle<LLPanel> profile_panel_handle, const std::string& full_name )  { +	if (profile_panel_handle.isDead() ) return; + +	LLPanelAvatarProfile* profile_panel = dynamic_cast<LLPanelAvatarProfile*>(profile_panel_handle.get()); +	if ( ! profile_panel ) return; +  	LLStringUtil::format_map_t args;  	std::string name; @@ -641,8 +646,8 @@ void LLPanelAvatarProfile::got_full_name_callback( const LLUUID& id, const std::  	args["[NAME]"] = name; -	std::string linden_name = getString("name_text_args", args); -	getChild<LLUICtrl>("name_descr_text")->setValue(linden_name); +	std::string linden_name = profile_panel->getString("name_text_args", args); +	profile_panel->getChild<LLUICtrl>("name_descr_text")->setValue(linden_name);  }  void LLPanelAvatarProfile::onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name) @@ -667,16 +672,17 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)  	}  	// ask (asynchronously) for the avatar name +	LLHandle<LLPanel> profile_panel_handle = getHandle();  	std::string full_name;  	if (gCacheName->getFullName(avatar_data->agent_id, full_name))  	{  		// name in cache, call callback directly -		got_full_name_callback( avatar_data->agent_id, full_name, false ); +		got_full_name_callback( profile_panel_handle, full_name );  	}  	else  	{  		// not in cache, lookup name  -		gCacheName->get(avatar_data->agent_id, false, boost::bind( &LLPanelAvatarProfile::got_full_name_callback, this, _1, _2, _3 )); +		gCacheName->get(avatar_data->agent_id, false, boost::bind( got_full_name_callback, profile_panel_handle, _2 ));  	}  	// get display name diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index 5f36d1026f..e95441cd58 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -209,7 +209,6 @@ protected:  	void onShareButtonClick();  private: -	void got_full_name_callback( const LLUUID& id, const std::string& full_name, bool is_group );  	void onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);  	typedef std::map< std::string,LLUUID>	group_map_t; diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 54198d6aa4..b07a46a222 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -54,6 +54,7 @@  #include "llgroupactions.h"  #include "llgrouplist.h"  #include "llinventoryobserver.h" +#include "llnetmap.h"  #include "llpanelpeoplemenus.h"  #include "llsidetray.h"  #include "llsidetraypanelcontainer.h" @@ -494,7 +495,8 @@ LLPanelPeople::LLPanelPeople()  		mNearbyGearButton(NULL),  		mFriendsGearButton(NULL),  		mGroupsGearButton(NULL), -		mRecentGearButton(NULL) +		mRecentGearButton(NULL), +		mMiniMap(NULL)  {  	mFriendListUpdater = new LLFriendListUpdater(boost::bind(&LLPanelPeople::updateFriendList,	this));  	mNearbyListUpdater = new LLNearbyListUpdater(boost::bind(&LLPanelPeople::updateNearbyList,	this)); @@ -567,6 +569,9 @@ BOOL LLPanelPeople::postBuild()  	mNearbyList->setNoItemsMsg(getString("no_one_near"));  	mNearbyList->setNoFilteredItemsMsg(getString("no_one_filtered_near"));  	mNearbyList->setShowIcons("NearbyListShowIcons"); +	mMiniMap = (LLNetMap*)getChildView("Net Map",true); +	mMiniMap->setToolTipMsg(gSavedSettings.getBOOL("DoubleClickTeleport") ?  +		getString("AltMiniMapToolTipMsg") :	getString("MiniMapToolTipMsg"));  	mRecentList = getChild<LLPanel>(RECENT_TAB_NAME)->getChild<LLAvatarList>("avatar_list");  	mRecentList->setNoItemsCommentText(getString("no_recent_people")); @@ -1088,6 +1093,12 @@ void LLPanelPeople::onAvatarListDoubleClicked(LLUICtrl* ctrl)  void LLPanelPeople::onAvatarListCommitted(LLAvatarList* list)  { +	if (getActiveTabName() == NEARBY_TAB_NAME) +	{ +		uuid_vec_t selected_uuids; +		getCurrentItemIDs(selected_uuids); +		mMiniMap->setSelected(selected_uuids); +	} else  	// Make sure only one of the friends lists (online/all) has selection.  	if (getActiveTabName() == FRIENDS_TAB_NAME)  	{ diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h index b496bb3779..46c58cd139 100644 --- a/indra/newview/llpanelpeople.h +++ b/indra/newview/llpanelpeople.h @@ -142,6 +142,7 @@ private:  	LLAvatarList*			mNearbyList;  	LLAvatarList*			mRecentList;  	LLGroupList*			mGroupList; +	LLNetMap*				mMiniMap;  	LLHandle<LLView>		mGroupPlusMenuHandle;  	LLHandle<LLView>		mNearbyViewSortMenuHandle; diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 16284d1a7e..8e5beb33ce 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -1597,7 +1597,7 @@ std::string LLPreviewGesture::getLabel(std::vector<std::string> labels)  	if(v_labels[0]=="Chat")  	{ -		result=LLTrans::getString("Chat"); +		result=LLTrans::getString("Chat Message");  	}      else if(v_labels[0]=="Sound")	  	{ diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index 19d1bdee86..eb537c7d7b 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -141,6 +141,8 @@ public:  	void			toggleTabDocked(); +	BOOL			handleScrollWheel(S32 x, S32 y, S32 clicks); +  	LLPanel *getPanel();  private:  	std::string mTabTitle; @@ -269,6 +271,15 @@ void LLSideTrayTab::toggleTabDocked()  	LLFloaterReg::toggleInstance("side_bar_tab", tab_name);  } +BOOL LLSideTrayTab::handleScrollWheel(S32 x, S32 y, S32 clicks) +{ +	// Let children handle the event +	LLUICtrl::handleScrollWheel(x, y, clicks); + +	// and then eat it to prevent in-world scrolling (STORM-351). +	return TRUE; +} +  void LLSideTrayTab::dock(LLFloater* floater_tab)  {  	LLSideTray* side_tray = getSideTray(); diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index ddb11829df..41b7c13826 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -647,8 +647,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)  		LLGLState::checkTextureChannels();  		LLGLState::checkClientArrays(); -		BOOL to_texture = !for_snapshot && -						gPipeline.canUseVertexShaders() && +		BOOL to_texture = gPipeline.canUseVertexShaders() &&  						LLPipeline::sRenderGlow;  		LLAppViewer::instance()->pingMainloopTimeout("Display:Swap"); @@ -709,7 +708,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)  			glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);  		} -		if (!for_snapshot) +		//if (!for_snapshot)  		{  			LLMemType mt_gw(LLMemType::MTYPE_DISPLAY_GEN_REFLECTION);  			LLAppViewer::instance()->pingMainloopTimeout("Display:Imagery"); @@ -1043,8 +1042,7 @@ LLRect get_whole_screen_region()  		S32 tile_height = llround((F32)gViewerWindow->getWorldViewHeightScaled() / zoom_factor);  		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->getWorldViewHeightScaled() - (tile_y * tile_height), tile_width, tile_height);  	}  	return whole_screen; @@ -1124,10 +1122,14 @@ void render_ui(F32 zoom_factor, int subfield)  	LLMemType mt_ru(LLMemType::MTYPE_DISPLAY_RENDER_UI);  	LLGLState::checkStates(); -	glPushMatrix(); -	glLoadMatrixd(gGLLastModelView);  	glh::matrix4f saved_view = glh_get_current_modelview(); -	glh_set_current_modelview(glh_copy_matrix(gGLLastModelView)); + +	if (!gSnapshot) +	{ +		glPushMatrix(); +		glLoadMatrixd(gGLLastModelView); +		glh_set_current_modelview(glh_copy_matrix(gGLLastModelView)); +	}  	{  		BOOL to_texture = gPipeline.canUseVertexShaders() && @@ -1178,8 +1180,11 @@ void render_ui(F32 zoom_factor, int subfield)  		LLVertexBuffer::unbind();  	} -	glh_set_current_modelview(saved_view); -	glPopMatrix(); +	if (!gSnapshot) +	{ +		glh_set_current_modelview(saved_view); +		glPopMatrix(); +	}  	if (gDisplaySwapBuffers)  	{ @@ -1321,7 +1326,7 @@ void render_ui_2d()  	// render outline for HUD  	if (isAgentAvatarValid() && gAgentCamera.mHUDCurZoom < 0.98f)  	{ -		glPushMatrix(); +		gGL.pushMatrix();  		S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2);  		S32 half_height = (gViewerWindow->getWorldViewHeightScaled() / 2);  		glScalef(LLUI::sGLScaleFactor.mV[0], LLUI::sGLScaleFactor.mV[1], 1.f); @@ -1330,7 +1335,7 @@ void render_ui_2d()  		glScalef(zoom,zoom,1.f);  		gGL.color4fv(LLColor4::white.mV);  		gl_rect_2d(-half_width, half_height, half_width, -half_height, FALSE); -		glPopMatrix(); +		gGL.popMatrix();  		stop_glerror();  	} @@ -1378,8 +1383,7 @@ void render_ui_2d()  			gGL.setColorMask(true, false);  			LLUI::sDirtyRect = t_rect; -			 -	} +		}  		LLGLDisable cull(GL_CULL_FACE);  		LLGLDisable blend(GL_BLEND); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 6fc85a3944..103989ee80 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2721,6 +2721,14 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  				LLSD args;  				args["slurl"] = location;  				args["type"] = LLNotificationsUI::NT_NEARBYCHAT; + +				// Look for IRC-style emotes here so object name formatting is correct +				std::string prefix = message.substr(0, 4); +				if (prefix == "/me " || prefix == "/me'") +				{ +					chat.mChatStyle = CHAT_STYLE_IRC; +				} +  				LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args);  			} diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index ca0478ee0c..274dbe2cc8 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -4001,18 +4001,26 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  		LLPipeline::sShowHUDAttachments = FALSE;  	} +	// if not showing ui, use full window to render world view +	updateWorldViewRect(!show_ui); +  	// Copy screen to a buffer  	// crop sides or top and bottom, if taking a snapshot of different aspect ratio  	// from window -	S32 snapshot_width = mWindowRectRaw.getWidth(); -	S32 snapshot_height =  mWindowRectRaw.getHeight(); +	LLRect window_rect = show_ui ? getWindowRectRaw() : getWorldViewRectRaw();  + +	S32 snapshot_width = window_rect.getWidth(); +	S32 snapshot_height = window_rect.getHeight();  	// SNAPSHOT -	S32 window_width = mWindowRectRaw.getWidth(); -	S32 window_height = mWindowRectRaw.getHeight();	 -	LLRect window_rect = mWindowRectRaw; -	BOOL use_fbo = FALSE; +	S32 window_width = snapshot_width; +	S32 window_height = snapshot_height; +	 +	if (show_ui) +	{ +		image_width = llmin(image_width, window_width); +		image_height = llmin(image_height, window_height); +	} -	LLRenderTarget target;  	F32 scale_factor = 1.0f ;  	if(!keep_window_aspect) //image cropping  	{		 @@ -4025,45 +4033,24 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  	{  		if(image_width > window_width || image_height > window_height) //need to enlarge the scene  		{ -			if (!LLPipeline::sRenderDeferred && gGLManager.mHasFramebufferObject && !show_ui) -			{ -				GLint max_size = 0; -				glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE_EXT, &max_size); -		 -				if (image_width <= max_size && image_height <= max_size) //re-project the scene -				{ -					use_fbo = TRUE; -					 -					snapshot_width = image_width; -					snapshot_height = image_height; -					target.allocate(snapshot_width, snapshot_height, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, TRUE); -					window_width = snapshot_width; -					window_height = snapshot_height; -					scale_factor = 1.f; -					mWindowRectRaw.set(0, snapshot_height, snapshot_width, 0); -					target.bindTarget();			 -				} -			} - -			if(!use_fbo) //no re-projection, so tiling the scene -			{ -				F32 ratio = llmin( (F32)window_width / image_width , (F32)window_height / image_height) ; -				snapshot_width = (S32)(ratio * image_width) ; -				snapshot_height = (S32)(ratio * image_height) ; -				scale_factor = llmax(1.0f, 1.0f / ratio) ;	 -			} +			F32 ratio = llmin( (F32)window_width / image_width , (F32)window_height / image_height) ; +			snapshot_width = (S32)(ratio * image_width) ; +			snapshot_height = (S32)(ratio * image_height) ; +			scale_factor = llmax(1.0f, 1.0f / ratio) ;	  		} -		//else: keep the current scene scale, re-scale it if necessary after reading out.  	} -	// if not showing ui, use full window to render world view -	updateWorldViewRect(!show_ui); +	if (show_ui && scale_factor > 1.f) +	{ +		llwarns << "over scaling UI not supported." << llendl; +	}  	S32 buffer_x_offset = llfloor(((window_width - snapshot_width) * scale_factor) / 2.f);  	S32 buffer_y_offset = llfloor(((window_height - snapshot_height) * scale_factor) / 2.f);  	S32 image_buffer_x = llfloor(snapshot_width*scale_factor) ;  	S32 image_buffer_y = llfloor(snapshot_height *scale_factor) ; +  	if(image_buffer_x > max_size || image_buffer_y > max_size) //boundary check to avoid memory overflow  	{  		scale_factor *= llmin((F32)max_size / image_buffer_x, (F32)max_size / image_buffer_y) ; @@ -4072,7 +4059,7 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  	}  	if(image_buffer_x > 0 && image_buffer_y > 0)  	{ -	raw->resize(image_buffer_x, image_buffer_y, 3); +		raw->resize(image_buffer_x, image_buffer_y, 3);  	}  	else  	{ @@ -4084,12 +4071,13 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  	}  	BOOL high_res = scale_factor >= 2.f; // Font scaling is slow, only do so if rez is much higher -	if (high_res) +	if (high_res && show_ui)  	{ -		send_agent_pause(); +		llwarns << "High res UI snapshot not supported. " << llendl; +		/*send_agent_pause();  		//rescale fonts  		initFonts(scale_factor); -		LLHUDObject::reshapeAll(); +		LLHUDObject::reshapeAll();*/  	}  	S32 output_buffer_offset_y = 0; @@ -4185,12 +4173,6 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  		output_buffer_offset_y += subimage_y_offset;  	} -	if (use_fbo) -	{ -		mWindowRectRaw = window_rect; -		target.flush(); -		glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); -	}  	gDisplaySwapBuffers = FALSE;  	gDepthDirty = TRUE; @@ -4205,11 +4187,11 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  		LLPipeline::sShowHUDAttachments = TRUE;  	} -	if (high_res) +	/*if (high_res)  	{  		initFonts(1.f);  		LLHUDObject::reshapeAll(); -	} +	}*/  	// Pre-pad image to number of pixels such that the line length is a multiple of 4 bytes (for BMP encoding)  	// Note: this formula depends on the number of components being 3.  Not obvious, but it's correct.	 diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index b3312db4a0..a933500706 100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -651,7 +651,7 @@ void LLVOCache::readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::voca  void LLVOCache::purgeEntries(U32 size)  { -	while(mHeaderEntryQueue.size() >= size) +	while(mHeaderEntryQueue.size() > size)  	{  		header_entry_queue_t::iterator iter = mHeaderEntryQueue.begin() ;  		HeaderEntryInfo* entry = *iter ;			 diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index f67e3a9770..a207d3e050 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -2165,7 +2165,7 @@ void LLVOVolume::removeMediaImpl(S32 texture_index)  	}  	//make the face referencing to mMediaImplList[texture_index] to point back to the old texture. -	if(mDrawable) +	if(mDrawable && texture_index < mDrawable->getNumFaces())  	{  		LLFace* facep = mDrawable->getFace(texture_index) ;  		if(facep) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 59b526059b..39bc354250 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -5432,7 +5432,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  	gGL.setColorMask(true, true);  	glClearColor(0,0,0,0); -	if (for_snapshot) +	/*if (for_snapshot)  	{  		gGL.getTexUnit(0)->bind(&mGlow[1]);  		{ @@ -5443,14 +5443,21 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  			// If the snapshot is constructed from tiles, calculate which  			// tile we're in. -			const S32 num_horizontal_tiles = llceil(zoom_factor); -			const LLVector2 tile(subfield % num_horizontal_tiles, -								 (S32)(subfield / num_horizontal_tiles)); -			llassert(zoom_factor > 0.0); // Non-zero, non-negative. -			const F32 tile_size = 1.0/zoom_factor; -			 -			tc1 = tile*tile_size; // Top left texture coordinates -			tc2 = (tile+LLVector2(1,1))*tile_size; // Bottom right texture coordinates + +			//from LLViewerCamera::setPerpsective +			if (zoom_factor > 1.f) +			{ +				int pos_y = subfield / llceil(zoom_factor); +				int pos_x = subfield - (pos_y*llceil(zoom_factor)); +				F32 size = 1.f/zoom_factor; + +				tc1.set(pos_x*size, pos_y*size); +				tc2 = tc1 + LLVector2(size,size); +			} +			else +			{ +				tc2.set(1,1); +			}  			LLGLEnable blend(GL_BLEND);  			gGL.setSceneBlendType(LLRender::BT_ADD); @@ -5483,7 +5490,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)  		glPopMatrix();  		return; -	} +	}*/  	{  		{ diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 2c00120177..7b3cc7bdfa 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -107,6 +107,7 @@ with the same filename but different name    <texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_UpSelected" file_name="widgets/ComboButton_UpSelected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_Up_On_Selected" file_name="widgets/ComboButton_Up_On_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> +  <texture name="ComboButton_On" file_name="widgets/ComboButton_On.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_Off" file_name="widgets/ComboButton_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_UpOff" file_name="widgets/ComboButton_UpOff.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="Container" file_name="containers/Container.png" preload="false" /> diff --git a/indra/newview/skins/default/xui/da/floater_web_content.xml b/indra/newview/skins/default/xui/da/floater_web_content.xml new file mode 100644 index 0000000000..74092e88ec --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_web_content.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_web_content" title=""> +	<layout_stack name="stack1"> +		<layout_panel name="nav_controls"> +			<button name="back" tool_tip="Navigér tilbage"/> +			<button name="forward" tool_tip="Navigér frem"/> +			<button name="stop" tool_tip="Stop navigering"/> +			<button name="reload" tool_tip="Genindlæs side"/> +			<combo_box name="address" tool_tip="Indtast URL her"/> +			<icon name="media_secure_lock_flag" tool_tip="Sikker browsing"/> +			<button name="popexternal" tool_tip="Åben denne URL i din normale browser"/> +		</layout_panel> +	</layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/da/menu_login.xml b/indra/newview/skins/default/xui/da/menu_login.xml index 1231c4c08d..0b7a5040ae 100644 --- a/indra/newview/skins/default/xui/da/menu_login.xml +++ b/indra/newview/skins/default/xui/da/menu_login.xml @@ -16,7 +16,8 @@  		<menu_item_call label="Sæt vinduesstørrelse" name="Set Window Size..."/>  		<menu_item_call label="Vis betingelser" name="TOS"/>  		<menu_item_call label="Vis vigtig besked" name="Critical"/> -		<menu_item_call label="Test i web browser" name="Web Browser Test"/> +		<menu_item_call label="Media Browser Test" name="Web Browser Test"/> +		<menu_item_call label="Web Content Floater Test" name="Web Content Floater Test"/>  		<menu_item_check label="Vis gitter vælger" name="Show Grid Picker"/>  		<menu_item_call label="Vis notifikationskonsol" name="Show Notifications Console"/>  	</menu> diff --git a/indra/newview/skins/default/xui/da/menu_mini_map.xml b/indra/newview/skins/default/xui/da/menu_mini_map.xml index 9dcce49708..186dbd476a 100644 --- a/indra/newview/skins/default/xui/da/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/da/menu_mini_map.xml @@ -3,6 +3,7 @@  	<menu_item_call label="Zoom tæt" name="Zoom Close"/>  	<menu_item_call label="Zoom mellem" name="Zoom Medium"/>  	<menu_item_call label="Zoom langt" name="Zoom Far"/> +	<menu_item_call label="Zoom standard" name="Zoom Default"/>  	<menu_item_check label="Rotér kort" name="Rotate Map"/>  	<menu_item_check label="Auto centrér" name="Auto Center"/>  	<menu_item_call label="Fjern ref." name="Stop Tracking"/> diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index a3dcfdf4cc..fc32be9dc9 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -119,13 +119,15 @@  			<menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/>  			<menu_item_call label="Mange (L$[COST] pr. fil)..." name="Bulk Upload"/>  		</menu> +		<menu_item_call label="Fortyd" name="Undo"/> +		<menu_item_call label="Gendan" name="Redo"/>  	</menu>  	<menu label="Hjælp" name="Help">  		<menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/> +		<menu_item_check label="Aktiver tips" name="Enable Hints"/>  		<menu_item_call label="Rapporter misbrug" name="Report Abuse"/>  		<menu_item_call label="Rapportér fejl" name="Report Bug"/>  		<menu_item_call label="Om [APP_NAME]" name="About Second Life"/> -		<menu_item_check label="Aktiver tips" name="Enable Hints"/>  	</menu>  	<menu label="Avanceret" name="Advanced">  		<menu_item_call label="Gendan teksturer" name="Rebake Texture"/> @@ -266,7 +268,8 @@  			<menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/>  		</menu>  		<menu label="UI (brugerflade)" name="UI"> -			<menu_item_call label="Test web browser" name="Web Browser Test"/> +			<menu_item_call label="Media browser test" name="Web Browser Test"/> +			<menu_item_call label="Browser med webindhold" name="Web Content Browser"/>  			<menu_item_call label="Print info om valgt objekt" name="Print Selected Object Info"/>  			<menu_item_call label="Hukommelse statistik" name="Memory Stats"/>  			<menu_item_check label="Debug konsol for region" name="Region Debug Console"/> diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index 27024f4eaa..a3c4897ee1 100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -109,6 +109,10 @@ Vælg kun en genstand, og prøv igen.  		'Ikke-venner' vil ikke vide, at du har valgt at ignorere deres opkald og personlige beskeder (IM)  		<usetemplate name="okbutton" yestext="OK"/>  	</notification> +	<notification name="FavoritesOnLogin"> +		Bemærk: Når du aktiverer dette valg, kan enhver der bruger denne computer se dine favorit lokationer. +		<usetemplate name="okbutton" yestext="OK"/> +	</notification>  	<notification name="GrantModifyRights">  		Tildeling af ændre-rettigheder til andre beboere, tillader dem at ændre, slette eller tage ETHVERT objekt du måtte have. Vær MEGET forsigtig ved tildeling af denne rettighed.  Ønsker du at give ændre-rettgheder til [NAME]? @@ -416,7 +420,7 @@ Tilbyd venskab til [NAME]?  			<input name="message">  				[DESC] (ny)  			</input> -			<button name="Offer" text="OK"/> +			<button name="OK" text="OK"/>  			<button name="Cancel" text="Annullér"/>  		</form>  	</notification> @@ -426,7 +430,7 @@ Tilbyd venskab til [NAME]?  			<input name="message">  				[DESC] (ny)  			</input> -			<button name="Offer" text="OK"/> +			<button name="OK" text="OK"/>  			<button name="Cancel" text="Annullér"/>  		</form>  	</notification> @@ -436,7 +440,7 @@ Tilbyd venskab til [NAME]?  			<input name="new_name">  				[NAME]  			</input> -			<button name="Offer" text="OK"/> +			<button name="OK" text="OK"/>  			<button name="Cancel" text="Annullér"/>  		</form>  	</notification> @@ -598,9 +602,41 @@ Hent og installér venligst den nyeste version fra  http://secondlife.com/download.  		<usetemplate name="okbutton" yestext="OK"/>  	</notification> -	<notification name="DownloadBackground"> -		En opdateret version af [APP_NAME] er hentet. -Den vil blive anvendt næste gang du genstarter [APP_NAME] +	<notification name="FailedRequiredUpdateInstall"> +		Vi kunne ikke installere en påkrævet opdatering. +Du kan ikke logge på før [APP_NAME] er blevet opdateret. + +Hent og installer venligst den nyeste klien fra +http://secondlife.com/download. +		<usetemplate name="okbutton" yestext="Afslut"/> +	</notification> +	<notification name="UpdaterServiceNotRunning"> +		Dette er en påkrævet opdatering af din Second Life installation. + +Du kan downloade opdateringen fra http://www.secondlife.com/downloads +eller du kan installere den nu. +		<usetemplate name="okcancelbuttons" notext="Afslut Second Life" yestext="Hent og installér nu"/> +	</notification> +	<notification name="DownloadBackgroundTip"> +		Vi har hentet en opdatering til din [APP_NAME] installation. +Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update] +		<usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/> +	</notification> +	<notification name="DownloadBackgroundDialog"> +		Vi har hentet en opdatering til din [APP_NAME] installation. +Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update] +		<usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/> +	</notification> +	<notification name="RequiredUpdateDownloadedVerboseDialog"> +		Vi har hentet en påkrævet opdatering. +Version [VERSION] + +Du skal genstarte [APP_NAME] for at installere denne opdatering. +		<usetemplate name="okbutton" yestext="OK"/> +	</notification> +	<notification name="RequiredUpdateDownloadedDialog"> +		Du skal genstarte [APP_NAME] for at installere opdateringen. +		<usetemplate name="okbutton" yestext="OK"/>  	</notification>  	<notification name="DeedObjectToGroup">  		<usetemplate ignoretext="Bekræft før jeg dedikerer et objekt til en gruppe" name="okcancelignore" notext="Cancel" yestext="Deed"/> @@ -1123,14 +1159,6 @@ Prøv at vælge mindre stykker land.  	<notification name="NoContentToSearch">  		Vælg venligst mindst en indholdstype for at søge (PG, Mature, or Adult).  	</notification> -	<notification name="GroupVote"> -		[NAME] har forslået at stemme for: -[MESSAGE] -		<form name="form"> -			<button name="VoteNow" text="Stem nu"/> -			<button name="Later" text="Senere"/> -		</form> -	</notification>  	<notification name="SystemMessage">  		[MESSAGE]  	</notification> @@ -1682,9 +1710,7 @@ Avatar '[NAME]' har forladt udseende modus.  	<notification name="NoConnect">  		Vi har problemer med at oprette forbindelse via [PROTOCOL] [HOSTID].  Check venligst din netværks- og firewallsetup. -		<form name="form"> -			<button name="OK" text="OK"/> -		</form> +		<usetemplate name="okbutton" yestext="OK"/>  	</notification>  	<notification name="NoVoiceConnect">  		Vi har problemer med at oprette forbindelse til din stemme server: @@ -1693,9 +1719,7 @@ Check venligst din netværks- og firewallsetup.  Stemme kommunikation vil ikke være tilgængelig.  Check venligst din netværks- og firewall setup. -		<form name="form"> -			<button name="OK" text="OK"/> -		</form> +		<usetemplate name="okbutton" yestext="OK"/>  	</notification>  	<notification name="AvatarRezLeftNotification">  		( [EXISTENCE] sekunder i live ) @@ -1731,6 +1755,9 @@ Sluk for alles lyd?  	<notification label="Undersøg verden" name="HintDestinationGuide">  		Destinationsguiden indeholder tusinder af nye steder der kan opleves. Vælg venligst et sted og vælg Teleport for at komme derhen.  	</notification> +	<notification label="Ændre dit udseende" name="HintAvatarPicker"> +		Kunne du tænke dig at prøve et nyt udseende? Klik på knappen nedenfor for at se flere avatarer. +	</notification>  	<notification label="Side panel" name="HintSidePanel">  		Få hurtig tilgang til din beholdning, sæt, profiler og andet i dette side panel.  	</notification> @@ -1740,6 +1767,12 @@ Sluk for alles lyd?  	<notification label="Visningsnavn" name="HintDisplayName">  		Angiv dit konfigurérbare visningsnavn her. Dette er i tillæg til dit unikke brugernavn, som ikke kan ændres. Du kan ændre hvordan du ser andre beboeres navne i dine indstillinger.  	</notification> +	<notification label="Flyt" name="HintMoveArrows"> +		For at gå, brug piletasterne på tastaturet. Du kan løbe ved at trykke to gange på Pil-Op +	</notification> +	<notification label="Se" name="HintView"> +		For at ændre dit kamera-view, benyt kredsløbs og panoreringskontrollerne. Nulstil view ved at trykke Esc eller ved at gå. +	</notification>  	<notification label="Beholdning" name="HintInventory">  		Undersøg din beholdning for at finde ting. Nyeste genstand findes lettes under fanen "Nye ting"  	</notification> @@ -1753,6 +1786,15 @@ Sluk for alles lyd?  			<button name="open" text="Åben pop-up vindue"/>  		</form>  	</notification> +	<notification name="AuthRequest"> +		Hjemmesiden på  '<nolink>[HOST_NAME]</nolink>' in realm '[REALM]' kræver et brugernavn og password. +		<form name="form"> +			<input name="username" text="Brugernavn"/> +			<input name="password" text="Password"/> +			<button name="ok" text="Send"/> +			<button name="cancel" text="Annullér"/> +		</form> +	</notification>  	<global name="UnsupportedGLRequirements">  		Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter 'multitexture'. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem. diff --git a/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml index df1173a0a0..890f4a2f0a 100644 --- a/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml @@ -21,7 +21,7 @@  	<string name="FormatYears">  		[COUNT]å  	</string> -	<text name="avatar_name" value="Ukendt"/> +	<text name="avatar_name" value="(henter)"/>  	<icon name="permission_edit_theirs_icon" tool_tip="Du kan redigere denne vens objekter"/>  	<icon name="permission_edit_mine_icon" tool_tip="Denne ven kan redigere, slette eller tage dine objekter"/>  	<icon name="permission_map_icon" tool_tip="Denne ven kan finde dig på kortet"/> diff --git a/indra/newview/skins/default/xui/da/panel_edit_alpha.xml b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml index 3826e8a228..0f60a6df51 100644 --- a/indra/newview/skins/default/xui/da/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml @@ -1,10 +1,12 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <panel name="edit_alpha_panel"> -	<panel name="avatar_alpha_color_panel"> -		<texture_picker label="Alpha - nedre" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/> -		<texture_picker label="Alpha - øvre" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/> -		<texture_picker label="Alpha - hoved" name="Head Alpha" tool_tip="Klik for at vælge et billede"/> -		<texture_picker label="Alpha - øje" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/> -		<texture_picker label="Alpha - hår" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/> -	</panel> +	<scroll_container name="avatar_alpha_color_panel_scroll"> +		<panel name="avatar_alpha_color_panel"> +			<texture_picker label="Nedre alpha" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/> +			<texture_picker label="Øverste alpha" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/> +			<texture_picker label="Hovede alpha" name="Head Alpha" tool_tip="Klik for at vælge et billede"/> +			<texture_picker label="Øje alpha" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/> +			<texture_picker label="Hår alpha" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/> +		</panel> +	</scroll_container>  </panel> diff --git a/indra/newview/skins/default/xui/da/panel_login.xml b/indra/newview/skins/default/xui/da/panel_login.xml index 268f138185..dc8d9bc432 100644 --- a/indra/newview/skins/default/xui/da/panel_login.xml +++ b/indra/newview/skins/default/xui/da/panel_login.xml @@ -3,9 +3,6 @@  	<panel.string name="create_account_url">  		http://join.secondlife.com/  	</panel.string> -	<panel.string name="real_url"> -		http://secondlife.com/app/login/ -	</panel.string>  	<panel.string name="forgot_password_url">  		http://secondlife.com/account/request.php  	</panel.string> @@ -14,7 +11,7 @@  			<text name="username_text">  				Brugernavn:  			</text> -			<line_editor label="bobsmith12 eller Steller Sunshine" name="username_edit" tool_tip="Det brugernavn du valgte da du registrerede, som f.eks. bobsmith12 eller Steller Sunshine"/> +			<combo_box name="username_combo" tool_tip="Brugernavnet du valgte da du registrerde dig, som f.eks. bobsmith12 or Steller Sunshine"/>  			<text name="password_text">  				Password:  			</text> diff --git a/indra/newview/skins/default/xui/da/panel_my_profile.xml b/indra/newview/skins/default/xui/da/panel_my_profile.xml index 2db4b278d7..94da58389f 100644 --- a/indra/newview/skins/default/xui/da/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_my_profile.xml @@ -5,30 +5,27 @@  	<string name="RegisterDateFormat">  		[REG_DATE] ([AGE])  	</string> +	<string name="name_text_args"> +		[NAME] +	</string> +	<string name="display_name_text_args"> +		[DISPLAY_NAME] +	</string>  	<layout_stack name="layout">  		<layout_panel name="profile_stack">  			<scroll_container name="profile_scroll">  				<panel name="scroll_content_panel">  					<panel name="second_life_image_panel"> -						<icon label="" name="2nd_life_edit_icon" tool_tip="Klik på Redigér profil knappen forneden for at ændre billede"/> -						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/> -					</panel> -					<panel name="first_life_image_panel"> -						<icon label="" name="real_world_edit_icon" tool_tip="Klik på Redigér profil knappen forneden for at ændre billede"/> -						<text name="title_rw_descr_text" value="Real World:"/> -					</panel> -					<text name="title_member_text" value="Beboer siden:"/> -					<text name="title_acc_status_text" value="Konto status:"/> -					<text name="title_partner_text" value="Partner:"/> -					<panel name="partner_data_panel"> -						<name_box initial_value="(henter)" name="partner_text"/> +						<text name="display_name_descr_text"> +							Brugernavn +						</text> +						<text name="name_descr_text"> +							Visningsnavn +						</text> +						<button label="Profil" name="see_profile_btn" tool_tip="Se profil for denne avatar"/>  					</panel> -					<text name="title_groups_text" value="Grupper:"/>  				</panel>  			</scroll_container>  		</layout_panel>  	</layout_stack> -	<panel name="profile_me_buttons_panel"> -		<button label="Redigér profil" name="edit_profile_btn" tool_tip="Redigér din personlige information"/> -	</panel>  </panel> diff --git a/indra/newview/skins/default/xui/da/panel_notify_textbox.xml b/indra/newview/skins/default/xui/da/panel_notify_textbox.xml index 949ff1a058..30ad4ff9f6 100644 --- a/indra/newview/skins/default/xui/da/panel_notify_textbox.xml +++ b/indra/newview/skins/default/xui/da/panel_notify_textbox.xml @@ -3,8 +3,9 @@  	<string name="message_max_lines_count" value="7"/>  	<panel label="info_panel" name="info_panel">  		<text_editor name="message" value="besked"/> -		parse_urls="false" +	</panel> +	<panel label="control_panel" name="control_panel">  		<button label="Send" name="btn_submit"/> +		<button label="Ignorér" name="ignore_btn"/>  	</panel> -	<panel label="control_panel" name="control_panel"/>  </panel> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml index 604a00e0b4..b2b00db769 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_colors.xml @@ -29,10 +29,10 @@  		URL'er  	</text>  	<text name="bubble_chat"> -		Chat-boble baggrund: +		Baggrundsfarve til navne-skilt (berører også Bubble Chat):  	</text> -	<color_swatch name="background" tool_tip="Vælg farve til chat-boble"/> -	<slider label="Uigennemsigtighed:" name="bubble_chat_opacity"/> +	<color_swatch name="background" tool_tip="Vælg farve til navne-skilt"/> +	<slider label="Uigennemsigtighed:" name="bubble_chat_opacity" tool_tip="Vælg gennemsigtighed for navneskilt"/>  	<text name="floater_opacity">  		Vindue uigennemsigtighed:  	</text> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml index 2843f0d339..0df330b016 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_privacy.xml @@ -7,9 +7,11 @@  	<text name="cache_size_label_l">  		(Lokationer, billeder, web, søge historik)  	</text> +	<check_box label="Vis dig selv i søgeresultater" name="online_searchresults"/>  	<check_box label="Kun venner og grupper ved jeg er online" name="online_visibility"/>  	<check_box label="Kun venner og grupper kan sende besked til mig" name="voice_call_friends_only_check"/>  	<check_box label="Slå mikrofon fra når opkald slutter" name="auto_disengage_mic_check"/> +	<check_box label="Vis mine favorit landemærker ved login (via "Start ved" menuen)" name="favorites_on_login_check"/>  	<text name="Logs:">  		Chat Logs:  	</text> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml index 332b5ed1c4..479e98817e 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml @@ -39,5 +39,11 @@  	</text>  	<line_editor name="web_proxy_editor" tool_tip="Angiv navn eller IP addresse på den proxy du ønsker at anvende"/>  	<spinner label="Port nummer:" name="web_proxy_port"/> -	<check_box initial_value="sand" label="Hent og installer automatisk [APP_NAME] opdateringer" name="updater_service_active"/> +	<text name="Software updates:"> +		Software opdateringer: +	</text> +	<combo_box name="updater_service_combobox"> +		<combo_box.item label="Installér automatisk" name="Install_automatically"/> +		<combo_box.item label="Hent og installér opdateringer manuelt" name="Install_manual"/> +	</combo_box>  </panel> diff --git a/indra/newview/skins/default/xui/da/panel_status_bar.xml b/indra/newview/skins/default/xui/da/panel_status_bar.xml index 8633f12d24..6e7bdfc188 100644 --- a/indra/newview/skins/default/xui/da/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/da/panel_status_bar.xml @@ -22,7 +22,7 @@  		L$ [AMT]  	</panel.string>  	<panel name="balance_bg"> -		<text name="balance" tool_tip="Min status" value="L$20"/> +		<text name="balance" tool_tip="Klik for at opdaterer din L$ balance" value="L$20"/>  		<button label="KØB L$" name="buyL" tool_tip="Klik for at købe flere L$"/>  	</panel>  	<text name="TimeText" tool_tip="Nuværende tid (Pacific)"> diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml index 6370ff9243..ae99fa8dd5 100644 --- a/indra/newview/skins/default/xui/en/floater_map.xml +++ b/indra/newview/skins/default/xui/en/floater_map.xml @@ -22,7 +22,11 @@       name="ToolTipMsg">          [REGION](Double-click to open Map, shift-drag to pan)      </floater.string> -    <floater.string name="mini_map_caption"> +	<floater.string +     name="AltToolTipMsg"> +		[REGION](Double-click to teleport, shift-drag to pan) +	</floater.string> +	<floater.string name="mini_map_caption">  	MINIMAP      </floater.string>      <net_map diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 1808fea445..b16124cb7e 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -878,7 +878,7 @@               top_delta="0"               width="190"               word_wrap="true" -             use_ellipses="ture"> +             use_ellipses="true">                  Mrs. Esbee Linden (esbee.linden)              </text>              <text diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml index 5871eb0654..21c627cdfb 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml @@ -45,9 +45,9 @@       left_pad="4"       image_disabled="ComboButton_UpOff"       image_unselected="ComboButton_UpOff" -     image_selected="ComboButton_Up_On_Selected" +     image_selected="ComboButton_On"       image_pressed="ComboButton_UpSelected" -     image_pressed_selected="ComboButton_Up_On_Selected" +     image_pressed_selected="ComboButton_Selected"       height="23"       name="show_nearby_chat"       tool_tip="Shows/hides nearby chat log"> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 6a8bf87bc5..43431ea7c1 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -54,7 +54,13 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M      <string       name="no_groups_msg"       value="Looking for Groups to join? Try [secondlife:///app/search/groups Search]." /> -    <filter_editor +	<string +	 name="MiniMapToolTipMsg" +	 value="[REGION](Double-click to open Map, shift-drag to pan)"/> +	<string +	 name="AltMiniMapToolTipMsg" +	 value="[REGION](Double-click to teleport, shift-drag to pan)"/> +	<filter_editor       follows="left|top|right"       height="23"       layout="topleft" @@ -93,16 +99,26 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M           name="nearby_panel"           top="0"           width="313"> -            <avatar_list +			<net_map +			 bg_color="NetMapBackgroundColor" +			 follows="top|left|right" +			 layout="topleft" +			 left="3" +			 mouse_opaque="false" +			 name="Net Map" +			 width="307" +			 height="140" +			 top="0"/> +			<avatar_list               allow_select="true" -             follows="all" -             height="356" +             follows="top|left|bottom|right" +             height="216"               ignore_online_status="true"               layout="topleft"               left="3"               multi_select="true"               name="avatar_list" -             top="0" +             top="145"               width="307" />              <panel               background_visible="true" diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 61e3bb354f..d36220385d 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -34,6 +34,14 @@  	 name="RegisterDateFormat">  	 [REG_DATE] ([AGE])  	</string> +  <string +  name="name_text_args"> +    [NAME] +  </string> +  <string +    name="display_name_text_args"> +    [DISPLAY_NAME] +  </string>      <layout_stack       name="layout"       orientation="vertical" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 752bb6ed3a..8f356e4169 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -1948,7 +1948,7 @@ Requests name of an avatar.  When data is available the dataserver event will be  	<!-- Gestures labels -->      <!-- use value="" because they have preceding spaces --> -    <string name="Chat"          value=" Chat : " /> +    <string name="Chat Message"  value=" Chat : " />      <string name="Sound"         value=" Sound : " />  	<string name="Wait"          value=" --- Wait : " />  	<string name="AnimFlagStop"  value=" Stop Animation :    " /> diff --git a/indra/newview/skins/default/xui/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml index a7e271a1ff..d792e9f29c 100644 --- a/indra/newview/skins/default/xui/en/widgets/talk_button.xml +++ b/indra/newview/skins/default/xui/en/widgets/talk_button.xml @@ -23,11 +23,11 @@      bottom="0"      tab_stop="false"      is_toggle="true" -                 image_selected="SegmentedBtn_Right_Selected_Press" -                 image_unselected="SegmentedBtn_Right_Off" -		 image_pressed="SegmentedBtn_Right_Press" -		 image_pressed_selected="SegmentedBtn_Right_Selected_Press" -		 image_overlay="Arrow_Small_Up" +    image_disabled="ComboButton_UpOff" +    image_unselected="ComboButton_UpOff" +    image_selected="ComboButton_On" +    image_pressed="ComboButton_UpSelected" +    image_pressed_selected="ComboButton_Selected"      />    <monitor      follows="right"  diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml index 7828d2df97..6287f10f3e 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml @@ -1,7 +1,7 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <floater name="gesture_preview">  	<floater.string name="step_anim"> -		Animation à jouer : +		Animation à exécuter :  	</floater.string>  	<floater.string name="step_sound">  		Son à lire : diff --git a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml index 86a2ddd185..20af901ddc 100644 --- a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml +++ b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml @@ -1,6 +1,6 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?>  <menu name="hide_navbar_menu">  	<menu_item_check label="Afficher la barre de navigation" name="ShowNavbarNavigationPanel"/> -	<menu_item_check label="Afficher la barre des Favoris" name="ShowNavbarFavoritesPanel"/> +	<menu_item_check label="Afficher la barre des favoris" name="ShowNavbarFavoritesPanel"/>  	<menu_item_check label="Afficher la mini-barre d'emplacement" name="ShowMiniLocationPanel"/>  </menu> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml index 654d40e2f9..44c866a30f 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml @@ -15,7 +15,7 @@  	<slider label="Chat vocal" name="Voice Volume"/>  	<check_box label="Activé" name="enable_voice_check"/>  	<check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cochez pour autoriser la lecture automatique du média" value="true"/> -	<check_box label="Jouer le média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="true"/> +	<check_box label="Lecture du média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="true"/>  	<text name="voice_chat_settings">  		Paramètres du chat vocal  	</text> diff --git a/indra/viewer_components/updater/llupdaterservice.cpp b/indra/viewer_components/updater/llupdaterservice.cpp index ea242f45cd..1888f191e2 100644 --- a/indra/viewer_components/updater/llupdaterservice.cpp +++ b/indra/viewer_components/updater/llupdaterservice.cpp @@ -373,9 +373,8 @@ void LLUpdaterServiceImpl::optionalUpdate(std::string const & newVersion,  	stopTimer();  	mNewVersion = newVersion;  	mIsDownloading = true; -	mUpdateDownloader.download(uri, hash, newVersion, false); -	  	setState(LLUpdaterService::DOWNLOADING); +	mUpdateDownloader.download(uri, hash, newVersion, false);  }  void LLUpdaterServiceImpl::requiredUpdate(std::string const & newVersion, @@ -385,9 +384,8 @@ void LLUpdaterServiceImpl::requiredUpdate(std::string const & newVersion,  	stopTimer();  	mNewVersion = newVersion;  	mIsDownloading = true; -	mUpdateDownloader.download(uri, hash, newVersion, true); -	  	setState(LLUpdaterService::DOWNLOADING); +	mUpdateDownloader.download(uri, hash, newVersion, true);  }  void LLUpdaterServiceImpl::upToDate(void) | 
