From 3eafbeaac57c952b674fb134124354036c9bb967 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Tue, 10 Nov 2009 15:02:42 +0200
Subject: Work on major sub-task EXT-991 (Update bottom bar behavior on resize)
  Initial refactoring of functionality:   - Re-Fixed bug with visibility of
 chiclet panel of the min size   - updated bottomtray xml to make buttons
 identical to each other   - Imroved logic while resizing of bottom tray
 (changing width of chiclet & nearby panels, hide/show buttons)

--HG--
branch : product-engine
---
 indra/newview/app_settings/logcontrol.xml          |   1 +
 indra/newview/llbottomtray.cpp                     | 419 +++++++++++++++++++--
 indra/newview/llbottomtray.h                       |  13 +-
 indra/newview/llchiclet.cpp                        |  10 +-
 indra/newview/llnearbychatbar.cpp                  |   3 +
 .../skins/default/xui/en/panel_bottomtray.xml      |  21 +-
 .../skins/default/xui/en/panel_nearby_chat_bar.xml |   2 +-
 7 files changed, 423 insertions(+), 46 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index d7bb64ce8a..ec80d2d014 100644
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -34,6 +34,7 @@
 						</array>
 					<key>classes</key>
 						<array>
+							<string>LLBottomTray</string>
 						</array>
 					<key>files</key>
 						<array>
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index a17ba79078..d0fdf24403 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -50,6 +50,8 @@ LLBottomTray::LLBottomTray(const LLSD&)
 	mSpeakBtn(NULL),
 	mNearbyChatBar(NULL),
 	mToolbarStack(NULL)
+,	mMovementButton(NULL)
+// Add more members
 
 {
 	mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
@@ -253,12 +255,28 @@ void LLBottomTray::showSnapshotButton(BOOL visible)
 	mSnapshotPanel->setVisible(visible);
 }
 
+typedef enum e_resize_status_type
+{
+	RS_NORESIZE			= 0x0000
+	, RS_CHICLET_PANEL		= 0x0001
+	, RS_CHATBAR_INPUT		= 0x0002
+	, RS_BUTTON_SNAPSHOT	= 0x0004
+	, RS_BUTTON_CAMERA		= 0x0008
+	, RS_BUTTON_MOVEMENT	= 0x0010
+	, RS_BUTTON_GESTURES	= 0x0020
+	, RS_BUTTON_SPEAK		= 0x0040
+	, RS_RESIZABLE_BUTTONS			= /*RS_BUTTON_SNAPSHOT | */RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES
+}EResizeState;
+
+
+
 namespace
 {
-	const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel";
-	const std::string& PANEL_CHATBAR_NAME = "chat_bar";
-	const std::string& PANEL_MOVEMENT_NAME = "movement_panel";
-	const std::string& PANEL_CAMERA_NAME = "cam_panel";
+	const std::string& PANEL_CHICLET_NAME	= "chiclet_list_panel";
+	const std::string& PANEL_CHATBAR_NAME	= "chat_bar";
+	const std::string& PANEL_MOVEMENT_NAME	= "movement_panel";
+	const std::string& PANEL_CAMERA_NAME	= "cam_panel";
+	const std::string& PANEL_GESTURE_NAME	= "gesture_panel";
 }
 
 BOOL LLBottomTray::postBuild()
@@ -284,63 +302,133 @@ BOOL LLBottomTray::postBuild()
 	return TRUE;
 }
 
+void LLBottomTray::log(LLView* panel, const std::string& descr)
+{
+	if (NULL == panel) return;
+	LLView* layout = panel->getParent();
+	llwarns << descr << ": "
+		<< "panel: " << panel->getName()
+		<< ", rect: " << panel->getRect()
+ 
+ 
+		<< "layout: " << layout->getName()
+		<< ", rect: " << layout->getRect()
+		<< llendl
+		; 
+}
+
 void LLBottomTray::verifyChildControlsSizes()
 {
 	LLRect rect = mChicletPanel->getRect();
 	if (rect.getWidth() < mChicletPanel->getMinWidth())
 	{
+		llwarns << "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ: chiclet panel less then min" << llendl;
 		mChicletPanel->reshape(mChicletPanel->getMinWidth(), rect.getHeight());
 	}
 
 	rect = mNearbyChatBar->getRect();
 	if (rect.getWidth() < mNearbyChatBar->getMinWidth())
 	{
+		llwarns << "WWWWWWWWWWWWWWWWWWWWWWWWWWWWW: near chat panel less then min" << llendl;
 		mNearbyChatBar->reshape(mNearbyChatBar->getMinWidth(), rect.getHeight());
 	}
-	else if (rect.getWidth() > mNearbyChatBar->getMaxWidth())
+	else 
+		if (rect.getWidth() > mNearbyChatBar->getMaxWidth())
 	{
 		rect.setLeftTopAndSize(rect.mLeft, rect.mTop, mNearbyChatBar->getMaxWidth(), rect.getHeight());
 		mNearbyChatBar->reshape(mNearbyChatBar->getMaxWidth(), rect.getHeight());
 		mNearbyChatBar->setRect(rect);
 	}
 }
-
+#define __FEATURE_EXT_991
 void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
 {
+	static S32 depth = 0;
+if (0 == depth) lldebugs << "" << llendl;
+
+	lldebugs << "Reshaping: depth: " << ++depth
+		<< ", width: " << width
+		<< ", height: " << height
+		<< ", called_from_parent" << called_from_parent
+		<< ", cur width: " << getRect().getWidth()
+		<< ", cur height: " << getRect().getHeight()
+		<< llendl;
+
+	if (mNearbyChatBar)			log(mNearbyChatBar, "before");
+	if (mChicletPanel)			log(mChicletPanel, "before");
 
 	if (mChicletPanel && mToolbarStack && mNearbyChatBar)
 	{
-#ifdef __FEATURE_EXT_991__
+//		S32 delta_width = width - getRect().getWidth();
 		BOOL shrink = width < getRect().getWidth();
+#ifdef __FEATURE_EXT_991__
 		const S32 MIN_RENDERED_CHARS = 3;
 #endif
 
-		verifyChildControlsSizes();
-		updateResizeState(width, height);
+
+
+ 		verifyChildControlsSizes();
+ 		updateResizeState(width, height);
+		if (RS_NORESIZE == mResizeState && !called_from_parent)
+		{
+			// this can be in case nearby
+			lldebugs << "width was not changed & !called_from_parent" << llendl;
+
+		}
+
+
+
+
+		if (RS_NORESIZE != mResizeState)
+		{
+
+//		mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, mResizeState & RS_CHICLET_PANEL);
+		mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
+
+//		mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, mResizeState & RS_CHATBAR_INPUT);
+
+/*
+		mToolbarStack->updatePanelAutoResize(PANEL_GESTURE_NAME, mResizeState & RS_BUTTON_GESTURES);
+		mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, mResizeState & RS_BUTTON_CAMERA);
+		mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, mResizeState & RS_BUTTON_MOVEMENT);
+*/
+
+		bool show_button = !shrink;
+		if (width != getRect().getWidth() && show_button)
+		{
+			if (mResizeState & RS_BUTTON_SNAPSHOT)	showSnapshotButton(show_button);
+			if (mResizeState & RS_BUTTON_CAMERA)	showCameraButton(show_button);
+			if (mResizeState & RS_BUTTON_MOVEMENT)	showMoveButton(show_button);
+			if (mResizeState & RS_BUTTON_GESTURES)	showGestureButton(show_button);
+		}
 
 		switch (mResizeState)
 		{
-		case STATE_CHICLET_PANEL:
+		case RS_CHICLET_PANEL:
+/*
 			mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
 
 			mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, FALSE);
 			mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, FALSE);
 			mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE);
+*/
 
 			break;
-		case STATE_CHATBAR_INPUT:
+		case RS_CHATBAR_INPUT:
+/*
 			mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, TRUE);
 
 			mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, FALSE);
 			mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, FALSE);
 			mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE);
 
+*/
 			break;
 
 #ifdef __FEATURE_EXT_991__
 
-		case STATE_BUTTONS:
-			mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, TRUE);
+		case RS_RESIZABLE_BUTTONS:
+//			mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, TRUE);
 			mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, TRUE);
 
 			mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, FALSE);
@@ -352,6 +440,8 @@ void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
 				if (mSnapshotPanel->getVisible())
 				{
 					showSnapshotButton(FALSE);
+// 					mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
+// 					mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE);
 				}
 
 				if (mCamPanel->getVisible() && mCamButton->getLastDrawCharsCount() < MIN_RENDERED_CHARS)
@@ -368,6 +458,12 @@ void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
 			else
 			{
 				showMoveButton(TRUE);
+				S32 button_delta = delta_width / 4;
+
+				LLRect panel_rect = mMovementPanel->getRect();
+//				panel_rect.mRight += button_delta;
+				mMovementPanel->reshape(panel_rect.getWidth() + button_delta, panel_rect.getHeight()/*, FALSE*/);
+
 				mMovementPanel->draw();
 
 				if (mMovementButton->getLastDrawCharsCount() >= MIN_RENDERED_CHARS)
@@ -378,6 +474,7 @@ void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
 				{
 					showMoveButton(FALSE);
 				}
+				mMovementPanel->reshape(panel_rect.getWidth() , panel_rect.getHeight()/*, FALSE*/);
 			}
 			break;
 #endif
@@ -385,58 +482,326 @@ void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
 		default:
 			break;
 		}
+		}
+		else
+		{
+			lldebugs << "Nothing changed" << llendl;
+		}
+
 	}
 
 	LLPanel::reshape(width, height, called_from_parent);
+
+	// *TODO: ��������� ������ nearby ����� ������� �� ������� ������ �� ������������ ������
+
+//	if (mMovementButton)		log(mMovementButton, "after");
+	if (mNearbyChatBar)			log(mNearbyChatBar, "after");
+	if (mChicletPanel)			log(mChicletPanel, "after");
+
+	if (mToolbarStack)
+	{
+/*
+		mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, FALSE);
+		mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE);
+*/
+	}
+	--depth;
 }
 
 void LLBottomTray::updateResizeState(S32 width, S32 height)
 {
-	mResizeState = STATE_BUTTONS;
+	mResizeState = RS_NORESIZE;
+	static MASK prev_resize_state = mResizeState;
+	MASK compensative_view_item_mask = RS_CHATBAR_INPUT;
+	LLPanel* compansative_view = mNearbyChatBar;
+	S32 compensative_delta_width = 0;
 
-	const S32 chiclet_panel_width = mChicletPanel->getRect().getWidth();
+	S32 delta_width = width - getRect().getWidth();
+//	if (delta_width == 0) return;
+
+	const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth();
 	const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth();
 
 	const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth();
 	const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth();
 	const S32 chatbar_panel_max_width = mNearbyChatBar->getMaxWidth();
 
+	lldebugs << "chatbar_panel_width: " << chatbar_panel_width
+		<< llendl;
+
+	bool still_should_be_processed = true;
 	// bottom tray is narrowed
 	if (width < getRect().getWidth())
 	{
 		if (chiclet_panel_width > chiclet_panel_min_width)
 		{
-			mResizeState = STATE_CHICLET_PANEL;
+			// we have some space to decrease chiclet panel
+			S32 panel_delta_min = chiclet_panel_width - chiclet_panel_min_width;
+			mResizeState |= RS_CHICLET_PANEL;
+
+			S32 delta_panel = llmin(-delta_width, panel_delta_min);
+
+			lldebugs << "delta_width: " << delta_width
+				<< ", panel_delta_min: " << panel_delta_min
+				<< ", delta_panel: " << delta_panel
+				<< llendl;
+
+			// is chiclet panel width enough to process resizing?
+			delta_width += panel_delta_min;
+
+			still_should_be_processed = delta_width < 0;
+
+			mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - delta_panel, mChicletPanel->getParent()->getRect().getHeight());
+			log(mChicletPanel, "after processing panel decreasing via chiclet panel");
+
+			lldebugs << "RS_CHICLET_PANEL" 
+				<< ", delta_width: " << delta_width
+				<< llendl;
 		}
-		else if (chatbar_panel_width > chatbar_panel_min_width)
+		
+		if (still_should_be_processed && chatbar_panel_width > chatbar_panel_min_width)
 		{
-			mResizeState = STATE_CHATBAR_INPUT;
+			// we have some space to decrease chatbar panel
+			S32 panel_delta_min = chatbar_panel_width - chatbar_panel_min_width;
+			mResizeState |= RS_CHATBAR_INPUT;
+
+			S32 delta_panel = llmin(-delta_width, panel_delta_min);
+
+			// is chatbar panel width enough to process resizing?
+			delta_width += panel_delta_min;
+			
+
+			still_should_be_processed = delta_width < 0;
+
+			mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() - delta_panel, mNearbyChatBar->getRect().getHeight());
+
+			lldebugs << "RS_CHATBAR_INPUT"
+				<< ", delta_panel: " << delta_panel
+				<< ", delta_width: " << delta_width
+				<< llendl;
+
+			log(mChicletPanel, "after nearby was processed");
+
 		}
