From db45317cae8cfa700f9003541f948afc9e238303 Mon Sep 17 00:00:00 2001
From: "leslie@leslie-HPz600.lindenlab.com"
 <leslie@leslie-HPz600.lindenlab.com>
Date: Fri, 5 Aug 2011 11:12:27 -0700
Subject: [PATCH] EXP-863 FIX -- Add Outbox sync button that performs
 marketplace sync EXP-908 FIX -- Hide outbox when appropriate EXP-1035 FIX --
 Allow user to remove items from outbox EXP-1000 FIX -- New icon can cover
 long names in Received Items Panel EXP-1001 FIX -- Newness is removed on next
 login if you log out or crash before opening inventory panel EXP-1008 UPDATE
 -- Extra space at bottom of Inventory panel when Inbox/outbox not displayed

* Updated "New" tag to properly display over long names per Epic's design
* "New" tags now compare vs last inbox collapse time rather than expansion time
* Marketplace inventory panels now have their own layout stack

Reviewed by Leyla
---
 .../app_settings/settings_per_account.xml     |   4 +-
 indra/newview/llpanelmarketplaceinbox.cpp     |   4 +-
 .../llpanelmarketplaceinboxinventory.cpp      |   4 +-
 indra/newview/llpanelmarketplaceoutbox.cpp    |   2 +
 indra/newview/llsidepanelinventory.cpp        |  96 +++++++++++++-----
 indra/newview/llsidepanelinventory.h          |   4 +
 indra/newview/skins/default/colors.xml        |   5 +-
 .../skins/default/textures/textures.xml       |   5 +-
 .../textures/widgets/Badge_Background_New.png | Bin 1369 -> 0 bytes
 .../textures/widgets/New_Tag_Background.png   | Bin 0 -> 957 bytes
 .../textures/widgets/New_Tag_Border.png       | Bin 0 -> 969 bytes
 .../default/xui/en/sidepanel_inventory.xml    |  33 +++++-
 .../en/widgets/inbox_folder_view_folder.xml   |  12 ++-
 13 files changed, 126 insertions(+), 43 deletions(-)
 delete mode 100644 indra/newview/skins/default/textures/widgets/Badge_Background_New.png
 create mode 100644 indra/newview/skins/default/textures/widgets/New_Tag_Background.png
 create mode 100644 indra/newview/skins/default/textures/widgets/New_Tag_Border.png

diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
index 1142f01232c..9064d6894db 100644
--- a/indra/newview/app_settings/settings_per_account.xml
+++ b/indra/newview/app_settings/settings_per_account.xml
@@ -33,10 +33,10 @@
         <key>Value</key>
             <string />
         </map>
-    <key>LastInventoryInboxExpand</key>
+    <key>LastInventoryInboxCollapse</key>
        <map>
             <key>Comment</key>
-            <string>The last time the received items inbox was expanded.</string>
+            <string>The last time the received items inbox was collapsed.</string>
             <key>Persist</key>
             <integer>1</integer>
             <key>Type</key>
diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp
index c505ad85a38..6a3f8afa290 100644
--- a/indra/newview/llpanelmarketplaceinbox.cpp
+++ b/indra/newview/llpanelmarketplaceinbox.cpp
@@ -55,7 +55,7 @@ LLPanelMarketplaceInbox::~LLPanelMarketplaceInbox()
 {
 	if (getChild<LLButton>("inbox_btn")->getToggleState())
 	{
-		gSavedPerAccountSettings.setString("LastInventoryInboxExpand", LLDate::now().asString());
+		gSavedPerAccountSettings.setString("LastInventoryInboxCollapse", LLDate::now().asString());
 	}
 }
 
@@ -92,6 +92,8 @@ void LLPanelMarketplaceInbox::setupInventoryPanel()
 		LLUICtrlFactory::createFromFile<LLInventoryPanel>("panel_inbox_inventory.xml",
 														  inbox_inventory_parent,
 														  LLInventoryPanel::child_registry_t::instance());
+
+	llassert(mInventoryPanel);
 	
 	// Reshape the inventory to the proper size
 	LLRect inventory_placeholder_rect = inbox_inventory_placeholder->getRect();
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp
index 2c97d539a1e..de4e4414c43 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.cpp
+++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp
@@ -66,7 +66,7 @@ void LLInboxInventoryPanel::buildFolderView(const LLInventoryPanel::Params& para
 	
 	LLUUID root_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX, false, false);
 	
