diff options
| -rw-r--r-- | indra/llui/llbutton.cpp | 24 | ||||
| -rw-r--r-- | indra/llui/llbutton.h | 1 | ||||
| -rw-r--r-- | indra/llui/llpanel.h | 3 | ||||
| -rw-r--r-- | indra/llui/llresizehandle.cpp | 12 | ||||
| -rw-r--r-- | indra/llui/llresizehandle.h | 5 | ||||
| -rw-r--r-- | indra/llui/lltoolbar.cpp | 9 | ||||
| -rw-r--r-- | indra/llui/llview.h | 6 | ||||
| -rw-r--r-- | indra/newview/llchatbar.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llimview.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llnearbychat.cpp | 53 | ||||
| -rw-r--r-- | indra/newview/llnearbychat.h | 11 | ||||
| -rw-r--r-- | indra/newview/llnearbychatbar.cpp | 38 | ||||
| -rw-r--r-- | indra/newview/llnearbychatbar.h | 4 | ||||
| -rw-r--r-- | indra/newview/llnearbychathandler.cpp | 11 | ||||
| -rw-r--r-- | indra/newview/llnotificationhandlerutil.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llnotificationtiphandler.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llviewerfloaterreg.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llviewermessage.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_chat_bar.xml | 23 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_nearby_chat.xml | 35 | 
20 files changed, 158 insertions, 93 deletions
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index 06781f1bdf..02ac928dfb 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -554,6 +554,16 @@ BOOL LLButton::handleHover(S32 x, S32 y, MASK mask)  	return TRUE;  } +void LLButton::getOverlayImageSize(S32& overlay_width, S32& overlay_height) +{ +	overlay_width = mImageOverlay->getWidth(); +	overlay_height = mImageOverlay->getHeight(); + +	F32 scale_factor = llmin((F32)getRect().getWidth() / (F32)overlay_width, (F32)getRect().getHeight() / (F32)overlay_height, 1.f); +	overlay_width = llround((F32)overlay_width * scale_factor); +	overlay_height = llround((F32)overlay_height * scale_factor); +} +  // virtual  void LLButton::draw() @@ -781,12 +791,10 @@ void LLButton::draw()  	if (mImageOverlay.notNull())  	{  		// get max width and height (discard level 0) -		S32 overlay_width = mImageOverlay->getWidth(); -		S32 overlay_height = mImageOverlay->getHeight(); +		S32 overlay_width; +		S32 overlay_height; -		F32 scale_factor = llmin((F32)getRect().getWidth() / (F32)overlay_width, (F32)getRect().getHeight() / (F32)overlay_height, 1.f); -		overlay_width = llround((F32)overlay_width * scale_factor); -		overlay_height = llround((F32)overlay_height * scale_factor); +		getOverlayImageSize(overlay_width, overlay_height);  		S32 center_x = getLocalRect().getCenterX();  		S32 center_y = getLocalRect().getCenterY(); @@ -994,11 +1002,15 @@ void LLButton::resize(LLUIString label)  		S32 min_width = label_width + mLeftHPad + mRightHPad;  		if (mImageOverlay)  		{ +			S32 overlay_width = mImageOverlay->getWidth(); +			F32 scale_factor = getRect().getHeight() / (F32)mImageOverlay->getHeight(); +			overlay_width = llround((F32)overlay_width * scale_factor); +  			switch(mImageOverlayAlignment)  			{  			case LLFontGL::LEFT:  			case LLFontGL::RIGHT: -				min_width += mImageOverlay->getWidth() + mImgOverlayLabelSpace; +				min_width += overlay_width + mImgOverlayLabelSpace;  				break;  			case LLFontGL::HCENTER:  				break; diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index bc5e69fad5..08b45e01b3 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -270,6 +270,7 @@ public:  protected:  	LLPointer<LLUIImage> getImageUnselected() const	{ return mImageUnselected; }  	LLPointer<LLUIImage> getImageSelected() const	{ return mImageSelected; } +	void getOverlayImageSize(S32& overlay_width, S32& overlay_height);  	LLFrameTimer	mMouseDownTimer; diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h index 790025cb2d..ab1c87caff 100644 --- a/indra/llui/llpanel.h +++ b/indra/llui/llpanel.h @@ -96,9 +96,6 @@ public:  		Params();  	}; -	// valid children for LLPanel are stored in this registry -	typedef LLDefaultChildRegistry child_registry_t; -  protected:  	friend class LLUICtrlFactory;  	// RN: for some reason you can't just use LLUICtrlFactory::getDefaultParams as a default argument in VC8 diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp index c3a51c36c9..942e84eeb6 100644 --- a/indra/llui/llresizehandle.cpp +++ b/indra/llui/llresizehandle.cpp @@ -55,6 +55,8 @@ LLResizeHandle::LLResizeHandle(const LLResizeHandle::Params& p)  	mImage( NULL ),  	mMinWidth( p.min_width ),  	mMinHeight( p.min_height ), +	mMaxWidth(S32_MAX), +	mMaxHeight(S32_MAX),  	mCorner( p.corner )  {  	if( RIGHT_BOTTOM == mCorner) @@ -177,6 +179,11 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)  				new_width = mMinWidth;  				delta_x = x_multiple * (mMinWidth - orig_rect.getWidth());  			} +			else if (new_width > mMaxWidth) +			{ +				new_width = mMaxWidth; +				delta_x = x_multiple * (mMaxWidth - orig_rect.getWidth()); +			}  			S32 new_height = orig_rect.getHeight() + y_multiple * delta_y;  			if( new_height < mMinHeight ) @@ -184,6 +191,11 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask)  				new_height = mMinHeight;  				delta_y = y_multiple * (mMinHeight - orig_rect.getHeight());  			} +			else if (new_height > mMaxHeight) +			{ +				new_height = mMaxHeight; +				delta_y = y_multiple * (mMaxHeight - orig_rect.getHeight()); +			}  			switch( mCorner )  			{ diff --git a/indra/llui/llresizehandle.h b/indra/llui/llresizehandle.h index 531eb1db61..5cfe3fb63c 100644 --- a/indra/llui/llresizehandle.h +++ b/indra/llui/llresizehandle.h @@ -56,6 +56,9 @@ public:  	void			setResizeLimits( S32 min_width, S32 min_height ) { mMinWidth = min_width; mMinHeight = min_height; } +	void			setMaxWidth(S32 width) { mMaxWidth = width;} +	void			setMaxHeight(S32 height) { mMaxHeight = height;} +  private:  	BOOL			pointInHandle( S32 x, S32 y ); @@ -66,7 +69,9 @@ private:  	LLCoordGL		mLastMouseDir;  	LLPointer<LLUIImage>	mImage;  	S32				mMinWidth; +	S32				mMaxWidth;  	S32				mMinHeight; +	S32				mMaxHeight;  	const ECorner	mCorner;  }; diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp index 8249df3e9d..677d50a0c7 100644 --- a/indra/llui/lltoolbar.cpp +++ b/indra/llui/lltoolbar.cpp @@ -30,6 +30,7 @@  #include <boost/foreach.hpp>  #include "lltoolbar.h" +#include "llcommandmanager.h"  #include "llmenugl.h"  #include "lltrans.h" @@ -206,8 +207,8 @@ bool LLToolBar::addCommand(const LLCommandId& commandId)  	if (add_command)  	{ -		mButtonCommands.push_back(commandId); -		createButtons(); +	mButtonCommands.push_back(commandId); +	createButtons();  	}  	return add_command; @@ -251,7 +252,9 @@ bool LLToolBar::enableCommand(const LLCommandId& commandId, bool enabled)  BOOL LLToolBar::handleRightMouseDown(S32 x, S32 y, MASK mask)  { -	BOOL handle_it_here = !mReadOnly; +	LLRect button_panel_rect; +	mButtonPanel->localRectToOtherView(mButtonPanel->getLocalRect(), &button_panel_rect, this); +	BOOL handle_it_here = !mReadOnly && button_panel_rect.pointInRect(x, y);  	if (handle_it_here)  	{ diff --git a/indra/llui/llview.h b/indra/llui/llview.h index 7a1b2e4ba0..9039366e7e 100644 --- a/indra/llui/llview.h +++ b/indra/llui/llview.h @@ -95,9 +95,6 @@ private:  	static std::vector<LLViewDrawContext*> sDrawContextStack;  }; -class LLViewWidgetRegistry : public LLChildRegistry<LLViewWidgetRegistry> -{}; -  class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElement  {  public: @@ -150,7 +147,8 @@ public:  		Params();  	}; -	typedef LLViewWidgetRegistry child_registry_t; +	// most widgets are valid children of LLView +	typedef LLDefaultChildRegistry child_registry_t;  	void initFromParams(const LLView::Params&); diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp index cf0374075a..fb3abb132b 100644 --- a/indra/newview/llchatbar.cpp +++ b/indra/newview/llchatbar.cpp @@ -95,7 +95,7 @@ LLChatBar::LLChatBar()  	mGestureCombo(NULL),  	mObserver(NULL)  { -	setIsChrome(TRUE); +	//setIsChrome(TRUE);  } diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 4de6976534..4602533736 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2449,8 +2449,10 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess  		LLChat chat(message);  		chat.mSourceType = CHAT_SOURCE_SYSTEM; +		 +		LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar"); +		LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat"); -		LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());  		if(nearby_chat)  		{  			nearby_chat->addMessage(chat); diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 8d57ae3a32..07e94f957a 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -57,11 +57,13 @@  static const S32 RESIZE_BAR_THICKNESS = 3; -LLNearbyChat::LLNearbyChat(const LLSD& key)  -	: LLFloater(key) + +static LLRegisterPanelClassWrapper<LLNearbyChat> t_panel_nearby_chat("panel_nearby_chat"); + +LLNearbyChat::LLNearbyChat()  +	: LLPanel()  	,mChatHistory(NULL)  { -	  }  LLNearbyChat::~LLNearbyChat() @@ -86,29 +88,12 @@ BOOL LLNearbyChat::postBuild()  	mChatHistory = getChild<LLChatHistory>("chat_history"); -	if(!LLFloater::postBuild()) +	if(!LLPanel::postBuild())  		return false; - -	if (mDragHandle) -		mDragHandle->setTitleVisible(TRUE); - +	  	return true;  } - -void    LLNearbyChat::applySavedVariables() -{ -	if (mRectControl.size() > 1) -	{ -		const LLRect& rect = LLFloater::getControlGroup()->getRect(mRectControl); -		if(!rect.isEmpty() && rect.isValid()) -		{ -			reshape(rect.getWidth(), rect.getHeight()); -			setRect(rect); -		} -	} -} -  std::string appendTime()  {  	time_t utc_time; @@ -204,18 +189,9 @@ void	LLNearbyChat::setVisible(BOOL visible)  		}  	} -	LLFloater::setVisible(visible); +	LLPanel::setVisible(visible);  } -void	LLNearbyChat::onOpen(const LLSD& key ) -{ -	LLFloater::onOpen(key); -} - -void LLNearbyChat::setRect	(const LLRect &rect) -{ -	LLFloater::setRect(rect); -}  void LLNearbyChat::getAllowedRect(LLRect& rect)  { @@ -238,9 +214,9 @@ void LLNearbyChat::updateChatHistoryStyle()  //static   void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue)  { -	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); -	if(nearby_chat) -		nearby_chat->updateChatHistoryStyle(); +	//LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); +	//if(nearby_chat) +	//	nearby_chat->updateChatHistoryStyle();  }  bool isWordsName(const std::string& name) @@ -314,7 +290,8 @@ void LLNearbyChat::loadHistory()  //static  LLNearbyChat* LLNearbyChat::getInstance()  { -	return LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); +	LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar"); +	return chat_bar->findChild<LLNearbyChat>("nearby_chat");  }  //////////////////////////////////////////////////////////////////////////////// @@ -342,7 +319,7 @@ BOOL	LLNearbyChat::handleMouseDown(S32 x, S32 y, MASK mask)  	if(mChatHistory)  		mChatHistory->setFocus(TRUE); -	return LLFloater::handleMouseDown(x, y, mask); +	return LLPanel::handleMouseDown(x, y, mask);  }  void LLNearbyChat::draw() @@ -355,5 +332,5 @@ void LLNearbyChat::draw()  		setTransparencyType(hasFocus() ? TT_ACTIVE : TT_INACTIVE);  	} -	LLFloater::draw(); +	LLPanel::draw();  } diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h index 834a31bbf0..5ef584c8ff 100644 --- a/indra/newview/llnearbychat.h +++ b/indra/newview/llnearbychat.h @@ -34,10 +34,10 @@  class LLResizeBar;  class LLChatHistory; -class LLNearbyChat: public LLFloater +class LLNearbyChat: public LLPanel  {  public: -	LLNearbyChat(const LLSD& key); +	LLNearbyChat();  	~LLNearbyChat();  	BOOL	postBuild			(); @@ -54,12 +54,8 @@ public:  	/*virtual*/ void	onFocusLost();  	/*virtual*/ void	onFocusReceived(); -	/*virtual*/ void	onOpen	(const LLSD& key); -  	/*virtual*/ void	setVisible(BOOL visible); - -	virtual void setRect		(const LLRect &rect); - +	  	virtual void updateChatHistoryStyle();  	static void processChatHistoryStyleUpdate(const LLSD& newvalue); @@ -69,7 +65,6 @@ public:  	static LLNearbyChat* getInstance();  private: -	virtual void    applySavedVariables();  	void	getAllowedRect		(LLRect& rect); diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index 185acb1414..258aa9a8bf 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -49,6 +49,8 @@  #include "llrootview.h"  #include "llviewerchat.h" +#include "llresizehandle.h" +  S32 LLNearbyChatBar::sLastSpecialChatChannel = 0;  // legacy callback glue @@ -414,8 +416,7 @@ LLCtrlListInterface* LLGestureComboList::getListInterface()  LLNearbyChatBar::LLNearbyChatBar(const LLSD& key)  	: LLFloater(key),  	mChatBox(NULL) -{ -	mSpeakerMgr = LLLocalSpeakerMgr::getInstance(); +{	mSpeakerMgr = LLLocalSpeakerMgr::getInstance();  }  //virtual @@ -437,6 +438,10 @@ BOOL LLNearbyChatBar::postBuild()  	mChatBox->setEnableLineHistory(TRUE);  	mChatBox->setFont(LLViewerChat::getChatFont()); + +	LLUICtrl* show_btn = getChild<LLUICtrl>("show_nearby_chat"); +	show_btn->setCommitCallback(boost::bind(&LLNearbyChatBar::onToggleNearbyChatPanel, this)); +  	mOutputMonitor = getChild<LLOutputMonitorCtrl>("chat_zone_indicator");  	mOutputMonitor->setVisible(FALSE); @@ -678,6 +683,25 @@ void LLNearbyChatBar::sendChat( EChatType type )  	}  } + +void LLNearbyChatBar::onToggleNearbyChatPanel() +{ +	LLView* nearby_chat = getChildView("nearby_chat"); + +	if (nearby_chat->getVisible()) +	{ +		nearby_chat->setVisible(FALSE); +		reshape(getRect().getWidth(), 60); +		mResizeHandle[0]->setMaxHeight(60); +	} +	else +	{ +		nearby_chat->setVisible(TRUE); +		reshape(getRect().getWidth(), 360); +		mResizeHandle[0]->setMaxHeight(S32_MAX); +	} +} +  void LLNearbyChatBar::onChatBoxCommit()  {  	if (mChatBox->getText().length() > 0) @@ -781,6 +805,7 @@ void LLNearbyChatBar::startChat(const char* line)  		return;  	cb->setVisible(TRUE); +	cb->setFocus(TRUE);  	cb->mChatBox->setFocus(TRUE);  	if (line) @@ -812,15 +837,6 @@ void LLNearbyChatBar::stopChat()   	gAgent.stopTyping();  } -void LLNearbyChatBar::onClose(bool app_quitting) -{ -	LLFloater* nearby_chat = LLFloaterReg::findInstance("nearby_chat", LLSD()); -	if (nearby_chat) -	{ -		nearby_chat->closeFloater(app_quitting); -	} -} -  // If input of the form "/20foo" or "/20 foo", returns "foo" and channel 20.  // Otherwise returns input and channel 0.  LLWString LLNearbyChatBar::stripChannelNumber(const LLWString &mesg, S32* channel) diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h index f4a8605e18..1d28a21ef3 100644 --- a/indra/newview/llnearbychatbar.h +++ b/indra/newview/llnearbychatbar.h @@ -108,8 +108,6 @@ public:  	virtual void draw(); -	virtual void onClose(bool app_quitting); -  	std::string getCurrentChat();  	virtual BOOL handleKeyHere( KEY key, MASK mask ); @@ -129,6 +127,8 @@ protected:  	void onChatBoxCommit();  	void onChatFontChange(LLFontGL* fontp); +	void onToggleNearbyChatPanel(); +  	static LLWString stripChannelNumber(const LLWString &mesg, S32* channel);  	EChatType processChatTypeTriggers(EChatType type, std::string &str); diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index 957b6d5f94..dcf444b048 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -41,6 +41,7 @@  #include "llfloaterreg.h"//for LLFloaterReg::getTypedInstance  #include "llviewerwindow.h"//for screen channel position +#include "llnearbychatbar.h"  //add LLNearbyChatHandler to LLNotificationsUI namespace  using namespace LLNotificationsUI; @@ -473,8 +474,9 @@ LLNearbyChatHandler::~LLNearbyChatHandler()  void LLNearbyChatHandler::initChannel()  { -	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); -	LLView* chat_box = LLBottomTray::getInstance()->getChildView("chat_box"); +	LLNearbyChatBar* chat_bar = LLFloaterReg::getTypedInstance<LLNearbyChatBar>("chat_bar", LLSD()); +	LLView* chat_box = chat_bar->getChatBox(); +	LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();  	S32 channel_right_bound = nearby_chat->getRect().mRight;  	mChannel->init(chat_box->getRect().mLeft, channel_right_bound);  } @@ -502,7 +504,10 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,		// WARNING - not  			tmp_chat.mText = tmp_chat.mText.substr(3);  	} -	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); +	LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar"); + +	LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat"); +  	{  		//sometimes its usefull to have no name at all...  		//if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null) diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index de90023f3b..1b767e80d4 100644 --- a/indra/newview/llnotificationhandlerutil.cpp +++ b/indra/newview/llnotificationhandlerutil.cpp @@ -385,7 +385,7 @@ void LLHandlerUtil::logGroupNoticeToIMGroup(  // static  void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChatSourceType type)  { -	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); +	LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();  	if(nearby_chat)  	{  		LLChat chat_msg(notification->getMessage()); diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp index 02b217fc94..2a08a29842 100644 --- a/indra/newview/llnotificationtiphandler.cpp +++ b/indra/newview/llnotificationtiphandler.cpp @@ -92,8 +92,7 @@ bool LLTipHandler::processNotification(const LLSD& notify)  			LLHandlerUtil::logToNearbyChat(notification, CHAT_SOURCE_SYSTEM);  			// don't show toast if Nearby Chat is opened -			LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance< -					LLNearbyChat>("nearby_chat", LLSD()); +			LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();  			if (nearby_chat->getVisible())  			{  				return false; diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 09a50300d0..0b3b8e23a5 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -182,7 +182,6 @@ void LLViewerFloaterReg::registerFloaters()  	LLFloaterReg::add("bumps", "floater_bumps.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBump>);  	LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>); -	LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>);  	LLFloaterReg::add("chat_bar", "floater_chat_bar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChatBar>);  	LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index e5877dcf3a..5665a68add 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2189,7 +2189,7 @@ void god_message_name_cb(const LLAvatarName& av_name, LLChat chat, std::string m  	// Treat like a system message and put in chat history.  	chat.mText = av_name.getCompleteName() + ": " + message; -	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); +	LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();  	if(nearby_chat)  	{  		nearby_chat->addMessage(chat); @@ -2751,7 +2751,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  			// Note: lie to Nearby Chat, pretending that this is NOT an IM, because  			// IMs from obejcts don't open IM sessions. -			LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); +			LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();  			if(SYSTEM_FROM != name && nearby_chat)  			{  				chat.mOwnerID = from_id; diff --git a/indra/newview/skins/default/xui/en/floater_chat_bar.xml b/indra/newview/skins/default/xui/en/floater_chat_bar.xml index d0059b281e..9d61c94eb1 100644 --- a/indra/newview/skins/default/xui/en/floater_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/floater_chat_bar.xml @@ -3,16 +3,27 @@   height="60"   layout="topleft"   legacy_header_height="20" + single_instance="true"   title="Nearby chat" + save_rect="true"   can_close="true"   can_minimize="true"   help_topic="chat_bar" - save_rect="true"   min_height="60"   min_width="150"   can_resize="true"   name="chat_bar"   width="380"> +    <panel +        top="20" +        class="panel_nearby_chat" +        follow="all" +        width="380" +        height="0" +        visible="false" +        filename="panel_nearby_chat.xml" +        name="nearby_chat" /> +    <panel width="380" height="31" left="0" bottom="-1" follows="left|right|bottom">      <line_editor       border_style="line"       border_thickness="1" @@ -27,7 +38,7 @@       text_pad_left="5"       text_pad_right="25"       tool_tip="Press Enter to say, Ctrl+Enter to shout" -     top="27" +     top="0"       width="335" />      <output_monitor       auto_update="true" @@ -38,14 +49,14 @@       left_pad="-24"       mouse_opaque="true"       name="chat_zone_indicator" -     top="31" +     top="4"       visible="true"       width="20" />      <button       follows="right"       is_toggle="true"       width="20" -     top="27" +     top="0"       layout="topleft"       left_pad="12"       image_disabled="ComboButton_UpOff" @@ -56,8 +67,6 @@       height="23"       name="show_nearby_chat"       tool_tip="Shows/hides nearby chat log"> -        <button.init_callback -           function="Button.SetDockableFloaterToggle" -           parameter="nearby_chat" />      </button> +    </panel>  </floater> diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml new file mode 100644 index 0000000000..f766236b2e --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel + height="300" + follows="all" + layout="topleft" + name="nearby_chat" + help_topic="nearby_chat" + width="320"> +            <check_box +             bottom_delta="36" +             control_name="TranslateChat" +             enabled="true" +             height="16" +             label="Translate chat (powered by Google)" +             layout="topleft" +             left="5" +             name="translate_chat_checkbox" +             width="230" /> +  <chat_history +    parse_urls="true" +    bg_readonly_color="ChatHistoryBgColor" +    bg_writeable_color="ChatHistoryBgColor" +    follows="all" +    left="5" +    top_delta="17" +    layout="topleft" +    height="260" +    name="chat_history" +    parse_highlights="true" +    text_color="ChatHistoryTextColor" +    text_readonly_color="ChatHistoryTextColor" +    right_widget_pad="5" +    left_widget_pad="0" +    width="315" /> +</panel>  | 
