summaryrefslogtreecommitdiff
path: root/vcl/source/window/builder.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-10-03 13:03:49 +0100
committerCaolán McNamara <caolanm@redhat.com>2012-10-04 12:49:26 +0100
commitddd0e56cd787c2f86e9a154cbb0b4ad09ee40f80 (patch)
tree731d348d9bc82917109e8bb0b74d20d40f8ed8d7 /vcl/source/window/builder.cxx
parent7263bfec9a6511fc8f5c79135a7c853156560755 (diff)
handle children of deferred dialog better
Change-Id: I86f0a23408c031a99a31cd309defec519a2e91ec
Diffstat (limited to 'vcl/source/window/builder.cxx')
-rw-r--r--vcl/source/window/builder.cxx8
1 files changed, 8 insertions, 0 deletions
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 67bf87159a8c..63fce3934281 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -57,6 +57,8 @@ VclBuilder::VclBuilder(Window *pParent, OUString sUIDir, OUString sUIFile, OStri
, m_pParent(pParent)
, m_pParserState(new ParserState)
{
+ m_bToplevelHasDeferredInit = (pParent && pParent->IsDialog()) ? ((Dialog*)pParent)->isDeferredInit() : false;
+
sal_Int32 nIdx = m_sHelpRoot.lastIndexOf('.');
if (nIdx != -1)
m_sHelpRoot = m_sHelpRoot.copy(0, nIdx);
@@ -685,6 +687,7 @@ Window *VclBuilder::insertObject(Window *pParent, const OString &rClass, const O
{
Dialog *pDialog = (Dialog*)pCurrentChild;
pDialog->doDeferredInit(extractResizable(rMap));
+ m_bToplevelHasDeferredInit = false;
}
if (pCurrentChild->GetHelpId().isEmpty())
{
@@ -696,6 +699,11 @@ Window *VclBuilder::insertObject(Window *pParent, const OString &rClass, const O
}
else
{
+ //if we're being inserting under a toplevel dialog whose init is
+ //deferred due to waiting to encounter it in this .ui, and it hasn't
+ //been seen yet, then make unattached widgets parent-less toplevels
+ if (pParent == m_pParent && m_bToplevelHasDeferredInit)
+ pParent = NULL;
pCurrentChild = makeObject(pParent, rClass, rID, rMap);
}