-	// leslie -- temporary HACK to work around sim not creating inbox and outbox with proper system folder type
+	// leslie -- temporary HACK to work around sim not creating inbox with proper system folder type
 	if (root_id.isNull())
 	{
 		std::string start_folder_name(params.start_folder());
@@ -182,7 +182,7 @@ void LLInboxFolderViewFolder::draw()
 
 void LLInboxFolderViewFolder::updateFlag() const
 {
-	LLDate saved_freshness_date = LLDate(gSavedPerAccountSettings.getString("LastInventoryInboxExpand"));
+	LLDate saved_freshness_date = LLDate(gSavedPerAccountSettings.getString("LastInventoryInboxCollapse"));
 	mFresh = (mCreationDate > saved_freshness_date.secondsSinceEpoch());
 }
 
diff --git a/indra/newview/llpanelmarketplaceoutbox.cpp b/indra/newview/llpanelmarketplaceoutbox.cpp
index 90c7f9728b9..d2f1282c8f7 100644
--- a/indra/newview/llpanelmarketplaceoutbox.cpp
+++ b/indra/newview/llpanelmarketplaceoutbox.cpp
@@ -123,6 +123,8 @@ void LLPanelMarketplaceOutbox::setupInventoryPanel()
 		LLUICtrlFactory::createFromFile<LLInventoryPanel>("panel_outbox_inventory.xml",
 														  outbox_inventory_parent,
 														  LLInventoryPanel::child_registry_t::instance());
+
+	llassert(mInventoryPanel);
 	
 	// Reshape the inventory to the proper size
 	LLRect inventory_placeholder_rect = outbox_inventory_placeholder->getRect();
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 41a0b57f2dc..809fd0b2fa5 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -66,11 +66,14 @@ static const char * const OUTBOX_BUTTON_NAME = "outbox_btn";
 
 static const char * const INBOX_LAYOUT_PANEL_NAME = "inbox_layout_panel";
 static const char * const OUTBOX_LAYOUT_PANEL_NAME = "outbox_layout_panel";
+
+static const char * const INBOX_OUTBOX_LAYOUT_PANEL_NAME = "inbox_outbox_layout_panel";
 static const char * const MAIN_INVENTORY_LAYOUT_PANEL_NAME = "main_inventory_layout_panel";
 
 static const char * const INBOX_INVENTORY_PANEL = "inventory_inbox";
 static const char * const OUTBOX_INVENTORY_PANEL = "inventory_outbox";
 
+static const char * const INBOX_OUTBOX_LAYOUT_STACK_NAME = "inbox_outbox_layout_stack";
 static const char * const INVENTORY_LAYOUT_STACK_NAME = "inventory_layout_stack";
 
 static const char * const MARKETPLACE_INBOX_PANEL = "marketplace_inbox";
@@ -233,16 +236,20 @@ BOOL LLSidepanelInventory::postBuild()
 	
 	// Marketplace inbox/outbox setup
 	{
-		LLLayoutStack* stack = getChild<LLLayoutStack>(INVENTORY_LAYOUT_STACK_NAME);
+		LLLayoutStack* inv_stack = getChild<LLLayoutStack>(INVENTORY_LAYOUT_STACK_NAME);
 
 		// Disable user_resize on main inventory panel by default
-		stack->setPanelUserResize(MAIN_INVENTORY_LAYOUT_PANEL_NAME, false);
-		stack->setPanelUserResize(INBOX_LAYOUT_PANEL_NAME, false);
-		stack->setPanelUserResize(OUTBOX_LAYOUT_PANEL_NAME, false);
+		inv_stack->setPanelUserResize(MAIN_INVENTORY_LAYOUT_PANEL_NAME, false);
+		inv_stack->setPanelUserResize(INBOX_OUTBOX_LAYOUT_PANEL_NAME, false);
+
+		// Collapse marketplace panel by default
+		inv_stack->collapsePanel(getChild<LLLayoutPanel>(INBOX_OUTBOX_LAYOUT_PANEL_NAME), true);
+		
+		LLLayoutStack* inout_stack = getChild<LLLayoutStack>(INBOX_OUTBOX_LAYOUT_STACK_NAME);
 
 		// Collapse both inbox and outbox panels
-		stack->collapsePanel(getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME), true);
-		stack->collapsePanel(getChild<LLLayoutPanel>(OUTBOX_LAYOUT_PANEL_NAME), true);
+		inout_stack->collapsePanel(getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME), true);
+		inout_stack->collapsePanel(getChild<LLLayoutPanel>(OUTBOX_LAYOUT_PANEL_NAME), true);
 		
 		// Set up button states and callbacks
 		LLButton * inbox_button = getChild<LLButton>(INBOX_BUTTON_NAME);
