summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2013-01-19 13:23:57 +0000
committerCaolán McNamara <caolanm@redhat.com>2013-01-19 15:55:39 +0000
commitb12a629ca43673b1e7dd440f36cb493a833293ee (patch)
tree19ee4a3cc745616b0aab46faa244148e5a7f1eda /vcl
parent06e76156d2ea1ce8a112f9e2312d6074478de648 (diff)
allow access to menus via VclBuilder
Change-Id: I02c1d46f5c111a2256b2f90837097666dfc49edc
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/vcl/builder.hxx20
-rw-r--r--vcl/source/window/builder.cxx4
2 files changed, 20 insertions, 4 deletions
diff --git a/vcl/inc/vcl/builder.hxx b/vcl/inc/vcl/builder.hxx
index 09426676da1e..96f588095e88 100644
--- a/vcl/inc/vcl/builder.hxx
+++ b/vcl/inc/vcl/builder.hxx
@@ -179,8 +179,6 @@ private:
Window *get_by_name(OString sID);
void delete_by_name(OString sID);
- PopupMenu *get_menu_by_name(OString sID);
-
class sortIntoBestTabTraversalOrder
: public std::binary_function<const Window*, const Window*, bool>
{
@@ -207,6 +205,13 @@ public:
ret = static_cast<T*>(w);
return ret;
}
+ PopupMenu* get_menu(PopupMenu*& ret, OString sID)
+ {
+ ret = get_menu(sID);
+ SAL_WARN_IF(!ret, "vcl.layout", "menu \"" << sID.getStr() << "\" not found in .ui");
+ assert(ret);
+ return ret;
+ }
//sID may not exist, but must be of type T if it does
template <typename T /*=Window if we had c++11*/> T* get(OString sID)
{
@@ -216,6 +221,9 @@ public:
assert(!w || dynamic_cast<T*>(w));
return static_cast<T*>(w);
}
+ //sID may not exist
+ PopupMenu* get_menu(OString sID);
+
OString get_by_window(const Window *pWindow) const;
void delete_by_window(const Window *pWindow);
@@ -300,6 +308,14 @@ public:
{
return m_pUIBuilder->get<T>(sID);
}
+ PopupMenu* get_menu(PopupMenu*& ret, OString sID)
+ {
+ return m_pUIBuilder->get_menu(ret, sID);
+ }
+ PopupMenu* get_menu(OString sID)
+ {
+ return m_pUIBuilder->get_menu(sID);
+ }
};
/*
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 08f2115b1cf8..79a6204f6ce2 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -290,7 +290,7 @@ VclBuilder::VclBuilder(Window *pParent, OUString sUIDir, OUString sUIFile, OStri
aEnd = m_pParserState->m_aButtonMenuMaps.end(); aI != aEnd; ++aI)
{
MenuButton *pTarget = get<MenuButton>(aI->m_sID);
- PopupMenu *pMenu = get_menu_by_name(aI->m_sValue);
+ PopupMenu *pMenu = get_menu(aI->m_sValue);
SAL_WARN_IF(!pTarget || !pMenu,
"vcl", "missing elements of button/menu");
if (!pTarget || !pMenu)
@@ -2148,7 +2148,7 @@ Window *VclBuilder::get_by_name(OString sID)
return NULL;
}
-PopupMenu *VclBuilder::get_menu_by_name(OString sID)
+PopupMenu *VclBuilder::get_menu(OString sID)
{
for (std::vector<MenuAndId>::iterator aI = m_aMenus.begin(),
aEnd = m_aMenus.end(); aI != aEnd; ++aI)