From 879675d986e8167db880586598358e6a80147108 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Thu, 4 Feb 2010 12:55:52 +0200
Subject: [PATCH] Fixed critical bug EXT-4823 - [NUX] Default My Profile to
 Edit Mode

--HG--
branch : product-engine
---
 indra/newview/llpanelme.cpp      | 14 ++++++++++++++
 indra/newview/llpanelprofile.cpp | 16 +++++++++++-----
 indra/newview/llpanelprofile.h   |  2 ++
 3 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index ea66ef7d2c1..a68552a91e9 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -69,6 +69,20 @@ BOOL LLPanelMe::postBuild()
 void LLPanelMe::onOpen(const LLSD& key)
 {
 	LLPanelProfile::onOpen(key);
+
+	if(key.isUndefined() || key.has("edit_my_profile"))
+	{
+		// 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);
+	}
 }
 
 bool LLPanelMe::notifyChildren(const LLSD& info)
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index c73ade53c8f..b5d85dfd4bf 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -197,11 +197,7 @@ void LLPanelProfile::togglePanel(LLPanel* panel, const LLSD& key)
 	}
 	else 
 	{
-		panel->setVisible(FALSE);
-		if (panel->getParent() == this) 
-		{
-			removeChild(panel);
-		}
+		closePanel(panel);
 
 		getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());
 	}
@@ -248,6 +244,16 @@ void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params)
 	panel->setRect(new_rect);
 }
 
+void LLPanelProfile::closePanel(LLPanel* panel)
+{
+	panel->setVisible(FALSE);
+
+	if (panel->getParent() == this) 
+	{
+		removeChild(panel);
+	}
+}
+
 S32 LLPanelProfile::notifyParent(const LLSD& info)
 {
 	std::string action = info["action"];
diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h
index bcf4bdd0ec2..f1aa3f10f86 100644
--- a/indra/newview/llpanelprofile.h
+++ b/indra/newview/llpanelprofile.h
@@ -55,6 +55,8 @@ class LLPanelProfile : public LLPanel
 
 	virtual void openPanel(LLPanel* panel, const LLSD& params);
 
+	virtual void closePanel(LLPanel* panel);
+
 	S32 notifyParent(const LLSD& info);
 
 protected:
-- 
GitLab