@@ -386,12 +393,22 @@ void LLSidepanelInventory::enableInbox(bool enabled)
 {
 	mInboxEnabled = enabled;
 	getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME)->setVisible(enabled);
+
+	if (mInboxEnabled)
+	{
+		getChild<LLLayoutPanel>(INBOX_OUTBOX_LAYOUT_PANEL_NAME)->setVisible(TRUE);
+	}
 }
 
 void LLSidepanelInventory::enableOutbox(bool enabled)
 {
 	mOutboxEnabled = enabled;
 	getChild<LLLayoutPanel>(OUTBOX_LAYOUT_PANEL_NAME)->setVisible(enabled);
+
+	if (mOutboxEnabled)
+	{
+		getChild<LLLayoutPanel>(INBOX_OUTBOX_LAYOUT_PANEL_NAME)->setVisible(TRUE);
+	}
 }
 
 void LLSidepanelInventory::onInboxChanged(const LLUUID& inbox_id)
@@ -410,65 +427,88 @@ void LLSidepanelInventory::onInboxChanged(const LLUUID& inbox_id)
 
 void LLSidepanelInventory::onOutboxChanged(const LLUUID& outbox_id)
 {
-	// Perhaps use this to track outbox changes?
+	// Expand the outbox since we have new items in it
+	LLPanelMarketplaceInbox * outbox = findChild<LLPanelMarketplaceInbox>(MARKETPLACE_OUTBOX_PANEL);
+	if (outbox)
+	{
+		getChild<LLButton>(OUTBOX_BUTTON_NAME)->setToggleState(true);
+		onToggleOutboxBtn();
+	}	
 }
 
-bool manageInboxOutboxPanels(LLLayoutStack * stack,
-							 LLButton * pressedButton, LLLayoutPanel * pressedPanel,
-							 LLButton * otherButton, LLLayoutPanel * otherPanel)
+bool LLSidepanelInventory::manageInboxOutboxPanels(LLButton * pressedButton, LLLayoutPanel * pressedPanel,
+												   LLButton * otherButton, LLLayoutPanel * otherPanel)
 {
 	bool expand = pressedButton->getToggleState();
 	bool otherExpanded = otherButton->getToggleState();
 
-	//
-	// NOTE: Ideally we could have two panel sizes stored for a collapsed and expanded minimum size.
-	//       For now, leave this code disabled because it creates some bad artifacts when expanding
-	//       and collapsing the inbox/outbox.
-	//
-	//S32 smallMinSize = (expand ? pressedPanel->getMinDim() : otherPanel->getMinDim());
-	//S32 pressedMinSize = (expand ? 2 * smallMinSize : smallMinSize);
-	//otherPanel->setMinDim(smallMinSize);
-	//pressedPanel->setMinDim(pressedMinSize);
+	LLLayoutStack* inv_stack = getChild<LLLayoutStack>(INVENTORY_LAYOUT_STACK_NAME);
+	LLLayoutStack* inout_stack = getChild<LLLayoutStack>(INBOX_OUTBOX_LAYOUT_STACK_NAME);
+	LLLayoutPanel* inout_panel = getChild<LLLayoutPanel>(INBOX_OUTBOX_LAYOUT_PANEL_NAME);
 
+	// Enable user_resize on main inventory panel only when a marketplace box is expanded
+	inv_stack->setPanelUserResize(MAIN_INVENTORY_LAYOUT_PANEL_NAME, expand);
+	inv_stack->collapsePanel(inout_panel, !expand);
+
+	// Collapse other marketplace panel if it is expanded
 	if (expand && otherExpanded)
 	{
 		// Reshape pressedPanel to the otherPanel's height so we preserve the marketplace panel size
 		pressedPanel->reshape(pressedPanel->getRect().getWidth(), otherPanel->getRect().getHeight());
 
-		stack->collapsePanel(otherPanel, true);
+		inout_stack->collapsePanel(otherPanel, true);
 		otherButton->setToggleState(false);
 	}
+	else
+	{
+		// NOTE: This is an attempt to reshape the inventory panel to the proper size but it doesn't seem to propagate
+		// propery to the child panels.
 
-	stack->collapsePanel(pressedPanel, !expand);
+		S32 new_height = inout_panel->getRect().getHeight();
 
-	// Enable user_resize on main inventory panel only when a marketplace box is expanded
-	stack->setPanelUserResize(MAIN_INVENTORY_LAYOUT_PANEL_NAME, expand);
+		if (otherPanel->getVisible())
+		{
+			new_height -= otherPanel->getMinDim();
+		}
+
+		pressedPanel->reshape(pressedPanel->getRect().getWidth(), new_height);
+	}
+
+	// Expand/collapse the indicated panel
+	inout_stack->collapsePanel(pressedPanel, !expand);
 
 	return expand;
 }
 
 void LLSidepanelInventory::onToggleInboxBtn()
 {
-	LLLayoutStack* stack = getChild<LLLayoutStack>(INVENTORY_LAYOUT_STACK_NAME);
 	LLButton* pressedButton = getChild<LLButton>(INBOX_BUTTON_NAME);
 	LLLayoutPanel* pressedPanel = getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME);
 	LLButton* otherButton = getChild<LLButton>(OUTBOX_BUTTON_NAME);
 	LLLayoutPanel* otherPanel = getChild<LLLayoutPanel>(OUTBOX_LAYOUT_PANEL_NAME);
 
