From a154ec72f759e20add6aacfab7f04e65b49051b9 Mon Sep 17 00:00:00 2001
From: Don Kjer <don@lindenlab.com>
Date: Tue, 8 May 2007 22:20:26 +0000
Subject: [PATCH] svn merge -r 61343:61423
 svn+ssh://svn/svn/linden/branches/maintenance into release

---
 indra/llinventory/llparcel.h              |  2 +-
 indra/llinventory/lltransactiontypes.h    |  2 +-
 indra/llmessage/llcachename.cpp           | 14 ++--
 indra/llmessage/lluseroperation.h         |  2 +-
 indra/llui/lldraghandle.cpp               | 14 +++-
 indra/llui/llfloater.cpp                  | 79 +++++++++++------------
 indra/llui/llfloater.h                    |  3 +-
 indra/newview/app_settings/keywords.ini   |  4 +-
 indra/newview/llagent.cpp                 |  4 +-
 indra/newview/llassetuploadresponders.cpp |  4 +-
 indra/newview/llfirstuse.h                |  4 +-
 indra/newview/llfloaterlandholdings.cpp   |  2 +-
 indra/newview/llfloaterregioninfo.cpp     |  2 +-
 indra/newview/llpanelgrouplandmoney.cpp   | 18 +++---
 indra/newview/llpanelgrouplandmoney.h     |  2 +-
 indra/newview/llpreview.cpp               | 16 +++--
 indra/newview/llstartup.cpp               |  4 +-
 indra/newview/llviewermessage.cpp         |  2 +-
 18 files changed, 94 insertions(+), 84 deletions(-)

diff --git a/indra/llinventory/llparcel.h b/indra/llinventory/llparcel.h
index 46c7a994000..af264731adf 100644
--- a/indra/llinventory/llparcel.h
+++ b/indra/llinventory/llparcel.h
@@ -327,7 +327,7 @@ class LLParcel
 	void startSale(const LLUUID& buyer_id, BOOL is_buyer_group);
 
 	// do the expiration logic, which needs to return values usable in
-	// a money transaction.
+	// a L$ transaction.
 	void expireSale(U32& type, U8& flags, LLUUID& from_id, LLUUID& to_id);
 	void completeSale(U32& type, U8& flags, LLUUID& to_id);
 	void clearSale();
diff --git a/indra/llinventory/lltransactiontypes.h b/indra/llinventory/lltransactiontypes.h
index d7894b2fdb9..50710d6c837 100644
--- a/indra/llinventory/lltransactiontypes.h
+++ b/indra/llinventory/lltransactiontypes.h
@@ -15,7 +15,7 @@
 //   insert into transaction_description 
 //     set type = 1000, description = 'Object Claim';
 //
-// Also add it to the various money string lookups on the dataserver
+// Also add it to the various L$ string lookups on the dataserver
 // in lldatamoney
 
 // Money transaction failure codes
diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp
index 36cd2ce188e..b2e1500859f 100644
--- a/indra/llmessage/llcachename.cpp
+++ b/indra/llmessage/llcachename.cpp
@@ -508,26 +508,28 @@ void LLCacheName::get(const LLUUID& id, BOOL is_group, LLCacheNameCallback callb
 	LLCacheNameEntry* entry = get_ptr_in_map(impl.mCache, id );
 	if (entry)
 	{
-		if (!entry->mIsGroup)
+		// id found in map therefore we can call the callback immediately.
+		if (entry->mIsGroup)
 		{
-			callback(id, entry->mFirstName, entry->mLastName, entry->mIsGroup, user_data);
+			callback(id, entry->mGroupName, "", entry->mIsGroup, user_data);
 		}
 		else
 		{
-			callback(id, entry->mGroupName, "", entry->mIsGroup, user_data);
+			callback(id, entry->mFirstName, entry->mLastName, entry->mIsGroup, user_data);
 		}
 	}
 	else
 	{
+		// id not found in map so we must queue the callback call until available.
 		if (!impl.isRequestPending(id))
 		{
-			if (!is_group)
+			if (is_group)
 			{
-				impl.mAskNameQueue.insert(id);
+				impl.mAskGroupQueue.insert(id);
 			}
 			else
 			{
-				impl.mAskGroupQueue.insert(id);
+				impl.mAskNameQueue.insert(id);
 			}
 		}
 		impl.mReplyQueue.push_back(PendingReply(id, callback, user_data));
diff --git a/indra/llmessage/lluseroperation.h b/indra/llmessage/lluseroperation.h
index ac6590abf90..61456bcdce1 100644
--- a/indra/llmessage/lluseroperation.h
+++ b/indra/llmessage/lluseroperation.h
@@ -1,7 +1,7 @@
 /** 
  * @file lluseroperation.h
  * @brief LLUserOperation class header file - used for message based
- * transaction. For example, money transactions.
+ * transaction. For example, L$ transactions.
  *
  * Copyright (c) 2002-$CurrentYear$, Linden Research, Inc.
  * $License$
diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp
index 25b41e44e15..e2974cd8595 100644
--- a/indra/llui/lldraghandle.cpp
+++ b/indra/llui/lldraghandle.cpp
@@ -308,7 +308,12 @@ BOOL LLDragHandle::handleHover(S32 x, S32 y, MASK mask)
 		// Resize the parent
 		S32 delta_x = screen_x - mDragLastScreenX;
 		S32 delta_y = screen_y - mDragLastScreenY;
-		getParent()->translate(delta_x, delta_y);
+
+		LLRect original_rect = getParent()->getRect();
+		LLRect translated_rect = getParent()->getRect();
+		translated_rect.translate(delta_x, delta_y);
+		// temporarily slam dragged window to new position
+		getParent()->setRect(translated_rect);
 		S32 pre_snap_x = getParent()->getRect().mLeft;
 		S32 pre_snap_y = getParent()->getRect().mBottom;
 		mDragLastScreenX = screen_x;
@@ -328,7 +333,12 @@ BOOL LLDragHandle::handleHover(S32 x, S32 y, MASK mask)
 		getParent()->snappedTo(snap_view);
 		delta_x = new_rect.mLeft - pre_snap_x;
 		delta_y = new_rect.mBottom - pre_snap_y;
-		getParent()->translate(delta_x, delta_y);
+		translated_rect.translate(delta_x, delta_y);
+
+		// restore original rect so delta are detected, then call user reshape method to handle snapped floaters, etc
+		getParent()->setRect(original_rect);
+		getParent()->userSetShape(translated_rect);
+
 		mDragLastScreenX += delta_x;
 		mDragLastScreenY += delta_y;
 
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 3da53275c7f..fd8947c5947 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -655,25 +655,6 @@ const LLString& LLFloater::getTitle() const
 	return mDragHandle ? mDragHandle->getTitle() : LLString::null;
 }
 
-void LLFloater::translate(S32 x, S32 y)
-{
-	LLPanel::translate(x, y);
-
-	if (x != 0 || y != 0)
-	{
-		for(handle_set_iter_t dependent_it = mDependents.begin();
-			dependent_it != mDependents.end(); ++dependent_it)
-		{
-			LLFloater* floaterp = LLFloater::getFloaterByHandle(*dependent_it);
-			// is a dependent snapped to us?
-			if (floaterp && floaterp->getSnapTarget() == mViewHandle)
-			{
-				floaterp->translate(x, y);
-			}
-		}
-	}
-}
-
 BOOL LLFloater::canSnapTo(LLView* other_view)
 {
 	if (NULL == other_view)
@@ -711,14 +692,13 @@ void LLFloater::snappedTo(LLView* snap_view)
 	}
 }
 
-void LLFloater::reshape(S32 width, S32 height, BOOL called_from_parent)
+void LLFloater::userSetShape(const LLRect& new_rect)
 {
-	S32 old_width = mRect.getWidth();
-	S32 old_height = mRect.getHeight();
-
-	LLView::reshape(width, height, called_from_parent);
+	LLRect old_rect = mRect;
+	LLView::userSetShape(new_rect);
 
-	if (width != old_width || height != old_height)
+	// if not minimized, adjust all snapped dependents to new shape
+	if (!isMinimized())
 	{
 		// gather all snapped dependents
 		for(handle_set_iter_t dependent_it = mDependents.begin();
@@ -730,22 +710,27 @@ void LLFloater::reshape(S32 width, S32 height, BOOL called_from_parent)
 			{
 				S32 delta_x = 0;
 				S32 delta_y = 0;
-				// check to see if it snapped to right or top
-				LLRect floater_rect = floaterp->getRect();
-				if (floater_rect.mLeft - mRect.mLeft >= old_width ||
-					floater_rect.mRight == mRect.mLeft + old_width)
+				// check to see if it snapped to right or top, and move if dependee floater is resizing
+				LLRect dependent_rect = floaterp->getRect();
+				if (dependent_rect.mLeft - mRect.mLeft >= old_rect.getWidth() || // dependent on my right?
+					dependent_rect.mRight == mRect.mLeft + old_rect.getWidth()) // dependent aligned with my right
 				{
 					// was snapped directly onto right side or aligned with it
-					delta_x += width - old_width;
+					delta_x += new_rect.getWidth() - old_rect.getWidth();
 				}
-				if (floater_rect.mBottom - mRect.mBottom >= old_height ||
-					floater_rect.mTop == mRect.mBottom + old_height)
+				if (dependent_rect.mBottom - mRect.mBottom >= old_rect.getHeight() ||
+					dependent_rect.mTop == mRect.mBottom + old_rect.getHeight())
 				{
 					// was snapped directly onto top side or aligned with it
-					delta_y += height - old_height;
+					delta_y += new_rect.getHeight() - old_rect.getHeight();
 				}
 
-				floaterp->translate(delta_x, delta_y);
+				// take translation of dependee floater into account as well
+				delta_x += new_rect.mLeft - old_rect.mLeft;
+				delta_y += new_rect.mBottom - old_rect.mBottom;
+
+				dependent_rect.translate(delta_x, delta_y);
+				floaterp->userSetShape(dependent_rect);
 			}
 		}
 	}
@@ -792,28 +777,33 @@ void LLFloater::setMinimized(BOOL minimize)
 		setBorderVisible(TRUE);
 
 		for(handle_set_iter_t dependent_it = mDependents.begin();
-			dependent_it != mDependents.end(); )
+			dependent_it != mDependents.end();
+			++dependent_it)
 		{
 			LLFloater* floaterp = LLFloater::getFloaterByHandle(*dependent_it);
 			if (floaterp)
 			{
-				floaterp->setVisible(FALSE);
+				if (floaterp->isMinimizeable())
+				{
+					floaterp->setMinimized(TRUE);
+				}
+				else if (!floaterp->isMinimized())
+				{
+					floaterp->setVisible(FALSE);
+				}
 			}
-			++dependent_it;
 		}
 
-		mMinimized = TRUE;
-
 		// Lose keyboard focus when minimized
 		releaseFocus();
+
+		mMinimized = TRUE;
 	}
 	else
 	{
 		reshape( mPreviousRect.getWidth(), mPreviousRect.getHeight(), TRUE );
 		setOrigin( mPreviousRect.mLeft, mPreviousRect.mBottom );
 
-		mMinimized = FALSE;
-
 		if (mButtonsEnabled[BUTTON_RESTORE])
 		{
 			mButtonsEnabled[BUTTON_MINIMIZE] = TRUE;
@@ -837,15 +827,18 @@ void LLFloater::setMinimized(BOOL minimize)
 
 		// show dependent floater
 		for(handle_set_iter_t dependent_it = mDependents.begin();
-			dependent_it != mDependents.end(); )
+			dependent_it != mDependents.end();
+			++dependent_it)
 		{
 			LLFloater* floaterp = LLFloater::getFloaterByHandle(*dependent_it);
 			if (floaterp)
 			{
+				floaterp->setMinimized(FALSE);
 				floaterp->setVisible(TRUE);
 			}
-			++dependent_it;
 		}
+
+		mMinimized = FALSE;
 	}
 	make_ui_sound("UISndWindowClose");
 	updateButtons();
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 79483db2976..90063108f52 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -88,8 +88,7 @@ friend class LLFloaterView;
 	static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
 	void initFloaterXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory, BOOL open = TRUE);
 
-	/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = 1);
-	/*virtual*/ void translate(S32 x, S32 y);
+	/*virtual*/ void userSetShape(const LLRect& new_rect);
 	/*virtual*/ BOOL canSnapTo(LLView* other_view);
 	/*virtual*/ void snappedTo(LLView* snap_view);
 	/*virtual*/ void setFocus( BOOL b );
diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini
index f53a3846085..c2a2ce2755d 100644
--- a/indra/newview/app_settings/keywords.ini
+++ b/indra/newview/app_settings/keywords.ini
@@ -37,7 +37,7 @@ at_target		at_target(integer tnum, vector targetpos, vector ourpos):Result of ll
 not_at_target	not_at_target():Result of llTarget library function call
 at_rot_target	at_rot_target(integer tnum, rotation targetrot, rotation ourrot):Result of LLRotTarget library function call
 not_at_rot_target	not_at_rot_target():Result of LLRotTarget library function call
-money			money(key id, integer amount):Triggered when money is given to task
+money			money(key id, integer amount):Triggered when L$ is given to task
 email			email(string time, string address, string subj, string message, integer num_left):Triggered when task receives email
 run_time_permissions	run_time_permissions(integer perm):Triggered when an agent grants run time permissions to task
 attach			attach(key id):Triggered when an agent attaches or detaches from agent
@@ -79,7 +79,7 @@ CONTROL_UP						Passed to llTakeControls library function and used control event
 CONTROL_DOWN					Passed to llTakeControls library function and used control event handler to test for agent down control
 CONTROL_LBUTTON					Passed to llTakeControls library function and used control event handler to test for agent left button control
 CONTROL_ML_LBUTTON				Passed to llTakeControls library function and used control event handler to test for agent left button control with the agent in mouse look
-PERMISSION_DEBIT				Passed to llRequestPermissions library function to request permission to take money from agent's account
+PERMISSION_DEBIT				Passed to llRequestPermissions library function to request permission to take L$ from agent's account
 PERMISSION_TAKE_CONTROLS		Passed to llRequestPermissions library function to request permission to take agent's controls
 # PERMISSION_REMAP_CONTROLS		Passed to llRequestPermissions library function to request permission to remap agent's controls (not implemented yet)
 PERMISSION_TRIGGER_ANIMATION	Passed to llRequestPermissions library function to request permission to trigger animation on agent
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 13fa29e2428..9fa5244c390 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -6753,7 +6753,7 @@ void LLAgent::removeWearable( EWearableType type )
 		if( old_wearable->isDirty() )
 		{
 			// Bring up view-modal dialog: Save changes? Yes, No, Cancel
-			gViewerWindow->alertXml("RemoveWearableSave", LLAgent::onRemoveWearableDialog, (void*)(S32)type );
+			gViewerWindow->alertXml("WearableSave", LLAgent::onRemoveWearableDialog, (void*)(S32)type );
 			return;
 		}
 		else
@@ -6983,7 +6983,7 @@ void LLAgent::setWearable( LLInventoryItem* new_item, LLWearable* new_wearable )
 		if( old_wearable->isDirty() )
 		{
 			// Bring up modal dialog: Save changes? Yes, No, Cancel
-			gViewerWindow->alertXml( "SetWearableSave", LLAgent::onSetWearableDialog,
+			gViewerWindow->alertXml( "WearableSave", LLAgent::onSetWearableDialog,
 				new LLSetWearableData( new_item->getUUID(), new_wearable ));
 			return;
 		}
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index 26c606fc310..789beaae398 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -128,7 +128,7 @@ void LLAssetUploadResponder::uploadUpload(const LLSD& content)
 void LLAssetUploadResponder::uploadFailure(const LLSD& content)
 {
 	std::string reason = content["state"];
-	// deal with money errors
+	// deal with L$ errors
 	if (reason == "insufficient funds")
 	{
 		LLFloaterBuyCurrency::buyCurrency("Uploading costs", gGlobalEconomy->getPriceUpload());
@@ -166,7 +166,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content)
 	LLAssetType::EType asset_type = LLAssetType::lookup(mPostData["asset_type"].asString().c_str());
 	LLInventoryType::EType inventory_type = LLInventoryType::lookup(mPostData["inventory_type"].asString().c_str());
 
-	// Update money and ownership credit information
+	// Update L$ and ownership credit information
 	// since it probably changed on the server
 	if (asset_type == LLAssetType::AT_TEXTURE ||
 		asset_type == LLAssetType::AT_SOUND ||
diff --git a/indra/newview/llfirstuse.h b/indra/newview/llfirstuse.h
index af545a05a90..b3676191969 100644
--- a/indra/newview/llfirstuse.h
+++ b/indra/newview/llfirstuse.h
@@ -29,8 +29,8 @@ reduced range, how to leave conversation, arrow keys to orbit.
 6.  First lft-click that does nothing (land,object):  Explain that rgt-click
 gives menu, lft-click interacts or moves if physical
 
-7.  On first receipt of money (not rez/derez) explain that objects or people may
-give you money, and how to give someone or something money ('Pay...'). 
+7.  On first receipt of L$ (not rez/derez) explain that objects or people may
+give you L$, and how to give someone or something money ('Pay...'). 
 
 8.  After first teleporting and being sent to nearest hub, a dialog explaining
 how to find and move toward the beacon. 
diff --git a/indra/newview/llfloaterlandholdings.cpp b/indra/newview/llfloaterlandholdings.cpp
index 919e218a68b..ec001c582a0 100644
--- a/indra/newview/llfloaterlandholdings.cpp
+++ b/indra/newview/llfloaterlandholdings.cpp
@@ -52,7 +52,7 @@ void LLFloaterLandHoldings::show(void*)
 					  LLParcel::C_ANY,
 					  "");
 
-	// TODO: request updated money balance?
+	// TODO: request updated L$ balance?
 	floater->open();		/* Flawfinder: ignore */
 }
 
diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp
index 32923e2f11f..dc34291f247 100644
--- a/indra/newview/llfloaterregioninfo.cpp
+++ b/indra/newview/llfloaterregioninfo.cpp
@@ -2771,7 +2771,7 @@ bool LLDispatchEstateUpdateInfo::operator()(
 	// UI, as anyone can teleport there.
 	// However, gods need to be able to edit the access list for
 	// linden estates, regardless of visibility, to allow object
-	// and money transfers.
+	// and L$ transfers.
 	bool enable_agent = (!visible_from_mainland || (god && linden_estate));
 	bool enable_group = enable_agent;
 	bool enable_ban = !linden_estate;
diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp
index 5a6716d965d..b11b6bd2538 100644
--- a/indra/newview/llpanelgrouplandmoney.cpp
+++ b/indra/newview/llpanelgrouplandmoney.cpp
@@ -1,6 +1,6 @@
 /** 
  * @file llpanelgrouplandmoney.cpp
- * @brief Panel for group land and money.
+ * @brief Panel for group land and L$.
  *
  * Copyright (c) 2006-$CurrentYear$, Linden Research, Inc.
  * $License$
@@ -461,7 +461,7 @@ void LLPanelGroupLandMoney::update(LLGroupChange gc)
 
 		panelp = tabp->getCurrentPanel();
 
-		//now pull the event handler associated with that money tab
+		//now pull the event handler associated with that L$ tab
 		if ( panelp )
 		{
 			eh = get_if_there(LLGroupMoneyTabEventHandler::sTabsToHandlers,
@@ -614,7 +614,7 @@ BOOL LLPanelGroupLandMoney::postBuild()
 	}
 
 
-	//pull out the widgets for the money details tab
+	//pull out the widgets for the L$ details tab
 	earlierp = (LLButton*) getChildByName("earlier_details_button", true);
 	laterp = (LLButton*) getChildByName("later_details_button", true);
 	textp = (LLTextEditor*) getChildByName("group_money_details_text", true);
@@ -651,7 +651,7 @@ BOOL LLPanelGroupLandMoney::postBuild()
 													mGroupID);
 	}
 
-	//pull out the widgets for the money sales tab
+	//pull out the widgets for the L$ sales tab
 	earlierp = (LLButton*) getChildByName("earlier_sales_button", true);
 	laterp = (LLButton*) getChildByName("later_sales_button", true);
 	textp = (LLTextEditor*) getChildByName("group_money_sales_text", true);
@@ -688,7 +688,7 @@ void LLPanelGroupLandMoney::processPlacesReply(LLMessageSystem* msg, void**)
 	LLPanelGroupLandMoney* selfp = sGroupIDs.getIfThere(group_id);
 	if(!selfp)
 	{
-		llinfos << "Group Panel Land Money " << group_id << " no longer in existence."
+		llinfos << "Group Panel Land L$ " << group_id << " no longer in existence."
 				<< llendl;
 		return;
 	}
@@ -1022,7 +1022,7 @@ void LLGroupMoneyDetailsTabEventHandler::processGroupAccountDetailsReply(LLMessa
 	msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
 	if (gAgent.getID() != agent_id)
 	{
-		llwarns << "Got group money history reply for another agent!"
+		llwarns << "Got group L$ history reply for another agent!"
 			<< " Probably a userserver bug!" << llendl;
 		return;
 	}
@@ -1197,7 +1197,7 @@ void LLGroupMoneySalesTabEventHandler::processGroupAccountTransactionsReply(LLMe
 	msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
 	if (gAgent.getID() != agent_id)
 	{
-		llwarns << "Got group money history reply for another agent!"
+		llwarns << "Got group L$ history reply for another agent!"
 			<< " Probably a userserver bug!" << llendl;
 		return;
 	}
@@ -1366,7 +1366,7 @@ void LLGroupMoneyPlanningTabEventHandler::processGroupAccountSummaryReply(LLMess
 	msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id );
 	if (gAgent.getID() != agent_id)
 	{
-		llwarns << "Got group money history reply for another agent!"
+		llwarns << "Got group L$ history reply for another agent!"
 			<< " Probably a userserver bug!" << llendl;
 		return;
 	}
@@ -1379,7 +1379,7 @@ void LLGroupMoneyPlanningTabEventHandler::processGroupAccountSummaryReply(LLMess
 	self = LLGroupMoneyTabEventHandler::sInstanceIDs.getIfThere(request_id);
 	if (!self)
 	{
-		llwarns << "GroupAccountSummary recieved for non-existent group money planning tab." << llendl;
+		llwarns << "GroupAccountSummary recieved for non-existent group L$ planning tab." << llendl;
 		return;
 	}
 
diff --git a/indra/newview/llpanelgrouplandmoney.h b/indra/newview/llpanelgrouplandmoney.h
index b1cf44fe467..3123855bfa3 100644
--- a/indra/newview/llpanelgrouplandmoney.h
+++ b/indra/newview/llpanelgrouplandmoney.h
@@ -1,6 +1,6 @@
 /** 
  * @file llpanelgrouplandmoney.h
- * @brief Panel for group land and money.
+ * @brief Panel for group land and L$.
  *
  * Copyright (c) 2006-$CurrentYear$, Linden Research, Inc.
  * $License$
diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp
index 39cc290b0f2..7c00742122f 100644
--- a/indra/newview/llpreview.cpp
+++ b/indra/newview/llpreview.cpp
@@ -464,8 +464,11 @@ LLPreview* LLPreview::getFirstPreviewForSource(const LLUUID& source_id)
 
 void LLPreview::userSetShape(const LLRect& new_rect)
 {
-	userResized();
-	LLView::userSetShape(new_rect);
+	if(new_rect.getWidth() != mRect.getWidth() || new_rect.getHeight() != mRect.getHeight())
+	{
+		userResized();
+	}
+	LLFloater::userSetShape(new_rect);
 }
 
 //
@@ -490,9 +493,12 @@ void LLMultiPreview::open()		/*Flawfinder: ignore*/
 
 void LLMultiPreview::userSetShape(const LLRect& new_rect)
 {
-	LLPreview* frontmost_preview = (LLPreview*)mTabContainer->getCurrentPanel();
-	if (frontmost_preview) frontmost_preview->userResized();
-	LLView::userSetShape(new_rect);
+	if(new_rect.getWidth() != mRect.getWidth() || new_rect.getHeight() != mRect.getHeight())
+	{
+		LLPreview* frontmost_preview = (LLPreview*)mTabContainer->getCurrentPanel();
+		if (frontmost_preview) frontmost_preview->userResized();
+	}
+	LLFloater::userSetShape(new_rect);
 }
 
 
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 44b4d77c1e5..757bb4bae47 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -2104,7 +2104,7 @@ BOOL idle_startup()
 			// request mute list
 			gMuteListp->requestFromServer(gAgent.getID());
 
-			// Get money and ownership credit information
+			// Get L$ and ownership credit information
 			msg->newMessageFast(_PREHASH_MoneyBalanceRequest);
 			msg->nextBlockFast(_PREHASH_AgentData);
 			msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
@@ -2300,7 +2300,7 @@ BOOL idle_startup()
 		gViewerWindow->sendShapeToSim();
 
 		// Ignore stipend information for now.  Money history is on the web site.
-		// if needed, show the money history window
+		// if needed, show the L$ history window
 		//if (stipend_since_login && !gNoRender)
 		//{
 		//}
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 23e1ab66640..a43bb4bb5b5 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3980,7 +3980,7 @@ void process_money_balance_reply( LLMessageSystem* msg, void** )
 	msg->getS32("MoneyData", "SquareMetersCredit", credit);
 	msg->getS32("MoneyData", "SquareMetersCommitted", committed);
 	msg->getStringFast(_PREHASH_MoneyData, _PREHASH_Description,	STD_STRING_BUF_SIZE,	desc);
-	llinfos << "money, credit, committed: " << balance << " " << credit << " "
+	llinfos << "L$, credit, committed: " << balance << " " << credit << " "
 			<< committed << llendl;
 
 	if (gStatusBar)
-- 
GitLab