diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llfloaterimcontainer.cpp | 49 | ||||
| -rw-r--r-- | indra/newview/llfloaterimcontainer.h | 4 | 
2 files changed, 25 insertions, 28 deletions
| diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index cdffdcf806..7437dd8cda 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -226,10 +226,11 @@ BOOL LLFloaterIMContainer::postBuild()  	childSetAction("add_btn", boost::bind(&LLFloaterIMContainer::onAddButtonClicked, this));  	collapseMessagesPane(gSavedPerAccountSettings.getBOOL("ConversationsMessagePaneCollapsed")); -	collapseConversationsPane(gSavedPerAccountSettings.getBOOL("ConversationsListPaneCollapsed")); +	collapseConversationsPane(gSavedPerAccountSettings.getBOOL("ConversationsListPaneCollapsed"), false);  	LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&LLFloaterIMSessionTab::processChatHistoryStyleUpdate, false));  	mMicroChangedSignal = LLVoiceClient::getInstance()->MicroChangedCallback(boost::bind(&LLFloaterIMContainer::updateSpeakBtnState, this)); -	if (! mMessagesPane->isCollapsed()) + +	if (! mMessagesPane->isCollapsed() && ! mConversationsPane->isCollapsed())  	{  		S32 conversations_panel_width = gSavedPerAccountSettings.getS32("ConversationsListPaneWidth");  		LLRect conversations_panel_rect = mConversationsPane->getRect(); @@ -668,7 +669,7 @@ void LLFloaterIMContainer::collapseMessagesPane(bool collapse)  	// Make sure layout is updated before resizing conversation pane.  	mConversationsStack->updateLayout(); -	updateState(collapse, gSavedPerAccountSettings.getS32("ConversationsMessagePaneWidth")); +	reshapeFloaterAndSetResizeLimits(collapse, gSavedPerAccountSettings.getS32("ConversationsMessagePaneWidth"));  	if (!collapse)  	{ @@ -677,7 +678,7 @@ void LLFloaterIMContainer::collapseMessagesPane(bool collapse)  	}  } -void LLFloaterIMContainer::collapseConversationsPane(bool collapse) +void LLFloaterIMContainer::collapseConversationsPane(bool collapse, bool save_is_allowed /*=true*/)  {  	if (mConversationsPane->isCollapsed() == collapse)  	{ @@ -691,7 +692,7 @@ void LLFloaterIMContainer::collapseConversationsPane(bool collapse)  	// Save current width of Conversation panel before collapsing/expanding right pane.  	S32 conv_pane_width = mConversationsPane->getRect().getWidth(); -	if (collapse) +	if (collapse && save_is_allowed)  	{  		// Save the conversations pane width before collapsing it.  		gSavedPerAccountSettings.setS32("ConversationsListPaneWidth", conv_pane_width); @@ -701,10 +702,18 @@ void LLFloaterIMContainer::collapseConversationsPane(bool collapse)  	}  	mConversationsStack->collapsePanel(mConversationsPane, collapse); +	if (!collapse) +	{ +		// Make sure layout is updated before resizing conversation pane. +		mConversationsStack->updateLayout(); +		// Restore conversation's pane previous width. +		mConversationsPane->setTargetDim(gSavedPerAccountSettings.getS32("ConversationsListPaneWidth")); +	} -	S32 delta_width = gSavedPerAccountSettings.getS32("ConversationsListPaneWidth") - mConversationsPane->getMinDim(); +	S32 delta_width = +			gSavedPerAccountSettings.getS32("ConversationsListPaneWidth") - mConversationsPane->getMinDim(); -	updateState(collapse, delta_width); +	reshapeFloaterAndSetResizeLimits(collapse, delta_width);  	for (conversations_widgets_map::iterator widget_it = mConversationsWidgets.begin();  			widget_it != mConversationsWidgets.end(); ++widget_it) @@ -724,21 +733,20 @@ void LLFloaterIMContainer::collapseConversationsPane(bool collapse)  	}  } -void LLFloaterIMContainer::updateState(bool collapse, S32 delta_width) +void LLFloaterIMContainer::reshapeFloaterAndSetResizeLimits(bool collapse, S32 delta_width)  {  	LLRect floater_rect = getRect();  	floater_rect.mRight += ((collapse ? -1 : 1) * delta_width);  	// Set by_user = true so that reshaped rect is saved in user_settings.  	setShape(floater_rect, true); -  	updateResizeLimits(); -	bool is_left_pane_expanded = !mConversationsPane->isCollapsed(); -	bool is_right_pane_expanded = !mMessagesPane->isCollapsed(); +	bool at_least_one_panel_is_expanded = +			! (mConversationsPane->isCollapsed() && mMessagesPane->isCollapsed()); -	setCanResize(is_left_pane_expanded || is_right_pane_expanded); -	setCanMinimize(is_left_pane_expanded || is_right_pane_expanded); +	setCanResize(at_least_one_panel_is_expanded); +	setCanMinimize(at_least_one_panel_is_expanded);      assignResizeLimits(); @@ -767,15 +775,9 @@ void LLFloaterIMContainer::assignResizeLimits()  	S32 msg_pane_min_width  = is_msg_pane_expanded ? mMessagesPane->getExpandedMinDim() : 0;  	S32 new_min_width = conv_pane_target_width + msg_pane_min_width + summary_width_of_visible_borders; -    if (is_conv_pane_expanded) -    { -    	// Save the conversations pane width. -	    gSavedPerAccountSettings.setS32( -	            "ConversationsListPaneWidth", -                mConversationsPane->getRect().getWidth()); -    } -  	setResizeLimits(new_min_width, getMinHeight()); + +	mConversationsStack->updateLayout();  }  void LLFloaterIMContainer::onAddButtonClicked() @@ -1972,11 +1974,6 @@ void LLFloaterIMContainer::closeFloater(bool app_quitting/* = false*/)  	// Most of the time the user will never see this state.  	setMinimized(FALSE); -	// Save the conversations pane width. -	gSavedPerAccountSettings.setS32( -			"ConversationsListPaneWidth", -			mConversationsPane->getRect().getWidth()); -  	LLFloater::closeFloater(app_quitting);  } diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h index 1e760a8710..5139651d8d 100644 --- a/indra/newview/llfloaterimcontainer.h +++ b/indra/newview/llfloaterimcontainer.h @@ -129,9 +129,9 @@ private:  	void processParticipantsStyleUpdate();  	void onSpeakButtonClicked(); -	void collapseConversationsPane(bool collapse); +	void collapseConversationsPane(bool collapse, bool save_is_allowed=true); -	void updateState(bool collapse, S32 delta_width); +	void reshapeFloaterAndSetResizeLimits(bool collapse, S32 delta_width);  	void onAddButtonClicked();  	void onAvatarPicked(const uuid_vec_t& ids); | 
