summaryrefslogtreecommitdiff
path: root/vcl/source/window/menu.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-10-01 13:10:10 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-10-01 18:06:21 +0200
commit38bef03742c94376a974f84693ff2e48693e6839 (patch)
treeadeaffac0b7707f4d08463bef12cb024b2a62102 /vcl/source/window/menu.cxx
parent75a48e37b260c145297261d0e0ab5720894404f1 (diff)
pass menuitem ident around directly, instead of deriving from itemid
sidestepping the while duplicate itemids in separate submenus problem Change-Id: Icb57ac805f3c8c4fc3a68341e318375c6492cbb1 Reviewed-on: https://gerrit.libreoffice.org/61189 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/source/window/menu.cxx')
-rw-r--r--vcl/source/window/menu.cxx26
1 files changed, 13 insertions, 13 deletions
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index b92daf20f10c..d1adaf25211c 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -364,6 +364,7 @@ void Menu::Select()
if ( pStartMenu && ( pStartMenu != this ) )
{
pStartMenu->nSelectedId = nSelectedId;
+ pStartMenu->sSelectedIdent = sSelectedIdent;
pStartMenu->aSelectHdl.Call( this );
}
}
@@ -690,24 +691,12 @@ MenuItemType Menu::GetItemType( sal_uInt16 nPos ) const
return MenuItemType::DONTKNOW;
}
-OString Menu::GetCurItemIdent() const
-{
- const MenuItemData* pData = pItemList->GetData(nSelectedId);
- return pData ? pData->sIdent : OString();
-}
-
OString Menu::GetItemIdent(sal_uInt16 nId) const
{
const MenuItemData* pData = pItemList->GetData(nId);
return pData ? pData->sIdent : OString();
}
-OString Menu::GetItemIdentFromSubMenu(sal_uInt16 nId) const
-{
- const MenuItemData* pData = pItemList->GetDataFromSubMenu(nId);
- return pData ? pData->sIdent : OString();
-}
-
void Menu::SetItemBits( sal_uInt16 nItemId, MenuItemBits nBits )
{
MenuItemData* pData = pItemList->GetData( nItemId );
@@ -2132,13 +2121,20 @@ void Menu::ImplCallHighlight(sal_uInt16 nItem)
ImplMenuDelData aDelData( this );
nSelectedId = 0;
+ sSelectedIdent.clear();
MenuItemData* pData = pItemList->GetDataFromPos(nItem);
- if ( pData )
+ if (pData)
+ {
nSelectedId = pData->nId;
+ sSelectedIdent = pData->sIdent;
+ }
ImplCallEventListeners( VclEventId::MenuHighlight, GetItemPos( GetCurItemId() ) );
if( !aDelData.isDeleted() )
+ {
nSelectedId = 0;
+ sSelectedIdent.clear();
+ }
}
IMPL_LINK_NOARG(Menu, ImplCallSelect, void*, void)
@@ -2620,6 +2616,7 @@ bool MenuBar::HandleMenuHighlightEvent( Menu *pMenu, sal_uInt16 nHighlightEventI
{
pMenu->mnHighlightedItemPos = pMenu->GetItemPos( nHighlightEventId );
pMenu->nSelectedId = nHighlightEventId;
+ pMenu->sSelectedIdent = pMenu->GetItemIdent( nHighlightEventId );
pMenu->pStartedFrom = const_cast<MenuBar*>(this);
pMenu->ImplCallHighlight( pMenu->mnHighlightedItemPos );
}
@@ -2636,6 +2633,7 @@ bool Menu::HandleMenuCommandEvent( Menu *pMenu, sal_uInt16 nCommandEventId ) con
if( pMenu )
{
pMenu->nSelectedId = nCommandEventId;
+ pMenu->sSelectedIdent = pMenu->GetItemIdent(nCommandEventId);
pMenu->pStartedFrom = const_cast<Menu*>(this);
pMenu->ImplSelect();
return true;
@@ -2762,6 +2760,7 @@ void PopupMenu::SelectItem(sal_uInt16 nId)
void PopupMenu::SetSelectedEntry( sal_uInt16 nId )
{
nSelectedId = nId;
+ sSelectedIdent = GetItemIdent(nId);
}
sal_uInt16 PopupMenu::Execute( vcl::Window* pExecWindow, const Point& rPopupPos )
@@ -2825,6 +2824,7 @@ sal_uInt16 PopupMenu::ImplExecute( const VclPtr<vcl::Window>& pW, const tools::R
pStartedFrom = pSFrom;
nSelectedId = 0;
+ sSelectedIdent.clear();
bCanceled = false;
VclPtr<vcl::Window> xFocusId;