From 7a81e57a3450822cd5f7dba1df657a7c6022a542 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Mon, 13 Jul 2015 17:38:06 +0200 Subject: [PATCH] Open request friendship dialog on dropping an agent onto the legacy contacts list via DaD --- indra/newview/fsfloatercontacts.cpp | 28 ++++++++++++++++++++++++++++ indra/newview/fsfloatercontacts.h | 5 +++++ 2 files changed, 33 insertions(+) diff --git a/indra/newview/fsfloatercontacts.cpp b/indra/newview/fsfloatercontacts.cpp index 5b17acf573..6dcb079f7c 100644 --- a/indra/newview/fsfloatercontacts.cpp +++ b/indra/newview/fsfloatercontacts.cpp @@ -132,6 +132,7 @@ BOOL FSFloaterContacts::postBuild() mFriendsList->setCommitOnSelectionChange(TRUE); mFriendsList->setCommitCallback(boost::bind(&FSFloaterContacts::onSelectName, this)); mFriendsList->setDoubleClickCallback(boost::bind(&FSFloaterContacts::onImButtonClicked, this)); + mFriendsList->setHandleDaDCallback(boost::bind(&FSFloaterContacts::handleFriendsListDragAndDrop, this, _1, _2, _3, _4, _5, _6, _7, _8)); mFriendsList->setContextMenu(&gFSContactsFriendsMenu); mFriendsTab->childSetAction("im_btn", boost::bind(&FSFloaterContacts::onImButtonClicked, this)); @@ -1281,4 +1282,31 @@ void FSFloaterContacts::disconnectAvatarNameCacheConnection(const LLUUID& reques } } +BOOL FSFloaterContacts::handleFriendsListDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) +{ + if (cargo_type == DAD_PERSON) + { + LLUUID* av_id = static_cast(cargo_data); + if (av_id && !LLAvatarActions::isFriend(*av_id)) + { + *accept = ACCEPT_YES_SINGLE; + + if (drop) + { + LLAvatarActions::requestFriendshipDialog(*av_id); + } + } + } + else + { + *accept = ACCEPT_NO; + } + + return TRUE; +} + // EOF diff --git a/indra/newview/fsfloatercontacts.h b/indra/newview/fsfloatercontacts.h index 4a8d23fcee..12efae9356 100644 --- a/indra/newview/fsfloatercontacts.h +++ b/indra/newview/fsfloatercontacts.h @@ -120,6 +120,11 @@ private: // misc callbacks static void onAvatarPicked(const uuid_vec_t& ids, const std::vector names); void onColumnDisplayModeChanged(const std::string& settings_name = ""); + BOOL handleFriendsListDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg); // friend buttons void onViewProfileButtonClicked();