-	manageInboxOutboxPanels(stack, pressedButton, pressedPanel, otherButton, otherPanel);
+	bool inbox_expanded = manageInboxOutboxPanels(pressedButton, pressedPanel, otherButton, otherPanel);
 
-	gSavedPerAccountSettings.setString("LastInventoryInboxExpand", LLDate::now().asString());
+	if (!inbox_expanded)
+	{
+		gSavedPerAccountSettings.setString("LastInventoryInboxCollapse", LLDate::now().asString());
+	}
 }
 
 void LLSidepanelInventory::onToggleOutboxBtn()
 {
-	LLLayoutStack* stack = getChild<LLLayoutStack>(INVENTORY_LAYOUT_STACK_NAME);
 	LLButton* pressedButton = getChild<LLButton>(OUTBOX_BUTTON_NAME);
 	LLLayoutPanel* pressedPanel = getChild<LLLayoutPanel>(OUTBOX_LAYOUT_PANEL_NAME);
 	LLButton* otherButton = getChild<LLButton>(INBOX_BUTTON_NAME);
 	LLLayoutPanel* otherPanel = getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME);
 
-	manageInboxOutboxPanels(stack, pressedButton, pressedPanel, otherButton, otherPanel);
+	bool inbox_was_expanded = otherButton->getToggleState();
+	manageInboxOutboxPanels(pressedButton, pressedPanel, otherButton, otherPanel);
+
+	if (inbox_was_expanded)
+	{
+		gSavedPerAccountSettings.setString("LastInventoryInboxCollapse", LLDate::now().asString());
+	}
 }
 
 void LLSidepanelInventory::onOpen(const LLSD& key)
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index 9117e3bf272..d00cd05d544 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -29,11 +29,13 @@
 
 #include "llpanel.h"
 
+class LLButton;
 class LLFolderViewItem;
 class LLInboxOutboxAddedObserver;
 class LLInventoryCategoriesObserver;
 class LLInventoryItem;
 class LLInventoryPanel;
+class LLLayoutPanel;
 class LLPanelMainInventory;
 class LLSidepanelItemInfo;
 class LLSidepanelTaskInfo;
@@ -90,6 +92,8 @@ class LLSidepanelInventory : public LLPanel
 	void onInboxChanged(const LLUUID& inbox_id);
 	void onOutboxChanged(const LLUUID& outbox_id);
 
+	bool manageInboxOutboxPanels(LLButton * pressedButton, LLLayoutPanel * pressedPanel, LLButton * otherButton, LLLayoutPanel * otherPanel);
+
 	//
 	// UI Elements
 	//
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 31b6fc77f58..6144c761b77 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -32,6 +32,9 @@
 	<color
 	 name="LtGray_50"
 	 value="0.75 0.75 0.75 0.50" />
+	<color
+	 name="Gray"
+	 value="0.5 0.5 0.5 1" />
 	<color
 	 name="DkGray"
 	 value="0.125 0.125 0.125 1" />
