diff --git a/indra/newview/llfloaterprofile.cpp b/indra/newview/llfloaterprofile.cpp
index 216bcb0580f6b75de0dd2ba91975f6515346abdc..f2863e1e27ebec2901aa9ee8007fdc45c66d241e 100644
--- a/indra/newview/llfloaterprofile.cpp
+++ b/indra/newview/llfloaterprofile.cpp
@@ -54,12 +54,6 @@ void LLFloaterProfile::onOpen(const LLSD& key)
 {
     mPanelProfile->onOpen(key);
 
-    if (mAvatarId == gAgentID)
-    {
-        getChild<LLUICtrl>("ok_btn")->setVisible(TRUE);
-        getChild<LLUICtrl>("cancel_btn")->setVisible(TRUE);
-    }
-
     // Update the avatar name.
     mNameCallbackConnection = LLAvatarNameCache::get(mAvatarId, boost::bind(&LLFloaterProfile::onAvatarNameCache, this, _1, _2));
 }
@@ -91,11 +85,7 @@ void LLFloaterProfile::showClassified(const LLUUID& classified_id, bool edit)
 
 void LLFloaterProfile::onOKBtn()
 {
-    if (mAvatarId == gAgentID)
-    {
-        mPanelProfile->apply();
-    }
-
+    mPanelProfile->apply();
     closeFloater();
 }
 
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index 6c0b1b90470e68bb2460265458f7681f4ff587db..a60493a3609929569255a281f24aa5bccc6dfb2b 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -1514,6 +1514,13 @@ void LLPanelProfile::onTabChange()
     {
         active_panel->updateData();
     }
+    updateBtnsVisibility();
+}
+
+void LLPanelProfile::updateBtnsVisibility()
+{
+    getChild<LLUICtrl>("ok_btn")->setVisible(((getSelfProfile() && !getEmbedded()) || isNotesTabSelected()));
+    getChild<LLUICtrl>("cancel_btn")->setVisible(((getSelfProfile() && !getEmbedded()) || isNotesTabSelected()));
 }
 
 void LLPanelProfile::onOpen(const LLSD& key)
@@ -1557,12 +1564,7 @@ void LLPanelProfile::onOpen(const LLSD& key)
     resetLoading();
     updateData();
 
-    // Only show commit buttons on own profile on floater version
-    if (getSelfProfile() && !getEmbedded())
-    {
-        getChild<LLUICtrl>("ok_btn")->setVisible(TRUE);
-        getChild<LLUICtrl>("cancel_btn")->setVisible(TRUE);
-    }
+    updateBtnsVisibility();
 
     // KC - Not handling pick and classified opening thru onOpen
     // because this would make unique profile floaters per slurl
@@ -1597,6 +1599,10 @@ void LLPanelProfile::apply()
 
         //KC - Classifieds handles this itself
     }
+    else
+    {
+        mPanelNotes->apply();
+    }
 }
 
 void LLPanelProfile::showPick(const LLUUID& pick_id)
@@ -1613,6 +1619,10 @@ bool LLPanelProfile::isPickTabSelected()
 	return (mTabContainer->getCurrentPanel() == mPanelPicks);
 }
 
+bool LLPanelProfile::isNotesTabSelected()
+{
+	return (mTabContainer->getCurrentPanel() == mPanelNotes);
+}
 
 void LLPanelProfile::showClassified(const LLUUID& classified_id, bool edit)
 {
diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h
index 7d22b64dbec718a720adee64a85f7c683390b5cd..9eeb926549bce50d004cc2877a3aa6b3764606be 100644
--- a/indra/newview/llpanelprofile.h
+++ b/indra/newview/llpanelprofile.h
@@ -409,6 +409,9 @@ class LLPanelProfile
 
     void showPick(const LLUUID& pick_id = LLUUID::null);
     bool isPickTabSelected();
+    bool isNotesTabSelected();
+
+    void updateBtnsVisibility();
 
     void showClassified(const LLUUID& classified_id = LLUUID::null, bool edit = false);