diff options
39 files changed, 446 insertions, 208 deletions
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp index c3dd4ae647..9a2f2ab4d3 100644 --- a/indra/llui/lldockablefloater.cpp +++ b/indra/llui/lldockablefloater.cpp @@ -136,21 +136,10 @@ void LLDockableFloater::setVisible(BOOL visible)  void LLDockableFloater::setMinimized(BOOL minimize)  { -	if(minimize && isDocked()) +	if(minimize)  	{  		setVisible(FALSE);  	} - -	if (minimize) -	{ -		setCanDock(false); -	} -	else if (!minimize && mDockControl.get() != NULL && mDockControl.get()->isDockVisible()) -	{ -		setCanDock(true); -	} - -	LLFloater::setMinimized(minimize);  }  LLView * LLDockableFloater::getDockWidget() @@ -217,6 +206,16 @@ void LLDockableFloater::draw()  	LLFloater::draw();  } +void LLDockableFloater::reshape(S32 width, S32 height, BOOL called_from_parent) +{ +	if (isDocked()) +	{ +		setDocked(false); +	} + +	LLFloater::reshape(width, height, called_from_parent); +} +  void LLDockableFloater::setDockControl(LLDockControl* dockControl)  {  	mDockControl.reset(dockControl); diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h index 46491d8a29..e5f94dca91 100644 --- a/indra/llui/lldockablefloater.h +++ b/indra/llui/lldockablefloater.h @@ -65,6 +65,7 @@ public:  	/* virtula */BOOL postBuild();  	/* virtual */void setDocked(bool docked, bool pop_on_undock = true);  	/* virtual */void draw(); +	/* virtual */void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);  	/**  	 *  If descendant class overrides setVisible() then it must still invoke its diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index 045505af5b..456a2925a3 100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp @@ -266,6 +266,11 @@ void LLDockControl::off()  	mEnabled = false;  } +void LLDockControl::forceRecalculatePosition() +{ +	mRecalculateDocablePosition = true; +} +  void LLDockControl::drawToungue()  {  	if (mEnabled) diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h index eaedb4c307..30a45bedc7 100644 --- a/indra/llui/lldockcontrol.h +++ b/indra/llui/lldockcontrol.h @@ -63,6 +63,7 @@ public:  public:  	void on();  	void off(); +	void forceRecalculatePosition();  	void setDock(LLView* dockWidget);  	LLView* getDock()  	{ diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 14a6ddb7e0..1fb618adee 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -413,6 +413,19 @@ void LLLayoutStack::updatePanelAutoResize(const std::string& panel_name, BOOL au  	}  } +bool LLLayoutStack::getPanelMinSize(const std::string& panel_name, S32* min_widthp, S32* min_heightp) +{ +	LayoutPanel* panel = findEmbeddedPanelByName(panel_name); + +	if (panel) +	{ +		if (min_widthp) *min_widthp = panel->mMinWidth; +		if (min_heightp) *min_heightp = panel->mMinHeight; +	} + +	return NULL != panel; +} +  static LLFastTimer::DeclareTimer FTM_UPDATE_LAYOUT("Update LayoutStacks");  void LLLayoutStack::updateLayout(BOOL force_resize)  { diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index 9cbcb285dc..abd5436018 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -82,6 +82,14 @@ public:  	void updatePanelAutoResize(const std::string& panel_name, BOOL auto_resize); +	/** +	 * Gets minimal width and/or height of the specified by name panel. +	 * +	 * If it is necessary to get only the one dimension pass NULL for another one. +	 * @returns true if specified by panel_name internal panel exists, false otherwise. +	 */ +	bool getPanelMinSize(const std::string& panel_name, S32* min_widthp, S32* min_heightp); +	  	void updateLayout(BOOL force_resize = FALSE);  	static void updateClass(); diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 958dbf226a..7985ccc2a1 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -237,7 +237,7 @@ void LLBottomTray::setVisible(BOOL visible)  			LLView* viewp = *child_it;  			std::string name = viewp->getName(); -			if ("chat_bar" == name || "movement_panel" == name || "cam_panel" == name || "snapshot_panel" == name) +			if ("chat_bar" == name || "movement_panel" == name || "cam_panel" == name || "snapshot_panel" == name || "gesture_panel" == name)  				continue;  			else   			{ @@ -317,6 +317,10 @@ BOOL LLBottomTray::postBuild()  	// Registering Chat Bar to receive Voice client status change notifications.  	gVoiceClient->addObserver(this); +	mObjectDefaultWidthMap[RS_BUTTON_GESTURES] = mGesturePanel->getRect().getWidth(); +	mObjectDefaultWidthMap[RS_BUTTON_MOVEMENT] = mMovementPanel->getRect().getWidth(); +	mObjectDefaultWidthMap[RS_BUTTON_CAMERA]   = mCamPanel->getRect().getWidth(); +  	return TRUE;  } @@ -402,7 +406,6 @@ void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)  		}  	} -	lldebugs << "There is no enough width to reshape all children: " << extra_shrink_width << llendl;  	if (should_be_reshaped)  	{  		lldebugs << "Reshape all children with width: " << width << llendl; @@ -473,7 +476,12 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width)  	S32 buttons_freed_width = 0;  	if (still_should_be_processed)  	{ -		processHideButton(RS_BUTTON_SNAPSHOT, &delta_width, &buttons_freed_width); +		processShrinkButtons(&delta_width); + +		if (delta_width < 0) +		{ +			processHideButton(RS_BUTTON_SNAPSHOT, &delta_width, &buttons_freed_width); +		}  		if (delta_width < 0)  		{ @@ -493,7 +501,7 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width)  		if (delta_width < 0)  		{  			extra_shrink_width = -delta_width; -			lldebugs << "There is no enough room for bottom tray, resizing still should be processed: "  +			llwarns << "There is no enough width to reshape all children: "   				<< extra_shrink_width << llendl;  		} @@ -551,7 +559,7 @@ void LLBottomTray::processWidthIncreased(S32 delta_width)  		processShowButton(RS_BUTTON_SNAPSHOT, &available_width, &buttons_required_width);  	} -	// if we have to show some buttons but whidth increasing is not enough... +	// if we have to show some buttons but width increasing is not enough...  	if (buttons_required_width > 0 && delta_width < buttons_required_width)  	{  		// ... let's shrink nearby chat & chiclet panels @@ -587,6 +595,8 @@ void LLBottomTray::processWidthIncreased(S32 delta_width)  	// shown buttons take some space, rest should be processed by nearby chatbar & chiclet panels  	delta_width -= buttons_required_width; +	processExtendButtons(&delta_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) @@ -656,6 +666,119 @@ void LLBottomTray::processHideButton(EResizeState processed_object_type, S32* re  	}  } +void LLBottomTray::processShrinkButtons(S32* required_width) +{ +	processShrinkButton(RS_BUTTON_CAMERA, required_width); + +	if (*required_width < 0) +	{ +		processShrinkButton(RS_BUTTON_MOVEMENT, required_width); +	} +	if (*required_width < 0) +	{ +		processShrinkButton(RS_BUTTON_GESTURES, required_width); +	} +} + +void LLBottomTray::processShrinkButton(EResizeState processed_object_type, /*const std::string& panel_name, */S32* required_width) +{ +	LLPanel* panel = mStateProcessedObjectMap[processed_object_type]; +	if (NULL == panel) +	{ +		lldebugs << "There is no object to process for type: " << processed_object_type << llendl; +		return; +	} + +	if (panel->getVisible()) +	{ +		S32 panel_width = panel->getRect().getWidth(); +		S32 panel_min_width = 0; +		std::string panel_name = panel->getName(); +		bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width, NULL); +		S32 possible_shrink_width = panel_width - panel_min_width; + +		if (!success) +		{ +			lldebugs << "Panel was not found to get its min width: " << panel_name << llendl; +		} +		// we have some space to free by shrinking the button +		else if (possible_shrink_width > 0) +		{ +			// let calculate real width to shrink + +			// 1. apply all possible width +			*required_width += possible_shrink_width; + +			// 2. it it is too much...  +			if (*required_width > 0) +			{ +				// reduce applied shrunk width to the excessive value. +				possible_shrink_width -= *required_width; +				*required_width = 0; +			} +			panel->reshape(panel_width - possible_shrink_width, panel->getRect().getHeight()); + +			lldebugs << "Shrunk panel: " << panel_name +				<< ", shrunk width: " << possible_shrink_width +				<< ", rest width to process: " << *required_width +				<< llendl; +		} +	} +} + + +void LLBottomTray::processExtendButtons(S32* available_width) +{ +	processExtendButton(RS_BUTTON_GESTURES, available_width); + +	if (*available_width > 0) +	{ +		processExtendButton(RS_BUTTON_CAMERA, available_width); +	} +	if (*available_width > 0) +	{ +		processExtendButton(RS_BUTTON_MOVEMENT, available_width); +	} +} + +void LLBottomTray::processExtendButton(EResizeState processed_object_type, S32* available_width) +{ +	LLPanel* panel = mStateProcessedObjectMap[processed_object_type]; +	if (NULL == panel) +	{ +		lldebugs << "There is no object to process for type: " << processed_object_type << llendl; +		return; +	} + +	if (!panel->getVisible()) return; + +	S32 panel_max_width = mObjectDefaultWidthMap[processed_object_type]; +	S32 panel_width = panel->getRect().getWidth(); +	S32 possible_extend_width = panel_max_width - panel_width; + +	if (possible_extend_width > 0) +	{ +		// let calculate real width to extend + +		// 1. apply all possible width +		*available_width -= possible_extend_width; + +		// 2. it it is too much...  +		if (*available_width < 0) +		{ +			// reduce applied extended width to the excessive value. +			possible_extend_width += *available_width; +			*available_width = 0; +		} +		panel->reshape(panel_width + possible_extend_width, panel->getRect().getHeight()); + +		lldebugs << "Extending panel: " << panel->getName() +			<< ", extended width: " << possible_extend_width +			<< ", rest width to process: " << *available_width +			<< llendl; +	} +} +  bool LLBottomTray::canButtonBeShown(EResizeState processed_object_type) const  {  	bool can_be_shown = mResizeState & processed_object_type; diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h index 8989816bfe..97bcc23403 100644 --- a/indra/newview/llbottomtray.h +++ b/indra/newview/llbottomtray.h @@ -98,7 +98,6 @@ private:  		, 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;  	S32 processWidthDecreased(S32 delta_width); @@ -108,6 +107,24 @@ private:  	void processHideButton(EResizeState processed_object_type, S32* required_width, S32* buttons_freed_width);  	/** +	 * Shrinks shown buttons to reduce total taken space. +	 * +	 * @param - required_width - width which buttons can use to be shrunk. It is a negative value. +	 * It is increased on the value processed by buttons. +	 */ +	void processShrinkButtons(S32* required_width); +	void processShrinkButton(EResizeState processed_object_type, S32* required_width); + +	/** +	 * Extends shown buttons to increase total taken space. +	 * +	 * @param - available_width - width which buttons can use to be extended. It is a positive value. +	 * It is decreased on the value processed by buttons. +	 */ +	void processExtendButtons(S32* available_width); +	void processExtendButton(EResizeState processed_object_type, S32* available_width); + +	/**  	 * Determines if specified by type object can be shown. It should be hidden by shrink before.  	 *  	 * Processes buttons a such way to show buttons in constant order: @@ -140,6 +157,9 @@ private:  	typedef std::map<EResizeState, LLPanel*> state_object_map_t;  	state_object_map_t mStateProcessedObjectMap; +	typedef std::map<EResizeState, S32> state_object_width_map_t; +	state_object_width_map_t mObjectDefaultWidthMap; +  protected:  	LLBottomTray(const LLSD& key = LLSD()); diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index f9c4a23f12..cd5c5edac0 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -46,6 +46,8 @@  #include "llfloaterreg.h"  #include "llmutelist.h" +#include "llsidetray.h"//for blocked objects panel +  static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");  std::string formatCurrentTime() @@ -92,6 +94,8 @@ public:  		else if (level == "block")  		{  			LLMuteList::getInstance()->add(LLMute(getAvatarId(), mFrom, LLMute::OBJECT)); + +			LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().insert("blocked_to_select", getAvatarId()));  		}  	} diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp index b1dee46d2e..997aed4277 100644 --- a/indra/newview/llchatitemscontainerctrl.cpp +++ b/indra/newview/llchatitemscontainerctrl.cpp @@ -175,8 +175,6 @@ void LLNearbyChatToastPanel::init(LLSD& notification)  	caption->getChild<LLTextBox>("sender_name", false)->setText(str_sender , style_params); -	caption->getChild<LLTextBox>("msg_time", false)->setText(appendTime() , style_params ); -  	LLChatMsgBox* msg_text = getChild<LLChatMsgBox>("msg_text", false); diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp index 854d02873a..af86274472 100644 --- a/indra/newview/llfloatergesture.cpp +++ b/indra/newview/llfloatergesture.cpp @@ -161,6 +161,7 @@ BOOL LLFloaterGesture::postBuild()  	getChild<LLUICtrl>("play_btn")->setCommitCallback(boost::bind(&LLFloaterGesture::onClickPlay, this));  	getChild<LLUICtrl>("stop_btn")->setCommitCallback(boost::bind(&LLFloaterGesture::onClickPlay, this)); +	getChild<LLButton>("activate_btn")->setClickedCallback(boost::bind(&LLFloaterGesture::onActivateBtnClick, this));  	getChild<LLUICtrl>("new_gesture_btn")->setCommitCallback(boost::bind(&LLFloaterGesture::onClickNew, this)); @@ -179,7 +180,7 @@ BOOL LLFloaterGesture::postBuild()  	childSetFocus("gesture_list"); -	LLCtrlListInterface *list = childGetListInterface("gesture_list"); +	LLCtrlListInterface *list = getGestureList();  	if (list)  	{  		const BOOL ascending = TRUE; @@ -198,7 +199,7 @@ void LLFloaterGesture::refreshAll()  {  	buildGestureList(); -	LLCtrlListInterface *list = childGetListInterface("gesture_list"); +	LLCtrlListInterface *list = getGestureList();  	if (!list) return;  	if (mSelectedID.isNull()) @@ -219,7 +220,7 @@ void LLFloaterGesture::refreshAll()  void LLFloaterGesture::buildGestureList()  { -	LLCtrlListInterface *list = childGetListInterface("gesture_list"); +	LLCtrlListInterface *list = getGestureList();  	LLCtrlScrollInterface *scroll = childGetScrollInterface("gesture_list");  	if (! (list && scroll)) return; @@ -347,7 +348,7 @@ void LLFloaterGesture::addGesture(const LLUUID& item_id , LLMultiGesture* gestur  void LLFloaterGesture::onClickInventory()  { -	LLCtrlListInterface *list = childGetListInterface("gesture_list"); +	LLCtrlListInterface *list = getGestureList();  	if (!list) return;  	const LLUUID& item_id = list->getCurrentID(); @@ -358,7 +359,7 @@ void LLFloaterGesture::onClickInventory()  void LLFloaterGesture::onClickPlay()  { -	LLCtrlListInterface *list = childGetListInterface("gesture_list"); +	LLCtrlListInterface *list = getGestureList();  	if (!list) return;  	const LLUUID& item_id = list->getCurrentID();  	if(item_id.isNull()) return; @@ -396,10 +397,27 @@ void LLFloaterGesture::onClickNew()  		LLInventoryType::IT_GESTURE, NOT_WEARABLE, PERM_MOVE | PERM_TRANSFER, cb);  } +void LLFloaterGesture::onActivateBtnClick() +{ +	LLCtrlListInterface* list = getGestureList(); +	 +	LLUUID gesture_inv_id = list->getSelectedValue(); +	LLGestureManager* gm = LLGestureManager::getInstance(); +	 +	if(gm->isGestureActive(gesture_inv_id)) +	{ +		gm->deactivateGesture(gesture_inv_id); +	} +	else +	{ +		gm->activateGesture(gesture_inv_id); +	} +} +  void LLFloaterGesture::onClickEdit()  { -	LLCtrlListInterface *list = childGetListInterface("gesture_list"); +	LLCtrlListInterface *list = getGestureList();  	if (!list) return;  	const LLUUID& item_id = list->getCurrentID(); diff --git a/indra/newview/llfloatergesture.h b/indra/newview/llfloatergesture.h index e7819d2a03..50bef818da 100644 --- a/indra/newview/llfloatergesture.h +++ b/indra/newview/llfloatergesture.h @@ -77,7 +77,11 @@ protected:  	void onClickNew();  	void onCommitList();  	void playGesture(LLUUID item_id); - +	LLCtrlListInterface* getGestureList() const  +	{ +		return childGetListInterface("gesture_list"); +	} +	void onActivateBtnClick();  protected:  	LLUUID mSelectedID;  	LLUUID mGestureFolderID; diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 2c6543d6ca..c2c83191e0 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -367,8 +367,6 @@ void LLIMFloater::setDocked(bool docked, bool pop_on_undock)  	LLNotificationsUI::LLScreenChannel* channel = dynamic_cast<LLNotificationsUI::LLScreenChannel*>  		(LLNotificationsUI::LLChannelManager::getInstance()->  											findChannelByID(LLUUID(gSavedSettings.getString("NotificationChannelUUID")))); - -	setCanResize(!docked);  	LLTransientDockableFloater::setDocked(docked, pop_on_undock); diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h index 065441b188..e2d500d821 100644 --- a/indra/newview/llimfloater.h +++ b/indra/newview/llimfloater.h @@ -63,7 +63,6 @@ public:  	// LLFloater overrides  	/*virtual*/ void onClose(bool app_quitting);  	/*virtual*/ void setDocked(bool docked, bool pop_on_undock = true); -	// override LLFloater's minimization according to EXT-1216  	// Make IM conversion visible and update the message history  	static LLIMFloater* show(const LLUUID& session_id); diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index 8dc7833f6a..baddd90d46 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -117,6 +117,9 @@ private:  	bool onVisibleZoomIn();  	void onClickMuteVolume();  	void onVolumeChange(const LLSD& data); + +	// Is used to determine if "Add friend" option should be enabled in gear menu +	bool isNotFriend();  	// Callback for gCacheName to look up avatar name  	void nameUpdatedCallback( @@ -208,6 +211,7 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)  		boost::bind(&LLInspectAvatar::onVisibleFreezeEject, this));	  	mVisibleCallbackRegistrar.add("InspectAvatar.VisibleZoomIn",   		boost::bind(&LLInspectAvatar::onVisibleZoomIn, this)); +	mEnableCallbackRegistrar.add("InspectAvatar.Gear.Enable", boost::bind(&LLInspectAvatar::isNotFriend, this));  	// can't make the properties request until the widgets are constructed  	// as it might return immediately, so do it in postBuild. @@ -473,6 +477,11 @@ void LLInspectAvatar::onClickViewProfile()  	closeFloater();  } +bool LLInspectAvatar::isNotFriend() +{ +	return !LLAvatarActions::isFriend(mAvatarID); +} +  bool LLInspectAvatar::onVisibleFindOnMap()  {  	return gAgent.isGodlike() || is_agent_mappable(mAvatarID); diff --git a/indra/newview/lljoystickbutton.cpp b/indra/newview/lljoystickbutton.cpp index 0acc67ff5a..2cc5c8335d 100644 --- a/indra/newview/lljoystickbutton.cpp +++ b/indra/newview/lljoystickbutton.cpp @@ -136,13 +136,13 @@ void LLJoystick::updateSlop()  bool LLJoystick::pointInCircle(S32 x, S32 y) const   {  -	if(this->getLocalRect().mTop!=this->getLocalRect().mRight) +	if(this->getLocalRect().getHeight() != this->getLocalRect().getWidth())  	{  		llwarns << "Joystick shape is not square"<<llendl; -		return TRUE; +		return true;  	}  	//center is x and y coordinates of center of joystick circle, and also its radius -	int center = this->getLocalRect().mTop/2; +	int center = this->getLocalRect().getHeight()/2;  	bool in_circle = (x - center) * (x - center) + (y - center) * (y - center) <= center * center;  	return in_circle;  } diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index e3ba1b8e4a..0ee883e221 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -83,6 +83,11 @@ LLFloaterMove::LLFloaterMove(const LLSD& key)  {  } +LLFloaterMove::~LLFloaterMove() +{ +	LLPanelStandStopFlying::getInstance()->reparent(NULL); +} +  // virtual  BOOL LLFloaterMove::postBuild()  { @@ -425,42 +430,15 @@ void LLFloaterMove::showModeButtons(BOOL bShow)  		return;  	mModeActionsPanel->setVisible(bShow); -	if (isDocked()) -	{ -		return; -	} - -	updateHeight(bShow); -} - -void LLFloaterMove::updateHeight(bool show_mode_buttons) -{ -	static bool size_changed = false; -	static S32 origin_height = getRect().getHeight(); -	LLRect rect = getRect(); - -	static S32 mode_panel_height = mModeActionsPanel->getRect().getHeight(); - -	S32 newHeight = getRect().getHeight(); - -	if (!show_mode_buttons && origin_height == newHeight) -	{ -		newHeight -= mode_panel_height; -		size_changed = true; -	} -	else if (show_mode_buttons && origin_height > newHeight) +	if (bShow) +		LLPanelStandStopFlying::getInstance()->reparent(NULL); +	else  	{ -		newHeight += mode_panel_height; -		size_changed = true; +		LLPanelStandStopFlying* ssf_panel = LLPanelStandStopFlying::getInstance(); +		ssf_panel->reparent(this); +		const LLRect& mode_actions_rect = mModeActionsPanel->getRect(); +		ssf_panel->setOrigin(mode_actions_rect.mLeft, mode_actions_rect.mBottom);  	} - -	if (!size_changed) -		return; - -	rect.setLeftTopAndSize(rect.mLeft, rect.mTop, rect.getWidth(), newHeight); -	reshape(rect.getWidth(), rect.getHeight()); -	setRect(rect); -	size_changed = false;  }  //static @@ -504,14 +482,6 @@ void LLFloaterMove::onOpen(const LLSD& key)  //virtual  void LLFloaterMove::setDocked(bool docked, bool pop_on_undock/* = true*/)  { -	LLDockableFloater::setDocked(docked, pop_on_undock); -	bool show_mode_buttons = isDocked() || !gAgent.getFlying(); - -	if (!isMinimized()) -	{ -		updateHeight(show_mode_buttons); -	} -  	LLTransientDockableFloater::setDocked(docked, pop_on_undock);  } @@ -535,7 +505,8 @@ void LLFloaterMove::setModeButtonToggleState(const EMovementMode mode)  /************************************************************************/  LLPanelStandStopFlying::LLPanelStandStopFlying() :  	mStandButton(NULL), -	mStopFlyingButton(NULL) +	mStopFlyingButton(NULL), +	mAttached(false)  {  	// make sure we have the only instance of this class  	static bool b = true; @@ -624,6 +595,45 @@ BOOL LLPanelStandStopFlying::handleToolTip(S32 x, S32 y, MASK mask)  	return TRUE;  } +void LLPanelStandStopFlying::reparent(LLFloaterMove* move_view) +{ +	LLPanel* parent = dynamic_cast<LLPanel*>(getParent()); +	if (!parent) +	{ +		llwarns << "Stand/stop flying panel parent is unset" << llendl; +		return; +	} + +	if (move_view != NULL) +	{ +		llassert(move_view != parent); // sanity check +	 +		// Save our original container. +		if (!mOriginalParent.get()) +			mOriginalParent = parent->getHandle(); + +		// Attach to movement controls. +		parent->removeChild(this); +		move_view->addChild(this); +		// Origin must be set by movement controls. +		mAttached = true; +	} +	else +	{ +		if (!mOriginalParent.get()) +		{ +			llwarns << "Original parent of the stand / stop flying panel not found" << llendl; +			return; +		} + +		// Detach from movement controls.  +		parent->removeChild(this); +		mOriginalParent.get()->addChild(this); +		mAttached = false; +		updatePosition(); // don't defer until next draw() to avoid flicker +	} +} +  //////////////////////////////////////////////////////////////////////////  // Private Section  ////////////////////////////////////////////////////////////////////////// @@ -668,27 +678,14 @@ void LLPanelStandStopFlying::onStopFlyingButtonClick()   */  void LLPanelStandStopFlying::updatePosition()  { -  	LLBottomTray* tray = LLBottomTray::getInstance(); -	if (!tray) return; +	if (!tray || mAttached) return;  	LLButton* movement_btn = tray->getChild<LLButton>(BOTTOM_TRAY_BUTTON_NAME); -	//align centers of a button and a floater +	// Align centers of the button and the panel.  	S32 x = movement_btn->calcScreenRect().getCenterX() - getRect().getWidth()/2; - -	S32 y = 0; - -	LLFloater *move_floater = LLFloaterReg::findInstance("moveview"); -	if (move_floater) -	{ -		if (move_floater->isDocked()) -		{ -			y = move_floater->getRect().mBottom + getRect().getHeight(); -		} -	} - -	setOrigin(x, y); +	setOrigin(x, 0);  } diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h index cee6078ee9..2664fe6e40 100644 --- a/indra/newview/llmoveview.h +++ b/indra/newview/llmoveview.h @@ -46,11 +46,12 @@ class LLJoystickAgentSlide;  class LLFloaterMove  :	public LLTransientDockableFloater  { +	LOG_CLASS(LLFloaterMove);  	friend class LLFloaterReg;  private:  	LLFloaterMove(const LLSD& key); -	~LLFloaterMove() {} +	~LLFloaterMove();  public:  	/*virtual*/	BOOL	postBuild(); @@ -96,7 +97,6 @@ private:  	void updateButtonsWithMovementMode(const EMovementMode newMode);  	void updatePosition();  	void showModeButtons(BOOL bShow); -	void updateHeight(bool show_mode_buttons);  public: @@ -126,6 +126,7 @@ private:   */  class LLPanelStandStopFlying : public LLPanel  { +	LOG_CLASS(LLPanelStandStopFlying);  public:  	typedef enum stand_stop_flying_mode_t  	{ @@ -133,6 +134,19 @@ public:  		SSFM_STOP_FLYING  	} EStandStopFlyingMode; +	/** +	 * Attach or detach the panel to/from the movement controls floater. +	 *  +	 * Called when the floater gets opened/closed, user sits, stands up or starts/stops flying. +	 *  +	 * @param move_view The floater to attach to (not always accessible via floater registry). +	 *        If NULL is passed, the panel gets reparented to its original container. +	 * +	 * @see mAttached +	 * @see mOriginalParent  +	 */ +	void reparent(LLFloaterMove* move_view); +  	static LLPanelStandStopFlying* getInstance();  	static void setStandStopFlyingMode(EStandStopFlyingMode mode);  	static void clearStandStopFlyingMode(EStandStopFlyingMode mode); @@ -157,6 +171,23 @@ private:  	LLButton* mStandButton;  	LLButton* mStopFlyingButton; + +	/** +	 * The original parent of the panel. +	 *   +	 * Makes it possible to move (reparent) the panel to the movement controls floater and back. +	 *  +	 * @see reparent() +	 */ +	LLHandle<LLPanel> mOriginalParent; + +	/** +	 * True if the panel is currently attached to the movement controls floater. +	 *  +	 * @see reparent() +	 * @see updatePosition() +	 */ +	bool	mAttached;  }; diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index cae5c52378..16a47890c3 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -89,8 +89,6 @@ BOOL LLNearbyChat::postBuild()  	mChatHistory = getChild<LLChatHistory>("chat_history"); -	setCanResize(true); -  	if(!LLDockableFloater::postBuild())  		return false; @@ -98,7 +96,7 @@ BOOL LLNearbyChat::postBuild()  	{  		setDockControl(new LLDockControl(  			LLBottomTray::getInstance()->getNearbyChatBar(), this, -			getDockTongue(), LLDockControl::LEFT, boost::bind(&LLNearbyChat::getAllowedRect, this, _1))); +			getDockTongue(), LLDockControl::TOP, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));  	}  	return true; @@ -217,13 +215,6 @@ void	LLNearbyChat::onOpen(const LLSD& key )  	}  } -void	LLNearbyChat::setDocked			(bool docked, bool pop_on_undock) -{ -	LLDockableFloater::setDocked(docked, pop_on_undock); - -	setCanResize(!docked); -} -  void LLNearbyChat::setRect	(const LLRect &rect)  {  	LLDockableFloater::setRect(rect); @@ -233,12 +224,3 @@ void LLNearbyChat::getAllowedRect(LLRect& rect)  {  	rect = gViewerWindow->getWorldViewRectRaw();  } -void LLNearbyChat::setMinimized	(BOOL minimize) -{ -	if(minimize && !isDocked()) -	{ -		setVisible(FALSE); -	} -	LLDockableFloater::setMinimized(minimize); -} - diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h index 1f4e57cf89..561c2d3677 100644 --- a/indra/newview/llnearbychat.h +++ b/indra/newview/llnearbychat.h @@ -51,12 +51,9 @@ public:  	void	onNearbyChatContextMenuItemClicked(const LLSD& userdata);  	bool	onNearbyChatCheckContextMenuItem(const LLSD& userdata); -	void	setDocked			(bool docked, bool pop_on_undock = true); -  	/*virtual*/ void	onOpen	(const LLSD& key);  	virtual void setRect		(const LLRect &rect); -	virtual void setMinimized	(BOOL minimize);  private:  	virtual void    applySavedVariables(); diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index 04b4226f82..10b90b08d7 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -230,6 +230,8 @@ void LLPanelPicks::processProperties(void* data, EAvatarProcessorType type)  			updateButtons();  		}  	} +	if(!mPicksList->size() && !mClassifiedsList->size()) +		childSetVisible("empty_picks_panel_text", true);  }  LLPickItem* LLPanelPicks::getSelectedPickItem() diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index eb10d97b37..84232f20d1 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -80,7 +80,6 @@ static const std::string TELEPORT_HISTORY_INFO_TYPE	= "teleport_history";  // Helper functions  static bool is_agent_in_selected_parcel(LLParcel* parcel);  static void onSLURLBuilt(std::string& slurl); -static void setAllChildrenVisible(LLView* view, BOOL visible);  //Observer classes  class LLPlacesParcelObserver : public LLParcelObserver @@ -700,8 +699,6 @@ void LLPanelPlaces::onBackButtonClicked()  void LLPanelPlaces::togglePickPanel(BOOL visible)  { -	setAllChildrenVisible(this, !visible); -  	if (mPickPanel)  		mPickPanel->setVisible(visible);  } @@ -911,16 +908,3 @@ static void onSLURLBuilt(std::string& slurl)  	LLNotifications::instance().add("CopySLURL", args);  } - -static void setAllChildrenVisible(LLView* view, BOOL visible) -{ -	const LLView::child_list_t* children = view->getChildList(); -	for (LLView::child_list_const_iter_t child_it = children->begin(); child_it != children->end(); ++child_it) -	{ -		LLView* child = *child_it; -		if (child->getParent() == view) -		{ -			child->setVisible(visible); -		} -	} -} diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index eada387945..04ecf769d5 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -332,7 +332,9 @@ void LLSysWellWindow::reshapeWindow()  		new_window_height = MAX_WINDOW_HEIGHT;  	}  	S32 newY = curRect.mTop + new_window_height - curRect.getHeight(); -	curRect.setLeftTopAndSize(curRect.mLeft, newY, MIN_WINDOW_WIDTH, new_window_height); +	S32 newWidth = curRect.getWidth() < MIN_WINDOW_WIDTH ? MIN_WINDOW_WIDTH +			: curRect.getWidth(); +	curRect.setLeftTopAndSize(curRect.mLeft, newY, newWidth, new_window_height);  	reshape(curRect.getWidth(), curRect.getHeight(), TRUE);  	setRect(curRect); diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp index f82573f46c..d1bdcb1354 100644 --- a/indra/newview/lltoastgroupnotifypanel.cpp +++ b/indra/newview/lltoastgroupnotifypanel.cpp @@ -40,7 +40,7 @@  #include "lliconctrl.h"  #include "llinventoryfunctions.h"  #include "llnotify.h" -#include "lltextbox.h" +#include "llviewertexteditor.h"  #include "lluiconstants.h"  #include "llui.h" @@ -54,7 +54,7 @@  #include "llfloaterinventory.h"  #include "llinventorytype.h" -const S32 LLToastGroupNotifyPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT	= 4; +const S32 LLToastGroupNotifyPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT	= 7;  LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(LLNotificationPtr& notification)  :	LLToastPanel(notification), @@ -84,11 +84,6 @@ LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(LLNotificationPtr& notification  	//message body  	const std::string& message = payload["message"].asString(); - -	LLTextBox* pSubjectText = getChild<LLTextBox>("subject"); -	pSubjectText->setValue(subject); - -	LLTextBox* pDateTimeText = getChild<LLTextBox>("datetime");  	std::string timeStr = "["+LLTrans::getString("UTCTimeWeek")+"],["  							+LLTrans::getString("UTCTimeDay")+"] ["  							+LLTrans::getString("UTCTimeMth")+"] [" @@ -102,20 +97,23 @@ LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(LLNotificationPtr& notification  	LLSD substitution;  	substitution["datetime"] = (S32) notice_date.secondsSinceEpoch();  	LLStringUtil::format(timeStr, substitution); -	pDateTimeText->setValue(timeStr); -	LLTextBox* pMessageText = getChild<LLTextBox>("message"); - -	//If message is empty let it be invisible and not take place at the panel -	if(message.size() != 0) -	{ -		pMessageText->setVisible(TRUE); -		pMessageText->setValue(message); -	} -	else -	{ -		pMessageText->setVisible(FALSE); -	} +	LLViewerTextEditor* pMessageText = getChild<LLViewerTextEditor>("message"); +	pMessageText->clear(); + +	LLStyle::Params style; +	LLFontGL* subject_font = LLFontGL::getFontByName(getString("subject_font")); +	if (subject_font)  +		style.font = subject_font; +	pMessageText->appendText(subject, FALSE, style); + +	LLFontGL* date_font = LLFontGL::getFontByName(getString("date_font")); +	if (date_font) +		style.font = date_font; +	pMessageText->appendText(timeStr + "\n", TRUE, style); +	 +	style.font = pMessageText->getDefaultFont(); +	pMessageText->appendText(message, TRUE, style);  	//attachment  	BOOL hasInventory = payload["inventory_offer"].isDefined(); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 7b35125b5b..615eb1db9a 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1566,8 +1566,6 @@ void LLViewerWindow::initWorldUI()  	LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("stand_stop_flying_container");  	LLPanelStandStopFlying* panel_stand_stop_flying	= LLPanelStandStopFlying::getInstance(); -	panel_stand_stop_flying->setShape(panel_ssf_container->getLocalRect()); -	panel_stand_stop_flying->setFollowsAll();  	panel_ssf_container->addChild(panel_stand_stop_flying);  	panel_ssf_container->setVisible(TRUE); diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index ae32ec7d11..21054dacd0 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -33,6 +33,7 @@  #include "llviewerprecompiledheaders.h"  #include "llagent.h" +#include "llfloatercall.h"  #include "llfloaterreg.h"  #include "llimview.h"  #include "llnotifications.h" @@ -408,9 +409,14 @@ void LLVoiceChannel::doSetState(const EState& new_state)  void LLVoiceChannel::toggleCallWindowIfNeeded(EState state)  { +	LLFloaterCall* floater = dynamic_cast<LLFloaterCall*>(LLFloaterReg::getInstance("voice_call", mSessionID)); +	if (!floater) +		return; +  	if (state == STATE_CONNECTED)  	{ -		LLFloaterReg::showInstance("voice_call", mSessionID); +		floater->init(mSessionID); +		floater->openFloater(mSessionID);  	}  	// By checking that current state is CONNECTED we make sure that the call window  	// has been shown, hence there's something to hide. This helps when user presses @@ -418,7 +424,8 @@ void LLVoiceChannel::toggleCallWindowIfNeeded(EState state)  	// *TODO: move this check to LLFloaterCall?  	else if (state == STATE_HUNG_UP && mState == STATE_CONNECTED)  	{ -		LLFloaterReg::hideInstance("voice_call", mSessionID); +		floater->reset(); +		floater->closeFloater();  	}  } diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml index a3ac878202..21d292847a 100644 --- a/indra/newview/skins/default/xui/en/floater_gesture.xml +++ b/indra/newview/skins/default/xui/en/floater_gesture.xml @@ -83,7 +83,20 @@                   tool_tip="Make new gesture"                   top_delta="0"                   width="18" /> -                <button +              <button +                 follows="bottom|left" +                 font="SansSerifBigBold" +                 height="10" +                 image_hover_selected="Activate_Checkmark" +                 image_selected="Activate_Checkmark" +                 image_unselected="Activate_Checkmark" +                 layout="topleft" +                 left_pad="5" +                 name="activate_btn" +                 tool_tip="Activate/Deactivate selected gesture" +                 top="10" +                 width="10" /> +              <button                   follows="bottom|right"                   font="SansSerifBigBold"                   height="18" diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml index 9e2dbc881f..4792a1a476 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -8,6 +8,7 @@   left="0"   name="panel_im"   top="0" + can_close="false"   can_dock="true"   can_minimize="false"   visible="true" diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml index 4f2d74b417..69b015a727 100644 --- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml @@ -3,7 +3,7 @@   legacy_header_height="18"   can_minimize="false"   can_tear_off="false" - can_resize="false" + can_resize="true"   can_drag_on_left="false"   can_close="false"   can_dock="true" diff --git a/indra/newview/skins/default/xui/en/floater_sys_well.xml b/indra/newview/skins/default/xui/en/floater_sys_well.xml index e1f07a49e7..be6d63716c 100644 --- a/indra/newview/skins/default/xui/en/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/en/floater_sys_well.xml @@ -15,7 +15,7 @@   height="23"   can_minimize="true"   can_tear_off="false" - can_resize="false" + can_resize="true"   can_drag_on_left="false"   can_close="false"   can_dock="true" diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index 9e35c95d45..14a4949df7 100644 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml @@ -10,7 +10,7 @@    <layout_stack border_size="0"                  follows="all"                  mouse_opaque="false" -                height="772" +                height="768"                  name="menu_stack"                  orientation="vertical"                  top="0"> diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml index 590621062c..a731996a1a 100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml @@ -17,6 +17,8 @@     name="add_friend">
      <menu_item_call.on_click
       function="InspectAvatar.AddFriend"/>
 +    <menu_item_call.on_enable
 +     function="InspectAvatar.Gear.Enable"/>
    </menu_item_call>
    <menu_item_call
     label="IM"
 diff --git a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml index 5c8a8ee208..3842c2a8db 100644 --- a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml @@ -61,6 +61,7 @@       layout="topleft"       left_delta="0"       name="Block object by name..." +     tool_tip="Pick an object to block by name"       top_pad="4"       width="210" >          <button.commit_callback diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index a902f50582..d2933c0c0e 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -94,7 +94,7 @@           min_height="28"           width="82"           top_delta="0" -         min_width="82" +         min_width="52"           name="gesture_panel"           user_resize="false">           <gesture_combo_box @@ -105,9 +105,13 @@            name="Gesture"            left="0"            top="3" -         use_ellipses="true"            width="82" -          tool_tip="Shows/hides gestures"/> +          tool_tip="Shows/hides gestures"> +             <gesture_combo_box.drop_down_button +              font="SansSerifSmall" +              pad_right="10"  +              use_ellipses="true" /> +         </gesture_combo_box>          </layout_panel>  		 <icon           auto_resize="false" @@ -131,7 +135,7 @@           name="movement_panel"           user_resize="false"           width="80" -         min_width="80"> +         min_width="49">              <button               follows="left|right"               height="23" @@ -167,7 +171,7 @@           height="28"           layout="topleft"           min_height="28" -         min_width="80" +         min_width="49"           name="cam_panel"           user_resize="false"           width="80"> diff --git a/indra/newview/skins/default/xui/en/panel_chat_item.xml b/indra/newview/skins/default/xui/en/panel_chat_item.xml index 01917052d1..2b29796f0a 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_item.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_item.xml @@ -34,12 +34,12 @@  		use_ellipses="true"          	mouse_opaque="true"  		name="sender_name" -        	width="175"> +        	width="150">  	      Jerry Knight      	</text> -   <!-- 	<icon top="22" left="170" width="15" height="15" follows="top|right" +   <!-- 	<icon top="22" left="215" width="15" height="15" follows="top|right"        		image_name="icn_voice-pvtfocus.tga" visible="false" name="msg_inspector" />--> -    	<!--<icon top="22" left="190" width="10" height="10" follows="top|right" +    	<!--<icon top="22" left="215" width="10" height="10" follows="top|right"        		image_name="speaking_indicator.tga"	name="msg_icon"/>-->  	 <text              font="SansSerifSmall" diff --git a/indra/newview/skins/default/xui/en/panel_group_notify.xml b/indra/newview/skins/default/xui/en/panel_group_notify.xml index 984a799b41..d22d58329c 100644 --- a/indra/newview/skins/default/xui/en/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notify.xml @@ -3,7 +3,7 @@   background_visible="true"
   bevel_style="in"
   bg_alpha_color="0 0 0 0"
 - height="135"
 + height="90"
   label="instant_message"
   layout="topleft"
   left="0"
 @@ -12,7 +12,13 @@   width="305">
      <string
       name="message_max_lines_count"
 -     value="4" />
 +     value="7" />
 +    <string
 +     name="subject_font"
 +     value="SANSSERIF_BIG" />
 +    <string
 +     name="date_font"
 +     value="SANSSERIF" />
      <panel
       background_visible="true"
       bevel_style="in"
 @@ -47,46 +53,27 @@           value="Sender Name / Group Name"
           width="230" />
      </panel>
 -    <text
 -     follows="top"
 -     font="SansSerifBig"
 -     height="20"
 -     layout="topleft"
 -     left="25"
 -     name="subject"
 -     text_color="GroupNotifyTextColor"
 -     top="40"
 -     use_ellipses="true"
 -     value="subject"
 -     width="270"
 -     wrap="true" />
 -    <text
 -     follows="top"
 -     font="SansSerif"
 -     height="20"
 -     layout="topleft"
 -     left="25"
 -     name="datetime"
 -     text_color="GroupNotifyTextColor"
 -     top="80"
 -     use_ellipses="true"
 -     value="datetime"
 -     width="270"
 -     wrap="true" />
 -    <text
 +    <text_editor
 +     allow_html="true"
 +     enabled="true"
       follows="left|top|bottom|right"
       height="0"
       layout="topleft"
       left="25"
 +     max_length="2147483647"
       name="message"
 +     parse_highlights="true"
 +     read_only="true"
       text_color="GroupNotifyTextColor"
 -     top="100"
 +     top="40"
 +     type="string"
       use_ellipses="true"
       value="message"
 -     width="270"
 -     wrap="true" />
 +     width="270" 
 +	 word_wrap="true" >
 +    </text_editor>
      <icon
 -     bottom="122"
 +     bottom="60"
       follows="left|bottom|right"
       height="15"
       layout="topleft"
 @@ -95,7 +82,7 @@       name="attachment_icon"
       width="15" />
      <text
 -     bottom="122"
 +     bottom="60"
       follows="left|bottom|right"
       font="SansSerif"
       height="15"
 @@ -104,9 +91,10 @@       name="attachment"
       text_color="GroupNotifyTextColor"
       value="Attachment"
 -     width="280" />
 +     use_ellipses="true"
 +     width="250" />
      <button
 -     bottom="130"
 +     bottom="85"
       follows="bottom"
       height="20"
       label="OK"
 diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml index 9cfbed432a..962dad3363 100644 --- a/indra/newview/skins/default/xui/en/panel_picks.xml +++ b/indra/newview/skins/default/xui/en/panel_picks.xml @@ -14,7 +14,18 @@   <string    name="no_classifieds"    value="No Classifieds" /> -      + <text +  type="string" +  follows="all" +  height="535" +  layout="topleft" +  left="6" +  name="empty_picks_panel_text" +  top="10" +  visible="false"  +  width="313"> +   There are no any picks/classifieds here + </text>   <accordion    follows="all"    height="465" diff --git a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml index 566fc95230..9839075862 100644 --- a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml +++ b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml @@ -7,6 +7,24 @@   layout="topleft"   name="home_tab"   width="333"> +  <scroll_container +   color="DkGray" +   follows="all" +   layout="topleft" +   left="0" +   name="profile_scroll" +   opaque="true" +   height="560" +   width="333" +   top="0"> +  <panel +   background_visible="true" +   height="560" +   layout="topleft" +   name="profile_scroll_panel" +   top="0" +   left="0" +   width="311">      <panel       background_visible="true"       bg_alpha_color="DkGray2" @@ -242,4 +260,6 @@              Browse your inventory.          </text>      </panel> +  </panel> +  </scroll_container>  </panel> diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml index 1f67a0a732..4ab6175805 100644 --- a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml @@ -26,7 +26,7 @@       name="selected_icon"       top="0"       visible="false" -     width="320" /> +     width="380" />      <icon       height="16"       follows="top|left" @@ -46,7 +46,7 @@       text_color="white"       top="4"       value="..." -     width="242" /> +     width="330" />      <button       follows="right"       height="20"  | 
