summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorMaximB ProductEngine <mberezhnoy@productengine.com>2012-11-15 10:38:21 +0200
committerMaximB ProductEngine <mberezhnoy@productengine.com>2012-11-15 10:38:21 +0200
commitdbc37f6ca74dba6c6d5194e0397d5cfe6f570c1d (patch)
tree805d12e4dc646f8bce329dc9913e1239f334b438 /indra
parentd75824d520ba1965e48196f8b230ded0f15c5841 (diff)
CHUI-397 (Delay in removing names from participant list in nearby chat)
CHUI-440 (Nearby chat participant list does not clear after teleport when conversation floater is closed/minimized) fixed
Diffstat (limited to 'indra')
-rwxr-xr-xindra/llui/llfolderviewitem.h1
-rwxr-xr-xindra/newview/llconversationview.cpp14
-rw-r--r--indra/newview/llspeakers.cpp8
-rw-r--r--indra/newview/llspeakers.h3
4 files changed, 25 insertions, 1 deletions
diff --git a/indra/llui/llfolderviewitem.h b/indra/llui/llfolderviewitem.h
index b157aabdcf..152ca242e1 100755
--- a/indra/llui/llfolderviewitem.h
+++ b/indra/llui/llfolderviewitem.h
@@ -118,6 +118,7 @@ protected:
// For now assuming all colors are the same in derived classes.
static LLUIColor sFgColor;
+ static LLUIColor sFgDisabledColor;
static LLUIColor sHighlightBgColor;
static LLUIColor sHighlightFgColor;
static LLUIColor sFocusOutlineColor;
diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp
index 53392ac372..d1649a93b1 100755
--- a/indra/newview/llconversationview.cpp
+++ b/indra/newview/llconversationview.cpp
@@ -409,6 +409,7 @@ BOOL LLConversationViewParticipant::postBuild()
void LLConversationViewParticipant::draw()
{
static LLUIColor sFgColor = LLUIColorTable::instance().getColor("MenuItemEnabledColor", DEFAULT_WHITE);
+ static LLUIColor sFgDisabledColor = LLUIColorTable::instance().getColor("MenuItemDisabledColor", DEFAULT_WHITE);
static LLUIColor sHighlightFgColor = LLUIColorTable::instance().getColor("MenuItemHighlightFgColor", DEFAULT_WHITE);
static LLUIColor sHighlightBgColor = LLUIColorTable::instance().getColor("MenuItemHighlightBgColor", DEFAULT_WHITE);
static LLUIColor sFocusOutlineColor = LLUIColorTable::instance().getColor("InventoryFocusOutlineColor", DEFAULT_WHITE);
@@ -421,7 +422,18 @@ void LLConversationViewParticipant::draw()
F32 y = (F32)getRect().getHeight() - font->getLineHeight() - (F32)mTextPad;
F32 text_left = (F32)getLabelXPos();
- LLColor4 color = mIsSelected ? sHighlightFgColor : sFgColor;
+
+ LLColor4 color;
+ LLLocalSpeakerMgr *speakerMgr = LLLocalSpeakerMgr::getInstance();
+
+ if (speakerMgr && speakerMgr->isSpeakerToBeRemoved(mUUID))
+ {
+ color = sFgDisabledColor;
+ }
+ else
+ {
+ color = mIsSelected ? sHighlightFgColor : sFgColor;
+ }
drawHighlight(show_context, mIsSelected, sHighlightBgColor, sFocusOutlineColor, sMouseOverColor);
drawLabel(font, text_left, y, color, right_x);
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp
index 5036334bdd..88f29d7587 100644
--- a/indra/newview/llspeakers.cpp
+++ b/indra/newview/llspeakers.cpp
@@ -254,6 +254,10 @@ bool LLSpeakersDelayActionsStorage::onTimerActionCallback(const LLUUID& speaker_
return true;
}
+bool LLSpeakersDelayActionsStorage::isTimerStarted(const LLUUID& speaker_id)
+{
+ return (mActionTimersMap.size() > 0) && (mActionTimersMap.find(speaker_id) != mActionTimersMap.end());
+}
//
// ModerationResponder
@@ -603,6 +607,10 @@ const LLUUID LLSpeakerMgr::getSessionID()
return mVoiceChannel->getSessionID();
}
+bool LLSpeakerMgr::isSpeakerToBeRemoved(const LLUUID& speaker_id)
+{
+ return mSpeakerDelayRemover && mSpeakerDelayRemover->isTimerStarted(speaker_id);
+}
void LLSpeakerMgr::setSpeakerTyping(const LLUUID& speaker_id, BOOL typing)
{
diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h
index 8ab08661d3..7d518fe07b 100644
--- a/indra/newview/llspeakers.h
+++ b/indra/newview/llspeakers.h
@@ -193,6 +193,8 @@ public:
void unsetActionTimer(const LLUUID& speaker_id);
void removeAllTimers();
+
+ bool isTimerStarted(const LLUUID& speaker_id);
private:
/**
* Callback of the each instance of LLSpeakerActionTimer.
@@ -237,6 +239,7 @@ public:
void getSpeakerList(speaker_list_t* speaker_list, BOOL include_text);
LLVoiceChannel* getVoiceChannel() { return mVoiceChannel; }
const LLUUID getSessionID();
+ bool isSpeakerToBeRemoved(const LLUUID& speaker_id);
/**
* Removes avaline speaker.