@@ -197,7 +200,7 @@
      reference="Black" />
     <color
      name="ColorPaletteEntry02"
-     value="0.5 0.5 0.5 1" />
+     reference="Gray" />
     <color
      name="ColorPaletteEntry03"
      value="0.5 0 0 1" />
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 799cd907dcf..392a6309c3b 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -72,7 +72,10 @@ with the same filename but different name
   <texture name="BackButton_Over" file_name="icons/back_arrow_over.png" preload="false" scale.left="22" scale.top="12" scale.right="25" scale.bottom="12" />
   <texture name="BackButton_Press" file_name="icons/back_arrow_press.png" preload="false" scale.left="22" scale.top="12" scale.right="25" scale.bottom="12" />
 
-  <texture name="Badge_Background" file_name="widgets/Badge_Background.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
+	<texture name="New_Tag_Background" file_name="widgets/New_Tag_Background.png" preload="true" scale.left="12" scale.top="2" scale.right="36" scale.bottom="2" />
+	<texture name="New_Tag_Border" file_name="widgets/New_Tag_Border.png" preload="true" scale.left="12" scale.top="2" scale.right="36" scale.bottom="2" />
+
+	<texture name="Badge_Background" file_name="widgets/Badge_Background.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
   <texture name="Badge_Border" file_name="widgets/Badge_Border.png" preload="true" scale.left="9" scale.top="12" scale.right="248" scale.bottom="12" />
 
   <texture name="Blank" file_name="Blank.png" preload="false" />
