summaryrefslogtreecommitdiff
path: root/indra/newview/llpanellandmarks.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpanellandmarks.cpp')
-rw-r--r--indra/newview/llpanellandmarks.cpp56
1 files changed, 54 insertions, 2 deletions
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index ccd8497484..6e8eac19fc 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -40,6 +40,7 @@
#include "llagent.h"
#include "llagentpicksinfo.h"
#include "llagentui.h"
+#include "llavataractions.h"
#include "llcallbacklist.h"
#include "lldndbutton.h"
#include "llfloatersidepanelcontainer.h"
@@ -784,7 +785,14 @@ void LLLandmarksPanel::onAddAction(const LLSD& userdata) const
}
else
{
- LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
+ LLSD args;
+ args["type"] = "create_landmark";
+ if (view_model->getInventoryType()
+ == LLInventoryType::IT_CATEGORY)
+ {
+ args["dest_folder"] = view_model->getUUID();
+ }
+ LLFloaterSidePanelContainer::showPanel("places", args);
}
}
else if ("category" == command_name)
@@ -1036,8 +1044,12 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const
// ... but except Received folder
return !isReceivedFolderSelected();
}
+ if (mCurrentSelectedList == mLibraryInventoryPanel)
+ {
+ return false;
+ }
//"Add a folder" is enabled by default (case when My Landmarks is empty)
- else return true;
+ return true;
}
else if("create_pick" == command_name)
{
@@ -1051,6 +1063,42 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const
}
return false;
}
+ else if ("add_landmark" == command_name)
+ {
+ bool is_single_selection = root_folder_view && root_folder_view->getSelectedCount() == 1;
+ if (!is_single_selection)
+ {
+ return false;
+ }
+ if (mCurrentSelectedList == mLibraryInventoryPanel)
+ {
+ return false;
+ }
+ LLFolderViewModelItemInventory* view_model = getCurSelectedViewModelItem();
+ if (!view_model || view_model->getInventoryType() != LLInventoryType::IT_CATEGORY)
+ {
+ return false;
+ }
+ LLViewerInventoryItem* landmark = LLLandmarkActions::findLandmarkForAgentPos();
+ if (landmark)
+ {
+ //already exists
+ return false;
+ }
+ return true;
+ }
+ else if ("share" == command_name)
+ {
+ if (!mCurrentSelectedList)
+ {
+ return false;
+ }
+ if (!LLAvatarActions::canShareSelectedItems(mCurrentSelectedList))
+ {
+ return false;
+ }
+ return true;
+ }
else
{
LL_WARNS() << "Unprocessed command has come: " << command_name << LL_ENDL;
@@ -1078,6 +1126,10 @@ void LLLandmarksPanel::onCustomAction(const LLSD& userdata)
{
doActionOnCurSelectedLandmark(boost::bind(&LLLandmarksPanel::doCreatePick, this, _1));
}
+ else if ("share" == command_name && mCurrentSelectedList)
+ {
+ LLAvatarActions::shareWithAvatars(mCurrentSelectedList);
+ }
else if ("restore" == command_name && mCurrentSelectedList)
{
mCurrentSelectedList->doToSelected(userdata);