-		else
+		if (still_should_be_processed)
 		{
-			mResizeState = STATE_BUTTONS;
+			mResizeState |= compensative_view_item_mask;
+
+			if (mSnapshotPanel->getVisible())
+			{
+				mResizeState |= RS_BUTTON_SNAPSHOT;
+				delta_width += mSnapshotPanel->getRect().getWidth();
+				compensative_delta_width += mSnapshotPanel->getRect().getWidth();
+				lldebugs << "RS_BUTTON_SNAPSHOT" 
+					<< ", compensative_delta_width: " << compensative_delta_width
+					<< ", delta_width: " << delta_width
+					<< llendl;
+				showSnapshotButton(false);
+			}
+
+			if (delta_width < 0 && mCamPanel->getVisible())
+			{
+				mResizeState |= RS_BUTTON_CAMERA;
+				delta_width += mCamPanel->getRect().getWidth();
+				compensative_delta_width += mCamPanel->getRect().getWidth();
+				lldebugs << "RS_BUTTON_CAMERA"
+					<< ", compensative_delta_width: " << compensative_delta_width
+					<< ", delta_width: " << delta_width
+					<< llendl;
+				showCameraButton(false);
+			}
+
+			if (delta_width < 0 && mMovementPanel->getVisible())
+			{
+				mResizeState |= RS_BUTTON_MOVEMENT;
+				delta_width += mMovementPanel->getRect().getWidth();
+				compensative_delta_width += mMovementPanel->getRect().getWidth();
+				lldebugs << "RS_BUTTON_MOVEMENT"
+					<< ", compensative_delta_width: " << compensative_delta_width
+					<< ", delta_width: " << delta_width
+					<< llendl;
+				showMoveButton(false);
+			}
+
+			if (delta_width < 0 && mGesturePanel->getVisible())
+			{
+				mResizeState |= RS_BUTTON_GESTURES;
+				delta_width += mGesturePanel->getRect().getWidth();
+				compensative_delta_width += mGesturePanel->getRect().getWidth();
+				lldebugs << "RS_BUTTON_GESTURES"
+					<< ", compensative_delta_width: " << compensative_delta_width
+					<< ", delta_width: " << delta_width
+					<< llendl;
+				showGestureButton(false);
+			}
+
+			if (delta_width < 0)
+			{
+				llwarns << "WARNING: there is no enough room for bottom tray, resizing still should be processed" << llendl;
+			}
+
+			if (compensative_delta_width != 0)
+			{
+				if (compansative_view)			log(compansative_view, "before applying compensative width: ");
+				compansative_view->reshape(compansative_view->getRect().getWidth() + compensative_delta_width, compansative_view->getRect().getHeight() );
+				if (compansative_view)			log(compansative_view, "after applying compensative width: ");
+				lldebugs << compensative_delta_width << llendl;
+
+			}
+
+/*
+			switch (mResizeState)
+			{
+			case:
+			}
+*/
+
+//			mResizeState = RS_RESIZABLE_BUTTONS;
 		}
 	}
 	// bottom tray is widen
 	else
 	{
+// 		const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth();
+// 		const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth();
+// 		//		const S32 chatbar_panel_max_width = mNearbyChatBar->getMaxWidth();
+		S32 available_width_chat = chatbar_panel_width - chatbar_panel_min_width;
+		S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width;
+		S32 available_width = delta_width + available_width_chat + available_width_chiclet;
+		
+		if (available_width > 0 && processShowButton(mGesturePanel, &available_width))
+		{
+			mResizeState |= RS_BUTTON_GESTURES | compensative_view_item_mask;
+			delta_width -= mGesturePanel->getRect().getWidth();
+			compensative_delta_width -= mGesturePanel->getRect().getWidth();
+			lldebugs << "RS_BUTTON_GESTURES"
+				<< ", compensative_delta_width: " << compensative_delta_width
+				<< ", delta_width: " << delta_width
+				<< llendl;
+		}
+
+		if (available_width > 0 && processShowButton(mMovementPanel, &available_width))
+		{
+			mResizeState |= RS_BUTTON_MOVEMENT | compensative_view_item_mask;
+			delta_width -= mMovementPanel->getRect().getWidth();
+			compensative_delta_width -= mMovementPanel->getRect().getWidth();
+
+			lldebugs << "RS_BUTTON_MOVEMENT"
+				<< ", compensative_delta_width: " << compensative_delta_width
+				<< ", delta_width: " << delta_width
+				<< llendl;
+		}
+
+		if (available_width > 0 && processShowButton(mCamPanel, &available_width))
+		{
+			mResizeState |= RS_BUTTON_CAMERA | compensative_view_item_mask;
+			delta_width -= mCamPanel->getRect().getWidth();
+			compensative_delta_width -= mCamPanel->getRect().getWidth();
+
+			lldebugs << "RS_BUTTON_CAMERA "
+				<< ", compensative_delta_width: " << compensative_delta_width
+				<< ", delta_width: " << delta_width
+				<< llendl;
+		}
+
+		if (available_width > 0 && processShowButton(mSnapshotPanel, &available_width))
+		{
+			mResizeState |= RS_BUTTON_SNAPSHOT | compensative_view_item_mask;
+			delta_width -= mSnapshotPanel->getRect().getWidth();
+			compensative_delta_width -= mSnapshotPanel->getRect().getWidth();
+
+			lldebugs << "RS_BUTTON_SNAPSHOT"
+				<< ", compensative_delta_width: " << compensative_delta_width
+				<< ", delta_width: " << delta_width
+				<< llendl;
+		}
+
+		if (compensative_delta_width != 0)
+		{
+			S32 required_to_process_width = -compensative_delta_width;
+			S32 total_delta_width = width - getRect().getWidth();
+
+			// 1. use delta width of resizing
+			required_to_process_width -= total_delta_width;
+
+			// 2. use delta width of chatbar
+
+
+			S32 chatbar_compensative_delta_width = required_to_process_width;
+			if (available_width_chat < chatbar_compensative_delta_width)
+			{
+				chatbar_compensative_delta_width = available_width_chat;
+			}
+
+			log(compansative_view, "increase width: before applying compensative width: ");
+			compansative_view->reshape(compansative_view->getRect().getWidth() - chatbar_compensative_delta_width, compansative_view->getRect().getHeight() );
+			if (compansative_view)			log(compansative_view, "after applying compensative width: ");
+			lldebugs << chatbar_compensative_delta_width << llendl;
+
+			// 3. use delta width of chiclet panel
+			required_to_process_width -= chatbar_compensative_delta_width;
+
+			mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - required_to_process_width, mChicletPanel->getParent()->getRect().getHeight());
+			log(mChicletPanel, "after applying compensative width for chiclets: ");
+			lldebugs << required_to_process_width << llendl;
+
+		}
+
+
 #ifdef __FEATURE_EXT_991__
-		if (!mMovementPanel->getVisible())
+		//S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars, BOOL end_on_word_boundary) const 
+		static S32 DEFAULT_BUTTON_WIDTH = 80;
+		if (!mMovementPanel->getVisible() || mMovementPanel->getRect().getWidth() < DEFAULT_BUTTON_WIDTH)
 		{
-			mResizeState = STATE_BUTTONS;
+			mResizeState = RS_RESIZABLE_BUTTONS;
 		}
 		else
 #endif
-		if (chatbar_panel_width < chatbar_panel_max_width)
+		if (delta_width > 0 && chatbar_panel_width < chatbar_panel_max_width)
 		{
-			mResizeState = STATE_CHATBAR_INPUT;
+			mResizeState |= RS_CHATBAR_INPUT;
+			// how many space can nearby chat take?
+			S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth();
+			S32 delta_panel_max = chatbar_panel_max_width - chatbar_panel_width_;
+			S32 delta_panel = llmin(delta_width, delta_panel_max);
+			delta_width -= delta_panel_max;
+			mNearbyChatBar->reshape(chatbar_panel_width_ + delta_panel, mNearbyChatBar->getRect().getHeight());
 		}
-		else
+
+		if (delta_width > 0)
 		{
-			mResizeState = STATE_CHICLET_PANEL;
+			mResizeState |= RS_CHICLET_PANEL;
 		}
 	}
 
+	prev_resize_state = mResizeState;
+	lldebugs << "New resize state: " << mResizeState << llendl;
+}
 
-	// TODO: finish implementation
+bool LLBottomTray::processShowButton(LLPanel* panel, S32* available_width)
+{
+	bool can_be_shown = canButtonBeShown(panel);
+	if (can_be_shown)
+	{
+		//validate if we have enough room to show this button
+		const S32 required_width = panel->getRect().getWidth();
+		can_be_shown = *available_width >= required_width;
+		if (can_be_shown)
+		{
+			*available_width -= required_width;
+		}
+
+	}
+	return can_be_shown;
+}
+
+bool LLBottomTray::canButtonBeShown(LLPanel* panel) const
+{
+	bool can_be_shown = !panel->getVisible();
+	if (can_be_shown)
+	{
+		// *TODO: mantipov: synchronize with situation when button was hidden via context menu;
+	}
+	return can_be_shown;
 }
+//EOF
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index 02588a1975..4a763e6c7c 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -52,6 +52,7 @@ class LLBottomTray
 	, public LLPanel
 	, public LLIMSessionObserver
 {
+	LOG_CLASS(LLBottomTray);
 	friend class LLSingleton<LLBottomTray>;
 public:
 	~LLBottomTray();
@@ -83,17 +84,13 @@ public:
 
 private:
 
-	enum EResizeState
-	{
-		STATE_CHICLET_PANEL = 1,
-		STATE_CHATBAR_INPUT,
-		STATE_BUTTONS
-	};
-
 	void updateResizeState(S32 width, S32 height);
 	void verifyChildControlsSizes();
+	void log(LLView* panel, const std::string& descr);
+	bool processShowButton(LLPanel* panel, S32* available_width);
+	bool canButtonBeShown(LLPanel* panel) const;
 
-	EResizeState mResizeState;
+	MASK mResizeState;
 
 protected:
 
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 97447a85c6..16ee9a0007 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -787,11 +787,13 @@ LLChicletPanel::Params::Params()
 	chiclet_padding = 3;
 	scrolling_offset = 40;
 
+/*
 	if (!min_width.isProvided())
 	{
 		// min_width = 4 chiclets + 3 paddings
-		min_width = 179 + 3*chiclet_padding;
+		min_width = 180 + 3*chiclet_padding;
 	}
+*/
 };
 
 LLChicletPanel::LLChicletPanel(const Params&p)
