Kaydet (Commit) c74cc709 authored tarafından Aleksei Nikiforov's avatar Aleksei Nikiforov Kaydeden (comit) Thorsten Behrens

KDE5: set correct parent menu in function

Set correct parent menu in function Qt5Menu::InsertMenuItem
instead of just returning it and setting it later if needed.

Change-Id: Id866987e91ec1d57c720735da6afc44109aa901a
Reviewed-on: https://gerrit.libreoffice.org/68437
Tested-by: Jenkins
Reviewed-by: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
üst f3419218
...@@ -38,7 +38,7 @@ private: ...@@ -38,7 +38,7 @@ private:
void DoFullMenuUpdate(Menu* pMenuBar); void DoFullMenuUpdate(Menu* pMenuBar);
static void NativeItemText(OUString& rItemText); static void NativeItemText(OUString& rItemText);
QMenu* InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos); void InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos);
void ReinitializeActionGroup(unsigned nPos); void ReinitializeActionGroup(unsigned nPos);
void ResetAllActionGroups(); void ResetAllActionGroups();
......
...@@ -33,9 +33,8 @@ Qt5Menu::Qt5Menu(bool bMenuBar) ...@@ -33,9 +33,8 @@ Qt5Menu::Qt5Menu(bool bMenuBar)
bool Qt5Menu::VisibleMenuBar() { return true; } bool Qt5Menu::VisibleMenuBar() { return true; }
QMenu* Qt5Menu::InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos) void Qt5Menu::InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos)
{ {
QMenu* pQMenu = mpQMenu;
sal_uInt16 nId = pSalMenuItem->mnId; sal_uInt16 nId = pSalMenuItem->mnId;
OUString aText = mpVCLMenu->GetItemText(nId); OUString aText = mpVCLMenu->GetItemText(nId);
NativeItemText(aText); NativeItemText(aText);
...@@ -49,7 +48,7 @@ QMenu* Qt5Menu::InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos) ...@@ -49,7 +48,7 @@ QMenu* Qt5Menu::InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos)
// top-level menu // top-level menu
if (mpQMenuBar) if (mpQMenuBar)
{ {
pQMenu = new QMenu(toQString(aText), nullptr); QMenu* pQMenu = new QMenu(toQString(aText), nullptr);
pSalMenuItem->mpMenu.reset(pQMenu); pSalMenuItem->mpMenu.reset(pQMenu);
if ((nPos != MENU_APPEND) if ((nPos != MENU_APPEND)
...@@ -62,31 +61,38 @@ QMenu* Qt5Menu::InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos) ...@@ -62,31 +61,38 @@ QMenu* Qt5Menu::InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos)
mpQMenuBar->addMenu(pQMenu); mpQMenuBar->addMenu(pQMenu);
} }
// correct parent menu for generated menu
if (pSalMenuItem->mpSubMenu)
{
pSalMenuItem->mpSubMenu->mpQMenu = pQMenu;
}
connect(pQMenu, &QMenu::aboutToShow, this, connect(pQMenu, &QMenu::aboutToShow, this,
[pSalMenuItem] { slotMenuAboutToShow(pSalMenuItem); }); [pSalMenuItem] { slotMenuAboutToShow(pSalMenuItem); });
connect(pQMenu, &QMenu::aboutToHide, this, connect(pQMenu, &QMenu::aboutToHide, this,
[pSalMenuItem] { slotMenuAboutToHide(pSalMenuItem); }); [pSalMenuItem] { slotMenuAboutToHide(pSalMenuItem); });
} }
} }
else if (pQMenu) else if (mpQMenu)
{ {
if (pSalMenuItem->mpSubMenu) if (pSalMenuItem->mpSubMenu)
{ {
// submenu // submenu
QMenu* pTempQMenu = new QMenu(toQString(aText), nullptr); QMenu* pQMenu = new QMenu(toQString(aText), nullptr);
pSalMenuItem->mpMenu.reset(pTempQMenu); pSalMenuItem->mpMenu.reset(pQMenu);
if ((nPos != MENU_APPEND) if ((nPos != MENU_APPEND)
&& (static_cast<size_t>(nPos) < static_cast<size_t>(pQMenu->actions().size()))) && (static_cast<size_t>(nPos) < static_cast<size_t>(mpQMenu->actions().size())))
{ {
pQMenu->insertMenu(pQMenu->actions()[nPos], pTempQMenu); mpQMenu->insertMenu(mpQMenu->actions()[nPos], pQMenu);
} }
else else
{ {
pQMenu->addMenu(pTempQMenu); mpQMenu->addMenu(pQMenu);
} }
pQMenu = pTempQMenu; // correct parent menu for generated menu
pSalMenuItem->mpSubMenu->mpQMenu = pQMenu;
ReinitializeActionGroup(nPos); ReinitializeActionGroup(nPos);
...@@ -107,13 +113,13 @@ QMenu* Qt5Menu::InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos) ...@@ -107,13 +113,13 @@ QMenu* Qt5Menu::InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos)
pAction->setSeparator(true); pAction->setSeparator(true);
if ((nPos != MENU_APPEND) if ((nPos != MENU_APPEND)
&& (static_cast<size_t>(nPos) < static_cast<size_t>(pQMenu->actions().size()))) && (static_cast<size_t>(nPos) < static_cast<size_t>(mpQMenu->actions().size())))
{ {
pQMenu->insertAction(pQMenu->actions()[nPos], pAction); mpQMenu->insertAction(mpQMenu->actions()[nPos], pAction);
} }
else else
{ {
pQMenu->addAction(pAction); mpQMenu->addAction(pAction);
} }
ReinitializeActionGroup(nPos); ReinitializeActionGroup(nPos);
...@@ -125,13 +131,13 @@ QMenu* Qt5Menu::InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos) ...@@ -125,13 +131,13 @@ QMenu* Qt5Menu::InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos)
pSalMenuItem->mpAction.reset(pAction); pSalMenuItem->mpAction.reset(pAction);
if ((nPos != MENU_APPEND) if ((nPos != MENU_APPEND)
&& (static_cast<size_t>(nPos) < static_cast<size_t>(pQMenu->actions().size()))) && (static_cast<size_t>(nPos) < static_cast<size_t>(mpQMenu->actions().size())))
{ {
pQMenu->insertAction(pQMenu->actions()[nPos], pAction); mpQMenu->insertAction(mpQMenu->actions()[nPos], pAction);
} }
else else
{ {
pQMenu->addAction(pAction); mpQMenu->addAction(pAction);
} }
ReinitializeActionGroup(nPos); ReinitializeActionGroup(nPos);
...@@ -152,8 +158,6 @@ QMenu* Qt5Menu::InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos) ...@@ -152,8 +158,6 @@ QMenu* Qt5Menu::InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos)
pAction->setEnabled(pSalMenuItem->mbEnabled); pAction->setEnabled(pSalMenuItem->mbEnabled);
pAction->setVisible(pSalMenuItem->mbVisible); pAction->setVisible(pSalMenuItem->mbVisible);
} }
return pQMenu;
} }
void Qt5Menu::ReinitializeActionGroup(unsigned nPos) void Qt5Menu::ReinitializeActionGroup(unsigned nPos)
...@@ -419,14 +423,11 @@ void Qt5Menu::DoFullMenuUpdate(Menu* pMenuBar) ...@@ -419,14 +423,11 @@ void Qt5Menu::DoFullMenuUpdate(Menu* pMenuBar)
for (sal_Int32 nItem = 0; nItem < static_cast<sal_Int32>(GetItemCount()); nItem++) for (sal_Int32 nItem = 0; nItem < static_cast<sal_Int32>(GetItemCount()); nItem++)
{ {
Qt5MenuItem* pSalMenuItem = GetItemAtPos(nItem); Qt5MenuItem* pSalMenuItem = GetItemAtPos(nItem);
QMenu* pQMenu = InsertMenuItem(pSalMenuItem, nItem); InsertMenuItem(pSalMenuItem, nItem);
SetItemImage(nItem, pSalMenuItem, pSalMenuItem->maImage); SetItemImage(nItem, pSalMenuItem, pSalMenuItem->maImage);
if (pSalMenuItem->mpSubMenu != nullptr) if (pSalMenuItem->mpSubMenu != nullptr)
{ {
// correct parent menu before calling HandleMenuActivateEvent
pSalMenuItem->mpSubMenu->mpQMenu = pQMenu;
pMenuBar->HandleMenuActivateEvent(pSalMenuItem->mpSubMenu->GetMenu()); pMenuBar->HandleMenuActivateEvent(pSalMenuItem->mpSubMenu->GetMenu());
pSalMenuItem->mpSubMenu->DoFullMenuUpdate(pMenuBar); pSalMenuItem->mpSubMenu->DoFullMenuUpdate(pMenuBar);
pMenuBar->HandleMenuDeActivateEvent(pSalMenuItem->mpSubMenu->GetMenu()); 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