[Libreoffice-commits] core.git: cui/source include/sfx2 include/vcl sfx2/source vcl/source

Sumit Chauhan (via logerrit) logerrit at kemper.freedesktop.org
Sun Jun 16 20:14:49 UTC 2019


 cui/source/customize/SvxNotebookbarConfigPage.cxx |   17 +++++++++-----
 include/sfx2/notebookbar/SfxNotebookBar.hxx       |    8 ++++--
 include/vcl/syswin.hxx                            |    5 +++-
 sfx2/source/notebookbar/SfxNotebookBar.cxx        |   26 ++++++++++++++++------
 vcl/source/window/syswin.cxx                      |    6 +++--
 5 files changed, 44 insertions(+), 18 deletions(-)

New commits:
commit 6b888ac476fe6ac2ee96c7086cb8c24249f08473
Author:     Sumit Chauhan <sumitcn25 at gmail.com>
AuthorDate: Mon Jun 10 15:47:55 2019 +0530
Commit:     Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Sun Jun 16 22:14:10 2019 +0200

    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 .
    
    Change-Id: I3d6314e4b8220a8744331246639acadea941252f
    Reviewed-on: https://gerrit.libreoffice.org/73750
    Tested-by: Jenkins
    Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>

diff --git a/cui/source/customize/SvxNotebookbarConfigPage.cxx b/cui/source/customize/SvxNotebookbarConfigPage.cxx
index d2ef34807920..f32ad2c472a0 100644
--- a/cui/source/customize/SvxNotebookbarConfigPage.cxx
+++ b/cui/source/customize/SvxNotebookbarConfigPage.cxx
@@ -206,6 +206,8 @@ short SvxNotebookbarConfigPage::QueryReset()
         OUString sNotebookbarInterface = getFileName(sFileName);
         Sequence<OUString> sSequenceEntries;
         CustomNotebookbarGenerator::setCustomizedUIItem(sSequenceEntries, sNotebookbarInterface);
+        OUString sUIPath = "modules/s" + sAppName.toAsciiLowerCase() + "/ui/";
+        sfx2::SfxNotebookBar::ReloadNotebookBar(sUIPath);
     }
     return nValue;
 }
@@ -374,13 +376,10 @@ static OUString getUIItemID(OUString sString)
     return sUIItemID.makeStringAndClear();
 }
 
-static void EditRegistryFile(OUString& sUIItemID, OUString& sSetEntry)
+static void EditRegistryFile(OUString& sUIItemID, OUString& sSetEntry,
+                             OUString& sNotebookbarInterface)
 {
     int nFlag = 0;
-    OUString sAppName;
-    OUString sFileName;
-    CustomNotebookbarGenerator::getFileNameAndAppName(sAppName, sFileName);
-    OUString sNotebookbarInterface = getFileName(sFileName);
     Sequence<OUString> aOldEntries
         = CustomNotebookbarGenerator::getCustomizedUIItem(sNotebookbarInterface);
     Sequence<OUString> aNewEntries(aOldEntries.getLength() + 1);
@@ -411,6 +410,10 @@ static void EditRegistryFile(OUString& sUIItemID, OUString& sSetEntry)
 void SvxNotebookbarEntriesListBox::ChangedVisibility(int nRow)
 {
     OUString sUIItemID = m_xControl->get_selected_text();
+    OUString sAppName;
+    OUString sFileName;
+    CustomNotebookbarGenerator::getFileNameAndAppName(sAppName, sFileName);
+    OUString sNotebookbarInterface = getFileName(sFileName);
     OUString sVisible;
     sUIItemID = getUIItemID(sUIItemID);
     if (m_xControl->get_toggle(nRow, 0) == TRISTATE_TRUE)
@@ -420,8 +423,10 @@ void SvxNotebookbarEntriesListBox::ChangedVisibility(int nRow)
     OUString sSetEntries = sUIItemID + ",visible," + sVisible;
     Sequence<OUString> sSeqOfEntries(1);
     sSeqOfEntries[0] = sSetEntries;
-    EditRegistryFile(sUIItemID, sSetEntries);
+    EditRegistryFile(sUIItemID, sSetEntries, sNotebookbarInterface);
     CustomNotebookbarGenerator::modifyCustomizedUIFile(sSeqOfEntries);
+    OUString sUIPath = "modules/s" + sAppName.toAsciiLowerCase() + "/ui/";
+    sfx2::SfxNotebookBar::ReloadNotebookBar(sUIPath);
 }
 
 IMPL_LINK(SvxNotebookbarEntriesListBox, CheckButtonHdl, const row_col&, rRowCol, void)
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;


More information about the Libreoffice-commits mailing list