@@ -805,6 +807,10 @@ LLChicletPanel::LLChicletPanel(const Params&p)
 , mShowControls(true)
 {
 	LLPanel::Params panel_params;
+// *TODO: remove color settings 
+panel_params.background_visible(true);
+panel_params.bg_alpha_color(LLColor4::red);
+	panel_params.follows.flags(FOLLOWS_LEFT | FOLLOWS_RIGHT);
 	mScrollArea = LLUICtrlFactory::create<LLPanel>(panel_params,this);
 
 	// important for Show/Hide Camera and Move controls menu in bottom tray to work properly
@@ -1051,7 +1057,7 @@ void LLChicletPanel::reshape(S32 width, S32 height, BOOL called_from_parent )
 		width, scroll_button_rect.mBottom));
 	mScrollArea->setRect(LLRect(scroll_button_rect.getWidth() + SCROLL_BUTTON_PAD,
 		height, width - scroll_button_rect.getWidth() - SCROLL_BUTTON_PAD, 0));
-	mShowControls = width > mMinWidth;
+	mShowControls = width >= mMinWidth;
 	mScrollArea->setVisible(mShowControls);
 
 	trimChiclets();
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index bcb4edd7c1..47441191f5 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -260,6 +260,8 @@ bool LLNearbyChatBar::instanceExists()
 
 void LLNearbyChatBar::draw()
 {
+// TODO: mantipov: remove
+/*
 	LLRect rect = getRect();
 	S32 max_width = getMaxWidth();
 
@@ -269,6 +271,7 @@ void LLNearbyChatBar::draw()
 		reshape(rect.getWidth(), rect.getHeight(), FALSE);
 		setRect(rect);
 	}
+*/
 
 	displaySpeakingIndicator();
 	LLPanel::draw();
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index ef91c6cd6e..1c1065bc11 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -44,7 +44,7 @@
          min_height="23"
          width="310"
          top="0"
-         min_width="300"
+         min_width="192"
          name="chat_bar"
          user_resize="false"
          filename="panel_nearby_chat_bar.xml" />
@@ -57,7 +57,7 @@
          min_height="28"
          width="100"
          top_delta="0"
-         min_width="96"
+         min_width="100"
          name="speak_panel"
          user_resize="false">
          <talk_button
@@ -90,11 +90,11 @@
          min_height="28"
          width="80"
          top_delta="0"
-         min_width="76"
+         min_width="80"
          name="gesture_panel"
          user_resize="false">
          <button
-           follows="right"
+          follows="left|right"
           height="23"
           label="Gesture"
           layout="topleft"
@@ -123,8 +123,9 @@
          layout="topleft"
          min_height="28"
          name="movement_panel"
+         user_resize="false"
          width="80"
-         min_width="76">
+         min_width="80">
             <button
              follows="left|right"
              height="23"
@@ -159,10 +160,10 @@
          height="28"
          layout="topleft"
          min_height="28"
-         min_width="76"
+         min_width="80"
          name="cam_panel"
-         top_delta="-10"
-         width="100">
+         user_resize="false"
+         width="80">
             <button
              follows="left|right"
              height="23"
@@ -197,6 +198,7 @@
          follows="left|right"
          height="28"
          layout="topleft"
+         min_width="40"
          name="snapshot_panel"
          width="40">
             <button
@@ -213,6 +215,8 @@
                  />
         </layout_panel>
         <layout_panel
+background_visible="true"
+bg_alpha_color="green"  
          mouse_opaque="false"
          follows="left|right"
          height="28"
@@ -229,6 +233,7 @@
              height="28"
              layout="topleft"
              left="0"
+             min_width="129"
              name="chiclet_list"
              top="0"
              chiclet_padding="3"
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 555fedb1ff..eb12178ca0 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
@@ -9,7 +9,7 @@
  top="21"
  width="310">
     <string name="min_width">
-        310
+        192
     </string>
     <string name="max_width">
         320
-- 
cgit v1.2.3


From 729df1aa330a50fa4f4b887e46c32a94a01880d7 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Tue, 10 Nov 2009 16:13:20 +0200
Subject: Work on major sub-task EXT-991 (Update bottom bar behavior on resize)
  Initial refactoring of functionality:   - cleaning   - Imroved logic while
 resizing of bottom tray

--HG--
branch : product-engine
---
 indra/newview/llbottomtray.cpp | 155 ++++++-----------------------------------
 1 file changed, 23 insertions(+), 132 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index d0fdf24403..b74b1d900b 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -344,12 +344,12 @@ void LLBottomTray::verifyChildControlsSizes()
 void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
 {
 	static S32 depth = 0;
-if (0 == depth) lldebugs << "" << llendl;
+if (0 == depth) lldebugs << "****************************************" << llendl;
 
 	lldebugs << "Reshaping: depth: " << ++depth
 		<< ", width: " << width
 		<< ", height: " << height
-		<< ", called_from_parent" << called_from_parent
+		<< ", called_from_parent: " << called_from_parent
 		<< ", cur width: " << getRect().getWidth()
 		<< ", cur height: " << getRect().getHeight()
 		<< llendl;
@@ -361,9 +361,6 @@ if (0 == depth) lldebugs << "" << llendl;
 	{
 //		S32 delta_width = width - getRect().getWidth();
 		BOOL shrink = width < getRect().getWidth();
-#ifdef __FEATURE_EXT_991__
-		const S32 MIN_RENDERED_CHARS = 3;
-#endif
 
 
 
@@ -376,9 +373,6 @@ if (0 == depth) lldebugs << "" << llendl;
 
 		}
 
-
-
-
 		if (RS_NORESIZE != mResizeState)
 		{
 
@@ -387,11 +381,6 @@ if (0 == depth) lldebugs << "" << llendl;
 
 //		mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, mResizeState & RS_CHATBAR_INPUT);
 
-/*
-		mToolbarStack->updatePanelAutoResize(PANEL_GESTURE_NAME, mResizeState & RS_BUTTON_GESTURES);
-		mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, mResizeState & RS_BUTTON_CAMERA);
-		mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, mResizeState & RS_BUTTON_MOVEMENT);
-*/
 
 		bool show_button = !shrink;
 		if (width != getRect().getWidth() && show_button)
@@ -402,109 +391,16 @@ if (0 == depth) lldebugs << "" << llendl;
 			if (mResizeState & RS_BUTTON_GESTURES)	showGestureButton(show_button);
 		}
 
-		switch (mResizeState)
-		{
-		case RS_CHICLET_PANEL:
-/*
-			mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
-
-			mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, FALSE);
-			mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, FALSE);
-			mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE);
-*/
-
-			break;
-		case RS_CHATBAR_INPUT:
-/*
-			mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, TRUE);
-
-			mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, FALSE);
-			mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, FALSE);
-			mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE);
-
-*/
-			break;
-
-#ifdef __FEATURE_EXT_991__
-
-		case RS_RESIZABLE_BUTTONS:
-//			mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, TRUE);
-			mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, TRUE);
-
-			mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, FALSE);
-			mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, FALSE);
-
-			if (shrink)
-			{
-
-				if (mSnapshotPanel->getVisible())
-				{
-					showSnapshotButton(FALSE);
-// 					mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
-// 					mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE);
-				}
-
-				if (mCamPanel->getVisible() && mCamButton->getLastDrawCharsCount() < MIN_RENDERED_CHARS)
-				{
-					showCameraButton(FALSE);
-				}
-
-				if (mMovementPanel->getVisible() && mMovementButton->getLastDrawCharsCount() < MIN_RENDERED_CHARS)
-				{
-					showMoveButton(FALSE);
-				}
-
-			}
-			else
-			{
-				showMoveButton(TRUE);
-				S32 button_delta = delta_width / 4;
-
-				LLRect panel_rect = mMovementPanel->getRect();
-//				panel_rect.mRight += button_delta;
-				mMovementPanel->reshape(panel_rect.getWidth() + button_delta, panel_rect.getHeight()/*, FALSE*/);
-
-				mMovementPanel->draw();
-
-				if (mMovementButton->getLastDrawCharsCount() >= MIN_RENDERED_CHARS)
-				{
-					showMoveButton(TRUE);
-				}
-				else
-				{
-					showMoveButton(FALSE);
-				}
-				mMovementPanel->reshape(panel_rect.getWidth() , panel_rect.getHeight()/*, FALSE*/);
-			}
-			break;
-#endif
-
-		default:
-			break;
-		}
 		}
-		else
-		{
-			lldebugs << "Nothing changed" << llendl;
-		}
-
 	}
 
 	LLPanel::reshape(width, height, called_from_parent);
 
 	// *TODO: ��������� ������ nearby ����� ������� �� ������� ������ �� ������������ ������
 
-//	if (mMovementButton)		log(mMovementButton, "after");
 	if (mNearbyChatBar)			log(mNearbyChatBar, "after");
 	if (mChicletPanel)			log(mChicletPanel, "after");
 
-	if (mToolbarStack)
-	{
-/*
-		mToolbarStack->updatePanelAutoResize(PANEL_CAMERA_NAME, FALSE);
-		mToolbarStack->updatePanelAutoResize(PANEL_MOVEMENT_NAME, FALSE);
-*/
-	}
 	--depth;
 }
 
@@ -527,6 +423,10 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 	const S32 chatbar_panel_max_width = mNearbyChatBar->getMaxWidth();
 
 	lldebugs << "chatbar_panel_width: " << chatbar_panel_width
+		<< ", chatbar_panel_min_width: " << chatbar_panel_min_width
+		<< ", chatbar_panel_max_width: " << chatbar_panel_max_width
+		<< ", chiclet_panel_width: " << chiclet_panel_width
+		<< ", chiclet_panel_min_width: " << chiclet_panel_min_width
 		<< llendl;
 
 	bool still_should_be_processed = true;
