diff options
author | Caolán McNamara <caolanm@redhat.com> | 2012-12-05 10:07:46 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2012-12-05 10:12:49 +0000 |
commit | b395637a39fca0512f159159495a06cf3cb2b8de (patch) | |
tree | 4c57f0acc5274b3735b70fa096e251ff013dca9b /vcl | |
parent | 307ac3f53d670a28e60471859aed03e4e13519d6 (diff) |
the builder now always owns all its widgets
and improve warning about un-found toplevel widgets to not
warn about unfound widgets if the toplevel id is found
but refers to the passed in parent
Change-Id: Ieaea3cf4d0342e0f65b330a06777d81a119ace14
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/vcl/builder.hxx | 3 | ||||
-rw-r--r-- | vcl/source/window/builder.cxx | 7 |
2 files changed, 5 insertions, 5 deletions
diff --git a/vcl/inc/vcl/builder.hxx b/vcl/inc/vcl/builder.hxx index 431d4bf22ba9..e2793e6e7aaf 100644 --- a/vcl/inc/vcl/builder.hxx +++ b/vcl/inc/vcl/builder.hxx @@ -47,12 +47,10 @@ private: OString m_sID; Window *m_pWindow; PackingData m_aPackingData; - bool m_bOwned; WinAndId(const OString &rId, Window *pWindow, bool bVertical) : m_sID(rId) , m_pWindow(pWindow) , m_aPackingData(bVertical) - , m_bOwned(true) { } }; @@ -127,6 +125,7 @@ private: OString m_sProductName; Window *m_pParent; bool m_bToplevelHasDeferredInit; + bool m_bToplevelParentFound; ParserState *m_pParserState; Window *get_by_name(OString sID); diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index e5711e989615..9acdad152356 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -121,6 +121,7 @@ VclBuilder::VclBuilder(Window *pParent, OUString sUIDir, OUString sUIFile, OStri , m_sHelpRoot(OUStringToOString(sUIFile, RTL_TEXTENCODING_UTF8)) , m_sProductName(OUStringToOString(utl::ConfigManager::getProductName(), RTL_TEXTENCODING_UTF8)) , m_pParent(pParent) + , m_bToplevelParentFound(false) , m_pParserState(new ParserState) { m_bToplevelHasDeferredInit = (pParent && pParent->IsDialog()) ? ((Dialog*)pParent)->isDeferredInit() : false; @@ -239,7 +240,7 @@ VclBuilder::VclBuilder(Window *pParent, OUString sUIDir, OUString sUIFile, OStri //drop maps, etc. that we don't need again delete m_pParserState; - SAL_WARN_IF(!m_sID.isEmpty() && !get_by_name(m_sID), "vcl.layout", + SAL_WARN_IF(!m_sID.isEmpty() && (!m_bToplevelParentFound && !get_by_name(m_sID)), "vcl.layout", "Requested top level widget \"" << m_sID.getStr() << "\" not found in " << sUIFile); } @@ -249,8 +250,7 @@ VclBuilder::~VclBuilder() for (std::vector<WinAndId>::reverse_iterator aI = m_aChildren.rbegin(), aEnd = m_aChildren.rend(); aI != aEnd; ++aI) { - if (aI->m_bOwned) - delete aI->m_pWindow; + delete aI->m_pWindow; } } @@ -905,6 +905,7 @@ Window *VclBuilder::insertObject(Window *pParent, const OString &rClass, rID.getStr() << ", set helpid " << pCurrentChild->GetHelpId().getStr()); } + m_bToplevelParentFound = true; } else { |