From ee1b6e853ce4d6d5993184a54b6ba312addb1c1f Mon Sep 17 00:00:00 2001
From: Mnikolenko Productengine <mnikolenko@productengine.com>
Date: Fri, 12 Jan 2018 19:22:37 +0200
Subject: [PATCH] MAINT-8171 "New" tag is not in front of folder when searching
 items in "Received Items" panel

---
 indra/llui/llbadge.cpp                             | 10 +++++++++-
 indra/llui/llbadge.h                               |  3 +++
 indra/llui/llbadgeowner.cpp                        |  8 ++++++++
 indra/llui/llbadgeowner.h                          |  1 +
 indra/newview/llpanelmarketplaceinboxinventory.cpp |  1 +
 5 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/indra/llui/llbadge.cpp b/indra/llui/llbadge.cpp
index 15b6899d746..589b75ab5bd 100644
--- a/indra/llui/llbadge.cpp
+++ b/indra/llui/llbadge.cpp
@@ -102,6 +102,7 @@ LLBadge::LLBadge(const LLBadge::Params& p)
 	, mPaddingHoriz(p.padding_horiz)
 	, mPaddingVert(p.padding_vert)
 	, mParentScroller(NULL)
+	, mDrawAtParentTop(false)
 {
 	if (mImage.isNull())
 	{
@@ -307,7 +308,14 @@ void LLBadge::draw()
 			// Compute y position
 			if (mLocationOffsetVCenter == BADGE_OFFSET_NOT_SPECIFIED)
 			{
-				badge_center_y = owner_rect.mBottom + owner_rect.getHeight() * mLocationPercentVCenter;
+				if(mDrawAtParentTop)
+				{
+					badge_center_y = owner_rect.mTop - badge_height * 0.5f - 1;
+				}
+				else
+				{
+					badge_center_y = owner_rect.mBottom + owner_rect.getHeight() * mLocationPercentVCenter;
+				}
 			}
 			else
 			{
diff --git a/indra/llui/llbadge.h b/indra/llui/llbadge.h
index 4b21a71aaa3..55f92e6e34a 100644
--- a/indra/llui/llbadge.h
+++ b/indra/llui/llbadge.h
@@ -137,6 +137,8 @@ class LLBadge
 	const std::string	getLabel() const { return wstring_to_utf8str(mLabel); }
 	void				setLabel( const LLStringExplicit& label);
 
+	void				setDrawAtParentTop(bool draw_at_top) { mDrawAtParentTop = draw_at_top;}
+
 private:
 	LLPointer< LLUIImage >	mBorderImage;
 	LLUIColor				mBorderColor;
@@ -164,6 +166,7 @@ class LLBadge
 	F32						mPaddingVert;
 
 	LLScrollContainer*		mParentScroller;
+	bool					mDrawAtParentTop;
 };
 
 // Build time optimization, generate once in .cpp file
diff --git a/indra/llui/llbadgeowner.cpp b/indra/llui/llbadgeowner.cpp
index 55e64bb9405..0557cd43756 100644
--- a/indra/llui/llbadgeowner.cpp
+++ b/indra/llui/llbadgeowner.cpp
@@ -64,6 +64,14 @@ void LLBadgeOwner::setBadgeVisibility(bool visible)
 	}
 }
 
+void LLBadgeOwner::setDrawBadgeAtTop(bool draw_at_top)
+{
+	if (mBadge)
+	{
+		mBadge->setDrawAtParentTop(draw_at_top);
+	}
+}
+
 void LLBadgeOwner::addBadgeToParentHolder()
 {
 	LLView * owner_view = mBadgeOwnerView.get();
diff --git a/indra/llui/llbadgeowner.h b/indra/llui/llbadgeowner.h
index 53c2de95c8d..01ed95f3a3e 100644
--- a/indra/llui/llbadgeowner.h
+++ b/indra/llui/llbadgeowner.h
@@ -45,6 +45,7 @@ class LLBadgeOwner
 	
 	bool hasBadgeHolderParent() const { return mHasBadgeHolderParent; };
 	void setBadgeVisibility(bool visible);
+	void setDrawBadgeAtTop(bool draw_at_top);
 
 private:
 
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp
index 2d2ba30e9b2..f089faea097 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.cpp
+++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp
@@ -139,6 +139,7 @@ void LLInboxFolderViewFolder::draw()
 	if (!hasBadgeHolderParent())
 	{
 		addBadgeToParentHolder();
+		setDrawBadgeAtTop(true);
 	}
 
 	setBadgeVisibility(mFresh);
-- 
GitLab