include/sfx2/notebookbar/SfxNotebookBar.hxx |    8 +++++---
 include/vcl/syswin.hxx                      |    5 ++++-
 sfx2/source/notebookbar/SfxNotebookBar.cxx  |   26 ++++++++++++++++++++------
 vcl/source/window/syswin.cxx                |    6 ++++--
 4 files changed, 33 insertions(+), 12 deletions(-)

New commits:
commit b497349fc04d1e3fe4eac265067feae2e5519dd9
Author:     Sumit Chauhan <sumitc...@gmail.com>
AuthorDate: Mon Jun 10 15:47:55 2019 +0530
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Tue Nov 26 15:55:37 2019 +0100

    Reload Notebookbar, when customization is being done.
    
    This patch is related to notebookbar customization tab. When one clicks
    the widget checkbox , to preview the real-time changes one need to call
    this ReloadNotebookBar() method .
    
    Reviewed-on: https://gerrit.libreoffice.org/73750
    Tested-by: Jenkins
    Reviewed-by: Szymon Kłos <szymon.k...@collabora.com>
    (cherry picked from commit 6b888ac476fe6ac2ee96c7086cb8c24249f08473)
    
    Change-Id: I3d6314e4b8220a8744331246639acadea941252f
    Reviewed-on: https://gerrit.libreoffice.org/82737
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/include/sfx2/notebookbar/SfxNotebookBar.hxx 
b/include/sfx2/notebookbar/SfxNotebookBar.hxx
index 9eb76e9c3ba5..2a30a126beaf 100644
--- a/include/sfx2/notebookbar/SfxNotebookBar.hxx
+++ b/include/sfx2/notebookbar/SfxNotebookBar.hxx
@@ -36,10 +36,11 @@ public:
     static void ExecMethod(SfxBindings& rBindings, const OUString& rUIName);
 
     /// Function to be called from the sdi's StateMethod.
-    static bool StateMethod(SfxBindings& rBindings, const OUString& rUIFile);
+    static bool StateMethod(SfxBindings& rBindings, const OUString& rUIFile,
+                            bool bReloadNotebookbar = false);
     static bool StateMethod(SystemWindow* pSysWindow,
-                            const css::uno::Reference<css::frame::XFrame> & 
xFrame,
-                            const OUString& rUIFile);
+                            const css::uno::Reference<css::frame::XFrame>& 
xFrame,
+                            const OUString& rUIFile, bool bReloadNotebookbar = 
false);
 
     /// Method temporarily blocks showing of the NotebookBar
     static void LockNotebookBar();
@@ -53,6 +54,7 @@ public:
     /** Show menu bar only in current frame */
     static void ShowMenubar(SfxViewFrame const * pViewFrame, bool bShow);
     static void ToggleMenubar();
+    static void ReloadNotebookBar(OUString& sUIPath);
 
 private:
     static bool m_bLock;
diff --git a/include/vcl/syswin.hxx b/include/vcl/syswin.hxx
index c285abe2c024..22dd359e927b 100644
--- a/include/vcl/syswin.hxx
+++ b/include/vcl/syswin.hxx
@@ -215,7 +215,10 @@ public:
     MenuBar*        GetMenuBar() const { return mpMenuBar; }
     void            SetMenuBarMode( MenuBarMode nMode );
 
-    void            SetNotebookBar(const OUString& rUIXMLDescription, const 
css::uno::Reference<css::frame::XFrame>& rFrame);
+    void SetNotebookBar(const OUString& rUIXMLDescription,
+                        const css::uno::Reference<css::frame::XFrame>& rFrame,
+                        bool bReloadNotebookbar = false);
+
     void            CloseNotebookBar();
     VclPtr<NotebookBar> const & GetNotebookBar() const;
 
diff --git a/sfx2/source/notebookbar/SfxNotebookBar.cxx 
b/sfx2/source/notebookbar/SfxNotebookBar.cxx
index 0090cb1de1bd..402874ccb4ef 100644
--- a/sfx2/source/notebookbar/SfxNotebookBar.cxx
+++ b/sfx2/source/notebookbar/SfxNotebookBar.cxx
@@ -8,6 +8,7 @@
  */
 
 #include <sfx2/bindings.hxx>