@@ -591,7 +491,11 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 			{
 				mResizeState |= RS_BUTTON_SNAPSHOT;
 				delta_width += mSnapshotPanel->getRect().getWidth();
-				compensative_delta_width += mSnapshotPanel->getRect().getWidth();
+
+				if (delta_width > 0)
+				{
+					compensative_delta_width += delta_width;
+				}
 				lldebugs << "RS_BUTTON_SNAPSHOT" 
 					<< ", compensative_delta_width: " << compensative_delta_width
 					<< ", delta_width: " << delta_width
@@ -603,7 +507,10 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 			{
 				mResizeState |= RS_BUTTON_CAMERA;
 				delta_width += mCamPanel->getRect().getWidth();
-				compensative_delta_width += mCamPanel->getRect().getWidth();
+				if (delta_width > 0)
+				{
+					compensative_delta_width += delta_width;
+				}
 				lldebugs << "RS_BUTTON_CAMERA"
 					<< ", compensative_delta_width: " << compensative_delta_width
 					<< ", delta_width: " << delta_width
@@ -615,7 +522,10 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 			{
 				mResizeState |= RS_BUTTON_MOVEMENT;
 				delta_width += mMovementPanel->getRect().getWidth();
-				compensative_delta_width += mMovementPanel->getRect().getWidth();
+				if (delta_width > 0)
+				{
+					compensative_delta_width += delta_width;
+				}
 				lldebugs << "RS_BUTTON_MOVEMENT"
 					<< ", compensative_delta_width: " << compensative_delta_width
 					<< ", delta_width: " << delta_width
@@ -627,7 +537,10 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 			{
 				mResizeState |= RS_BUTTON_GESTURES;
 				delta_width += mGesturePanel->getRect().getWidth();
-				compensative_delta_width += mGesturePanel->getRect().getWidth();
+				if (delta_width > 0)
+				{
+					compensative_delta_width += delta_width;
+				}
 				lldebugs << "RS_BUTTON_GESTURES"
 					<< ", compensative_delta_width: " << compensative_delta_width
 					<< ", delta_width: " << delta_width
@@ -648,23 +561,11 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 				lldebugs << compensative_delta_width << llendl;
 
 			}
-
-/*
-			switch (mResizeState)
-			{
-			case:
-			}
-*/
-
-//			mResizeState = RS_RESIZABLE_BUTTONS;
 		}
 	}
 	// bottom tray is widen
 	else
 	{
-// 		const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth();
-// 		const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth();
-// 		//		const S32 chatbar_panel_max_width = mNearbyChatBar->getMaxWidth();
 		S32 available_width_chat = chatbar_panel_width - chatbar_panel_min_width;
 		S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width;
 		S32 available_width = delta_width + available_width_chat + available_width_chiclet;
@@ -747,16 +648,6 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 
 		}
 
-
-#ifdef __FEATURE_EXT_991__
-		//S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars, BOOL end_on_word_boundary) const 
-		static S32 DEFAULT_BUTTON_WIDTH = 80;
-		if (!mMovementPanel->getVisible() || mMovementPanel->getRect().getWidth() < DEFAULT_BUTTON_WIDTH)
-		{
-			mResizeState = RS_RESIZABLE_BUTTONS;
-		}
-		else
-#endif
 		if (delta_width > 0 && chatbar_panel_width < chatbar_panel_max_width)
 		{
 			mResizeState |= RS_CHATBAR_INPUT;
-- 
cgit v1.2.3


From eb05116e2b3339648a1458fd3be5c502583053ea Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Tue, 10 Nov 2009 18:07:19 +0200
Subject: Work on major sub-task EXT-991 (Update bottom bar behavior on resize)
   - update min width for chiclet panel   - move showing of hidden buttons to
 place where resize strategy is determined

--HG--
branch : product-engine
---
 indra/newview/llbottomtray.cpp                     | 45 ++++++++--------------
 .../skins/default/xui/en/panel_bottomtray.xml      |  6 ++-
 2 files changed, 20 insertions(+), 31 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index b74b1d900b..c33d667e0b 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -320,21 +320,26 @@ void LLBottomTray::log(LLView* panel, const std::string& descr)
 void LLBottomTray::verifyChildControlsSizes()
 {
 	LLRect rect = mChicletPanel->getRect();
+	/*
 	if (rect.getWidth() < mChicletPanel->getMinWidth())
 	{
 		llwarns << "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ: chiclet panel less then min" << llendl;
 		mChicletPanel->reshape(mChicletPanel->getMinWidth(), rect.getHeight());
 	}
-
+*/
 	rect = mNearbyChatBar->getRect();
+/*
 	if (rect.getWidth() < mNearbyChatBar->getMinWidth())
 	{
 		llwarns << "WWWWWWWWWWWWWWWWWWWWWWWWWWWWW: near chat panel less then min" << llendl;
 		mNearbyChatBar->reshape(mNearbyChatBar->getMinWidth(), rect.getHeight());
 	}
 	else 
+*/
 		if (rect.getWidth() > mNearbyChatBar->getMaxWidth())
 	{
+		llerrs << "WWWWWWWWWWWWWWWWWWWWWWWWWWWWW: near chat panel more then max width" << llendl;
+
 		rect.setLeftTopAndSize(rect.mLeft, rect.mTop, mNearbyChatBar->getMaxWidth(), rect.getHeight());
 		mNearbyChatBar->reshape(mNearbyChatBar->getMaxWidth(), rect.getHeight());
 		mNearbyChatBar->setRect(rect);
@@ -346,11 +351,12 @@ void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
 	static S32 depth = 0;
 if (0 == depth) lldebugs << "****************************************" << llendl;
 
+	S32 prev_width = getRect().getWidth();
 	lldebugs << "Reshaping: depth: " << ++depth
 		<< ", width: " << width
 		<< ", height: " << height
 		<< ", called_from_parent: " << called_from_parent
-		<< ", cur width: " << getRect().getWidth()
+		<< ", cur width: " << prev_width
 		<< ", cur height: " << getRect().getHeight()
 		<< llendl;
 
@@ -359,19 +365,8 @@ if (0 == depth) lldebugs << "****************************************" << llendl
 
 	if (mChicletPanel && mToolbarStack && mNearbyChatBar)
 	{
-//		S32 delta_width = width - getRect().getWidth();
-		BOOL shrink = width < getRect().getWidth();
-
-
-
  		verifyChildControlsSizes();
- 		updateResizeState(width, height);
-		if (RS_NORESIZE == mResizeState && !called_from_parent)
-		{
-			// this can be in case nearby
-			lldebugs << "width was not changed & !called_from_parent" << llendl;
-
-		}
+ 		updateResizeState(width, prev_width);
 
 		if (RS_NORESIZE != mResizeState)
 		{
@@ -380,23 +375,11 @@ if (0 == depth) lldebugs << "****************************************" << llendl
 		mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
 
 //		mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, mResizeState & RS_CHATBAR_INPUT);
-
-
-		bool show_button = !shrink;
-		if (width != getRect().getWidth() && show_button)
-		{
-			if (mResizeState & RS_BUTTON_SNAPSHOT)	showSnapshotButton(show_button);
-			if (mResizeState & RS_BUTTON_CAMERA)	showCameraButton(show_button);
-			if (mResizeState & RS_BUTTON_MOVEMENT)	showMoveButton(show_button);
-			if (mResizeState & RS_BUTTON_GESTURES)	showGestureButton(show_button);
-		}
-
 		}
 	}
 
 	LLPanel::reshape(width, height, called_from_parent);
 
-	// *TODO: ��������� ������ nearby ����� ������� �� ������� ������ �� ������������ ������
 
 	if (mNearbyChatBar)			log(mNearbyChatBar, "after");
 	if (mChicletPanel)			log(mChicletPanel, "after");
@@ -412,7 +395,7 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 	LLPanel* compansative_view = mNearbyChatBar;
 	S32 compensative_delta_width = 0;
 
-	S32 delta_width = width - getRect().getWidth();
+	S32 delta_width = width - height;
 //	if (delta_width == 0) return;
 
 	const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth();
@@ -431,7 +414,7 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 
 	bool still_should_be_processed = true;
 	// bottom tray is narrowed
-	if (width < getRect().getWidth())
+	if (width < height)
 	{
 		if (chiclet_panel_width > chiclet_panel_min_width)
 		{
@@ -579,6 +562,7 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 				<< ", compensative_delta_width: " << compensative_delta_width
 				<< ", delta_width: " << delta_width
 				<< llendl;
+			showGestureButton(true);
 		}
 
 		if (available_width > 0 && processShowButton(mMovementPanel, &available_width))
@@ -591,6 +575,7 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 				<< ", compensative_delta_width: " << compensative_delta_width
 				<< ", delta_width: " << delta_width
 				<< llendl;
+			showMoveButton(true);
 		}
 
 		if (available_width > 0 && processShowButton(mCamPanel, &available_width))
@@ -603,6 +588,7 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 				<< ", compensative_delta_width: " << compensative_delta_width
 				<< ", delta_width: " << delta_width
 				<< llendl;
+			showCameraButton(true);
 		}
 
 		if (available_width > 0 && processShowButton(mSnapshotPanel, &available_width))
@@ -615,12 +601,13 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 				<< ", compensative_delta_width: " << compensative_delta_width
 				<< ", delta_width: " << delta_width
 				<< llendl;
+			showSnapshotButton(true);
 		}
 
 		if (compensative_delta_width != 0)
 		{
 			S32 required_to_process_width = -compensative_delta_width;
-			S32 total_delta_width = width - getRect().getWidth();
+			S32 total_delta_width = width - height;
 
 			// 1. use delta width of resizing
 			required_to_process_width -= total_delta_width;
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index 1c1065bc11..a945010d3e 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -224,16 +224,18 @@ bg_alpha_color="green"
          top="0"
          name="chiclet_list_panel"
          width="189"
-         min_width="189"
+         min_width="180"
          user_resize="false"
          auto_resize="true">
+<!--*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="28"
              layout="topleft"
              left="0"
-             min_width="129"
+             min_width="180"
              name="chiclet_list"
              top="0"
              chiclet_padding="3"
-- 
cgit v1.2.3


From cff807dfaf2bfdbe58a007dd16b36ea29e57bd5b Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 11 Nov 2009 13:13:34 +0200
Subject: Work on major sub-task EXT-991 (Update bottom bar behavior on resize)
  - refactored logic increasing of width  - fixed bug with incorrect work in
 some cases

--HG--
branch : product-engine
---
 indra/newview/llbottomtray.cpp | 71 ++++++++++++++++++++++--------------------
 1 file changed, 38 insertions(+), 33 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index c33d667e0b..908fe15be6 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -393,10 +393,10 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 	static MASK prev_resize_state = mResizeState;
 	MASK compensative_view_item_mask = RS_CHATBAR_INPUT;
 	LLPanel* compansative_view = mNearbyChatBar;
-	S32 compensative_delta_width = 0;
 
 	S32 delta_width = width - height;
 //	if (delta_width == 0) return;
+	bool shrink = width < height;
 
 	const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth();
 	const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth();
@@ -414,8 +414,9 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 
 	bool still_should_be_processed = true;
 	// bottom tray is narrowed
-	if (width < height)
+	if (shrink)
 	{
+		S32 compensative_delta_width = 0;
 		if (chiclet_panel_width > chiclet_panel_min_width)
 		{
 			// we have some space to decrease chiclet panel
@@ -549,17 +550,17 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 	// bottom tray is widen
 	else
 	{
-		S32 available_width_chat = chatbar_panel_width - chatbar_panel_min_width;
+		S32 chatbar_available_shrink_width = chatbar_panel_width - chatbar_panel_min_width;
 		S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width;
-		S32 available_width = delta_width + available_width_chat + available_width_chiclet;
-		
+		S32 available_width = delta_width + chatbar_available_shrink_width + available_width_chiclet;
+		S32 buttons_required_width = 0; //How many room will take shown buttons
 		if (available_width > 0 && processShowButton(mGesturePanel, &available_width))
 		{
 			mResizeState |= RS_BUTTON_GESTURES | compensative_view_item_mask;
 			delta_width -= mGesturePanel->getRect().getWidth();
-			compensative_delta_width -= mGesturePanel->getRect().getWidth();
+			buttons_required_width += mGesturePanel->getRect().getWidth();
 			lldebugs << "RS_BUTTON_GESTURES"
-				<< ", compensative_delta_width: " << compensative_delta_width
+				<< ", buttons_required_width: " << buttons_required_width
 				<< ", delta_width: " << delta_width
 				<< llendl;
 			showGestureButton(true);
@@ -569,10 +570,10 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 		{
 			mResizeState |= RS_BUTTON_MOVEMENT | compensative_view_item_mask;
 			delta_width -= mMovementPanel->getRect().getWidth();
-			compensative_delta_width -= mMovementPanel->getRect().getWidth();
+			buttons_required_width += mMovementPanel->getRect().getWidth();
 
 			lldebugs << "RS_BUTTON_MOVEMENT"
-				<< ", compensative_delta_width: " << compensative_delta_width
+				<< ", buttons_required_width: " << buttons_required_width
 				<< ", delta_width: " << delta_width
 				<< llendl;
 			showMoveButton(true);
@@ -582,10 +583,10 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 		{
 			mResizeState |= RS_BUTTON_CAMERA | compensative_view_item_mask;
 			delta_width -= mCamPanel->getRect().getWidth();
-			compensative_delta_width -= mCamPanel->getRect().getWidth();
+			buttons_required_width += mCamPanel->getRect().getWidth();
 
 			lldebugs << "RS_BUTTON_CAMERA "
-				<< ", compensative_delta_width: " << compensative_delta_width
+				<< ", buttons_required_width: " << buttons_required_width
 				<< ", delta_width: " << delta_width
 				<< llendl;
 			showCameraButton(true);
@@ -595,51 +596,55 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 		{
 			mResizeState |= RS_BUTTON_SNAPSHOT | compensative_view_item_mask;
 			delta_width -= mSnapshotPanel->getRect().getWidth();
-			compensative_delta_width -= mSnapshotPanel->getRect().getWidth();
+			buttons_required_width += mSnapshotPanel->getRect().getWidth();
 
 			lldebugs << "RS_BUTTON_SNAPSHOT"
-				<< ", compensative_delta_width: " << compensative_delta_width
+				<< ", buttons_required_width: " << buttons_required_width
 				<< ", delta_width: " << delta_width
 				<< llendl;
 			showSnapshotButton(true);
 		}
 
-		if (compensative_delta_width != 0)
+		S32 total_delta_width = width - height;
+
+		// if we have to show some buttons but whidth increasing is not enough...
+		if (buttons_required_width > 0 && total_delta_width < buttons_required_width)
 		{
-			S32 required_to_process_width = -compensative_delta_width;
-			S32 total_delta_width = width - height;
+			// ... let's shrink nearby chat & chiclet panels
+			S32 required_to_process_width = buttons_required_width;
 
 			// 1. use delta width of resizing
 			required_to_process_width -= total_delta_width;
 
-			// 2. use delta width of chatbar
-
-
-			S32 chatbar_compensative_delta_width = required_to_process_width;
-			if (available_width_chat < chatbar_compensative_delta_width)
+			// 2. use delta width available via decreasing of nearby chat panel
+			S32 chatbar_shrink_width = required_to_process_width;
+			if (chatbar_available_shrink_width < chatbar_shrink_width)
 			{
-				chatbar_compensative_delta_width = available_width_chat;
+				chatbar_shrink_width = chatbar_available_shrink_width;
 			}
 
 			log(compansative_view, "increase width: before applying compensative width: ");
-			compansative_view->reshape(compansative_view->getRect().getWidth() - chatbar_compensative_delta_width, compansative_view->getRect().getHeight() );
+			compansative_view->reshape(compansative_view->getRect().getWidth() - chatbar_shrink_width, compansative_view->getRect().getHeight() );
 			if (compansative_view)			log(compansative_view, "after applying compensative width: ");
-			lldebugs << chatbar_compensative_delta_width << llendl;
+			lldebugs << chatbar_shrink_width << llendl;
 
-			// 3. use delta width of chiclet panel
-			required_to_process_width -= chatbar_compensative_delta_width;
+			// 3. use delta width available via decreasing of chiclet panel
+			required_to_process_width -= chatbar_shrink_width;
 
-			mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - required_to_process_width, mChicletPanel->getParent()->getRect().getHeight());
-			log(mChicletPanel, "after applying compensative width for chiclets: ");
-			lldebugs << required_to_process_width << llendl;
+			if (required_to_process_width > 0)
+			{
+				mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - required_to_process_width, mChicletPanel->getParent()->getRect().getHeight());
+				log(mChicletPanel, "after applying compensative width for chiclets: ");
+				lldebugs << required_to_process_width << llendl;
+			}
 
 		}
-
-		if (delta_width > 0 && chatbar_panel_width < chatbar_panel_max_width)
+// TODO: mantipov: probably need delta_width -= buttons_required_width & remove calculating from the buttons processing
+		// how many space can nearby chat take?
+		S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth();
+		if (delta_width > 0 && chatbar_panel_width_ < chatbar_panel_max_width)
 		{
 			mResizeState |= RS_CHATBAR_INPUT;
-			// how many space can nearby chat take?
-			S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth();
 			S32 delta_panel_max = chatbar_panel_max_width - chatbar_panel_width_;
 			S32 delta_panel = llmin(delta_width, delta_panel_max);
 			delta_width -= delta_panel_max;
-- 
cgit v1.2.3


From 9ab02a68bbb735f89d4c633697a7917ca2fa3839 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 11 Nov 2009 13:53:04 +0200
Subject: Work on major sub-task EXT-991 (Update bottom bar behavior on resize)
 Code refactored:   - move calculating of buttons_required_width inside
 processShowButton();   - remove changing of delta_width out of processing
 each button while increasing width

--HG--
branch : product-engine
---
 indra/newview/llbottomtray.cpp | 61 +++++++++++++++---------------------------
 indra/newview/llbottomtray.h   |  4 +--
 2 files changed, 23 insertions(+), 42 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 908fe15be6..0ebf9947e3 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -348,15 +348,14 @@ void LLBottomTray::verifyChildControlsSizes()
 #define __FEATURE_EXT_991
 void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
 {
-	static S32 depth = 0;
-if (0 == depth) lldebugs << "****************************************" << llendl;
+	lldebugs << "****************************************" << llendl;
 
-	S32 prev_width = getRect().getWidth();
-	lldebugs << "Reshaping: depth: " << ++depth
+	S32 current_width = getRect().getWidth();
+	lldebugs << "Reshaping: " 
 		<< ", width: " << width
 		<< ", height: " << height
 		<< ", called_from_parent: " << called_from_parent
-		<< ", cur width: " << prev_width
+		<< ", cur width: " << current_width
 		<< ", cur height: " << getRect().getHeight()
 		<< llendl;
 
@@ -365,17 +364,9 @@ if (0 == depth) lldebugs << "****************************************" << llendl
 
 	if (mChicletPanel && mToolbarStack && mNearbyChatBar)
 	{
- 		verifyChildControlsSizes();
- 		updateResizeState(width, prev_width);
-
-		if (RS_NORESIZE != mResizeState)
-		{
-
-//		mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, mResizeState & RS_CHICLET_PANEL);
 		mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
-
-//		mToolbarStack->updatePanelAutoResize(PANEL_CHATBAR_NAME, mResizeState & RS_CHATBAR_INPUT);
-		}
+ 		verifyChildControlsSizes();
+ 		updateResizeState(width, current_width);
 	}
 
 	LLPanel::reshape(width, height, called_from_parent);
@@ -383,20 +374,18 @@ if (0 == depth) lldebugs << "****************************************" << llendl
 
 	if (mNearbyChatBar)			log(mNearbyChatBar, "after");
 	if (mChicletPanel)			log(mChicletPanel, "after");
-
-	--depth;
 }
 
-void LLBottomTray::updateResizeState(S32 width, S32 height)
+void LLBottomTray::updateResizeState(S32 new_width, S32 cur_width)
 {
 	mResizeState = RS_NORESIZE;
 	static MASK prev_resize_state = mResizeState;
 	MASK compensative_view_item_mask = RS_CHATBAR_INPUT;
 	LLPanel* compansative_view = mNearbyChatBar;
 
-	S32 delta_width = width - height;
+	S32 delta_width = new_width - cur_width;
 //	if (delta_width == 0) return;
-	bool shrink = width < height;
+	bool shrink = new_width < cur_width;
 
 	const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth();
 	const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth();
@@ -554,58 +543,46 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 		S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width;
 		S32 available_width = delta_width + chatbar_available_shrink_width + available_width_chiclet;
 		S32 buttons_required_width = 0; //How many room will take shown buttons
-		if (available_width > 0 && processShowButton(mGesturePanel, &available_width))
+		if (available_width > 0 && processShowButton(mGesturePanel, &available_width, &buttons_required_width))
 		{
 			mResizeState |= RS_BUTTON_GESTURES | compensative_view_item_mask;
-			delta_width -= mGesturePanel->getRect().getWidth();
-			buttons_required_width += mGesturePanel->getRect().getWidth();
 			lldebugs << "RS_BUTTON_GESTURES"
 				<< ", buttons_required_width: " << buttons_required_width
-				<< ", delta_width: " << delta_width
 				<< llendl;
 			showGestureButton(true);
 		}
 
-		if (available_width > 0 && processShowButton(mMovementPanel, &available_width))
+		if (available_width > 0 && processShowButton(mMovementPanel, &available_width, &buttons_required_width))
 		{
 			mResizeState |= RS_BUTTON_MOVEMENT | compensative_view_item_mask;
-			delta_width -= mMovementPanel->getRect().getWidth();
-			buttons_required_width += mMovementPanel->getRect().getWidth();
 
 			lldebugs << "RS_BUTTON_MOVEMENT"
 				<< ", buttons_required_width: " << buttons_required_width
-				<< ", delta_width: " << delta_width
 				<< llendl;
 			showMoveButton(true);
 		}
 
-		if (available_width > 0 && processShowButton(mCamPanel, &available_width))
+		if (available_width > 0 && processShowButton(mCamPanel, &available_width, &buttons_required_width))
 		{
 			mResizeState |= RS_BUTTON_CAMERA | compensative_view_item_mask;
-			delta_width -= mCamPanel->getRect().getWidth();
-			buttons_required_width += mCamPanel->getRect().getWidth();
 
 			lldebugs << "RS_BUTTON_CAMERA "
 				<< ", buttons_required_width: " << buttons_required_width
-				<< ", delta_width: " << delta_width
 				<< llendl;
 			showCameraButton(true);
 		}
 
-		if (available_width > 0 && processShowButton(mSnapshotPanel, &available_width))
+		if (available_width > 0 && processShowButton(mSnapshotPanel, &available_width, &buttons_required_width))
 		{
 			mResizeState |= RS_BUTTON_SNAPSHOT | compensative_view_item_mask;
-			delta_width -= mSnapshotPanel->getRect().getWidth();
-			buttons_required_width += mSnapshotPanel->getRect().getWidth();
 
 			lldebugs << "RS_BUTTON_SNAPSHOT"
 				<< ", buttons_required_width: " << buttons_required_width
-				<< ", delta_width: " << delta_width
 				<< llendl;
 			showSnapshotButton(true);
 		}
 
-		S32 total_delta_width = width - height;
+		S32 total_delta_width = new_width - cur_width;
 
 		// if we have to show some buttons but whidth increasing is not enough...
 		if (buttons_required_width > 0 && total_delta_width < buttons_required_width)
@@ -639,8 +616,11 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 			}
 
 		}
-// TODO: mantipov: probably need delta_width -= buttons_required_width & remove calculating from the buttons processing
-		// how many space can nearby chat take?
+
+		// shown buttons take some space, rest should be processed by nearby chatbar & chiclet panels
+		delta_width -= buttons_required_width;
+
+		// how many space can nearby chatbar take?
 		S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth();
 		if (delta_width > 0 && chatbar_panel_width_ < chatbar_panel_max_width)
 		{
@@ -661,7 +641,7 @@ void LLBottomTray::updateResizeState(S32 width, S32 height)
 	lldebugs << "New resize state: " << mResizeState << llendl;
 }
 
-bool LLBottomTray::processShowButton(LLPanel* panel, S32* available_width)
+bool LLBottomTray::processShowButton(LLPanel* panel, S32* available_width, S32* buttons_required_width)
 {
 	bool can_be_shown = canButtonBeShown(panel);
 	if (can_be_shown)
@@ -672,6 +652,7 @@ bool LLBottomTray::processShowButton(LLPanel* panel, S32* available_width)
 		if (can_be_shown)
 		{
 			*available_width -= required_width;
+			*buttons_required_width += required_width;
 		}
 
 	}
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index 4a763e6c7c..509f8b1e41 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -84,10 +84,10 @@ public:
 
 private:
 
-	void updateResizeState(S32 width, S32 height);
+	void updateResizeState(S32 new_width, S32 cur_width);
 	void verifyChildControlsSizes();
 	void log(LLView* panel, const std::string& descr);
-	bool processShowButton(LLPanel* panel, S32* available_width);
+	bool processShowButton(LLPanel* panel, S32* available_width, S32* buttons_required_width);
 	bool canButtonBeShown(LLPanel* panel) const;
 
 	MASK mResizeState;
-- 
cgit v1.2.3


From 3862e9721906d2bbdf61cfcc4d6970a24ce7e6e0 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 11 Nov 2009 16:17:29 +0200
Subject: Work on major sub-task EXT-991 (Update bottom bar behavior on resize)
 Code refactored:   - processShowButton() now gets type of buttons should be
 shown instead of object   - removed unnecessary code

--HG--
branch : product-engine
---
 indra/newview/llbottomtray.cpp | 98 ++++++++++++++++++++----------------------
 indra/newview/llbottomtray.h   | 18 +++++++-
 2 files changed, 63 insertions(+), 53 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 0ebf9947e3..08b1847887 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -75,6 +75,8 @@ LLBottomTray::LLBottomTray(const LLSD&)
 	//destroyed LLBottomTray requires some subsystems that are long gone
 	LLUI::getRootView()->addChild(this);
 
+	initStateProcessedObjectMap();
+
 	// Necessary for focus movement among child controls
 	setFocusRoot(TRUE);
 }
@@ -255,21 +257,6 @@ void LLBottomTray::showSnapshotButton(BOOL visible)
 	mSnapshotPanel->setVisible(visible);
 }
 
-typedef enum e_resize_status_type
-{
-	RS_NORESIZE			= 0x0000
-	, RS_CHICLET_PANEL		= 0x0001
-	, RS_CHATBAR_INPUT		= 0x0002
-	, RS_BUTTON_SNAPSHOT	= 0x0004
-	, RS_BUTTON_CAMERA		= 0x0008
-	, RS_BUTTON_MOVEMENT	= 0x0010
-	, RS_BUTTON_GESTURES	= 0x0020
-	, RS_BUTTON_SPEAK		= 0x0040
-	, RS_RESIZABLE_BUTTONS			= /*RS_BUTTON_SNAPSHOT | */RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES
-}EResizeState;
-
-
-
 namespace
 {
 	const std::string& PANEL_CHICLET_NAME	= "chiclet_list_panel";
@@ -306,7 +293,7 @@ void LLBottomTray::log(LLView* panel, const std::string& descr)
 {
 	if (NULL == panel) return;
 	LLView* layout = panel->getParent();
-	llwarns << descr << ": "
+	lldebugs << descr << ": "
 		<< "panel: " << panel->getName()
 		<< ", rect: " << panel->getRect()
  
@@ -379,7 +366,6 @@ void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
 void LLBottomTray::updateResizeState(S32 new_width, S32 cur_width)
 {
 	mResizeState = RS_NORESIZE;
-	static MASK prev_resize_state = mResizeState;
 	MASK compensative_view_item_mask = RS_CHATBAR_INPUT;
 	LLPanel* compansative_view = mNearbyChatBar;
 
@@ -543,43 +529,28 @@ void LLBottomTray::updateResizeState(S32 new_width, S32 cur_width)
 		S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width;
 		S32 available_width = delta_width + chatbar_available_shrink_width + available_width_chiclet;
 		S32 buttons_required_width = 0; //How many room will take shown buttons
-		if (available_width > 0 && processShowButton(mGesturePanel, &available_width, &buttons_required_width))
+		if (available_width > 0)
 		{
-			mResizeState |= RS_BUTTON_GESTURES | compensative_view_item_mask;
-			lldebugs << "RS_BUTTON_GESTURES"
-				<< ", buttons_required_width: " << buttons_required_width
-				<< llendl;
-			showGestureButton(true);
+			lldebugs << "Trying to process: RS_BUTTON_GESTURES" << llendl;
+			processShowButton(RS_BUTTON_GESTURES, &available_width, &buttons_required_width);
 		}
 
-		if (available_width > 0 && processShowButton(mMovementPanel, &available_width, &buttons_required_width))
+		if (available_width > 0)
 		{
-			mResizeState |= RS_BUTTON_MOVEMENT | compensative_view_item_mask;
-
-			lldebugs << "RS_BUTTON_MOVEMENT"
-				<< ", buttons_required_width: " << buttons_required_width
-				<< llendl;
-			showMoveButton(true);
+			lldebugs << "Trying to process: RS_BUTTON_MOVEMENT" << llendl;
+			processShowButton(RS_BUTTON_MOVEMENT, &available_width, &buttons_required_width);
 		}
 
-		if (available_width > 0 && processShowButton(mCamPanel, &available_width, &buttons_required_width))
+		if (available_width > 0)
 		{
-			mResizeState |= RS_BUTTON_CAMERA | compensative_view_item_mask;
-
-			lldebugs << "RS_BUTTON_CAMERA "
-				<< ", buttons_required_width: " << buttons_required_width
-				<< llendl;
-			showCameraButton(true);
+			lldebugs << "Trying to process: RS_BUTTON_CAMERA" << llendl;
+			processShowButton(RS_BUTTON_CAMERA, &available_width, &buttons_required_width);
 		}
 
-		if (available_width > 0 && processShowButton(mSnapshotPanel, &available_width, &buttons_required_width))
+		if (available_width > 0)
 		{
-			mResizeState |= RS_BUTTON_SNAPSHOT | compensative_view_item_mask;
-
-			lldebugs << "RS_BUTTON_SNAPSHOT"
-				<< ", buttons_required_width: " << buttons_required_width
-				<< llendl;
-			showSnapshotButton(true);
+			lldebugs << "Trying to process: RS_BUTTON_SNAPSHOT" << llendl;
+			processShowButton(RS_BUTTON_SNAPSHOT, &available_width, &buttons_required_width);
 		}
 
 		S32 total_delta_width = new_width - cur_width;
@@ -587,6 +558,8 @@ void LLBottomTray::updateResizeState(S32 new_width, S32 cur_width)
 		// if we have to show some buttons but whidth increasing is not enough...
 		if (buttons_required_width > 0 && total_delta_width < buttons_required_width)
 		{
+			mResizeState |= compensative_view_item_mask;
+
 			// ... let's shrink nearby chat & chiclet panels
 			S32 required_to_process_width = buttons_required_width;
 
@@ -630,19 +603,19 @@ void LLBottomTray::updateResizeState(S32 new_width, S32 cur_width)
 			delta_width -= delta_panel_max;
 			mNearbyChatBar->reshape(chatbar_panel_width_ + delta_panel, mNearbyChatBar->getRect().getHeight());
 		}
-
-		if (delta_width > 0)
-		{
-			mResizeState |= RS_CHICLET_PANEL;
-		}
 	}
 
-	prev_resize_state = mResizeState;
 	lldebugs << "New resize state: " << mResizeState << llendl;
 }
 
-bool LLBottomTray::processShowButton(LLPanel* panel, S32* available_width, S32* buttons_required_width)
+bool LLBottomTray::processShowButton(EResizeState shown_object_type, S32* available_width, S32* buttons_required_width)
 {
+	LLPanel* panel = mStateProcessedObjectMap[shown_object_type];
+	if (NULL == panel)
+	{
+		lldebugs << "There is no object to process for state: " << shown_object_type << llendl;
+		return false;
+	}
 	bool can_be_shown = canButtonBeShown(panel);
 	if (can_be_shown)
 	{
@@ -653,8 +626,21 @@ bool LLBottomTray::processShowButton(LLPanel* panel, S32* available_width, S32*
 		{
 			*available_width -= required_width;
 			*buttons_required_width += required_width;
-		}
 
+			switch (shown_object_type)
+			{
+			case RS_BUTTON_GESTURES:	showGestureButton(true);				break;
+			case RS_BUTTON_MOVEMENT:	showMoveButton(true);					break;
+			case RS_BUTTON_CAMERA:		showCameraButton(true);					break;
+			case RS_BUTTON_SNAPSHOT:	showSnapshotButton(true);				break;
+			default:
+				llwarns << "Unexpected type of button to be shown: " << shown_object_type << llendl;
+			}
+
+			lldebugs << "processing object type: " << shown_object_type
+				<< ", buttons_required_width: " << buttons_required_width
+				<< llendl;
+		}
 	}
 	return can_be_shown;
 }
@@ -668,4 +654,12 @@ bool LLBottomTray::canButtonBeShown(LLPanel* panel) const
 	}
 	return can_be_shown;
 }
+
+void LLBottomTray::initStateProcessedObjectMap()
+{
+	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_GESTURES, mGesturePanel));
+	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, mMovementPanel));
+	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, mCamPanel));
+	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SNAPSHOT, mSnapshotPanel));
+}
 //EOF
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index 509f8b1e41..c2eeef239c 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -83,15 +83,31 @@ public:
 	void showSnapshotButton(BOOL visible);
 
 private:
