From 16bf191fda4659303635512702d612a73a91a02b Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Sun, 24 Oct 2021 14:49:51 -0400
Subject: [PATCH] uwu fuckywucky

---
 indra/newview/llfloatertools.cpp | 16 ++++++++++++++++
 indra/newview/llfloatertools.h   |  4 ++++
 2 files changed, 20 insertions(+)

diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index e1994befe5d..ac455faebaa 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -246,6 +246,8 @@ BOOL	LLFloaterTools::postBuild()
 	mTitleMedia			= getChild<LLMediaCtrl>("title_media");
 	mBtnLink			= getChild<LLButton>("link_btn");
 	mBtnUnlink			= getChild<LLButton>("unlink_btn");
+	mBtnPrevPart		= getChild<LLButton>("prev_part_btn");
+	mBtnNextPart		= getChild<LLButton>("next_part_btn");
 	
 	mCheckSelectIndividual	= getChild<LLCheckBoxCtrl>("checkbox edit linked parts");	
 	getChild<LLUICtrl>("checkbox edit linked parts")->setValue((BOOL)gSavedSettings.getBOOL("EditLinkedParts"));
@@ -257,6 +259,8 @@ BOOL	LLFloaterTools::postBuild()
 	getChild<LLUICtrl>("checkbox stretch textures")->setValue((BOOL)gSavedSettings.getBOOL("ScaleStretchTextures"));
 	mComboGridMode			= getChild<LLComboBox>("combobox grid mode");
 
+	mCheckActualRoot = getChild<LLCheckBoxCtrl>("checkbox actual root");
+
 	//
 	// Create Buttons
 	//
@@ -338,6 +342,7 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)
 	mCheckStretchUniform(NULL),
 	mCheckStretchTexture(NULL),
 	mCheckStretchUniformLabel(NULL),
+	mCheckActualRoot(NULL),
 
 	mBtnRotateLeft(NULL),
 	mBtnRotateReset(NULL),
@@ -346,6 +351,8 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)
 	mBtnLink(NULL),
 	mBtnUnlink(NULL),
 
+	mBtnPrevPart(NULL),
+	mBtnNextPart(NULL),
 	mBtnDelete(NULL),
 	mBtnDuplicate(NULL),
 	mBtnDuplicateInPlace(NULL),
@@ -752,6 +759,14 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
 	mBtnLink->setEnabled(LLSelectMgr::instance().enableLinkObjects());
 	mBtnUnlink->setEnabled(LLSelectMgr::instance().enableUnlinkObjects());
 
+	mBtnPrevPart->setVisible(edit_visible);
+	mBtnNextPart->setVisible(edit_visible);
+
+	bool select_btn_enabled = (!LLSelectMgr::getInstance()->getSelection()->isEmpty()
+								&& (ALControlCache::EditLinkedParts || LLToolFace::getInstance() == LLToolMgr::getInstance()->getCurrentTool()));
+	mBtnPrevPart->setEnabled(select_btn_enabled);
+	mBtnNextPart->setEnabled(select_btn_enabled);
+
 	if (mCheckSelectIndividual)
 	{
 		mCheckSelectIndividual->setVisible(edit_visible);
@@ -813,6 +828,7 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
 	if (mCheckStretchUniform) mCheckStretchUniform->setVisible( edit_visible );
 	if (mCheckStretchTexture) mCheckStretchTexture->setVisible( edit_visible );
 	if (mCheckStretchUniformLabel) mCheckStretchUniformLabel->setVisible( edit_visible );
+	if (mCheckActualRoot) mCheckActualRoot->setVisible( edit_visible );
 
 	// Create buttons
 	BOOL create_visible = (tool == LLToolCompCreate::getInstance());
diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h
index e808a9b24c3..6cb910176d1 100644
--- a/indra/newview/llfloatertools.h
+++ b/indra/newview/llfloatertools.h
@@ -146,11 +146,15 @@ class LLFloaterTools final
 	LLButton*		mBtnLink;
 	LLButton*		mBtnUnlink;
 
+	LLButton*		mBtnPrevPart;
+	LLButton*		mBtnNextPart;
+
 	LLCheckBoxCtrl*	mCheckSnapToGrid;
 	LLButton*		mBtnGridOptions;
 	LLComboBox*		mComboGridMode;
 	LLCheckBoxCtrl*	mCheckStretchUniform;
 	LLCheckBoxCtrl*	mCheckStretchTexture;
+	LLCheckBoxCtrl*	mCheckActualRoot;
 
 	// !HACK! Replacement of mCheckStretchUniform label because LLCheckBoxCtrl
 	//  doesn't support word_wrap of its label. Need to fix truncation bug EXT-6658
-- 
GitLab