diff options
author | James Cook <james@lindenlab.com> | 2010-02-11 10:09:23 -0800 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2010-02-11 10:09:23 -0800 |
commit | 9dd7924b19651abf393f7b0dee632904a6b8e52a (patch) | |
tree | b22f8ca3ecdf4ec8e5288102912dccdd7289f51f /indra/newview/llpanelavatar.cpp | |
parent | 301f250c1cd77711c0234d8ed4089453712f834e (diff) | |
parent | 39fe664b97b946daf7984b946fede6f04ae731c4 (diff) |
Merge
Diffstat (limited to 'indra/newview/llpanelavatar.cpp')
-rw-r--r-- | indra/newview/llpanelavatar.cpp | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 500142aa67..1cc16a14bb 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -196,10 +196,9 @@ void LLPanelAvatarNotes::fillRightsData() childSetValue("map_check",LLRelationship::GRANT_MAP_LOCATION & rights ? TRUE : FALSE); childSetValue("objects_check",LLRelationship::GRANT_MODIFY_OBJECTS & rights ? TRUE : FALSE); - childSetEnabled("status_check",TRUE); - childSetEnabled("map_check",TRUE); - childSetEnabled("objects_check",TRUE); } + + enableCheckboxes(NULL != relation); } void LLPanelAvatarNotes::onCommitNotes() @@ -249,6 +248,17 @@ void LLPanelAvatarNotes::confirmModifyRights(bool grant, S32 rights) void LLPanelAvatarNotes::onCommitRights() { + const LLRelationship* buddy_relationship = + LLAvatarTracker::instance().getBuddyInfo(getAvatarId()); + + if (NULL == buddy_relationship) + { + // Lets have a warning log message instead of having a crash. EXT-4947. + llwarns << "Trying to modify rights for non-friend avatar. Skipped." << llendl; + return; + } + + S32 rights = 0; if(childGetValue("status_check").asBoolean()) @@ -258,8 +268,6 @@ void LLPanelAvatarNotes::onCommitRights() if(childGetValue("objects_check").asBoolean()) rights |= LLRelationship::GRANT_MODIFY_OBJECTS; - const LLRelationship* buddy_relationship = - LLAvatarTracker::instance().getBuddyInfo(getAvatarId()); bool allow_modify_objects = childGetValue("objects_check").asBoolean(); // if modify objects checkbox clicked @@ -303,9 +311,7 @@ void LLPanelAvatarNotes::resetControls() //Disable "Add Friend" button for friends. childSetEnabled("add_friend", TRUE); - childSetEnabled("status_check",FALSE); - childSetEnabled("map_check",FALSE); - childSetEnabled("objects_check",FALSE); + enableCheckboxes(false); } void LLPanelAvatarNotes::onAddFriendButtonClick() @@ -333,6 +339,13 @@ void LLPanelAvatarNotes::onShareButtonClick() //*TODO not implemented. } +void LLPanelAvatarNotes::enableCheckboxes(bool enable) +{ + childSetEnabled("status_check", enable); + childSetEnabled("map_check", enable); + childSetEnabled("objects_check", enable); +} + LLPanelAvatarNotes::~LLPanelAvatarNotes() { if(getAvatarId().notNull()) @@ -347,6 +360,9 @@ LLPanelAvatarNotes::~LLPanelAvatarNotes() void LLPanelAvatarNotes::changed(U32 mask) { childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId())); + + // update rights to avoid have checkboxes enabled when friendship is terminated. EXT-4947. + fillRightsData(); } // virtual |