Kaydet (Commit) 2ebd9da7 authored tarafından Katarina Behrens's avatar Katarina Behrens

Native leaf menus and submenus are now visible

Change-Id: Ieaac0966b167d82c8bdeb60f3ce4b9cc8589ec62
üst 8d783183
......@@ -12,6 +12,7 @@
#include <salmenu.hxx>
class MenuItemList;
class QMenu;
class QMenuBar;
class Qt5MenuItem;
class Qt5Frame;
......@@ -24,12 +25,9 @@ private:
Qt5Menu* mpParentSalMenu;
Qt5Frame* mpFrame;
bool mbMenuBar;
QMenuBar* mpQMenuBar;
void ActivateAllSubMenus( Menu* pMenuBar );
void Update();
void DoFullMenuUpdate( Menu* pMenuBar, QMenu* pParentMenu = nullptr );
void NativeItemText( OUString &rItemText );
public:
......
......@@ -53,6 +53,16 @@ void Qt5Menu::RemoveItem( unsigned nPos )
void Qt5Menu::SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos )
{
SolarMutexGuard aGuard;
Qt5MenuItem *pItem = static_cast< Qt5MenuItem* >( pSalMenuItem );
Qt5Menu *pQSubMenu = static_cast< Qt5Menu* >( pSubMenu );
if ( pQSubMenu == nullptr )
return;
pQSubMenu->mpParentSalMenu = this;
pItem->mpSubMenu = pQSubMenu;
}
void Qt5Menu::SetFrame( const SalFrame* pFrame )
......@@ -68,26 +78,10 @@ void Qt5Menu::SetFrame( const SalFrame* pFrame )
if( pMainWindow )
mpQMenuBar = pMainWindow->menuBar();
ActivateAllSubMenus( mpVCLMenu );
Update();
DoFullMenuUpdate( mpVCLMenu );
}
void Qt5Menu::ActivateAllSubMenus( Menu* pMenuBar )
{
for (Qt5MenuItem* pSalItem : maItems)
{
if ( pSalItem->mpSubMenu != nullptr )
{
pMenuBar->HandleMenuActivateEvent(pSalItem->mpSubMenu->GetMenu());
pSalItem->mpSubMenu->ActivateAllSubMenus(pMenuBar);
pSalItem->mpSubMenu->Update();
pMenuBar->HandleMenuDeActivateEvent(pSalItem->mpSubMenu->GetMenu());
}
}
}
void Qt5Menu::Update()
void Qt5Menu::DoFullMenuUpdate( Menu* pMenuBar, QMenu* pParentMenu )
{
Menu* pVCLMenu = mpVCLMenu;
......@@ -99,11 +93,27 @@ void Qt5Menu::Update()
Qt5MenuItem *pSalMenuItem = GetItemAtPos( nItem );
sal_uInt16 nId = pSalMenuItem->mnId;
OUString aText = pVCLMenu->GetItemText( nId );
QMenu* pQMenu = pParentMenu;
NativeItemText( aText );
if (mbMenuBar && mpQMenuBar)
// top-level menu
pQMenu = mpQMenuBar->addMenu( toQString(aText) );
else
{
if( pSalMenuItem->mpSubMenu )
// submenu
pQMenu = pQMenu->addMenu( toQString(aText) );
else
// leaf menu
pQMenu->addAction( toQString(aText) );
}
if ( pSalMenuItem->mpSubMenu != nullptr )
{
NativeItemText( aText );
mpQMenuBar->addMenu( toQString(aText) );
pMenuBar->HandleMenuActivateEvent(pSalMenuItem->mpSubMenu->GetMenu());
pSalMenuItem->mpSubMenu->DoFullMenuUpdate( pMenuBar, pQMenu );
pMenuBar->HandleMenuDeActivateEvent(pSalMenuItem->mpSubMenu->GetMenu());
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment