summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llappviewer.cpp12
-rw-r--r--indra/newview/llappviewer.h1
-rw-r--r--indra/newview/llviewermenu.cpp11
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml6
4 files changed, 30 insertions, 0 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 1174d108d2..047e9b1880 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -622,6 +622,7 @@ LLAppViewer::LLAppViewer() :
mPurgeOnExit(false),
mSecondInstance(false),
mSavedFinalSnapshot(false),
+ mSavePerAccountSettings(false), // don't save settings on logout unless login succeeded.
mForceGraphicsDetail(false),
mQuitRequested(false),
mLogoutRequestSent(false),
@@ -1742,6 +1743,13 @@ bool LLAppViewer::cleanup()
{
llinfos << "Not saving per-account settings; don't know the account name yet." << llendl;
}
+ // Only save per account settings if the previous login succeeded, otherwise
+ // we might end up with a cleared out settings file in case a previous login
+ // failed after loading per account settings.
+ else if (!mSavePerAccountSettings)
+ {
+ llinfos << "Not saving per-account settings; last login was not successful." << llendl;
+ }
else
{
gSavedPerAccountSettings.saveToFile(gSavedSettings.getString("PerAccountSettingsFile"), TRUE);
@@ -4956,6 +4964,10 @@ void LLAppViewer::handleLoginComplete()
mOnLoginCompleted();
writeDebugInfo();
+
+ // we logged in successfully, so save settings on logout
+ llinfos << "Login successful, per account settings will be saved on log out." << llendl;
+ mSavePerAccountSettings=true;
}
// *TODO - generalize this and move DSO wrangling to a helper class -brad
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index 71a7868191..a3d19301e7 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -251,6 +251,7 @@ private:
bool mPurgeOnExit;
bool mSavedFinalSnapshot;
+ bool mSavePerAccountSettings; // only save per account settings if login succeeded
bool mForceGraphicsDetail;
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 7481414b5c..3de0420468 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -5299,6 +5299,14 @@ void toggle_debug_menus(void*)
// }
//
+class LLCommunicateBlockList : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ return true;
+ }
+};
class LLWorldSetHomeLocation : public view_listener_t
{
@@ -8084,6 +8092,9 @@ void initialize_menus()
// Me > Movement
view_listener_t::addMenu(new LLAdvancedAgentFlyingInfo(), "Agent.getFlying");
+
+ // Communicate
+ view_listener_t::addMenu(new LLCommunicateBlockList(), "Communicate.BlockList");
// World menu
view_listener_t::addMenu(new LLWorldAlwaysRun(), "World.AlwaysRun");
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 5ba566b175..ac018adf02 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -291,6 +291,12 @@
function="SideTray.PanelPeopleTab"
parameter="nearby_panel" />
</menu_item_call>
+ <menu_item_call
+ label="Block List"
+ name="Block List">
+ <menu_item_call.on_click
+ function="Communicate.BlockList" />
+ </menu_item_call>
</menu>
<menu
create_jump_keys="true"