diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index a6a85fc7d154451736f3d55746e4af89b7e9ddfa..157b9b01133a8387a34c4fb6dc653dd107dc06ed 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -224,7 +224,7 @@ class LLFloater : public LLPanel, public LLInstanceTracker<LLFloater> void openFloater(const LLSD& key = LLSD()); // If allowed, close the floater cleanly, releasing focus. - void closeFloater(bool app_quitting = false); + virtual void closeFloater(bool app_quitting = false); /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index c1959729d159a6f346c15a720420c6e9627fa2ed..86d205a9205084c42a56ddf51395b55fadbd91d4 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -1851,4 +1851,18 @@ void LLFloaterIMContainer::flashConversationItemWidget(const LLUUID& session_id, } } +void LLFloaterIMContainer::closeFloater(bool app_quitting/* = false*/) +{ + // Always unminimize before trying to close. + // Most of the time the user will never see this state. + setMinimized(FALSE); + + S32 conv_pane_width = mConversationsPane->getRect().getWidth(); + + // Save the conversations pane width before collapsing it. + gSavedPerAccountSettings.setS32("ConversationsListPaneWidth", conv_pane_width); + + LLFloater::closeFloater(app_quitting); +} + // EOF diff --git a/indra/newview/llfloaterimcontainer.h b/indra/newview/llfloaterimcontainer.h index 265ae8df4c5e3c55d9ea90619011122b80750503..569fa9faabca5a146d2a146cc98762b7f99070f6 100644 --- a/indra/newview/llfloaterimcontainer.h +++ b/indra/newview/llfloaterimcontainer.h @@ -109,6 +109,8 @@ class LLFloaterIMContainer void assignResizeLimits(); + /*virtual*/ void closeFloater(bool app_quitting = false); + private: typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t; avatarID_panel_map_t mSessions;