diff --git a/indra/newview/skins/default/textures/widgets/Badge_Background_New.png b/indra/newview/skins/default/textures/widgets/Badge_Background_New.png
deleted file mode 100644
index 9f114f2e4aa0d0529e67af3d779dd9748488e6dd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1369
zcmbVMZA=?w9DgVVa0pv;Zet;OJ21`-de2>7uD#Jg+iO{YGFBR8!{DyhgWjNb-St=t
zSrp*|E^~zGbR(K=zH1CykU-oT2ALnGQG<pkIz>pv)H!u8I@vPAd=4o3f$W3#;qL!`
z?*IG!-=BR|m8DtB)-D48WO=r*J^)gX2v%pLq4)IH2d|+|j_RsWtL1t%#wh}@2jzf(
zdBR+S;1jrD%kEEvA^=kBMSqQ2<E>zLIjrY28+|++(YQcSaXiBDje?2=ga%Qv;a3vF
zI3@;d_!A~C^hTUQNZit@2-U5Xe!jJlw+8Xz%~(;KK?Gqz<*<0TNs2OY8$QR&AXz&m
zaBR**ZM5O@LDhJxFsG~tm`M){d1!{1nbea8BTdr<7zIg4K#Cx#LXu_-6ayi)@ZiXs
z60B!@tb4&1(rkE0RU-^R#9}dh%%GQ*27<I&tr`bK6(WnmXp5wB@j@w@mt<gtD6fbS
zRg@)6W8?yIvueXpr1L3+BVO+!u@qe>6e<}J=OP5DheSB6<uzv=Rei$0VJvAK^|wR>
z!Y4%KW`#%nsLxA+QSI*TNHavyFk2N7HHB+pWxhEqNUDdm;pmS(C<Ym~3$hNHHn{8*
zWwwx{#Yr0NR>(rq;&!<0Fv+nL*37ygWn^7;NV-YV1+BCbI!rFR37W06!Qe__JyKNV
zBwk4R6_MWsEPGch<5UDrl@-4%Hzg;aDkQ6NG$cnbXSE6Qa=a*My4IfgY*|4O_Xt6^
zB8RcL`ZD4Y{-MDFNs=}~nu1#14wkhzDAGdFMu*exaN-Nt;Qy%^fr25l;rP$6B#+Pp
zYU1MPBV}=U1PN`7f>uL%a{Cdqr~5pt-5)>y>-VE&x@{}ZT{C2N+*xHWcV(OvR!pBh
ze>2VI{4jg<z^(@ex*x(q;~&u7tNLdgwf1`t4R-7gUL6h1RJd&)4NWf3E$vFA{zP|8
zWlfLv^lq$ubnqA5i0Rni^S!0DedhLw^zq)uFQ1u^%HR01d)L5*?|yrEcS=`Ad&!S~
zoT_-I`qIp8YR!F8)9rQNOx&7m9jbe`e7L3{|5Hi_A_d?qJQV0VGJIuEq9=T;^RJ6<
zja|z1Z+L0%E&7$LF<tJPiJ=|6*Bkr4Em*^6XAVB&fB&oCP@Q4jNb2d!H(F;6lYMC;
zN1uKKOpWI~`}>)+lG)Fek32lQ>8YJ7+lDhh8vrE$U;wNDAOnDV0MKdo*T_L|bBF$L
zh3@Kevm3uCGl3t@T_7JwDWcXM_%mPx(gE^?w;!ucDLS4wvFT*uWP1DFe9!%#*Y}V4
z-pjwJY=3=ypscN9e{oMmeixsU-5DFa@%J69EwlFU_2~MaH($`b`r^l<uN~hySeKJN
cbxKZ21D&qeMDEdTndq(q9#<uM!m+dcA7m!nb^rhX

diff --git a/indra/newview/skins/default/textures/widgets/New_Tag_Background.png b/indra/newview/skins/default/textures/widgets/New_Tag_Background.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd639dd80f3cf4575096363b892baa54a610bbfd
GIT binary patch
literal 957
zcmaJ=KZw&%91h-r$H9r<<bm+Wtu}c{|HM8U&o*iA0;bfqU`NyBwGF-G#pKndokS-G
zadB}wa1jSbIS^6MMQ{+@Tn-n(TU;C*9DM0Dy&J57m-l{;@B4m#-@`_IXJdVHo#VI-
zV^?po9kO+P?F{=Lej0vf+eKRK&=%>@u@z#j?2s-7hG+G06I;&Y&PQD0xE0=QcWB4F
zfo$RlR)P^?FJNqrD{aStWe+h0UEFtlmH+wrEe~8r<!|LpXa*V{xVzI3x2E;BJssLb
zhu^*iN-<&r9;OzEy*)odvC7YM5j!W>A`fN|I#l`NpgLv)Xe7iSFTjiq3lJ0}LCWS7
zMY#-QC_xd*q9kV|1!ZLfA(($W^A<Wi)YNNpU(8bZ0i^*F#qoG7jI#m>`=V4V784Cw
z&M-tKn)uX;Gk&y{D(E<}LpPu<@j;?!b;*dTJd5-=1ut00`q8{htYBhn1)?OtB&8H+
zn*WD--U1!bCO(PxpTbdl5@4~3BQgqY*0|nQ;wnH|h%HLOHX(ay6&nLWNi-k<&{}z5
zTDI#a_6%>D$nYa-`8GCmm1hcq>pF;)7MAmRrJ_hhNvgt1^-4}F6m&hSDOD}6rCgoZ
zBM<vD<vJ%^Z7DYy1utNpbsV~Pu~Q3)2WBZFcX=$urFwI&vpkmaQm)8?5tGKAYIJ(V
zrYAWr#+Dh2!N)$E_K=PB!Q-QE>`6$5UT()<yMLa%_;7Fackj^N7q3U$h4*0P*}2Wp
q=jRV<mvTq@H_tvogM+JU;2pQ~YxU`?FF)QS56Y<4^_P{~_x}RU6)f!l

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/textures/widgets/New_Tag_Border.png b/indra/newview/skins/default/textures/widgets/New_Tag_Border.png
new file mode 100644
index 0000000000000000000000000000000000000000..56df0d012789f7ef3021c656d561c090dab3c335
GIT binary patch
literal 969
zcmaJ=J#5oJ7&WR?(kc;*fDk&lE3wbcAF*Pp#OF{;I0{K5GBDJ!uZfk~=h_$IWP=Tf
zfq{XIfdw&CVnTue*g!~3Obo0@EHJ=U1m`pf3<OK(yYKYg`+o0EvvDP}d2W;AxQwxb
zT5N}GoldQ@fAjF@DcjCcy-V9<kB+Snb5)1*Ffcr;k6YMsCI@eEh2z$Ex6`Fv^QvMK
zPp}e<5PJb*b6jOR4lH|!Dd^$8>#O|N7cY6>Ix2s?U_vv{@W9=fhPXX#bnNNSE<618
zWl)I~Cg5Ref!N#kBPCY(nXbal$+gIX8H5g1{y3<v*#sI1F(?QyYr`T0MM;oy`BJHL
z5y()2B9ui*&PpXECo2$w`NuPFp|hv7P<`%;St>uEG*CowJRS?<oIt|9D3#0QL_?Od
z43Ui{KDFYkA8joZ5RUB74X8_ekSJO`GNLNaB0WyQ3zo8eG%ph?m>64uC<!o0X#q6N
z|3f`*iH>Ls|B3gX!ck`uV6lZGG74?hxV^2!RiJ1gwkQcZgzPV>*c=c_q5%nj)-C|k
zvRyy1XL!?83_qflZ({?gJW~){*HKt$VYPtjwUShpBpufDOL?tWL@1|~bgiH*xQN&z
z5Bqe%b(UPlS;b98!3&sYghTfxcIqMVz$|6OT^$QrsW<03D`P?WO0LL)5tGLL)#$|)
zo1Wyj99w2A2Os-v+Cw(h#=RRVdlIUFs-5^_@96%M?+;I8zP*3`?hQ=6{+!3@XR?$&
xfM0H1J9T%u`(f?Tg)={1Jw91iXIJU-Tnci(KCM64*oc27kIT>-=&-hX`!}44F9HAn

