summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul ProductEngine <pguslisty@productengine.com>2011-12-30 18:32:04 +0200
committerPaul ProductEngine <pguslisty@productengine.com>2011-12-30 18:32:04 +0200
commitcbeaf3d7a0dd7bdb739b8e72addd41410940a8f5 (patch)
tree8628dc1549e832e199d0cd12dc76dda42c1adc22
parent0380372a54e98f582fbe995537f4c5e0ec700865 (diff)
EXP-1586 FIXED (Nearby chat window no longer persists between viewer startups)
- Visibility state of chat floater is saved between sessions - Also visibility state of chat history in nearby chat floater is saved too
-rw-r--r--indra/newview/llnearbychatbar.cpp25
-rw-r--r--indra/newview/llnearbychatbar.h5
-rw-r--r--indra/newview/skins/default/xui/en/floater_chat_bar.xml1
3 files changed, 31 insertions, 0 deletions
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index eec0965384..cb08ca8862 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -109,6 +109,17 @@ BOOL LLNearbyChatBar::postBuild()
mOutputMonitor = getChild<LLOutputMonitorCtrl>("chat_zone_indicator");
mOutputMonitor->setVisible(FALSE);
+ gSavedSettings.declareBOOL("nearbychat_history_visibility", mNearbyChat->getVisible(), "Visibility state of nearby chat history", TRUE);
+
+ // If mVisibilityControl is not empty it means that the visibility state of floater is saved between sessions,
+ // i.e. save_visibility="true" for this floater.
+ // So if we need to restore visibility state of floater we also need to restore visibility state of nearby chat history.
+ if (!mVisibilityControl.empty())
+ {
+ // restore visibility of nearby chat history
+ mNearbyChat->setVisible(gSavedSettings.getBOOL("nearbychat_history_visibility"));
+ }
+
// Register for font change notifications
LLViewerChat::setFontChangedCallback(boost::bind(&LLNearbyChatBar::onChatFontChange, this, _1));
@@ -141,6 +152,18 @@ bool LLNearbyChatBar::applyRectControl()
return rect_controlled;
}
+void LLNearbyChatBar::saveChatHistoryVisibility()
+{
+ // save visibility state of nearby chat history panel if
+ // visibility of nearby chat floater is saved, i.e. save_visisbility="true"
+ // (if save_visisbility="true", mVisibilityControl == "floater_vis_chat_bar")
+ if (mVisibilityControl.size() > 1)
+ {
+ // save visibility of nearby chat history
+ gSavedSettings.setBOOL("nearbychat_history_visibility", mNearbyChat->getVisible());
+ }
+}
+
void LLNearbyChatBar::onChatFontChange(LLFontGL* fontp)
{
// Update things with the new font whohoo
@@ -413,6 +436,8 @@ void LLNearbyChatBar::onToggleNearbyChatPanel()
enableResizeCtrls(true);
storeRectControl();
}
+
+ saveChatHistoryVisibility();
}
void LLNearbyChatBar::setMinimized(BOOL b)
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index baf12a06ea..84040b8aab 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -92,6 +92,11 @@ protected:
LLLocalSpeakerMgr* mSpeakerMgr;
S32 mExpandedHeight;
+private:
+
+ // Saves visibility of chat history panel
+ // if save_visibility="true"
+ void saveChatHistoryVisibility();
};
#endif
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 675f78d911..63992462b3 100644
--- a/indra/newview/skins/default/xui/en/floater_chat_bar.xml
+++ b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
@@ -9,6 +9,7 @@
single_instance="true"
title="NEARBY CHAT"
save_rect="true"
+ save_visibility="true"
can_close="true"
can_minimize="true"
help_topic="chat_bar"