LLLayoutStack::LLLayoutStack(const LLLayoutStack::Params& p) 
:	LLView(p),
	mPanelSpacing(p.border_size),
	mOrientation(p.orientation),
	mAnimate(p.animate),
	mAnimatedThisFrame(false),
	mNeedsLayout(true),
 	mSaveSizes(p.save_sizes),		// <FS:Zi> Save sizes to settings
	mClip(p.clip),
	mOpenTimeConstant(p.open_time_constant),
	mCloseTimeConstant(p.close_time_constant),
	mResizeBarOverlap(p.resize_bar_overlap),
	mShowDragHandle(p.show_drag_handle),
	mDragHandleFirstIndent(p.drag_handle_first_indent),
	mDragHandleSecondIndent(p.drag_handle_second_indent),
	mDragHandleThickness(p.drag_handle_thickness),
	mDragHandleShift(p.drag_handle_shift)
{
	// <FS:Zi> Set up settings control to save sizes if not already present
	if (mSaveSizes)
	{
		std::string res = std::string("layout_size_") + getName();
		LLStringUtil::replaceChar(res, ' ', '_');
		mSizeControlName = res;
		LLControlGroup* controlGroup = LLUI::sSettingGroups["account"];
		if (!controlGroup->controlExists(mSizeControlName))
		{
			LL_WARNS() << "declaring control " << mSizeControlName << LL_ENDL;
			controlGroup->declareLLSD(
				mSizeControlName,
				LLSD(),
				llformat("Fractional size for layout panel %s", getName().c_str())
				);
		}
		else
		{
			mSavedSizes = controlGroup->getLLSD(mSizeControlName);
		}
	}
	// </FS:Zi>
}