summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llui/llfolderview.cpp16
-rw-r--r--indra/newview/llconversationlog.cpp7
-rw-r--r--indra/newview/llconversationlog.h1
-rw-r--r--indra/newview/llfloaterimcontainer.cpp7
-rw-r--r--indra/newview/llfloaterimnearbychat.cpp1
-rwxr-xr-xindra/newview/llfloaterpreference.cpp16
-rw-r--r--indra/newview/llimview.cpp5
-rw-r--r--indra/newview/llinventorybridge.cpp2
-rw-r--r--indra/newview/llnotificationscripthandler.cpp4
-rw-r--r--indra/newview/lltoastnotifypanel.cpp142
-rw-r--r--indra/newview/lltoastpanel.cpp4
-rwxr-xr-xindra/newview/llviewermessage.cpp7
-rw-r--r--indra/newview/skins/default/xui/en/panel_notification.xml2
13 files changed, 56 insertions, 158 deletions
diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp
index 7c1ca017d7..c756ff84e1 100644
--- a/indra/llui/llfolderview.cpp
+++ b/indra/llui/llfolderview.cpp
@@ -924,23 +924,27 @@ void LLFolderView::cut()
{
// clear the inventory clipboard
LLClipboard::instance().reset();
- S32 count = mSelectedItems.size();
- if(getVisible() && getEnabled() && (count > 0))
+ if(getVisible() && getEnabled() && (mSelectedItems.size() > 0))
{
+ // Find out which item will be selected once the selection will be cut
LLFolderViewItem* item_to_select = getNextUnselectedItem();
+
+ // Get the selection: removeItem() modified mSelectedItems and makes iterating on it unwise
+ std::set<LLFolderViewItem*> inventory_selected = getSelectionList();
- selected_items_t::iterator item_it;
- for (item_it = mSelectedItems.begin(); item_it != mSelectedItems.end(); ++item_it)
+ // Move each item to the clipboard and out of their folder
+ for (std::set<LLFolderViewItem*>::iterator item_it = inventory_selected.begin(); item_it != inventory_selected.end(); ++item_it)
{
LLFolderViewItem* item_to_cut = *item_it;
LLFolderViewModelItem* listener = item_to_cut->getViewModelItem();
- if(listener)
+ if (listener)
{
listener->cutToClipboard();
listener->removeItem();
}
}
-
+
+ // Update the selection
setSelection(item_to_select, item_to_select ? item_to_select->isOpen() : false, mParentPanel->hasFocus());
}
mSearchString.clear();
diff --git a/indra/newview/llconversationlog.cpp b/indra/newview/llconversationlog.cpp
index 5f037549ab..04abda1799 100644
--- a/indra/newview/llconversationlog.cpp
+++ b/indra/newview/llconversationlog.cpp
@@ -532,7 +532,14 @@ void LLConversationLog::onClearLogResponse(const LLSD& notification, const LLSD&
{
if (0 == LLNotificationsUtil::getSelectedOption(notification, response))
{
+ deleteTranscripts();
mConversations.clear();
notifyObservers();
}
}
+
+void LLConversationLog::deleteTranscripts()
+{
+ gDirUtilp->deleteFilesInDir(gDirUtilp->getPerAccountChatLogsDir(), "*." + LL_TRANSCRIPT_FILE_EXTENSION);
+ LLFloaterIMSessionTab::processChatHistoryStyleUpdate(true);
+}
diff --git a/indra/newview/llconversationlog.h b/indra/newview/llconversationlog.h
index d5b6eccb29..5213c9b3ab 100644
--- a/indra/newview/llconversationlog.h
+++ b/indra/newview/llconversationlog.h
@@ -140,6 +140,7 @@ public:
void onClearLog();
void onClearLogResponse(const LLSD& notification, const LLSD& response);
+ void deleteTranscripts();
bool getIsLoggingEnabled() { return mLoggingEnabled; }
bool isLogEmpty() { return mConversations.empty(); }
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index 54e5085490..5a284cc7b7 100644
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -1118,19 +1118,18 @@ void LLFloaterIMContainer::doToSelected(const LLSD& userdata)
void LLFloaterIMContainer::doToSelectedGroup(const LLSD& userdata)
{
std::string action = userdata.asString();
- LLUUID selected_group = getCurSelectedViewModelItem()->getUUID();
if (action == "group_profile")
{
- LLGroupActions::show(selected_group);
+ LLGroupActions::show(mSelectedSession);
}
else if (action == "activate_group")
{
- LLGroupActions::activate(selected_group);
+ LLGroupActions::activate(mSelectedSession);
}
else if (action == "leave_group")
{
- LLGroupActions::leave(selected_group);
+ LLGroupActions::leave(mSelectedSession);
}
}
diff --git a/indra/newview/llfloaterimnearbychat.cpp b/indra/newview/llfloaterimnearbychat.cpp
index a2dd93e10d..345418bffc 100644
--- a/indra/newview/llfloaterimnearbychat.cpp
+++ b/indra/newview/llfloaterimnearbychat.cpp
@@ -260,6 +260,7 @@ void LLFloaterIMNearbyChat::onOpen(const LLSD& key)
void LLFloaterIMNearbyChat::onClose(bool app_quitting)
{
// Override LLFloaterIMSessionTab::onClose() so that Nearby Chat is not removed from the conversation floater
+ onClickCloseBtn();
}
// virtual
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 7742e5b3c3..4f86c26a67 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -460,9 +460,6 @@ BOOL LLFloaterPreference::postBuild()
// set 'enable' property for 'Clear log...' button
changed();
- // set 'enable' property for 'Delete transcripts...' button
- updateDeleteTranscriptsButton();
-
LLLogChat::setSaveHistorySignal(boost::bind(&LLFloaterPreference::onLogChatHistorySaved, this));
return TRUE;
@@ -1587,13 +1584,8 @@ void LLFloaterPreference::onDeleteTranscriptsResponse(const LLSD& notification,
{
if (0 == LLNotificationsUtil::getSelectedOption(notification, response))
{
- gDirUtilp->deleteFilesInDir(gDirUtilp->getPerAccountChatLogsDir(), "*." + LL_TRANSCRIPT_FILE_EXTENSION);
-
- std::vector<std::string> list_of_transcriptions_file_names;
- LLLogChat::getListOfTranscriptFiles(list_of_transcriptions_file_names);
- getChild<LLButton>("delete_transcripts")->setEnabled(list_of_transcriptions_file_names.size() > 0);
-
- LLFloaterIMSessionTab::processChatHistoryStyleUpdate(true);
+ LLConversationLog::instance().deleteTranscripts();
+ updateDeleteTranscriptsButton();
}
}
@@ -1668,6 +1660,10 @@ void LLFloaterPreference::selectChatPanel()
void LLFloaterPreference::changed()
{
getChild<LLButton>("clear_log")->setEnabled(LLConversationLog::instance().getConversations().size() > 0);
+
+ // set 'enable' property for 'Delete transcripts...' button
+ updateDeleteTranscriptsButton();
+
}
//------------------------------Updater---------------------------------------
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 5acb0b6374..1cceb68e2a 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1591,6 +1591,11 @@ LLUUID LLIMMgr::computeSessionID(
session_id = other_participant_id ^ agent_id;
}
}
+
+ if (gAgent.isInGroup(session_id) && (session_id != other_participant_id))
+ {
+ llwarns << "Group session id different from group id: IM type = " << dialog << ", session id = " << session_id << ", group id = " << other_participant_id << llendl;
+ }
return session_id;
}
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 5bfd63f3df..0ee78d57bd 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -571,7 +571,7 @@ void hide_context_entries(LLMenuGL& menu,
// descend into split menus:
LLMenuItemBranchGL* branchp = dynamic_cast<LLMenuItemBranchGL*>(menu_item);
- if (NULL != branchp)
+ if ((name == "More") && branchp)
{
hide_context_entries(*branchp->getBranch(), entries_to_show, disabled_entries);
}
diff --git a/indra/newview/llnotificationscripthandler.cpp b/indra/newview/llnotificationscripthandler.cpp
index 19dd6d4ca0..08c98e4f28 100644
--- a/indra/newview/llnotificationscripthandler.cpp
+++ b/indra/newview/llnotificationscripthandler.cpp
@@ -98,7 +98,9 @@ bool LLScriptHandler::processNotification(const LLNotificationPtr& notification)
p.on_delete_toast = boost::bind(&LLScriptHandler::onDeleteToast, this, _1);
if(gAgent.isDoNotDisturb())
{
- p.force_show = notification->getName() == "SystemMessage" || notification->getPriority() >= NOTIFICATION_PRIORITY_HIGH;
+ p.force_show = notification->getName() == "SystemMessage"
+ || notification->getName() == "GodMessage"
+ || notification->getPriority() >= NOTIFICATION_PRIORITY_HIGH;
}
LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel.get());
diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp
index 0aab514531..bd6c42d474 100644
--- a/indra/newview/lltoastnotifypanel.cpp
+++ b/indra/newview/lltoastnotifypanel.cpp
@@ -223,104 +223,6 @@ void LLToastNotifyPanel::adjustPanelForTipNotice()
}
}
-//typedef std::set<std::string> button_name_set_t;
-//typedef std::map<std::string, button_name_set_t> disable_button_map_t;
-//
-//disable_button_map_t initUserGiveItemDisableButtonMap()
-//{
-// // see EXT-5905 for disable rules
-//
-// disable_button_map_t disable_map;
-// button_name_set_t buttons;
-//
-// buttons.insert("Show");
-// disable_map.insert(std::make_pair("Show", buttons));
-//
-// buttons.insert("Discard");
-// disable_map.insert(std::make_pair("Discard", buttons));
-//
-// buttons.insert("Mute");
-// disable_map.insert(std::make_pair("Mute", buttons));
-//
-// return disable_map;
-//}
-//
-//disable_button_map_t initTeleportOfferedDisableButtonMap()
-//{
-// disable_button_map_t disable_map;
-// button_name_set_t buttons;
-//
-// buttons.insert("Teleport");
-// buttons.insert("Cancel");
-//
-// disable_map.insert(std::make_pair("Teleport", buttons));
-// disable_map.insert(std::make_pair("Cancel", buttons));
-//
-// return disable_map;
-//}
-//
-//disable_button_map_t initFriendshipOfferedDisableButtonMap()
-//{
-// disable_button_map_t disable_map;
-// button_name_set_t buttons;
-//
-// buttons.insert("Accept");
-// buttons.insert("Decline");
-//
-// disable_map.insert(std::make_pair("Accept", buttons));
-// disable_map.insert(std::make_pair("Decline", buttons));
-//
-// return disable_map;
-//}
-//
-//button_name_set_t getButtonDisableList(const std::string& notification_name, const std::string& button_name)
-//{
-// static disable_button_map_t user_give_item_disable_map = initUserGiveItemDisableButtonMap();
-// static disable_button_map_t teleport_offered_disable_map = initTeleportOfferedDisableButtonMap();
-// static disable_button_map_t friendship_offered_disable_map = initFriendshipOfferedDisableButtonMap();
-//
-// disable_button_map_t::const_iterator it;
-// disable_button_map_t::const_iterator it_end;
-// disable_button_map_t search_map;
-//
-// if("UserGiveItem" == notification_name)
-// {
-// search_map = user_give_item_disable_map;
-// }
-// else if("TeleportOffered" == notification_name)
-// {
-// search_map = teleport_offered_disable_map;
-// }
-// else if("OfferFriendship" == notification_name)
-// {
-// search_map = friendship_offered_disable_map;
-// }
-//
-// it = search_map.find(button_name);
-// it_end = search_map.end();
-//
-// if(it_end != it)
-// {
-// return it->second;
-// }
-// return button_name_set_t();
-//}
-
-//void LLToastNotifyPanel::disableButtons(const std::string& notification_name, const std::string& selected_button)
-//{
- //button_name_set_t buttons = getButtonDisableList(notification_name, selected_button);
-
- //std::vector<index_button_pair_t>::const_iterator it = mButtons.begin();
- //for ( ; it != mButtons.end(); it++)
- //{
- // LLButton* btn = it->second;
- // if(buttons.find(btn->getName()) != buttons.end())
- // {
- // btn->setEnabled(FALSE);
- // }
- //}
-//}
-
// static
void LLToastNotifyPanel::onClickButton(void* data)
{
@@ -352,7 +254,17 @@ void LLToastNotifyPanel::init( LLRect rect, bool show_images )
mNumButtons = 0;
mAddedDefaultBtn = false;
- buildFromFile( "panel_notification.xml");
+ LLRect current_rect = getRect();
+
+ setXMLFilename("");
+ buildFromFile("panel_notification.xml");
+
+ // reshape the panel to its previous size
+ if (current_rect.notEmpty())
+ {
+ reshape(current_rect.getWidth(), current_rect.getHeight());
+ }
+
if(rect != LLRect::null)
{
this->setShape(rect);
@@ -491,37 +403,9 @@ void LLToastNotifyPanel::init( LLRect rect, bool show_images )
}
}
- // adjust panel's height to the text size
- mInfoPanel->setFollowsAll();
snapToMessageHeight(mTextBox, MAX_LENGTH);
}
-
-
-//void LLToastNotifyPanel::onToastPanelButtonClicked(const LLUUID& notification_id, const std::string btn_name)
-//{
-// if(mNotification->getID() == notification_id)
-// {
-// disableButtons(mNotification->getName(), btn_name);
-// }
-//}
-
-//void LLToastNotifyPanel::disableRespondedOptions(const LLNotificationPtr& notification)
-//{
-// LLSD response = notification->getResponse();
-// for (LLSD::map_const_iterator response_it = response.beginMap();
-// response_it != response.endMap(); ++response_it)
-// {
-// if (response_it->second.isBoolean() && response_it->second.asBoolean())
-// {
-// // that after multiple responses there can be many pressed buttons
-// // need to process them all
-// disableButtons(notification->getName(), response_it->first);
-// }
-// }
-//}
-
-
//////////////////////////////////////////////////////////////////////////
LLIMToastNotifyPanel::LLIMToastNotifyPanel(LLNotificationPtr& pNotification, const LLUUID& session_id, const LLRect& rect /* = LLRect::null */,
@@ -538,13 +422,12 @@ LLIMToastNotifyPanel::~LLIMToastNotifyPanel()
void LLIMToastNotifyPanel::reshape(S32 width, S32 height, BOOL called_from_parent /* = TRUE */)
{
+ LLToastPanel::reshape(width, height, called_from_parent);
snapToMessageHeight(mTextBox, MAX_LENGTH);
}
void LLIMToastNotifyPanel::compactButtons()
{
- mTextBox->setFollowsAll();
-
//we can't set follows in xml since it broke toasts behavior
setFollows(FOLLOWS_LEFT|FOLLOWS_RIGHT|FOLLOWS_TOP);
@@ -590,6 +473,5 @@ void LLIMToastNotifyPanel::init( LLRect rect, bool show_images )
compactButtons();
}
-
// EOF
diff --git a/indra/newview/lltoastpanel.cpp b/indra/newview/lltoastpanel.cpp
index 54d3912136..187aee207c 100644
--- a/indra/newview/lltoastpanel.cpp
+++ b/indra/newview/lltoastpanel.cpp
@@ -81,9 +81,7 @@ void LLToastPanel::snapToMessageHeight(LLTextBase* message, S32 maxLineCount)
S32 newTextHeight = llmin(requiredTextHeight, maxTextHeight);
heightDelta = newTextHeight - oldTextHeight;
- S32 new_panel_height = llmin(
- llmax(getRect().getHeight() + heightDelta, MIN_PANEL_HEIGHT),
- maxTextHeight);
+ S32 new_panel_height = llmax(getRect().getHeight() + heightDelta, MIN_PANEL_HEIGHT);
//reshape the panel with new height
if (new_panel_height != getRect().getHeight())
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 359819ec49..6bbfd30794 100755
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -2371,7 +2371,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
LLNotification::Params params;
switch(dialog)
- {
+ {
case IM_CONSOLE_AND_CHAT_HISTORY:
args["MESSAGE"] = message;
payload["from_id"] = from_id;
@@ -2391,7 +2391,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// do nothing -- don't distract newbies in
// Prelude with global IMs
}
- else if (offline == IM_ONLINE && is_do_not_disturb && from_id.notNull())
+ else if (offline == IM_ONLINE
+ && is_do_not_disturb
+ && from_id.notNull() //not a system message
+ && to_id.notNull()) //not global message
{
// return a standard "do not disturb" message, but only do it to online IM
// (i.e. not other auto responses and not store-and-forward IM)
diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml
index 94c468e1bb..421ecf10a1 100644
--- a/indra/newview/skins/default/xui/en/panel_notification.xml
+++ b/indra/newview/skins/default/xui/en/panel_notification.xml
@@ -22,7 +22,7 @@
background_visible="true"
bg_alpha_color="ToastBackground"
bg_opaque_color="ToastBackground"
- follows="left|right|top"
+ follows="all"
height="100"
label="info_panel"
layout="topleft"