literal 0
HcmV?d00001

diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index 1d1d4ca01ed..24ece37f3c1 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -30,6 +30,7 @@
               width="330">
              <layout_panel
                  name="main_inventory_layout_panel"
+								 layout="topleft"
                  min_dim="150"
                  width="330"
                  follows="bottom|left|right"
@@ -47,11 +48,33 @@
                       height="480"
                       width="330" />
              </layout_panel>
-             <layout_panel
+					   <layout_panel
                  width="330"
+								 layout="topleft"
                  auto_resize="true"
                  user_resize="false"
                  follows="bottom|left|right"
+                 name="inbox_outbox_layout_panel"
+                 visible="false"
+                 min_dim="70"
+                 max_dim="235"
+                 expanded_min_dim="125"
+                 height="70">
+							 <layout_stack
+										follows="left|right|top|bottom"
+										layout="topleft"
+										left="0"
+										top="0"
+										orientation="vertical"
+										name="inbox_outbox_layout_stack"
+										height="235"
+										width="330">
+								 <layout_panel
+                 width="330"
+								 layout="topleft"
+                 auto_resize="true"
+                 user_resize="false"
+                 follows="left|right|top"
                  name="inbox_layout_panel"
                  visible="false"
                  min_dim="35"
@@ -72,6 +95,7 @@
                      <string name="InboxLabelNoArg">Received Items</string>
                      <button
                         label="Received Items"
+												font="SansSerifMedium"
                         name="inbox_btn"
                         height="35"
                         width="308"
@@ -96,7 +120,6 @@
                         name="inbox_fresh_new_count"
                         font="SansSerifMedium"
                         halign="right"
-                        text_color="EmphasisColor"
                         top_pad="0"
                         width="300">
                         [NUM] New
@@ -130,9 +153,10 @@
              </layout_panel>
              <layout_panel
                  width="330"
+								 layout="topleft"
                  auto_resize="true"
                  user_resize="false"
-                 follows="bottom|left|right"
+                 follows="all"
                  name="outbox_layout_panel"
                  visible="false"
                  min_dim="35"
@@ -153,6 +177,7 @@
                      <string name="OutboxLabelNoArg">Merchant Outbox</string>
                      <button
                         label="Merchant Outbox"
+												font="SansSerifMedium"
                         name="outbox_btn"
                         height="35"
                         width="308"
@@ -233,6 +258,8 @@
                     </panel>
                  </panel>
              </layout_panel>
+						 </layout_stack>
+						 </layout_panel>
          </layout_stack>
 		<panel
 		     follows="bottom|left|right"
diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
index 0d1120a1824..aeea8616b06 100644
--- a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
@@ -10,10 +10,12 @@
         label="New" 
         label_offset_horiz="-1"
         location="right" 
-        padding_horiz="4" 
-        padding_vert="1"
-        location_offset_hcenter="-15"
-        border_image=""
-        image="Badge_Background_New"
+        padding_horiz="12.5" 
+        padding_vert="2"
+        location_offset_hcenter="-23"
+        border_image="New_Tag_Border"
+				border_color="DkGray2"
+        image="New_Tag_Background"
+				image_color="Black"
         />
 </inbox_folder_view_folder>
-- 
GitLab