diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index eec3137e18..23eb9c2714 100755
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -369,6 +369,22 @@ void LLFloaterTools::changePrecision(S32 decimal_precision)
mPanelFace->changePrecision(decimal_precision);
}
+// FIRE-15489: Confirm before unlinking objects
+void cb_confirm_unlink_objects(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ if (option == 0)
+ {
+ LLSelectMgr::getInstance()->unlinkObjects();
+ }
+}
+
+void confirm_unlink_objects()
+{
+ LLNotificationsUtil::add("ConfirmUnlinkObjects", LLSD(), LLSD(), boost::bind(&cb_confirm_unlink_objects, _1, _2));
+}
+//
+
// Create the popupview with a dummy center. It will be moved into place
// during LLViewerWindow's per-frame hover processing.
LLFloaterTools::LLFloaterTools(const LLSD& key)
@@ -469,7 +485,10 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)
mCommitCallbackRegistrar.add("BuildTool.EditMedia", boost::bind(&LLFloaterTools::onClickBtnEditMedia,this));
mCommitCallbackRegistrar.add("BuildTool.LinkObjects", boost::bind(&LLSelectMgr::linkObjects, LLSelectMgr::getInstance()));
- mCommitCallbackRegistrar.add("BuildTool.UnlinkObjects", boost::bind(&LLSelectMgr::unlinkObjects, LLSelectMgr::getInstance()));
+ // FIRE-15489: Confirm before unlinking objects
+ //mCommitCallbackRegistrar.add("BuildTool.UnlinkObjects", boost::bind(&LLSelectMgr::unlinkObjects, LLSelectMgr::getInstance()));
+ mCommitCallbackRegistrar.add("BuildTool.UnlinkObjects", boost::bind(&confirm_unlink_objects));
+ //
//
mCommitCallbackRegistrar.add("BuildTool.CopyKeys", boost::bind(&LLFloaterTools::onClickBtnCopyKeys,this));
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 89ecfcc509..821d3d2e48 100755
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -10680,7 +10680,11 @@ void initialize_menus()
view_listener_t::addMenu(new LLToolsUseSelectionForGrid(), "Tools.UseSelectionForGrid");
view_listener_t::addMenu(new LLToolsSelectNextPart(), "Tools.SelectNextPart");
commit.add("Tools.Link", boost::bind(&LLSelectMgr::linkObjects, LLSelectMgr::getInstance()));
- commit.add("Tools.Unlink", boost::bind(&LLSelectMgr::unlinkObjects, LLSelectMgr::getInstance()));
+ // FIRE-15489: Confirm before unlinking objects
+ //commit.add("Tools.Unlink", boost::bind(&LLSelectMgr::unlinkObjects, LLSelectMgr::getInstance()));
+ void confirm_unlink_objects();
+ commit.add("Tools.Unlink", boost::bind(&confirm_unlink_objects));
+ //
view_listener_t::addMenu(new LLToolsStopAllAnimations(), "Tools.StopAllAnimations");
view_listener_t::addMenu(new LLToolsReleaseKeys(), "Tools.ReleaseKeys");
view_listener_t::addMenu(new LLToolsEnableReleaseKeys(), "Tools.EnableReleaseKeys");
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 9ae49571ef..e7db098015 100755
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -2220,7 +2220,7 @@ Inventarobjekt(e) verschieben?
Bestätigen Sie, dass sie L$[AMOUNT] an [TARGET] zahlen möchten.
-
+
Sie haben keine Berechtigung zum Kopieren von Elementen in diesem Objekt.
@@ -4886,4 +4886,8 @@ Welche Bezeichnung soll für die Region
+
+ Sollen das ausgewählte Objekt wirklich getrennt werden?
+
+
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 0a67d9ef40..bcd2f17dc0 100755
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -12023,4 +12023,17 @@ the region "[REGION]"?
text="Cancel"/>
+
+
+Do you really want to unlink the selected object?
+ confirm
+
+