notebookbar: control early init per view

Change-Id: I9b743bc6d62256289549cd8002b76bcb918222b0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99986
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
(cherry picked from commit fddfeb653dfd5dd73cbccb4433678d397f092df9)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99921
Tested-by: Jenkins
diff --git a/sfx2/source/notebookbar/SfxNotebookBar.cxx b/sfx2/source/notebookbar/SfxNotebookBar.cxx
index dd79e65..16a0608 100644
--- a/sfx2/source/notebookbar/SfxNotebookBar.cxx
+++ b/sfx2/source/notebookbar/SfxNotebookBar.cxx
@@ -30,6 +30,7 @@
#include <framework/addonsoptions.hxx>
#include <vcl/NotebookBarAddonsMerger.hxx>
#include <vector>
#include <map>
#include <vcl/WeldedTabbedNotebookbar.hxx>

using namespace sfx2;
@@ -366,13 +367,16 @@ bool SfxNotebookBar::StateMethod(SystemWindow* pSysWindow,
        if ((!sFile.isEmpty() && bChangedFile) || !pNotebookBar || !pNotebookBar->IsVisible()
            || bReloadNotebookbar || comphelper::LibreOfficeKit::isActive())
        {
            const SfxViewShell* pViewShell = SfxViewShell::Current();

            // Notebookbar was loaded too early what caused:
            //   * in LOK: Paste Special feature was incorrectly initialized
            // Skip first request so Notebookbar will be initialized after document was loaded
            static bool bSkipFirstInit = true;
            if (comphelper::LibreOfficeKit::isActive() && bSkipFirstInit)
            static std::map<const void*, bool> bSkippedFirstInit;
            if (comphelper::LibreOfficeKit::isActive()
                && bSkippedFirstInit.find(pViewShell) == bSkippedFirstInit.end())
            {
                bSkipFirstInit = false;
                bSkippedFirstInit[pViewShell] = true;
                return false;
            }

@@ -393,7 +397,6 @@ bool SfxNotebookBar::StateMethod(SystemWindow* pSysWindow,
            pNotebookBar = pSysWindow->GetNotebookBar();
            pNotebookBar->Show();

            const SfxViewShell* pViewShell = SfxViewShell::Current();

            bool hasWeldedWrapper = m_pNotebookBarWeldedWrapper.find(pViewShell) != m_pNotebookBarWeldedWrapper.end();
            if ((!hasWeldedWrapper || bReloadNotebookbar) && pNotebookBar->IsWelded())