+	typedef enum e_resize_status_type
+	{
+		  RS_NORESIZE			= 0x0000
+		, RS_CHICLET_PANEL		= 0x0001
+		, RS_CHATBAR_INPUT		= 0x0002
+		, RS_BUTTON_SNAPSHOT	= 0x0004
+		, RS_BUTTON_CAMERA		= 0x0008
+		, RS_BUTTON_MOVEMENT	= 0x0010
+		, RS_BUTTON_GESTURES	= 0x0020
+		, RS_BUTTON_SPEAK		= 0x0040
+		, RS_RESIZABLE_BUTTONS			= /*RS_BUTTON_SNAPSHOT | */RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES
+	}EResizeState;
 
 	void updateResizeState(S32 new_width, S32 cur_width);
 	void verifyChildControlsSizes();
 	void log(LLView* panel, const std::string& descr);
-	bool processShowButton(LLPanel* panel, S32* available_width, S32* buttons_required_width);
+	bool processShowButton(EResizeState shown_object_type, S32* available_width, S32* buttons_required_width);
 	bool canButtonBeShown(LLPanel* panel) const;
+	void initStateProcessedObjectMap();
 
 	MASK mResizeState;
 
+	typedef std::map<EResizeState, LLPanel*> state_object_map_t;
+	state_object_map_t mStateProcessedObjectMap;
+
 protected:
 
 	LLBottomTray(const LLSD& key = LLSD());