+#include <sfx2/viewsh.hxx>
 #include <sfx2/dispatch.hxx>
 #include <sfx2/notebookbar/SfxNotebookBar.hxx>
 #include <unotools/viewoptions.hxx>
@@ -283,15 +284,17 @@ void SfxNotebookBar::ExecMethod(SfxBindings& rBindings, 
const OUString& rUIName)
     rBindings.Update();
 }
 
-bool SfxNotebookBar::StateMethod(SfxBindings& rBindings, const OUString& 
rUIFile)
+bool SfxNotebookBar::StateMethod(SfxBindings& rBindings, const OUString& 
rUIFile,
+                                 bool bReloadNotebookbar)
 {
     SfxFrame& rFrame = rBindings.GetDispatcher_Impl()->GetFrame()->GetFrame();
-    return StateMethod(rFrame.GetSystemWindow(), rFrame.GetFrameInterface(), 
rUIFile);
+    return StateMethod(rFrame.GetSystemWindow(), rFrame.GetFrameInterface(), 
rUIFile,
+                       bReloadNotebookbar);
 }
 
 bool SfxNotebookBar::StateMethod(SystemWindow* pSysWindow,
-                                 const Reference<css::frame::XFrame> & xFrame,
-                                 const OUString& rUIFile)
+                                 const Reference<css::frame::XFrame>& xFrame,
+                                 const OUString& rUIFile, bool 
bReloadNotebookbar)
 {
     if (!pSysWindow)
     {
@@ -325,15 +328,17 @@ bool SfxNotebookBar::StateMethod(SystemWindow* pSysWindow,
             bChangedFile = sNewFile != sCurrentFile;
         }
 
-        if ( ( !sFile.isEmpty() && bChangedFile ) || !pNotebookBar || 
!pNotebookBar->IsVisible() )
+        if ((!sFile.isEmpty() && bChangedFile) || !pNotebookBar || 
!pNotebookBar->IsVisible()
+            || bReloadNotebookbar)
         {
             RemoveListeners(pSysWindow);
 
             OUStringBuffer aBuf(rUIFile);
             aBuf.append( sFile );
+            OUString aVal = aBuf.makeStringAndClear();
 
             // setup if necessary
-            pSysWindow->SetNotebookBar(aBuf.makeStringAndClear(), xFrame);
+            pSysWindow->SetNotebookBar(aVal, xFrame, bReloadNotebookbar);
             pNotebookBar = pSysWindow->GetNotebookBar();
             pNotebookBar->Show();
             pNotebookBar->GetParent()->Resize();
@@ -503,4 +508,13 @@ void SfxNotebookBar::ToggleMenubar()
     }
 }
 
+void SfxNotebookBar::ReloadNotebookBar(OUString& sUIPath)
+{
+    if (SfxNotebookBar::IsActive())
+    {
+        SfxViewShell* pViewShell = SfxViewShell::Current();
+        
sfx2::SfxNotebookBar::StateMethod(pViewShell->GetViewFrame()->GetBindings(), 
sUIPath, true);
+    }
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/window/syswin.cxx b/vcl/source/window/syswin.cxx
index 27e0c87cf41f..59d3b2e97189 100644
--- a/vcl/source/window/syswin.cxx
+++ b/vcl/source/window/syswin.cxx
@@ -966,9 +966,11 @@ void SystemWindow::SetMenuBar(MenuBar* pMenuBar)
     }
 }
 
-void SystemWindow::SetNotebookBar(const OUString& rUIXMLDescription, const 
css::uno::Reference<css::frame::XFrame>& rFrame)
+void SystemWindow::SetNotebookBar(const OUString& rUIXMLDescription,
+                                  const 
css::uno::Reference<css::frame::XFrame>& rFrame,
+                                  bool bReloadNotebookbar)
 {
-    if (rUIXMLDescription != maNotebookBarUIFile)
+    if (rUIXMLDescription != maNotebookBarUIFile || bReloadNotebookbar)
     {
         
static_cast<ImplBorderWindow*>(mpWindowImpl->mpBorderWindow.get())->SetNotebookBar(rUIXMLDescription,
 rFrame);
         maNotebookBarUIFile = rUIXMLDescription;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to