From 879675d986e8167db880586598358e6a80147108 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan Date: Thu, 4 Feb 2010 12:55:52 +0200 Subject: 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 ea66ef7d2c..a68552a91e 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 c73ade53c8..b5d85dfd4b 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 bcf4bdd0ec..f1aa3f10f8 100644 --- a/indra/newview/llpanelprofile.h +++ b/indra/newview/llpanelprofile.h @@ -55,6 +55,8 @@ public: virtual void openPanel(LLPanel* panel, const LLSD& params); + virtual void closePanel(LLPanel* panel); + S32 notifyParent(const LLSD& info); protected: -- cgit v1.2.3