From 99aad90f63f0bf58f71a283447959e55833905db Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Tue, 9 Feb 2010 16:17:53 +0200
Subject: [PATCH] Fixed normal bug EXT-5068 - Me panel opens in "edit" mode
 every time.

--HG--
branch : product-engine
---
 indra/newview/app_settings/settings.xml | 11 +++++++++++
 indra/newview/llpanelme.cpp             | 17 ++++++++---------
 indra/newview/llsidetray.h              |  2 ++
 3 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index a32f0d046e9..db4e0b5afd3 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -4633,6 +4633,17 @@
       <key>Value</key>
       <integer>410</integer>
     </map>
+    <key>MePanelOpened</key>
+    <map>
+      <key>Comment</key>
+      <string>Indicates that Me Panel was opened at least once after Viewer was installed</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <real>0</real>
+    </map>
     <key>MigrateCacheDirectory</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index a68552a91e9..3504cbd1ef9 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -41,6 +41,7 @@
 #include "llsidetray.h"
 #include "lltabcontainer.h"
 #include "lltexturectrl.h"
+#include "llviewercontrol.h"
 
 #define PICKER_SECOND_LIFE "2nd_life_pic"
 #define PICKER_FIRST_LIFE "real_world_pic"
@@ -70,18 +71,16 @@ void LLPanelMe::onOpen(const LLSD& key)
 {
 	LLPanelProfile::onOpen(key);
 
-	if(key.isUndefined() || key.has("edit_my_profile"))
+	// Force Edit My Profile if this is the first time when user is opening Me Panel (EXT-5068)
+	bool opened = gSavedSettings.getBOOL("MePanelOpened");
+	// In some cases Side Tray my call onOpen() twice, check getCollapsed() to be sure this
+	// is the last time onOpen() is called
+	if( !opened && !LLSideTray::getInstance()->getCollapsed() )
 	{
-		// Open Edit My Profile panel by default (through Side Tray -> My Profile) (EXT-4823)
 		buildEditPanel();
 		openPanel(mEditPanel, getAvatarId());
-	}
-	else if(mEditPanel)
-	{
-		// When opening Me Panel through Side Tray LLPanelMe::onOpen() is called twice.
-		// First time key can be undefined and second time - key may contain some data.
-		// Lets close Edit Panel if key does contain some data on second call.
-		closePanel(mEditPanel);
+
+		gSavedSettings.setBOOL("MePanelOpened", true);
 	}
 }
 
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
index b1c8675793c..140a9c818a7 100644
--- a/indra/newview/llsidetray.h
+++ b/indra/newview/llsidetray.h
@@ -139,6 +139,8 @@ class LLSideTray : public LLPanel, private LLDestroyClass<LLSideTray>
 
 	LLPanel*	getButtonsPanel() { return mButtonsPanel; }
 
+	bool		getCollapsed() { return mCollapsed; }
+
 public:
 	virtual ~LLSideTray(){};
 
-- 
GitLab