From 67771646bcfd46d87ec1d889599a0e1fbbf92f8e Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Sun, 11 Jul 2021 02:21:04 -0400
Subject: [PATCH] Fix build floater position spinners on attachments

---
 indra/newview/llpanelobject.cpp         | 12 +++++++++++-
 indra/newview/llviewerjointattachment.h |  2 ++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp
index 736164facad..cd2764ade4d 100644
--- a/indra/newview/llpanelobject.cpp
+++ b/indra/newview/llpanelobject.cpp
@@ -71,7 +71,7 @@
 // [/RLVa:KB]
 
 #include "lldrawpool.h"
-
+#include "llviewerjointattachment.h"
 //
 // Constants
 //
@@ -395,6 +395,16 @@ void LLPanelObject::getState( )
 	mCtrlPosY->setEnabled(enable_move);
 	mCtrlPosZ->setEnabled(enable_move);
 
+	LLViewerRegion* regionp = objectp->getRegion();
+	F32 width = regionp != nullptr ? regionp->getWidth() : REGION_WIDTH_METERS;
+	bool is_attachment = objectp->isAttachment();
+	mCtrlPosX->setMinValue(is_attachment ? -MAX_ATTACHMENT_DIST : -width);
+	mCtrlPosX->setMaxValue(is_attachment ? MAX_ATTACHMENT_DIST : width);
+	mCtrlPosY->setMinValue(is_attachment ? -MAX_ATTACHMENT_DIST : -width);
+	mCtrlPosY->setMaxValue(is_attachment ? MAX_ATTACHMENT_DIST : width);
+	mCtrlPosZ->setMinValue(is_attachment ? -MAX_ATTACHMENT_DIST : 0);
+	mCtrlPosZ->setMaxValue(is_attachment ? MAX_ATTACHMENT_DIST : 4096);
+
 	if (enable_scale)
 	{
 		vec = objectp->getScale();
diff --git a/indra/newview/llviewerjointattachment.h b/indra/newview/llviewerjointattachment.h
index e5edf2c06b6..c20ba9c3931 100644
--- a/indra/newview/llviewerjointattachment.h
+++ b/indra/newview/llviewerjointattachment.h
@@ -37,6 +37,8 @@
 class LLDrawable;
 class LLViewerObject;
 
+extern const F32 MAX_ATTACHMENT_DIST;
+
 //-----------------------------------------------------------------------------
 // class LLViewerJointAttachment
 //-----------------------------------------------------------------------------
-- 
GitLab