diff options
author | richard <none@none> | 2009-12-15 19:50:17 -0800 |
---|---|---|
committer | richard <none@none> | 2009-12-15 19:50:17 -0800 |
commit | 1a4047c590443fac682b53ceb18a631b350f03b7 (patch) | |
tree | 53ce39af60c526b43a9aba183e55d9b6106b0fe6 /indra/llui/lluictrlfactory.h | |
parent | a183fb9f5efd5c49a0da7442dd8b7202db6167e7 (diff) | |
parent | 943cae62dbe41472b4515edbfca8a12e83dd6936 (diff) |
merge
Diffstat (limited to 'indra/llui/lluictrlfactory.h')
-rw-r--r-- | indra/llui/lluictrlfactory.h | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h index 9d26a9c9ef..422a926e49 100644 --- a/indra/llui/lluictrlfactory.h +++ b/indra/llui/lluictrlfactory.h @@ -196,7 +196,7 @@ public: } { LLFastTimer timer(FTM_INIT_FROM_PARAMS); - widget->initFromParams(params); + widget->initFromParams(params); } if (parent) @@ -220,7 +220,7 @@ public: return widget; } - + LLView* createFromXML(LLXMLNodePtr node, LLView* parent, const std::string& filename, const widget_registry_t&, LLXMLNodePtr output_node ); template<typename T> @@ -309,9 +309,28 @@ fail: // Apply layout transformations, usually munging rect T::setupParams(params, parent); - T* widget = createWidget<T>(params, parent); + if (!params.validateBlock()) + { + llwarns << getInstance()->getCurFileName() << ": Invalid parameter block for " << typeid(T).name() << llendl; + } + T* widget; + { + LLFastTimer timer(FTM_WIDGET_CONSTRUCTION); + widget = new T(params); + } + { + LLFastTimer timer(FTM_INIT_FROM_PARAMS); + widget->initFromParams(params); + } + if (parent) + { + S32 tab_group = params.tab_group.isProvided() ? params.tab_group() : -1; + setCtrlParent(widget, parent, tab_group); + } + typedef typename T::child_registry_t registry_t; + createChildren(widget, node, registry_t::instance(), output_node); if (widget && !widget->postBuild()) |