-- 
cgit v1.2.3


From 454c02102c71e39fc0d844a1ae8bd70873de01a1 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 11 Nov 2009 16:42:18 +0200
Subject: Work on major sub-task EXT-991 (Update bottom bar behavior on resize)
 Code refactored:   - moved code to process width increasing into separate
 method

--HG--
branch : product-engine
---
 indra/newview/llbottomtray.cpp | 140 +++++++++++++++++++++++------------------
 indra/newview/llbottomtray.h   |   2 +
 2 files changed, 80 insertions(+), 62 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 08b1847887..9ff6c05acc 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -525,87 +525,103 @@ void LLBottomTray::updateResizeState(S32 new_width, S32 cur_width)
 	// bottom tray is widen
 	else
 	{
-		S32 chatbar_available_shrink_width = chatbar_panel_width - chatbar_panel_min_width;
-		S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width;
-		S32 available_width = delta_width + chatbar_available_shrink_width + available_width_chiclet;
-		S32 buttons_required_width = 0; //How many room will take shown buttons
-		if (available_width > 0)
-		{
-			lldebugs << "Trying to process: RS_BUTTON_GESTURES" << llendl;
-			processShowButton(RS_BUTTON_GESTURES, &available_width, &buttons_required_width);
-		}
+		processWidthIncreased(delta_width);
+	}
 
