tdf#122253 KDE5: Correct parent menu before it's used

Also correct action group of menu

Change-Id: Ie7eddd3cdc9fa1c36fdeaa1e96eb5d50d7126c09
Reviewed-on: https://gerrit.libreoffice.org/66146
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
(cherry picked from commit c278857137ea0e9e25613d5f6bf8ddaf1336fbcc)
Reviewed-on: https://gerrit.libreoffice.org/66173
Reviewed-by: Aleksei Nikiforov <darktemplar@basealt.ru>
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
diff --git a/vcl/inc/qt5/Qt5Menu.hxx b/vcl/inc/qt5/Qt5Menu.hxx
index 9f7469f..b3b06bf 100644
--- a/vcl/inc/qt5/Qt5Menu.hxx
+++ b/vcl/inc/qt5/Qt5Menu.hxx
@@ -33,7 +33,7 @@ private:
    QMenu* mpQMenu;
    QActionGroup* mpQActionGroup;

    void DoFullMenuUpdate(Menu* pMenuBar, QMenu* pParentMenu = nullptr);
    void DoFullMenuUpdate(Menu* pMenuBar);
    static void NativeItemText(OUString& rItemText);

    QMenu* InsertMenuItem(Qt5MenuItem* pSalMenuItem, unsigned nPos);
diff --git a/vcl/qt5/Qt5Menu.cxx b/vcl/qt5/Qt5Menu.cxx
index 130d7c5..d92c0c0 100644
--- a/vcl/qt5/Qt5Menu.cxx
+++ b/vcl/qt5/Qt5Menu.cxx
@@ -219,18 +219,17 @@ void Qt5Menu::SetFrame(const SalFrame* pFrame)
    if (pMainWindow)
    {
        mpQMenuBar = pMainWindow->menuBar();
        mpQMenu = nullptr;
        mpQActionGroup = nullptr;

        DoFullMenuUpdate(mpVCLMenu);
    }
}

void Qt5Menu::DoFullMenuUpdate(Menu* pMenuBar, QMenu* pParentMenu)
void Qt5Menu::DoFullMenuUpdate(Menu* pMenuBar)
{
    mpQMenu = pParentMenu;

    if (mbMenuBar && mpQMenuBar)
        mpQMenuBar->clear();
    mpQActionGroup = nullptr;

    for (sal_Int32 nItem = 0; nItem < static_cast<sal_Int32>(GetItemCount()); nItem++)
    {
@@ -240,8 +239,12 @@ void Qt5Menu::DoFullMenuUpdate(Menu* pMenuBar, QMenu* pParentMenu)

        if (pSalMenuItem->mpSubMenu != nullptr)
        {
            // correct parent menu and action group before calling HandleMenuActivateEvent
            pSalMenuItem->mpSubMenu->mpQMenu = pQMenu;
            pSalMenuItem->mpSubMenu->mpQActionGroup = nullptr;

            pMenuBar->HandleMenuActivateEvent(pSalMenuItem->mpSubMenu->GetMenu());
            pSalMenuItem->mpSubMenu->DoFullMenuUpdate(pMenuBar, pQMenu);
            pSalMenuItem->mpSubMenu->DoFullMenuUpdate(pMenuBar);
            pMenuBar->HandleMenuDeActivateEvent(pSalMenuItem->mpSubMenu->GetMenu());
        }
    }