From 3ae9124ce555dada3d14ede28a6658cddcfa53b8 Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Wed, 20 Feb 2013 19:06:49 -0800 Subject: CHUI-395 : Fixed! Check the moderator status in the group data when loading the group list --- indra/newview/llspeakers.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index a2d8874cea..05df7261e1 100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -557,7 +557,8 @@ void LLSpeakerMgr::updateSpeakerList() // Add only the members who are online if (member->getOnlineStatus() == "Online") { - setSpeaker(member_it->first, "", LLSpeaker::STATUS_VOICE_ACTIVE, LLSpeaker::SPEAKER_AGENT); + LLPointer speakerp = setSpeaker(member_it->first, "", LLSpeaker::STATUS_VOICE_ACTIVE, LLSpeaker::SPEAKER_AGENT); + speakerp->mIsModerator = ((member->getAgentPowers() & GP_SESSION_MODERATOR) == GP_SESSION_MODERATOR); } ++member_it; } -- cgit v1.2.3 From c48e644220ad1708a93987faf9ac96bcdd097dec Mon Sep 17 00:00:00 2001 From: AlexanderP ProductEngine Date: Wed, 20 Feb 2013 17:11:50 +0200 Subject: CHUI-773 ADD FIX Conversation line item does not flash for unselected conversation when Flash Toolbar Button preference is selected : repair case "open and not on top" --- indra/newview/llimview.cpp | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index cf6a215970..d69bd89f13 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -199,8 +199,14 @@ void on_new_message(const LLSD& msg) // execution of the action LLFloaterIMContainer* im_box = LLFloaterReg::getTypedInstance("im_container"); - LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::getConversation(session_id); + if (im_box->isFrontmost() && im_box->getSelectedSession() == session_id) + { + return; + } + + LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::getConversation(session_id); + //session floater not focused (visible or not) bool session_floater_not_focused = session_floater && !session_floater->hasFocus(); @@ -250,25 +256,21 @@ void on_new_message(const LLSD& msg) else if ("flash" == action) { - if (conversation_floater_not_focused) + if (!gAgent.isDoNotDisturb()) { - if(!session_floater_is_open && !gAgent.isDoNotDisturb()) - { - //User is not focused on conversation containing the message - gToolBarView->flashCommand(LLCommandId("chat"), true); - } - - im_box->flashConversationItemWidget(session_id, true); - - //If a DND message, allow notification to be stored so upon DND exit - //useMostItrusiveIMNotification will be called to notify user a message exists - if(session_id.notNull() - && participant_id.notNull() - && gAgent.isDoNotDisturb()) - { - LLAvatarNameCache::get(participant_id, boost::bind(&on_avatar_name_cache_toast, _1, _2, msg)); - } - } + im_box->flashConversationItemWidget(session_id, true); + if(conversation_floater_not_focused) + { + //User is not focused on conversation containing the message + gToolBarView->flashCommand(LLCommandId("chat"), true); + } + } + else if(session_id.notNull() && participant_id.notNull()) + { + //If a DND message, allow notification to be stored so upon DND exit + //useMostItrusiveIMNotification will be called to notify user a message exists + LLAvatarNameCache::get(participant_id, boost::bind(&on_avatar_name_cache_toast, _1, _2, msg)); + } } else if("openconversations" == action && !session_floater_is_open) -- cgit v1.2.3 From 8ed2072aa25a99d1da6c18de990bf155e65dc1ca Mon Sep 17 00:00:00 2001 From: AlexanderP ProductEngine Date: Wed, 20 Feb 2013 13:47:20 +0200 Subject: CHUI-768 ADD FIX Conversation panel resize issue with message panel collapse : correctly assign of a left panel resize limits --- indra/newview/llfloaterimcontainer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index 5213413aea..72febcf431 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -758,7 +758,9 @@ void LLFloaterIMContainer::assignResizeLimits() // between the panels are merged into one S32 number_of_visible_borders = llmin((is_conv_pane_expanded? 2 : 0) + (is_msg_pane_expanded? 2 : 0), 3); S32 summary_width_of_visible_borders = number_of_visible_borders * LLPANEL_BORDER_WIDTH; - S32 conv_pane_current_width = is_conv_pane_expanded? mConversationsPane->getRect().getWidth() : mConversationsPane->getMinDim(); + S32 conv_pane_current_width = is_msg_pane_expanded + ? mConversationsPane->getRect().getWidth() + : (is_conv_pane_expanded? mConversationsPane->getExpandedMinDim() : mConversationsPane->getMinDim()); S32 msg_pane_min_width = is_msg_pane_expanded ? mMessagesPane->getExpandedMinDim() : 0; S32 new_min_width = conv_pane_current_width + msg_pane_min_width + summary_width_of_visible_borders; -- cgit v1.2.3 From bfdd9b2e134110c7ed7b68925f78aac721e66905 Mon Sep 17 00:00:00 2001 From: AlexanderP ProductEngine Date: Tue, 19 Feb 2013 23:38:57 +0200 Subject: CHUI-756 Minimized chat opens when start new conversation : saving of the minimized state of an session floater --- indra/newview/llfloaterimcontainer.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index 72febcf431..60e306eef4 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -1384,7 +1384,9 @@ BOOL LLFloaterIMContainer::selectConversationPair(const LLUUID& session_id, bool // Set the focus on the selected floater if (!session_floater->hasFocus()) { + BOOL is_minimized = session_floater->isMinimized(); session_floater->setFocus(TRUE); + session_floater->setMinimized(is_minimized); } } -- cgit v1.2.3 From 2dfdd050d487df6aaa7a169208e02b30a313127f Mon Sep 17 00:00:00 2001 From: maksymsproductengine Date: Wed, 20 Feb 2013 16:47:54 +0200 Subject: CHUI-784 FIXED Crash when closing expanded group chat --- indra/newview/llfloaterimcontainer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index 60e306eef4..c8088588da 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -1526,10 +1526,10 @@ bool LLFloaterIMContainer::removeConversationListItem(const LLUUID& uuid, bool c if (widget) { is_widget_selected = widget->isSelected(); - new_selection = mConversationsRoot->getNextFromChild(widget); + new_selection = mConversationsRoot->getNextFromChild(widget, FALSE); if (!new_selection) { - new_selection = mConversationsRoot->getPreviousFromChild(widget); + new_selection = mConversationsRoot->getPreviousFromChild(widget, FALSE); } widget->destroyView(); } -- cgit v1.2.3 From 1b464fae878550c22c98d9773e33be289447b503 Mon Sep 17 00:00:00 2001 From: Mnikolenko ProductEngine Date: Thu, 21 Feb 2013 15:06:06 +0200 Subject: CHUI-783 FIXED Load logs from conversation.log file after changing preferences. --- indra/newview/llconversationlog.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llconversationlog.cpp b/indra/newview/llconversationlog.cpp index fc3bc8551c..b777edba77 100644 --- a/indra/newview/llconversationlog.cpp +++ b/indra/newview/llconversationlog.cpp @@ -206,6 +206,8 @@ void LLConversationLog::enableLogging(S32 log_mode) mLoggingEnabled = log_mode > 0; if (log_mode > 0) { + mConversations.clear(); + loadFromFile(getFileName()); LLIMMgr::instance().addSessionObserver(this); mNewMessageSignalConnection = LLIMModel::instance().addNewMsgCallback(boost::bind(&LLConversationLog::onNewMessageReceived, this, _1)); -- cgit v1.2.3 From f79f9f111b0db67cacfe9bbe453737f3979b3ba9 Mon Sep 17 00:00:00 2001 From: Mnikolenko ProductEngine Date: Thu, 21 Feb 2013 15:11:32 +0200 Subject: CHUI-774 FIXED Play a sound even if the conversation floater is open and conversation with user is the active. --- indra/newview/llnotificationofferhandler.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp index a2bd96f35a..2657b84ef3 100644 --- a/indra/newview/llnotificationofferhandler.cpp +++ b/indra/newview/llnotificationofferhandler.cpp @@ -96,8 +96,21 @@ bool LLOfferHandler::processNotification(const LLNotificationPtr& notification) LLUUID from_id = notification->getPayload()["from_id"]; + //Will not play a notification sound for inventory and teleport offer based upon chat preference + bool playSound = (!notification->isDND() + && ((notification->getName() == "UserGiveItem" + && gSavedSettings.getBOOL("PlaySoundInventoryOffer")) + || (notification->getName() == "TeleportOffered" + && gSavedSettings.getBOOL("PlaySoundTeleportOffer")))); + + if(playSound) + { + notification->playSound(); + } + LLHandlerUtil::spawnIMSession(name, from_id); LLHandlerUtil::addNotifPanelToIM(notification); + } if (!notification->canShowToast()) @@ -119,17 +132,6 @@ bool LLOfferHandler::processNotification(const LLNotificationPtr& notification) if(channel) channel->addToast(p); - //Will not play a notification sound for inventory and teleport offer based upon chat preference - bool playSound = (!notification->isDND() - && ((notification->getName() == "UserGiveItem" - && gSavedSettings.getBOOL("PlaySoundInventoryOffer")) - || (notification->getName() == "TeleportOffered" - && gSavedSettings.getBOOL("PlaySoundTeleportOffer")))); - - if(playSound) - { - notification->playSound(); - } } if (notification->canLogToIM()) -- cgit v1.2.3 From 3f71eabbbbe4ee54c29b0e3598569cc484505258 Mon Sep 17 00:00:00 2001 From: Mnikolenko ProductEngine Date: Fri, 22 Feb 2013 14:02:14 +0200 Subject: CHUI-702 FIXED Calling requestArrange() in refresh() has to fix the problem. --- indra/newview/llconversationview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index 5ac6353daa..5ff6841646 100755 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -375,7 +375,7 @@ void LLConversationViewSession::refresh() } } } - + requestArrange(); // Do the regular upstream refresh LLFolderViewFolder::refresh(); } -- cgit v1.2.3 From 5284da1acee1c92f2d465088cee7488d5de2c8b3 Mon Sep 17 00:00:00 2001 From: Mnikolenko ProductEngine Date: Fri, 22 Feb 2013 14:23:10 +0200 Subject: CHUI-781 FIXED Select conversation if user selects participant that belongs to this conversation. --- indra/newview/llconversationview.cpp | 48 +++++++++++++++++++++++++++--------- indra/newview/llconversationview.h | 2 +- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp index 5ff6841646..441de2e1a5 100755 --- a/indra/newview/llconversationview.cpp +++ b/indra/newview/llconversationview.cpp @@ -241,20 +241,23 @@ void LLConversationViewSession::draw() BOOL LLConversationViewSession::handleMouseDown( S32 x, S32 y, MASK mask ) { - LLConversationItem* item = dynamic_cast(getViewModelItem()); - LLUUID session_id = item? item->getUUID() : LLUUID(); - //Will try to select a child node and then itself (if a child was not selected) + //Will try to select a child node and then itself (if a child was not selected) BOOL result = LLFolderViewFolder::handleMouseDown(x, y, mask); //This node (conversation) was selected and a child (participant) was not - if(result && getRoot()->getCurSelectedItem() == this) - { - LLFloaterIMContainer *im_container = LLFloaterReg::getTypedInstance("im_container"); - im_container->flashConversationItemWidget(session_id,false); - im_container->selectConversationPair(session_id, false); - im_container->collapseMessagesPane(false); - } - + if(result && getRoot()) + { + if(getRoot()->getCurSelectedItem() == this) + { + LLConversationItem* item = dynamic_cast(getViewModelItem()); + LLUUID session_id = item? item->getUUID() : LLUUID(); + + LLFloaterIMContainer *im_container = LLFloaterReg::getTypedInstance("im_container"); + im_container->flashConversationItemWidget(session_id,false); + im_container->selectConversationPair(session_id, false); + im_container->collapseMessagesPane(false); + } + } return result; } @@ -536,7 +539,7 @@ void LLConversationViewParticipant::addToFolder(LLFolderViewFolder* folder) LLFolderViewItem::addToFolder(folder); // Retrieve the folder (conversation) UUID, which is also the speaker session UUID - LLConversationItem* vmi = this->getParentFolder() ? dynamic_cast(this->getParentFolder()->getViewModelItem()) : NULL; + LLConversationItem* vmi = getParentFolder() ? dynamic_cast(getParentFolder()->getViewModelItem()) : NULL; if (vmi) { addToSession(vmi->getUUID()); @@ -557,6 +560,27 @@ void LLConversationViewParticipant::onInfoBtnClick() LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mUUID)); } +BOOL LLConversationViewParticipant::handleMouseDown( S32 x, S32 y, MASK mask ) +{ + BOOL result = LLFolderViewItem::handleMouseDown(x, y, mask); + + if(result && getRoot()) + { + if(getRoot()->getCurSelectedItem() == this) + { + LLConversationItem* vmi = getParentFolder() ? dynamic_cast(getParentFolder()->getViewModelItem()) : NULL; + LLUUID session_id = vmi? vmi->getUUID() : LLUUID(); + + LLFloaterIMContainer *im_container = LLFloaterReg::getTypedInstance("im_container"); + LLFloaterIMSessionTab* session_floater = LLFloaterIMSessionTab::findConversation(session_id); + im_container->flashConversationItemWidget(session_id,false); + im_container->selectFloater(session_floater); + im_container->collapseMessagesPane(false); + } + } + return result; +} + void LLConversationViewParticipant::onMouseEnter(S32 x, S32 y, MASK mask) { mInfoBtn->setVisible(true); diff --git a/indra/newview/llconversationview.h b/indra/newview/llconversationview.h index f2fa2fb042..f9b45073f4 100755 --- a/indra/newview/llconversationview.h +++ b/indra/newview/llconversationview.h @@ -138,7 +138,7 @@ public: void onMouseLeave(S32 x, S32 y, MASK mask); /*virtual*/ S32 getLabelXPos(); - + /*virtual*/ BOOL handleMouseDown( S32 x, S32 y, MASK mask ); void hideSpeakingIndicator(); protected: -- cgit v1.2.3