[Libreoffice-commits] core.git: sw/source

Mike Kaganski mike.kaganski at collabora.com
Tue May 29 06:04:42 UTC 2018


 sw/source/uibase/app/apphdl.cxx |   70 ++++++++++------------------------------
 1 file changed, 18 insertions(+), 52 deletions(-)

New commits:
commit d7c2667089535d25b8f0ad4f58810ee54552156b
Author: Mike Kaganski <mike.kaganski at collabora.com>
Date:   Sat May 26 19:55:49 2018 +0300

    Only show Mail Merge toolbar after wizard finished
    
    The toolbar is not needed while wizard works (since it's modal).
    This simplifies the logic a little.
    
    Also this allows to show the toolbar in the actual document used for
    mailmerge (e.g., when a new or existing document is used, nit the
    current one); previously, the toolbar appeared in the document active at
    the moment of wizard launch remained in that document, and actual
    document went without the toolbar.
    
    Change-Id: I44c45c41f1a3e06cd0fb1930092727b9e08caf74
    Reviewed-on: https://gerrit.libreoffice.org/54864
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
    Tested-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx
index 05efb9d821e4..ac5a40287a4d 100644
--- a/sw/source/uibase/app/apphdl.cxx
+++ b/sw/source/uibase/app/apphdl.cxx
@@ -59,9 +59,7 @@
 #include <uinums.hxx>
 #include <dbconfig.hxx>
 #include <mmconfigitem.hxx>
-#include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/container/XChild.hpp>
-#include <com/sun/star/frame/XLayoutManager.hpp>
 #include <com/sun/star/sdbc/XConnection.hpp>
 #include <com/sun/star/sdb/TextConnectionSettings.hpp>
 #include <com/sun/star/sdbc/XDataSource.hpp>
@@ -331,8 +329,6 @@ class SwMailMergeWizardExecutor : public salhelper::SimpleReferenceObject
     VclPtr<AbstractMailMergeWizard> m_pWizard;     // always owner
     VclPtr<AbstractMailMergeWizard> m_pWizardToDestroyInCallback;
 
-    bool                     m_bDestroyMMToolbarOnCancel;
-
     DECL_LINK( EndDialogHdl, Dialog&, void );
     DECL_LINK( DestroyDialogHdl, void*, void );
     DECL_LINK( DestroyWizardHdl, void*, void );
@@ -352,8 +348,7 @@ public:
 SwMailMergeWizardExecutor::SwMailMergeWizardExecutor()
     : m_pView( nullptr ),
       m_pView2Close( nullptr ),
-      m_pWizard( nullptr ),
-      m_bDestroyMMToolbarOnCancel( false )
+      m_pWizard( nullptr )
 {
 }
 
@@ -418,25 +413,6 @@ void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs
     SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
     m_pWizard = pFact->CreateMailMergeWizard(*m_pView, xMMConfig);
 
-    uno::Reference<beans::XPropertySet> xPropSet(m_pView->GetViewFrame()->GetFrame().GetFrameInterface(), uno::UNO_QUERY);
-    if (!xPropSet.is())
-        return;
-
-    uno::Reference<frame::XLayoutManager> xLayoutManager;
-    uno::Any aValue = xPropSet->getPropertyValue("LayoutManager");
-    aValue >>= xLayoutManager;
-    if (!xLayoutManager.is())
-        return;
-
-    const OUString sResourceURL( "private:resource/toolbar/mailmerge" );
-    uno::Reference<ui::XUIElement> xUIElement = xLayoutManager->getElement(sResourceURL);
-    if (!xUIElement.is())
-    {
-        // ensure the mail-merge toolbar is displayed and remember if it was before
-        m_bDestroyMMToolbarOnCancel = true;
-        xLayoutManager->createElement(sResourceURL);
-        xLayoutManager->showElement(sResourceURL);
-    }
     ExecuteWizard();
 }
 
@@ -452,21 +428,24 @@ void SwMailMergeWizardExecutor::ExecutionFinished()
         SwDBManager* pDbManager = pDoc->GetDBManager();
         if (pDbManager)
             pDbManager->CommitLastRegistrations();
-    }
 
-    // Update Mail Merge controls
-    const sal_uInt16 slotIds[] = { FN_MAILMERGE_FIRST_ENTRY,
-                                   FN_MAILMERGE_PREV_ENTRY,
-                                   FN_MAILMERGE_NEXT_ENTRY,
-                                   FN_MAILMERGE_LAST_ENTRY,
-                                   FN_MAILMERGE_CURRENT_ENTRY,
-                                   FN_MAILMERGE_EXCLUDE_ENTRY,
-                                   FN_MAILMERGE_CREATE_DOCUMENTS,
-                                   FN_MAILMERGE_SAVE_DOCUMENTS,
-                                   FN_MAILMERGE_PRINT_DOCUMENTS,
-                                   FN_MAILMERGE_EMAIL_DOCUMENTS,
-                                   0 };
-    m_pView->GetViewFrame()->GetBindings().Invalidate(slotIds);
+        // Show the toolbar
+        m_pView->ShowUIElement("private:resource/toolbar/mailmerge");
+
+        // Update Mail Merge controls
+        const sal_uInt16 slotIds[] = { FN_MAILMERGE_FIRST_ENTRY,
+                                       FN_MAILMERGE_PREV_ENTRY,
+                                       FN_MAILMERGE_NEXT_ENTRY,
+                                       FN_MAILMERGE_LAST_ENTRY,
+                                       FN_MAILMERGE_CURRENT_ENTRY,
+                                       FN_MAILMERGE_EXCLUDE_ENTRY,
+                                       FN_MAILMERGE_CREATE_DOCUMENTS,
+                                       FN_MAILMERGE_SAVE_DOCUMENTS,
+                                       FN_MAILMERGE_PRINT_DOCUMENTS,
+                                       FN_MAILMERGE_EMAIL_DOCUMENTS,
+                                       0 };
+        m_pView->GetViewFrame()->GetBindings().Invalidate(slotIds);
+    }
 
     // release/destroy asynchronously
     Application::PostUserEvent( LINK( this, SwMailMergeWizardExecutor, DestroyDialogHdl ) );
@@ -623,19 +602,6 @@ IMPL_LINK_NOARG(SwMailMergeWizardExecutor, CancelHdl, void*, void)
         {
             auto pViewFrame(xMMConfig->GetSourceView()->GetViewFrame());
             pViewFrame->GetFrame().AppearWithUpdate();
-            uno::Reference<beans::XPropertySet> xPropSet(pViewFrame->GetFrame().GetFrameInterface(), uno::UNO_QUERY);
-            if (xPropSet.is() && m_bDestroyMMToolbarOnCancel)
-            {
-                // hide mailmerge toolbar if it hasn't been there before
-                uno::Reference<frame::XLayoutManager> xLayoutManager;
-                uno::Any aValue = xPropSet->getPropertyValue("LayoutManager");
-                aValue >>= xLayoutManager;
-                if (xLayoutManager.is())
-                {
-                    const OUString sResourceURL( "private:resource/toolbar/mailmerge" );
-                    xLayoutManager->destroyElement( sResourceURL );
-                }
-            }
         }
         xMMConfig->Commit();
     }


More information about the Libreoffice-commits mailing list