From 663d0a29f2df640bfe5d73b4b371bc537dac38a2 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Thu, 18 Jul 2013 23:19:34 -0400 Subject: [PATCH] Attempt to satisfy Issue 82: Idle status in nametags doesn't always update properly --- indra/newview/llimview.cpp | 5 +++++ indra/newview/llvoavatar.cpp | 24 +++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 837b76ff8..c04cd8348 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -61,6 +61,7 @@ #include "llviewermenu.h" #include "llviewermessage.h" #include "llviewerwindow.h" +#include "llvoavatar.h" // For mIdleTimer reset #include "llnotify.h" #include "llviewerregion.h" @@ -79,6 +80,8 @@ LLIMMgr* gIMMgr = NULL; // // Helper Functions // +LLVOAvatar* find_avatar_from_object(const LLUUID& id); + LLColor4 agent_chat_color(const LLUUID& id, const std::string& name, bool local_chat) { if (id.isNull() || (name == SYSTEM_FROM)) @@ -517,6 +520,8 @@ void LLIMMgr::addMessage( } } + if (LLVOAvatar* from_avatar = find_avatar_from_object(target_id)) from_avatar->mIdleTimer.reset(); // Not idle, message sent to somewhere + // create IM window as necessary if(!floater) { diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 0164c722c..9865e666c 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -5419,16 +5419,20 @@ BOOL LLVOAvatar::processSingleAnimationStateChange( const LLUUID& anim_id, BOOL { sitDown(TRUE); } - else if(anim_id == ANIM_AGENT_SNAPSHOT && announce_snapshots) + else if(anim_id == ANIM_AGENT_SNAPSHOT) { - std::string name; - LLAvatarNameCache::getPNSName(mID, name); - LLChat chat; - chat.mFromName = name; - chat.mText = name + " " + LLTrans::getString("took_a_snapshot") + "."; - chat.mURL = llformat("secondlife:///app/agent/%s/about",mID.asString().c_str()); - chat.mSourceType = CHAT_SOURCE_SYSTEM; - LLFloaterChat::addChat(chat); + mIdleTimer.reset(); // Snapshot, not idle + if (announce_snapshots) + { + std::string name; + LLAvatarNameCache::getPNSName(mID, name); + LLChat chat; + chat.mFromName = name; + chat.mText = name + " " + LLTrans::getString("took_a_snapshot") + "."; + chat.mURL = llformat("secondlife:///app/agent/%s/about",mID.asString().c_str()); + chat.mSourceType = CHAT_SOURCE_SYSTEM; + LLFloaterChat::addChat(chat); + } } @@ -6417,6 +6421,7 @@ BOOL LLVOAvatar::detachObject(LLViewerObject *viewer_object) //----------------------------------------------------------------------------- void LLVOAvatar::sitDown(BOOL bSitting) { + if (mIsSitting != bSitting) mIdleTimer.reset(); // Sitting changed, not idle mIsSitting = bSitting; if (isSelf()) { @@ -7333,6 +7338,7 @@ void LLVOAvatar::addChat(const LLChat& chat) } mChatTimer.reset(); + mIdleTimer.reset(); // Also reset idle timer } void LLVOAvatar::clearChat()