summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authormberezhnoy <mberezhnoy@productengine.com>2013-03-11 12:32:34 +0200
committermberezhnoy <mberezhnoy@productengine.com>2013-03-11 12:32:34 +0200
commit40f61ae60091909bae8229b7d0496154a87fefbf (patch)
treeed7906e708292943e5f9e983e85eef91513007c9 /indra
parent5957f1da916173d0e6463ebd3d74ff06a6df0c59 (diff)
CHUI-840 (Right clicking on unselected group conversation can have unpredictable results for menu options)
Diffstat (limited to 'indra')
-rwxr-xr-xindra/newview/llconversationview.cpp36
-rwxr-xr-xindra/newview/llconversationview.h2
2 files changed, 29 insertions, 9 deletions
diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp
index 74b348cd81..85c9a11b43 100755
--- a/indra/newview/llconversationview.cpp
+++ b/indra/newview/llconversationview.cpp
@@ -254,20 +254,38 @@ BOOL LLConversationViewSession::handleMouseDown( S32 x, S32 y, MASK mask )
//This node (conversation) was selected and a child (participant) was not
if(result && getRoot())
{
- if(getRoot()->getCurSelectedItem() == this)
- {
- LLConversationItem* item = dynamic_cast<LLConversationItem *>(getViewModelItem());
- LLUUID session_id = item? item->getUUID() : LLUUID();
+ selectConversationItem();
+ }
- LLFloaterIMContainer *im_container = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container");
- im_container->flashConversationItemWidget(session_id,false);
- im_container->selectConversationPair(session_id, false);
- im_container->collapseMessagesPane(false);
- }
+ return result;
+}
+
+BOOL LLConversationViewSession::handleRightMouseDown( S32 x, S32 y, MASK mask )
+{
+ BOOL result = LLFolderViewFolder::handleRightMouseDown(x, y, mask);
+
+ if(result)
+ {
+ selectConversationItem();
}
+
return result;
}
+void LLConversationViewSession::selectConversationItem()
+{
+ if(getRoot()->getCurSelectedItem() == this)
+ {
+ LLConversationItem* item = dynamic_cast<LLConversationItem *>(getViewModelItem());
+ LLUUID session_id = item? item->getUUID() : LLUUID();
+
+ LLFloaterIMContainer *im_container = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container");
+ im_container->flashConversationItemWidget(session_id,false);
+ im_container->selectConversationPair(session_id, false);
+ im_container->collapseMessagesPane(false);
+ }
+}
+
// virtual
S32 LLConversationViewSession::arrange(S32* width, S32* height)
{
diff --git a/indra/newview/llconversationview.h b/indra/newview/llconversationview.h
index 76d3d079ea..3eb2e63792 100755
--- a/indra/newview/llconversationview.h
+++ b/indra/newview/llconversationview.h
@@ -68,6 +68,7 @@ public:
/*virtual*/ BOOL postBuild();
/*virtual*/ void draw();
/*virtual*/ BOOL handleMouseDown( S32 x, S32 y, MASK mask );
+ /*virtual*/ BOOL handleRightMouseDown( S32 x, S32 y, MASK mask );
/*virtual*/ S32 arrange(S32* width, S32* height);
@@ -90,6 +91,7 @@ private:
void onCurrentVoiceSessionChanged(const LLUUID& session_id);
void startFlashing();
+ void selectConversationItem();
LLPanel* mItemPanel;
LLPanel* mCallIconLayoutPanel;