From 00a99d9097131c02c6486112b32e57f534bf61be Mon Sep 17 00:00:00 2001
From: Ima Mechanique <ima.mechanique@secondlife.com>
Date: Thu, 6 Feb 2014 16:47:27 +0000
Subject: [PATCH] Adding clear methods to remove any highlighting.

---
 indra/llui/llkeywords.cpp   | 11 ++++++++++-
 indra/llui/llkeywords.h     |  1 +
 indra/llui/lltexteditor.cpp |  8 ++++++++
 indra/llui/lltexteditor.h   |  3 ++-
 4 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp
index fd4ef33f59e..c5e8f76a734 100755
--- a/indra/llui/llkeywords.cpp
+++ b/indra/llui/llkeywords.cpp
@@ -128,6 +128,16 @@ void LLKeywords::addToken(LLKeywordToken::TOKEN_TYPE type,
 	}
 }
 
+void LLKeywords::clear()
+{
+	clearLoaded();
+	mSyntax = LLSD();
+
+	std::for_each(mWordTokenMap.begin(), mWordTokenMap.end(), DeletePairedPointer());
+	std::for_each(mLineTokenList.begin(), mLineTokenList.end(), DeletePointer());
+	std::for_each(mDelimiterTokenList.begin(), mDelimiterTokenList.end(), DeletePointer());
+}
+
 std::string LLKeywords::getArguments(LLSD& arguments)
 {
 	std::string argString = "";
@@ -326,7 +336,6 @@ void LLKeywords::processTokensGroup(LLSD& Tokens, const std::string Group)
 			{
 				Color = ColorGroup;
 				mAttributes.clear();
-				bool deprecated = false;
 				LLSD arguments = LLSD ();
 				LLSD::map_iterator innerIt = outerIt->second.beginMap();
 				for ( ; innerIt != outerIt->second.endMap(); ++innerIt)
diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h
index 689fd75bcd7..de7645a5d29 100755
--- a/indra/llui/llkeywords.h
+++ b/indra/llui/llkeywords.h
@@ -110,6 +110,7 @@ class LLKeywords
 	~LLKeywords();
 
 	void		addColorGroup(const std::string key_in, const LLColor4 color);
+	void		clear();
 	void		clearLoaded() { mLoaded = false; }
 	LLColor4	getColorGroup(const std::string key_in);
 	bool		isLoaded() const	{ return mLoaded; }
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 303bc489338..e11636682ee 100755
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -2529,6 +2529,14 @@ void LLTextEditor::loadKeywords()
 	}
 }
 
+void LLTextEditor::clearSegments()
+{
+	if (!mSegments.empty())
+	{
+		mSegments.clear();
+	}
+}
+
 void LLTextEditor::updateSegments()
 {
 	if (mReflowIndex < S32_MAX && mKeywords.isLoaded() && mParseOnTheFly)
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index d7f6c7f643d..698153587f2 100755
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -207,7 +207,8 @@ class LLTextEditor :
 	const LLUUID&	getSourceID() const						{ return mSourceID; }
 
 	const LLTextSegmentPtr	getPreviousSegment() const;
-	void getSelectedSegments(segment_vec_t& segments) const;
+	void			getSelectedSegments(segment_vec_t& segments) const;
+	void			clearSegments();
 
 	void			setShowContextMenu(bool show) { mShowContextMenu = show; }
 	bool			getShowContextMenu() const { return mShowContextMenu; }
-- 
GitLab