-		if (available_width > 0)
-		{
-			lldebugs << "Trying to process: RS_BUTTON_MOVEMENT" << llendl;
-			processShowButton(RS_BUTTON_MOVEMENT, &available_width, &buttons_required_width);
-		}
+	lldebugs << "New resize state: " << mResizeState << llendl;
+}
 
-		if (available_width > 0)
-		{
-			lldebugs << "Trying to process: RS_BUTTON_CAMERA" << llendl;
-			processShowButton(RS_BUTTON_CAMERA, &available_width, &buttons_required_width);
-		}
+void LLBottomTray::processWidthDecreased(S32 delta_width)
+{
 
-		if (available_width > 0)
-		{
-			lldebugs << "Trying to process: RS_BUTTON_SNAPSHOT" << llendl;
-			processShowButton(RS_BUTTON_SNAPSHOT, &available_width, &buttons_required_width);
-		}
+}
 
-		S32 total_delta_width = new_width - cur_width;
+void LLBottomTray::processWidthIncreased(S32 delta_width)
+{
+	const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth();
+	const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth();
 
-		// if we have to show some buttons but whidth increasing is not enough...
-		if (buttons_required_width > 0 && total_delta_width < buttons_required_width)
-		{
-			mResizeState |= compensative_view_item_mask;
+	const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth();
+	const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth();
+	const S32 chatbar_panel_max_width = mNearbyChatBar->getMaxWidth();
 
-			// ... let's shrink nearby chat & chiclet panels
-			S32 required_to_process_width = buttons_required_width;
+	const S32 chatbar_available_shrink_width = chatbar_panel_width - chatbar_panel_min_width;
+	const S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width;
 
-			// 1. use delta width of resizing
-			required_to_process_width -= total_delta_width;
+	// how many room we have to show hidden buttons
+	S32 available_width = delta_width + chatbar_available_shrink_width + available_width_chiclet;
+	S32 buttons_required_width = 0; //How many room will take shown buttons
 
-			// 2. use delta width available via decreasing of nearby chat panel
-			S32 chatbar_shrink_width = required_to_process_width;
-			if (chatbar_available_shrink_width < chatbar_shrink_width)
-			{
-				chatbar_shrink_width = chatbar_available_shrink_width;
-			}
+	if (available_width > 0)
+	{
+		lldebugs << "Trying to process: RS_BUTTON_GESTURES" << llendl;
+		processShowButton(RS_BUTTON_GESTURES, &available_width, &buttons_required_width);
+	}
 
-			log(compansative_view, "increase width: before applying compensative width: ");
-			compansative_view->reshape(compansative_view->getRect().getWidth() - chatbar_shrink_width, compansative_view->getRect().getHeight() );
-			if (compansative_view)			log(compansative_view, "after applying compensative width: ");
-			lldebugs << chatbar_shrink_width << llendl;
+	if (available_width > 0)
+	{
+		lldebugs << "Trying to process: RS_BUTTON_MOVEMENT" << llendl;
+		processShowButton(RS_BUTTON_MOVEMENT, &available_width, &buttons_required_width);
+	}
 
-			// 3. use delta width available via decreasing of chiclet panel
-			required_to_process_width -= chatbar_shrink_width;
+	if (available_width > 0)
+	{
+		lldebugs << "Trying to process: RS_BUTTON_CAMERA" << llendl;
+		processShowButton(RS_BUTTON_CAMERA, &available_width, &buttons_required_width);
+	}
 
-			if (required_to_process_width > 0)
-			{
-				mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - required_to_process_width, mChicletPanel->getParent()->getRect().getHeight());
-				log(mChicletPanel, "after applying compensative width for chiclets: ");
-				lldebugs << required_to_process_width << llendl;
-			}
+	if (available_width > 0)
+	{
+		lldebugs << "Trying to process: RS_BUTTON_SNAPSHOT" << llendl;
+		processShowButton(RS_BUTTON_SNAPSHOT, &available_width, &buttons_required_width);
+	}
 
+	// if we have to show some buttons but whidth increasing is not enough...
+	if (buttons_required_width > 0 && delta_width < buttons_required_width)
+	{
+		// ... let's shrink nearby chat & chiclet panels
+		S32 required_to_process_width = buttons_required_width;
+
+		// 1. use delta width of resizing
+		required_to_process_width -= delta_width;
+
+		// 2. use width available via decreasing of nearby chat panel
+		S32 chatbar_shrink_width = required_to_process_width;
+		if (chatbar_available_shrink_width < chatbar_shrink_width)
+		{
+			chatbar_shrink_width = chatbar_available_shrink_width;
 		}
 
-		// shown buttons take some space, rest should be processed by nearby chatbar & chiclet panels
-		delta_width -= buttons_required_width;
+		log(mNearbyChatBar, "increase width: before applying compensative width: ");
+		mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() - chatbar_shrink_width, mNearbyChatBar->getRect().getHeight() );
+		if (mNearbyChatBar)			log(mNearbyChatBar, "after applying compensative width: ");
+		lldebugs << chatbar_shrink_width << llendl;
+
+		// 3. use width available via decreasing of chiclet panel
+		required_to_process_width -= chatbar_shrink_width;
 
-		// how many space can nearby chatbar take?
-		S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth();
-		if (delta_width > 0 && chatbar_panel_width_ < chatbar_panel_max_width)
+		if (required_to_process_width > 0)
 		{
-			mResizeState |= RS_CHATBAR_INPUT;
-			S32 delta_panel_max = chatbar_panel_max_width - chatbar_panel_width_;
-			S32 delta_panel = llmin(delta_width, delta_panel_max);
-			delta_width -= delta_panel_max;
-			mNearbyChatBar->reshape(chatbar_panel_width_ + delta_panel, mNearbyChatBar->getRect().getHeight());
+			mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - required_to_process_width, mChicletPanel->getParent()->getRect().getHeight());
+			log(mChicletPanel, "after applying compensative width for chiclets: ");
+			lldebugs << required_to_process_width << llendl;
 		}
+
 	}
 
-	lldebugs << "New resize state: " << mResizeState << llendl;
+	// shown buttons take some space, rest should be processed by nearby chatbar & chiclet panels
+	delta_width -= buttons_required_width;
+
+	// how many space can nearby chatbar take?
+	S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth();
+	if (delta_width > 0 && chatbar_panel_width_ < chatbar_panel_max_width)
+	{
+		mResizeState |= RS_CHATBAR_INPUT;
+		S32 delta_panel_max = chatbar_panel_max_width - chatbar_panel_width_;
+		S32 delta_panel = llmin(delta_width, delta_panel_max);
+		delta_width -= delta_panel_max;
+		mNearbyChatBar->reshape(chatbar_panel_width_ + delta_panel, mNearbyChatBar->getRect().getHeight());
+	}
 }
 
 bool LLBottomTray::processShowButton(EResizeState shown_object_type, S32* available_width, S32* buttons_required_width)
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
index c2eeef239c..6509fea63d 100644
--- a/indra/newview/llbottomtray.h
+++ b/indra/newview/llbottomtray.h
@@ -98,6 +98,8 @@ private:
 
 	void updateResizeState(S32 new_width, S32 cur_width);
 	void verifyChildControlsSizes();
+	void processWidthDecreased(S32 delta_width);
+	void processWidthIncreased(S32 delta_width);
 	void log(LLView* panel, const std::string& descr);
 	bool processShowButton(EResizeState shown_object_type, S32* available_width, S32* buttons_required_width);
 	bool canButtonBeShown(LLPanel* panel) const;
-- 
cgit v1.2.3


From 73bba2bab49cb255d320e0209e54377dcc010fc3 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Wed, 11 Nov 2009 16:56:13 +0200
Subject: implemented EXT-2363 Get rid of 'Friends Conference' hardcode and
 rename it to 'Ad-hoc Conference'

--HG--
branch : product-engine
---
 indra/newview/llavataractions.cpp              | 3 ++-
 indra/newview/skins/default/xui/en/strings.xml | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index dae4296a82..1087e1e6d3 100644
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -54,6 +54,7 @@
 #include "llmutelist.h"
 #include "llrecentpeople.h"
 #include "llsidetray.h"
+#include "lltrans.h"
 #include "llviewerobjectlist.h"
 #include "llviewermessage.h"	// for handle_lure
 #include "llviewerregion.h"
@@ -226,7 +227,7 @@ void LLAvatarActions::startConference(const std::vector<LLUUID>& ids)
 	{
 		id_array.push_back(*it);
 	}
