diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index 3f56ec2c3d44a935a2d18f17ba39c08462079029..6c0a2a9a10f687569469c13f52d1ca65aab01112 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -38,6 +38,12 @@
 static LLDefaultChildRegistry::Register<LLLayoutStack> register_layout_stack("layout_stack");
 static LLLayoutStack::LayoutStackRegistry::Register<LLLayoutPanel> register_layout_panel("layout_panel");
 
+void LLLayoutStack::OrientationNames::declareValues()
+{
+	declare("horizontal", HORIZONTAL);
+	declare("vertical", VERTICAL);
+}
+
 //
 // LLLayoutPanel
 //
@@ -107,7 +113,7 @@ LLLayoutStack::LLLayoutStack(const LLLayoutStack::Params& p)
 	mMinWidth(0),
 	mMinHeight(0),
 	mPanelSpacing(p.border_size),
-	mOrientation((p.orientation() == "vertical") ? VERTICAL : HORIZONTAL),
+	mOrientation(p.orientation),
 	mAnimate(p.animate),
 	mAnimatedThisFrame(false),
 	mClip(p.clip)
diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h
index e19ef403eff7594a9a37bf1835624021d4993bf0..9e8539c716b11f77fb57eddd45ba516249ef4c3e 100644
--- a/indra/llui/lllayoutstack.h
+++ b/indra/llui/lllayoutstack.h
@@ -37,12 +37,24 @@ class LLLayoutPanel;
 class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack>
 {
 public:
+	typedef enum e_layout_orientation
+	{
+		HORIZONTAL,
+		VERTICAL
+	} ELayoutOrientation;
+
+	struct OrientationNames
+	:	public LLInitParam::TypeValuesHelper<ELayoutOrientation, OrientationNames>
+	{
+		static void declareValues();
+	};
+
 	struct LayoutStackRegistry : public LLChildRegistry<LayoutStackRegistry>
 	{};
 
 	struct Params : public LLInitParam::Block<Params, LLView::Params>
 	{
-		Mandatory<std::string>	orientation;
+		Mandatory<ELayoutOrientation, OrientationNames>	orientation;
 		Optional<S32>			border_size;
 		Optional<bool>			animate,
 								clip;
@@ -52,12 +64,6 @@ class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack>
 
 	typedef LayoutStackRegistry child_registry_t;
 
-	typedef enum e_layout_orientation
-	{
-		HORIZONTAL,
-		VERTICAL
-	} ELayoutOrientation;
-
 	virtual ~LLLayoutStack();
 
 	/*virtual*/ void draw();
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 271ee0c4a48961ee24e1aeb10687f3ac5bf78d19..e9337706017fc97fecd4a90fa867c25bcd07ed23 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -586,7 +586,7 @@ void LLChatHistory::initFromParams(const LLChatHistory::Params& p)
 	LLLayoutStack::Params layout_p;
 	layout_p.rect = stack_rect;
 	layout_p.follows.flags = FOLLOWS_ALL;
-	layout_p.orientation = "vertical";
+	layout_p.orientation = LLLayoutStack::VERTICAL;
 	layout_p.mouse_opaque = false;
 	
 	LLLayoutStack* stackp = LLUICtrlFactory::create<LLLayoutStack>(layout_p, this);
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 6595ee2bccad9a0b4aa499018ddf2b24a0a64bb4..54c7d361b757342df025b1718ae2e628d3e215b2 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -109,7 +109,7 @@ void LLWindowShade::initFromParams(const LLWindowShade::Params& params)
 	layout_p.rect = LLRect(0,getLocalRect().mTop,getLocalRect().mRight, 30);
 	layout_p.follows.flags = FOLLOWS_ALL;
 	layout_p.mouse_opaque = false;
-	layout_p.orientation = "vertical";
+	layout_p.orientation = LLLayoutStack::VERTICAL;
 
 	LLLayoutStack* stackp = LLUICtrlFactory::create<LLLayoutStack>(layout_p);
 	addChild(stackp);
@@ -135,7 +135,7 @@ void LLWindowShade::initFromParams(const LLWindowShade::Params& params)
 	layout_p = LLUICtrlFactory::getDefaultParams<LLLayoutStack>();
 	layout_p.rect = LLRect(0, 30, 800, 0);
 	layout_p.follows.flags = FOLLOWS_ALL;
-	layout_p.orientation = "horizontal";
+	layout_p.orientation = LLLayoutStack::HORIZONTAL;
 	stackp = LLUICtrlFactory::create<LLLayoutStack>(layout_p);
 	notification_panel->addChild(stackp);