-	LLUUID session_id = gIMMgr->addSession("Friends Conference", IM_SESSION_CONFERENCE_START, ids[0], id_array);
+	LLUUID session_id = gIMMgr->addSession(LLTrans::getString("IM_adhoc_title"), IM_SESSION_CONFERENCE_START, ids[0], id_array);
 	if (session_id != LLUUID::null)
 	{
 		LLIMFloater::show(session_id);
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index c850dce141..fd8316d79c 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2849,7 +2849,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="IM_default_text_label">Click here to instant message.</string>
 	<string name="IM_to_label">To</string>
 	<string name="IM_moderator_label">(Moderator)</string>
-
+	<string name="IM_adhoc_title">Ad-Hoc Conference</string>
 
   <string name="ringing-im">
     Joining Voice Chat...
-- 
cgit v1.2.3


From 51d35efa23b7683e078ad95778a365aa383f0bd1 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 11 Nov 2009 17:05:31 +0200
Subject: Work on major sub-task EXT-991 (Update bottom bar behavior on resize)
 Code cleaned up:   - removed test code to show background in chiclet panel

--HG--
branch : product-engine
---
 indra/newview/llchiclet.cpp                             | 3 ---
 indra/newview/skins/default/xui/en/panel_bottomtray.xml | 2 --
 2 files changed, 5 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 16ee9a0007..2f43c32187 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -807,9 +807,6 @@ LLChicletPanel::LLChicletPanel(const Params&p)
 , mShowControls(true)
 {
 	LLPanel::Params panel_params;
-// *TODO: remove color settings 
-panel_params.background_visible(true);
-panel_params.bg_alpha_color(LLColor4::red);
 	panel_params.follows.flags(FOLLOWS_LEFT | FOLLOWS_RIGHT);
 	mScrollArea = LLUICtrlFactory::create<LLPanel>(panel_params,this);
 
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index a945010d3e..6a78834a4c 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -215,8 +215,6 @@
                  />
         </layout_panel>
         <layout_panel
-background_visible="true"
-bg_alpha_color="green"  
          mouse_opaque="false"
          follows="left|right"
          height="28"
-- 
cgit v1.2.3


From 8523d2d5b641cb5b0e4557237700065bd24daf83 Mon Sep 17 00:00:00 2001
From: Yuri Chebotarev <ychebotarev@productengine.com>
Date: Wed, 11 Nov 2009 17:05:36 +0200
Subject: fix for normal bug EXT-2303 Distinguish Object-generated Nearby Chat
 from other Nearby Chat

--HG--
branch : product-engine
---
 indra/newview/llchathistory.cpp        | 14 +++++++++-----
 indra/newview/llchathistory.h          |  4 +---
 indra/newview/skins/default/colors.xml |  2 +-
 3 files changed, 11 insertions(+), 9 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 3b893aa529..b452f5bc1a 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -174,7 +174,7 @@ public:
 	const std::string&	getFirstName() const { return mFirstName; }
 	const std::string&	getLastName	() const { return mLastName; }
 
-	void setup(const LLChat& chat) 
+	void setup(const LLChat& chat,const LLStyle::Params& style_params) 
 	{
 		mAvatarID = chat.mFromID;
 		mSourceType = chat.mSourceType;
@@ -184,8 +184,11 @@ public:
 			mSourceType = CHAT_SOURCE_SYSTEM;
 		}
 
-
 		LLTextBox* userName = getChild<LLTextBox>("user_name");
+
+		LLUIColor color = style_params.color;
+		userName->setReadOnlyColor(color);
+		userName->setColor(color);
 		
 		if(!chat.mFromName.empty())
 		{
@@ -197,6 +200,7 @@ public:
 			std::string SL = LLTrans::getString("SECOND_LIFE");
 			userName->setValue(SL);
 		}
+
 		
 		LLTextBox* timeBox = getChild<LLTextBox>("time_box");
 		timeBox->setValue(formatCurrentTime());
@@ -322,10 +326,10 @@ LLView* LLChatHistory::getSeparator()
 	return separator;
 }
 
-LLView* LLChatHistory::getHeader(const LLChat& chat)
+LLView* LLChatHistory::getHeader(const LLChat& chat,const LLStyle::Params& style_params)
 {
 	LLChatHistoryHeader* header = LLChatHistoryHeader::createInstance(mMessageHeaderFilename);
-	header->setup(chat);
+	header->setup(chat,style_params);
 	return header;
 }
 
@@ -347,7 +351,7 @@ void LLChatHistory::appendWidgetMessage(const LLChat& chat, LLStyle::Params& sty
 	}
 	else
 	{
-		view = getHeader(chat);
+		view = getHeader(chat,style_params);
 		if (getText().size() == 0)
 			p.top_pad = 0;
 		else
diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h
index 3789ebff4e..f0944042af 100644
--- a/indra/newview/llchathistory.h
+++ b/indra/newview/llchathistory.h
@@ -94,11 +94,9 @@ class LLChatHistory : public LLTextEditor
 		LLView* getSeparator();
 		/**
 		 * Builds a message header.
-		 * @param from owner of a message.
-		 * @param time time of a message.
 		 * @return pointer to LLView header object.
 		 */
-		LLView* getHeader(const LLChat& chat);
+		LLView* getHeader(const LLChat& chat,const LLStyle::Params& style_params);
 
 	public:
 		~LLChatHistory();
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 572a4cf9e9..cbd57c4a41 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -513,7 +513,7 @@
      reference="White" />
     <color
      name="ObjectChatColor"
-     reference="LtGray" />
+     reference="0.7 0.8 0.9 1" />
     <color
      name="OverdrivenColor"
      value="1 0 0 1" />
-- 
cgit v1.2.3


From 88f71ead300a1c842caa1563b2956d2a8dee006d Mon Sep 17 00:00:00 2001
From: Eugene Kondrashev <ekondrashev@productengine.com>
Date: Wed, 11 Nov 2009 17:34:08 +0200
Subject: Implemented Low sub-task EXT-2366-ALL Avatar specific buttons on IM
 P2P control panel should be disabled when interacting with AVALINE caller

--HG--
branch : product-engine
---
 indra/newview/llpanelimcontrolpanel.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

(limited to 'indra/newview')

diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index 350b78ee3d..32fc3b6519 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -173,7 +173,14 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id)
 	LLIMModel::LLIMSession* im_session =
 		im_model.findIMSession(session_id);
 	if( im_session && !im_session->mOtherParticipantIsAvatar )
+	{
 		childSetEnabled("view_profile_btn", FALSE);
+		childSetEnabled("add_friend_btn", FALSE);
+
+		childSetEnabled("share_btn", FALSE);
+		childSetEnabled("teleport_btn", FALSE);
+		childSetEnabled("pay_btn", FALSE);
+	}
 }
 
 void LLPanelIMControlPanel::nameUpdatedCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group)
-- 
cgit v1.2.3


From b360b994a8f588aa28ab5c5498d5cd79a907fb97 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 11 Nov 2009 17:57:17 +0200
Subject: Fixed major bug EXT-2205 (Message well counter is truncated) - place
 counter exactly over the message well icon.

Fixed in theis way becouse style guide does not have correct UI.
Probably color sheme should be changes to have counter more visible

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/panel_bottomtray.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index 6a78834a4c..6bc8063486 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -306,9 +306,9 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
                />
                <unread_notifications
                width="34"
-               height="23"
-               left="22"
-               top="23" />
+               height="20"
+               left="0"
+               top="19" />
 	    </chiclet_notification>
         </layout_panel>
        <icon
-- 
cgit v1.2.3


From 8a2da9a6b5b4ccfbcc3bd5409e583bdf10c1bfd0 Mon Sep 17 00:00:00 2001
From: Dmitry Oleshko <doleshko@productengine.com>
Date: Wed, 11 Nov 2009 18:19:52 +0200
Subject: fixed low bug (EXT-573) There is paragraph indent in the toasts text

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/notifications.xml | 1 +
 1 file changed, 1 insertion(+)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index ccd8bc569e..96c6d970c2 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5013,6 +5013,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you a
    name="GodMessage"
    type="notify">
 [NAME]
+
 [MESSAGE]
   </notification>
 
-- 
cgit v1.2.3


From b8a672adaf547649d555909f1baa2234d4b46699 Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Wed, 11 Nov 2009 18:49:23 +0200
Subject: Fixed low bug EXT-1499 (Finalize the Home panel and add tooltips to
 the tab grabs).

--HG--
branch : product-engine
---
 indra/newview/llsidetray.cpp                           | 10 +++++++---
 indra/newview/llsidetray.h                             |  3 ++-
 indra/newview/skins/default/xui/en/panel_side_tray.xml |  6 +++---
 3 files changed, 12 insertions(+), 7 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index b25dea92cc..1d9b1261d6 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -389,7 +389,8 @@ bool LLSideTray::selectTabByName	(const std::string& name)
 	return true;
 }
 
-LLButton* LLSideTray::createButton	(const std::string& name,const std::string& image,LLUICtrl::commit_callback_t callback)
+LLButton* LLSideTray::createButton	(const std::string& name,const std::string& image,const std::string& tooltip,
+									 LLUICtrl::commit_callback_t callback)
 {
 	static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());	
 	
@@ -410,6 +411,9 @@ LLButton* LLSideTray::createButton	(const std::string& name,const std::string& i
 	LLButton* button = LLUICtrlFactory::create<LLButton> (bparams);
 	button->setLabel(name);
 	button->setClickedCallback(callback);
+
+	if(tooltip!="Home")
+		button->setToolTip(tooltip);
 	
 	if(image.length())
 	{
@@ -448,12 +452,12 @@ void	LLSideTray::createButtons	()
 		// change if the home screen becomes its own tab.
 		if (name == "sidebar_home")
 		{
-			mCollapseButton = createButton("",sidebar_tab->mImage,
+			mCollapseButton = createButton("",sidebar_tab->mImage,sidebar_tab->getTabTitle(),
 				boost::bind(&LLSideTray::onToggleCollapse, this));
 		}
 		else
 		{
-			LLButton* button = createButton("",sidebar_tab->mImage,
+			LLButton* button = createButton("",sidebar_tab->mImage,sidebar_tab->getTabTitle(),
 				boost::bind(&LLSideTray::onTabButtonClick, this, name));
 			mTabButtons[name] = button;
 		}
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
index 246979ac54..19d9ca8f7e 100644
--- a/indra/newview/llsidetray.h
+++ b/indra/newview/llsidetray.h
@@ -143,7 +143,8 @@ protected:
 	LLSideTrayTab* getTab		(const std::string& name);
 
 	void		createButtons	();
-	LLButton*	createButton	(const std::string& name,const std::string& image,LLUICtrl::commit_callback_t callback);
+	LLButton*	createButton	(const std::string& name,const std::string& image,const std::string& tooltip,
+									LLUICtrl::commit_callback_t callback);
 	void		arrange			();
 	void		reflectCollapseChange();
 
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml
index a9874f4553..a419a02d75 100644
--- a/indra/newview/skins/default/xui/en/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml
@@ -94,7 +94,7 @@
   <sidetray_tab
     name="sidebar_me"
     help_topic="sidebar_me"
-    tab_title="Me"
+    tab_title="My Profile"
     description="Edit your public profile and Picks."
     image="TabIcon_Me_Off"
     image_selected="TabIcon_Me_Selected"
@@ -112,7 +112,7 @@
   <sidetray_tab
     name="sidebar_appearance"
     help_topic="sidebar_appearance"
-    tab_title="Appearance"
+    tab_title="My Appearance"
     description="Change your appearance and current look."
     image="TabIcon_Appearance_Off"
     image_selected="TabIcon_Appearance_Selected"
@@ -131,7 +131,7 @@
   <sidetray_tab
     name="sidebar_inventory"
     help_topic="sidebar_inventory"
-    tab_title="Inventory"
+    tab_title="My Inventory"
     description="Browse your inventory."
     image="TabIcon_Things_Off"
     image_selected="TabIcon_Things_Selected"
-- 
cgit v1.2.3


From 14c668bb976a651deef5d275c4e5f15f7d4bfea2 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Wed, 11 Nov 2009 19:19:07 +0200
Subject: fixed reopened subtask EXT-2265  IM unread messages counter should
 not be increased for system messages (comming from "Second Life", zero uuid)

now not counting messages with from = "Second Life" and from_id = receiver's uuid

--HG--
branch : product-engine
---
 indra/newview/llimview.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index e894022e52..60faaea2c5 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -439,8 +439,11 @@ bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, co
 	addToHistory(session_id, from, from_id, utf8_text);
 	if (log2file) logToFile(session_id, from, from_id, utf8_text);
 
-	//we do not count system messages
-	if (from_id.notNull()) session->mNumUnread++;
+	//we do not count system messages and our messages
+	if (from_id.notNull() && from_id != gAgentID && SYSTEM_FROM != from)
+	{
+		session->mNumUnread++;
+	}
 
 	// notify listeners
 	LLSD arg;
-- 
cgit v1.2.3


From 196e350629fb258acb8c0d784fdcfd50866b92ef Mon Sep 17 00:00:00 2001
From: Eugene Kondrashev <ekondrashev@productengine.com>
Date: Wed, 11 Nov 2009 19:26:19 +0200
Subject: Additional fix for EXT-2137-[BSI] Copy/pasted text chat logs are now
 much harder to read or post-process.

--HG--
branch : product-engine
---
 indra/newview/llchathistory.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index b7cd41cf6c..d1922cfd6e 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -336,7 +336,7 @@ LLView* LLChatHistory::getHeader(const LLChat& chat,const LLStyle::Params& style
 void LLChatHistory::appendWidgetMessage(const LLChat& chat, LLStyle::Params& style_params)
 {
 	LLView* view = NULL;
-	std::string view_text = "\n[" + formatCurrentTime() + "]:[" + chat.mFromName + "] ";;
+	std::string view_text = "\n[" + formatCurrentTime() + "] " + chat.mFromName + ": ";
 
 	LLInlineViewSegment::Params p;
 	p.force_newline = true;
-- 
cgit v1.2.3