[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.0' - 8 commits - cui/source desktop/qa desktop/source sd/source sfx2/source sw/inc sw/qa sw/source

Henry Castro hcastro at collabora.com
Thu Mar 22 15:42:23 UTC 2018


 cui/source/factory/dlgfact.hxx                 |    7 -
 desktop/qa/desktop_lib/test_desktop_lib.cxx    |    1 
 desktop/source/lib/init.cxx                    |   29 ++++
 sd/source/ui/func/fuarea.cxx                   |   34 +++--
 sd/source/ui/func/fuline.cxx                   |   40 +++---
 sd/source/ui/func/futransf.cxx                 |  161 +++++++++++++++----------
 sd/source/ui/view/drviews2.cxx                 |    7 -
 sfx2/source/control/unoctitm.cxx               |   25 +++
 sfx2/source/dialog/mgetempl.cxx                |    8 -
 sfx2/source/view/viewfrm.cxx                   |    5 
 sw/inc/docsh.hxx                               |   16 +-
 sw/qa/extras/tiledrendering/tiledrendering.cxx |   26 +++-
 sw/source/uibase/app/docst.cxx                 |  159 ++++++++++--------------
 sw/source/uibase/shells/basesh.cxx             |    5 
 sw/source/uibase/shells/textsh1.cxx            |   37 ++++-
 15 files changed, 340 insertions(+), 220 deletions(-)

New commits:
commit f2d02ab3b53fcd15c4e98070f3e36705dfc693b4
Author: Henry Castro <hcastro at collabora.com>
Date:   Tue Jan 9 22:17:23 2018 -0400

    sw lokit: add page syles to header & footer
    
    Reviewed-on: https://gerrit.libreoffice.org/47687
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Henry Castro <hcastro at collabora.com>
    (cherry picked from commit 252ce90e39648c47bcfdb39547d0ac82bacdbae6)
    
    Change-Id: I3c0b0603d1e03f1cc19af4324dd2b909320d9d4a

diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index 37c7755a0d08..9eb5e5cb0eb2 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -309,6 +309,7 @@ void DesktopLOKTest::testGetStyles()
             rPair.first != "CellStyles" &&
             rPair.first != "ShapeStyles" &&
             rPair.first != "TableStyles" &&
+            rPair.first != "HeaderFooter" &&
             rPair.first != "Commands")
         {
             CPPUNIT_FAIL("Unknown style family: " + rPair.first);
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index ae0a99b8424f..1ea30de95dd0 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -2769,6 +2769,35 @@ static char* getStyles(LibreOfficeKitDocument* pThis, const char* pCommand)
         aValues.add_child(sStyleFam.toUtf8().getStr(), aChildren);
     }
 
+    // Header & Footer Styles
+    {
+        OUString sName;
+        bool bIsPhysical;
+        boost::property_tree::ptree aChild;
+        uno::Reference<beans::XPropertySet> xProperty;
+        boost::property_tree::ptree aChildren;
+        uno::Reference<container::XNameContainer> xContainer;
+
+        if (xStyleFamilies->getByName("PageStyles") >>= xContainer)
+        {
+            uno::Sequence<OUString> aSeqNames = xContainer->getElementNames();
+            for (sal_Int32 itName = 0; itName < aSeqNames.getLength(); itName++)
+            {
+                sName = aSeqNames[itName];
+                xProperty.set(xContainer->getByName(sName), uno::UNO_QUERY);
+                if (xProperty.is() && (xProperty->getPropertyValue("IsPhysical") >>= bIsPhysical) && bIsPhysical)
+                {
+                    xProperty->getPropertyValue("DisplayName") >>= sName;
+                    aChild.put("", sName.toUtf8());
+                    aChildren.push_back(std::make_pair("", aChild));
+                }
+                else
+                    bIsPhysical = false;
+            }
+            aValues.add_child("HeaderFooter", aChildren);
+        }
+    }
+
     {
         boost::property_tree::ptree aCommandList;
 
diff --git a/sfx2/source/control/unoctitm.cxx b/sfx2/source/control/unoctitm.cxx
index af8142a12fcc..5e5b26170fda 100644
--- a/sfx2/source/control/unoctitm.cxx
+++ b/sfx2/source/control/unoctitm.cxx
@@ -1019,9 +1019,7 @@ static void InterceptLOKStateChangeEvent(const SfxViewFrame* pViewFrame, const c
         aEvent.FeatureURL.Path == "AlignLeft" ||
         aEvent.FeatureURL.Path == "AlignHorizontalCenter" ||
         aEvent.FeatureURL.Path == "AlignRight" ||
-        aEvent.FeatureURL.Path == "DocumentRepair" ||
-        aEvent.FeatureURL.Path == "InsertPageHeader" ||
-        aEvent.FeatureURL.Path == "InsertPageFooter")
+        aEvent.FeatureURL.Path == "DocumentRepair")
     {
         bool bTemp = false;
         aEvent.State >>= bTemp;
@@ -1197,6 +1195,27 @@ static void InterceptLOKStateChangeEvent(const SfxViewFrame* pViewFrame, const c
             }
         }
     }
+    else if (aEvent.FeatureURL.Path == "InsertPageHeader" ||
+             aEvent.FeatureURL.Path == "InsertPageFooter")
+    {
+        if (aEvent.IsEnabled)
+        {
+            css::uno::Sequence< OUString > aSeq;
+            if (aEvent.State >>= aSeq)
+            {
+                aBuffer.append(u'{');
+                for (sal_Int32 itSeq = 0; itSeq < aSeq.getLength(); itSeq++)
+                {
+                    aBuffer.append("\"" + aSeq[itSeq]);
+                    if (itSeq != aSeq.getLength() - 1)
+                        aBuffer.append("\":true,");
+                    else
+                        aBuffer.append("\":true");
+                }
+                aBuffer.append(u'}');
+            }
+        }
+    }
     else
     {
         return;
diff --git a/sw/qa/extras/tiledrendering/tiledrendering.cxx b/sw/qa/extras/tiledrendering/tiledrendering.cxx
index 9c8f35dcc6d2..77caaafe327c 100644
--- a/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -23,6 +23,7 @@
 #include <editeng/editview.hxx>
 #include <editeng/outliner.hxx>
 #include <svl/srchitem.hxx>
+#include <svl/slstitm.hxx>
 #include <drawdoc.hxx>
 #include <ndtxt.hxx>
 #include <wrtsh.hxx>
@@ -1941,10 +1942,19 @@ namespace {
 
 void checkPageHeaderOrFooter(const SfxViewShell* pViewShell, sal_uInt16 nWhich, bool bValue)
 {
+    uno::Sequence<OUString> aSeq;
     const SfxPoolItem* pState = nullptr;
     pViewShell->GetDispatcher()->QueryState(nWhich, pState);
-    CPPUNIT_ASSERT(dynamic_cast< const SfxBoolItem * >(pState));
-    CPPUNIT_ASSERT_EQUAL(bValue, dynamic_cast< const SfxBoolItem * >(pState)->GetValue());
+    const SfxStringListItem* pListItem = dynamic_cast<const SfxStringListItem*>(pState);
+    CPPUNIT_ASSERT(pListItem);
+    pListItem->GetStringList(aSeq);
+    if (bValue)
+    {
+        CPPUNIT_ASSERT_EQUAL(1, aSeq.getLength());
+        CPPUNIT_ASSERT_EQUAL(OUString("Default Style"), aSeq[0]);
+    }
+    else
+        CPPUNIT_ASSERT_EQUAL(0, aSeq.getLength());
 };
 
 }
@@ -1959,16 +1969,18 @@ void SwTiledRenderingTest::testPageHeader()
     checkPageHeaderOrFooter(pViewShell, FN_INSERT_PAGEHEADER, false);
     // Insert Page Header
     {
+        SfxStringItem aStyle(FN_INSERT_PAGEHEADER, "Default Style");
         SfxBoolItem aItem(FN_PARAM_1, true);
-        pViewShell->GetDispatcher()->ExecuteList(FN_INSERT_PAGEHEADER, SfxCallMode::SYNCHRON, {&aItem});
+        pViewShell->GetDispatcher()->ExecuteList(FN_INSERT_PAGEHEADER, SfxCallMode::API | SfxCallMode::SYNCHRON, {&aStyle, &aItem});
     }
     // Check Page Header State
     checkPageHeaderOrFooter(pViewShell, FN_INSERT_PAGEHEADER, true);
 
     // Remove Page Header
     {
+        SfxStringItem aStyle(FN_INSERT_PAGEHEADER, "Default Style");
         SfxBoolItem aItem(FN_PARAM_1, false);
-        pViewShell->GetDispatcher()->ExecuteList(FN_INSERT_PAGEHEADER, SfxCallMode::SYNCHRON, {&aItem});
+        pViewShell->GetDispatcher()->ExecuteList(FN_INSERT_PAGEHEADER, SfxCallMode::API | SfxCallMode::SYNCHRON, {&aStyle, &aItem});
     }
     // Check Page Header State
     checkPageHeaderOrFooter(pViewShell, FN_INSERT_PAGEHEADER, false);
@@ -1988,16 +2000,18 @@ void SwTiledRenderingTest::testPageFooter()
     checkPageHeaderOrFooter(pViewShell, FN_INSERT_PAGEFOOTER, false);
     // Insert Page Footer
     {
+        SfxStringItem aPageStyle(FN_INSERT_PAGEFOOTER, "Default Style");
         SfxBoolItem aItem(FN_PARAM_1, true);
-        pViewShell->GetDispatcher()->ExecuteList(FN_INSERT_PAGEFOOTER, SfxCallMode::SYNCHRON, {&aItem});
+        pViewShell->GetDispatcher()->ExecuteList(FN_INSERT_PAGEFOOTER, SfxCallMode::API | SfxCallMode::SYNCHRON, {&aPageStyle, &aItem});
     }
     // Check Page Footer State
     checkPageHeaderOrFooter(pViewShell, FN_INSERT_PAGEFOOTER, true);
 
     // Remove Page Footer
     {
+        SfxStringItem aPageStyle(FN_INSERT_PAGEFOOTER, "Default Style");
         SfxBoolItem aItem(FN_PARAM_1, false);
-        pViewShell->GetDispatcher()->ExecuteList(FN_INSERT_PAGEFOOTER, SfxCallMode::SYNCHRON, {&aItem});
+        pViewShell->GetDispatcher()->ExecuteList(FN_INSERT_PAGEFOOTER, SfxCallMode::API | SfxCallMode::SYNCHRON, {&aPageStyle, &aItem});
     }
     // Check Footer State
     checkPageHeaderOrFooter(pViewShell, FN_INSERT_PAGEFOOTER, false);
diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx
index 7133f722f844..a5d008596702 100644
--- a/sw/source/uibase/shells/textsh1.cxx
+++ b/sw/source/uibase/shells/textsh1.cxx
@@ -1303,7 +1303,7 @@ void SwTextShell::Execute(SfxRequest &rReq)
         bool bOn = true;
         if( SfxItemState::SET == pArgs->GetItemState(FN_PARAM_1, false, &pItem))
             bOn = static_cast<const SfxBoolItem*>(pItem)->GetValue();
-        rWrtSh.ChangeHeaderOrFooter(sStyleName, FN_INSERT_PAGEHEADER == nSlot, bOn, !comphelper::LibreOfficeKit::isActive() && !rReq.IsAPI());
+        rWrtSh.ChangeHeaderOrFooter(sStyleName, FN_INSERT_PAGEHEADER == nSlot, bOn, !rReq.IsAPI());
         rReq.Done();
     }
     break;
@@ -1650,7 +1650,15 @@ void SwTextShell::GetState( SfxItemSet &rSet )
             if (comphelper::LibreOfficeKit::isActive())
             {
                 bool bState = false;
+                bool bAllState = true;
                 bool bIsPhysical = false;
+
+                OUString aStyleName;
+                std::vector<OUString> aList;
+                const OUString sPhysical("IsPhysical");
+                const OUString sDisplay("DisplayName");
+                const OUString sHeaderOn(nWhich == FN_INSERT_PAGEHEADER ? OUString("HeaderIsOn") : OUString("FooterIsOn"));
+
                 uno::Reference< XStyleFamiliesSupplier > xSupplier(GetView().GetDocShell()->GetBaseModel(), uno::UNO_QUERY);
                 if (xSupplier.is())
                 {
@@ -1659,18 +1667,31 @@ void SwTextShell::GetState( SfxItemSet &rSet )
                     if (xFamilies->getByName("PageStyles") >>= xContainer)
                     {
                         uno::Sequence< OUString > aSeqNames = xContainer->getElementNames();
-                        for (sal_Int32 itNames = 0; itNames < aSeqNames.getLength(); itNames++)
+                        for (sal_Int32 itName = 0; itName < aSeqNames.getLength(); itName++)
                         {
-                            uno::Reference< XPropertySet > xPropSet(xContainer->getByName(aSeqNames[itNames]), uno::UNO_QUERY);
-                            if (xPropSet.is() && (xPropSet->getPropertyValue("IsPhysical") >>= bIsPhysical) && bIsPhysical)
+                            aStyleName = aSeqNames[itName];
+                            uno::Reference<XPropertySet> xPropSet(xContainer->getByName(aStyleName), uno::UNO_QUERY);
+                            if (xPropSet.is() && (xPropSet->getPropertyValue(sPhysical) >>= bIsPhysical) && bIsPhysical)
                             {
-                                if ((xPropSet->getPropertyValue(nWhich == FN_INSERT_PAGEHEADER ? OUString("HeaderIsOn") : OUString("FooterIsOn")) >>= bState) && bState)
-                                    break;
+                                xPropSet->getPropertyValue(sDisplay) >>= aStyleName;
+                                if ((xPropSet->getPropertyValue(sHeaderOn)>>= bState) && bState)
+                                    aList.push_back(aStyleName);
+                                else
+                                    bState = false;
+
+                                // Check if all entries have the same state
+                                bAllState &= bState;
                             }
-                        }
+                            else
+                                bIsPhysical = false;
+                       }
                     }
                 }
-                rSet.Put(SfxBoolItem(nWhich, bState));
+
+                if (bAllState && aList.size() > 1)
+                    aList.push_back("_ALL_");
+
+                rSet.Put(SfxStringListItem(nWhich, &aList));
             }
             else
             {
commit c82a01c3251d79ac2bb19ba6ef490e8402c7347e
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Thu Jan 18 09:06:33 2018 +0100

    No need for an 'if' when the body is empty.
    
    Reviewed-on: https://gerrit.libreoffice.org/48091
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    (cherry picked from commit 73c0abb8e001e3f48bbd0d04f11482972fe82fe4)
    
    Change-Id: I69e3f2145f95424e7c524127492fd7f8a03ed3ca

diff --git a/sfx2/source/dialog/mgetempl.cxx b/sfx2/source/dialog/mgetempl.cxx
index b6e78d3a5ff9..1dc87a2c537d 100644
--- a/sfx2/source/dialog/mgetempl.cxx
+++ b/sfx2/source/dialog/mgetempl.cxx
@@ -314,7 +314,7 @@ void SfxManageStyleSheetPage::SetDescriptionText_Impl()
     {
         const SfxPoolItem* pPoolItem = pModule->GetItem( SID_ATTR_METRIC );
         if ( pPoolItem )
-            eFieldUnit = (FieldUnit) static_cast<const SfxUInt16Item*>( pPoolItem )->GetValue();
+            eFieldUnit = static_cast<FieldUnit>(static_cast<const SfxUInt16Item*>( pPoolItem )->GetValue());
     }
 
     switch ( eFieldUnit )
@@ -348,9 +348,7 @@ IMPL_LINK_NOARG( SfxManageStyleSheetPage, EditStyleSelectHdl_Impl, ListBox&, voi
 IMPL_LINK_NOARG( SfxManageStyleSheetPage, EditStyleHdl_Impl, Button*, void )
 {
     OUString aTemplName(m_pFollowLb->GetSelectedEntry());
-    if (Execute_Impl( SID_STYLE_EDIT, aTemplName, OUString(),(sal_uInt16)pStyle->GetFamily() ))
-    {
-    }
+    Execute_Impl(SID_STYLE_EDIT, aTemplName, OUString(), static_cast<sal_uInt16>(pStyle->GetFamily()));
 }
 
 IMPL_LINK_NOARG( SfxManageStyleSheetPage, EditLinkStyleSelectHdl_Impl, ListBox&, void )
@@ -366,7 +364,7 @@ IMPL_LINK_NOARG( SfxManageStyleSheetPage, EditLinkStyleHdl_Impl, Button*, void )
 {
     OUString aTemplName(m_pBaseLb->GetSelectedEntry());
     if (aTemplName != SfxResId(STR_NONE))
-        Execute_Impl( SID_STYLE_EDIT, aTemplName, OUString(),(sal_uInt16)pStyle->GetFamily() );
+        Execute_Impl( SID_STYLE_EDIT, aTemplName, OUString(),static_cast<sal_uInt16>(pStyle->GetFamily()) );
 }
 
 // Internal: Perform functions through the Dispatcher
commit bc07afdc5db575ce87374cde1d21f6a09fe528f2
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Wed Jan 17 20:15:22 2018 +0100

    lokdialog: Convert the Format -> ... -> Area... to async exec.
    
    Change-Id: I3756bd472b4e54db1d1c9da382d5d655f472bdb7
    Reviewed-on: https://gerrit.libreoffice.org/48080
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    (cherry picked from commit b479e9625475e87546b7945732a0e66a2a9dbb1f)

diff --git a/sd/source/ui/func/fuarea.cxx b/sd/source/ui/func/fuarea.cxx
index 1e891416483a..1d9197871071 100644
--- a/sd/source/ui/func/fuarea.cxx
+++ b/sd/source/ui/func/fuarea.cxx
@@ -52,19 +52,28 @@ rtl::Reference<FuPoor> FuArea::Create( ViewShell* pViewSh, ::sd::Window* pWin, :
 
 void FuArea::DoExecute( SfxRequest& rReq )
 {
+    rReq.Ignore ();
+
     const SfxItemSet* pArgs = rReq.GetArgs();
+    if (pArgs)
+    {
+        mpViewShell->Cancel();
+        return;
+    }
+
+    SfxItemSet aNewAttr( mpDoc->GetPool() );
+    mpView->GetAttributes( aNewAttr );
 
-    if( !pArgs )
+    SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
+    VclPtr<AbstractSvxAreaTabDialog> pDlg(pFact ? pFact->CreateSvxAreaTabDialog(nullptr, &aNewAttr, mpDoc, true) : nullptr);
+    if (!pDlg)
     {
-        SfxItemSet aNewAttr( mpDoc->GetPool() );
-        mpView->GetAttributes( aNewAttr );
-
-        SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
-        ScopedVclPtr<AbstractSvxAreaTabDialog> pDlg(pFact ? pFact->CreateSvxAreaTabDialog( nullptr,
-                                                                        &aNewAttr,
-                                                                        mpDoc,
-                                                                        true) : nullptr);
-        if( pDlg && (pDlg->Execute() == RET_OK) )
+        mpViewShell->Cancel();
+        return;
+    }
+
+    pDlg->StartExecuteAsync([=](sal_Int32 nResult){
+        if (nResult == RET_OK)
         {
             mpView->SetAttributes (*(pDlg->GetOutputItemSet ()));
 
@@ -81,10 +90,7 @@ void FuArea::DoExecute( SfxRequest& rReq )
 
             mpViewShell->GetViewFrame()->GetBindings().Invalidate( SidArray );
         }
-    }
-
-    rReq.Ignore ();
-
+    }, pDlg);
 }
 
 void FuArea::Activate()
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index a3b1bcc9c355..1979cb91bcb4 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -1374,7 +1374,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
         case SID_ATTRIBUTES_AREA:  // BASIC
         {
             SetCurrentFunction( FuArea::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
-            Cancel();
+            // Cancel() called directly in FuTransform::Create()
         }
         break;
 
commit 5663295a16340b7d122991300831388edf45eb18
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Wed Jan 17 19:17:30 2018 +0100

    lokdialog: Convert the Format -> ... -> Line... to async exec.
    
    Change-Id: Ieaf440abf819d503d388a8b060dbf7fe6548db9e
    Reviewed-on: https://gerrit.libreoffice.org/48073
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    (cherry picked from commit cb84fdb368ed4b09d086681fe777a0f4c0f07f76)

diff --git a/sd/source/ui/func/fuline.cxx b/sd/source/ui/func/fuline.cxx
index cb4bd715581d..67ad104ecc31 100644
--- a/sd/source/ui/func/fuline.cxx
+++ b/sd/source/ui/func/fuline.cxx
@@ -60,23 +60,34 @@ rtl::Reference<FuPoor> FuLine::Create( ViewShell* pViewSh, ::sd::Window* pWin, :
 
 void FuLine::DoExecute( SfxRequest& rReq )
 {
-    bool        bHasMarked = mpView->AreObjectsMarked();
+    rReq.Ignore();
 
     const SfxItemSet* pArgs = rReq.GetArgs();
-
-    if( !pArgs )
+    if (pArgs)
     {
-        const SdrObject* pObj = nullptr;
-        const SdrMarkList& rMarkList = mpView->GetMarkedObjectList();
-        if( rMarkList.GetMarkCount() == 1 )
-            pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
+        mpViewShell->Cancel();
+        return;
+    }
+
+    const SdrObject* pObj = nullptr;
+    const SdrMarkList& rMarkList = mpView->GetMarkedObjectList();
+    if( rMarkList.GetMarkCount() == 1 )
+        pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
+
+    std::unique_ptr<SfxItemSet> pNewAttr(new SfxItemSet( mpDoc->GetPool() ));
+    mpView->GetAttributes( *pNewAttr );
 
-        std::unique_ptr<SfxItemSet> pNewAttr(new SfxItemSet( mpDoc->GetPool() ));
-        mpView->GetAttributes( *pNewAttr );
+    bool bHasMarked = mpView->AreObjectsMarked();
+    SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
+    VclPtr<SfxAbstractTabDialog> pDlg(pFact ? pFact->CreateSvxLineTabDialog(nullptr,pNewAttr.get(),mpDoc,pObj,bHasMarked) : nullptr);
+    if (!pDlg)
+    {
+        mpViewShell->Cancel();
+        return;
+    }
 
-        SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
-        ScopedVclPtr<SfxAbstractTabDialog> pDlg(pFact ? pFact->CreateSvxLineTabDialog(nullptr,pNewAttr.get(),mpDoc,pObj,bHasMarked) : nullptr);
-        if( pDlg && (pDlg->Execute() == RET_OK) )
+    pDlg->StartExecuteAsync([=](sal_Int32 nResult){
+        if (nResult == RET_OK)
         {
             mpView->SetAttributes (*(pDlg->GetOutputItemSet ()));
 
@@ -95,9 +106,8 @@ void FuLine::DoExecute( SfxRequest& rReq )
 
             mpViewShell->GetViewFrame()->GetBindings().Invalidate( SidArray );
         }
-    }
-
-    rReq.Ignore ();
+        mpViewShell->Cancel();
+    }, pDlg);
 }
 
 void FuLine::Activate()
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index 89ba3063be78..a3b1bcc9c355 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -1367,7 +1367,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
         case SID_ATTRIBUTES_LINE:  // BASIC
         {
             SetCurrentFunction( FuLine::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
-            Cancel();
+            // Cancel() called directly in FuTransform::Create()
         }
         break;
 
commit 6af2f75bf74bd596c45884cf5e000e0c83d68404
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Wed Jan 17 15:20:31 2018 +0100

    lokdialog: Convert the Format -> ... -> Position and Size... to async exec.
    
    Change-Id: Idcdbfb1366db61e247c31eab5cb27a39978b0fd9
    Reviewed-on: https://gerrit.libreoffice.org/48055
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    (cherry picked from commit d3dbbdce4eb71ae848e7682374e011c4a6129b15)

diff --git a/cui/source/factory/dlgfact.hxx b/cui/source/factory/dlgfact.hxx
index 39e4b54379bd..e997d784f261 100644
--- a/cui/source/factory/dlgfact.hxx
+++ b/cui/source/factory/dlgfact.hxx
@@ -67,12 +67,17 @@ public:                                             \
     explicit        Class( DialogClass* p)          \
                      : pDlg(p)                      \
                      {}                             \
-    virtual short   Execute() override ;
+    virtual short   Execute() override;             \
+    virtual bool    StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) override;
 
 #define IMPL_ABSTDLG_BASE(Class)                    \
 short Class::Execute()                              \
 {                                                   \
     return pDlg->Execute();                         \
+}                                                   \
+bool Class::StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) \
+{                                                   \
+    return pDlg->StartExecuteAsync(rCtx);           \
 }
 
 class VclAbstractDialog2_Impl : public VclAbstractDialog2
diff --git a/sd/source/ui/func/futransf.cxx b/sd/source/ui/func/futransf.cxx
index 4a811aa62a75..0d0a7788d43a 100644
--- a/sd/source/ui/func/futransf.cxx
+++ b/sd/source/ui/func/futransf.cxx
@@ -32,8 +32,7 @@
 
 #include <memory>
 
-namespace sd {
-
+using namespace sd;
 
 FuTransform::FuTransform(ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView,
                          SdDrawDocument* pDoc, SfxRequest& rReq)
@@ -48,74 +47,112 @@ rtl::Reference<FuPoor> FuTransform::Create( ViewShell* pViewSh, ::sd::Window* pW
     return xFunc;
 }
 
-void FuTransform::DoExecute( SfxRequest& rReq )
+namespace {
+
+void setUndo(::sd::View* pView, const SfxItemSet* pArgs)
+{
+    // Undo
+    OUString aString(pView->GetDescriptionOfMarkedObjects());
+    aString += " " + SdResId(STR_TRANSFORM);
+    pView->BegUndo(aString);
+
+    pView->SetGeoAttrToMarked(*pArgs);
+    pView->SetAttributes(*pArgs);
+    pView->EndUndo();
+}
+
+class ScopeCleanup
 {
-    if( mpView->AreObjectsMarked() )
+    ViewShell* mpViewShell;
+public:
+    ScopeCleanup(ViewShell* pViewShell) : mpViewShell(pViewShell)
     {
-        const SfxItemSet* pArgs = rReq.GetArgs();
+    }
 
-        if( !pArgs )
+    ~ScopeCleanup()
+    {
+        if (mpViewShell)
         {
-            // --------- itemset for size and position --------
-            SfxItemSet aSet( mpView->GetGeoAttrFromMarked() );
-
-            const SdrMarkList& rMarkList = mpView->GetMarkedObjectList();
-            SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
-            if( rMarkList.GetMarkCount() == 1 &&
-                pObj->GetObjInventor() == SdrInventor::Default &&
-                pObj->GetObjIdentifier() == OBJ_CAPTION )
-            {
-                // --------- itemset for caption --------
-                SfxItemSet aNewAttr( mpDoc->GetPool() );
-                mpView->GetAttributes( aNewAttr );
-
-                SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
-                if ( pFact )
-                {
-                    ScopedVclPtr< SfxAbstractTabDialog > pDlg( pFact->CreateCaptionDialog( nullptr, mpView ) );
-
-                    const sal_uInt16* pRange = pDlg->GetInputRanges( *aNewAttr.GetPool() );
-                    SfxItemSet aCombSet( *aNewAttr.GetPool(), pRange );
-                    aCombSet.Put( aNewAttr );
-                    aCombSet.Put( aSet );
-                    pDlg->SetInputSet( &aCombSet );
-
-                    if( pDlg.get() && (pDlg->Execute() == RET_OK) )
-                    {
-                        rReq.Done( *( pDlg->GetOutputItemSet() ) );
-                        pArgs = rReq.GetArgs();
-                    }
-                }
-            }
-            else
-            {
-                SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
-                if(pFact)
-                {
-                    ScopedVclPtr< SfxAbstractTabDialog > pDlg( pFact->CreateSvxTransformTabDialog( nullptr, &aSet, mpView ) );
-                    if( pDlg.get() && (pDlg->Execute() == RET_OK) )
-                    {
-                        rReq.Done( *( pDlg->GetOutputItemSet() ) );
-                        pArgs = rReq.GetArgs();
-                    }
-                }
-            }
+            mpViewShell->Invalidate(SID_RULER_OBJECT);
+            mpViewShell->Cancel();
         }
+    }
 
-        if( pArgs )
-        {
-            // Undo
-            OUString aString( mpView->GetDescriptionOfMarkedObjects() );
-            aString += " " + SdResId( STR_TRANSFORM );
-            mpView->BegUndo( aString );
-
-            mpView->SetGeoAttrToMarked( *pArgs );
-            mpView->SetAttributes( *pArgs );
-            mpView->EndUndo();
-        }
+    void ignore()
+    {
+        mpViewShell = nullptr;
     }
+};
+
 }
 
-} // end of namespace sd
+void FuTransform::DoExecute( SfxRequest& rReq )
+{
+    ScopeCleanup aCleanup(mpViewShell);
+
+    if (!mpView->AreObjectsMarked())
+        return;
+
+    const SfxItemSet* pArgs = rReq.GetArgs();
+
+    if (pArgs)
+    {
+        setUndo(mpView, pArgs);
+        return;
+    }
+
+    // --------- itemset for size and position --------
+    SfxItemSet aSet( mpView->GetGeoAttrFromMarked() );
+    VclPtr<SfxAbstractTabDialog> pDlg;
+
+    const SdrMarkList& rMarkList = mpView->GetMarkedObjectList();
+    SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
+    if( rMarkList.GetMarkCount() == 1 &&
+        pObj->GetObjInventor() == SdrInventor::Default &&
+        pObj->GetObjIdentifier() == OBJ_CAPTION )
+    {
+        // --------- itemset for caption --------
+        SfxItemSet aNewAttr( mpDoc->GetPool() );
+        mpView->GetAttributes( aNewAttr );
+
+        SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
+        if (!pFact)
+            return;
+
+        pDlg.reset(pFact->CreateCaptionDialog(nullptr, mpView));
+
+        const sal_uInt16* pRange = pDlg->GetInputRanges( *aNewAttr.GetPool() );
+        SfxItemSet aCombSet( *aNewAttr.GetPool(), pRange );
+        aCombSet.Put( aNewAttr );
+        aCombSet.Put( aSet );
+        pDlg->SetInputSet( &aCombSet );
+    }
+    else
+    {
+        SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
+        if (!pFact)
+            return;
+
+        pDlg.reset(pFact->CreateSvxTransformTabDialog(nullptr, &aSet, mpView));
+    }
+
+    if (!pDlg)
+        return;
+
+    std::shared_ptr<SfxRequest> pRequest(new SfxRequest(rReq));
+    rReq.Ignore(); // the 'old' request is not relevant any more
+    aCleanup.ignore(); // the lambda does it
+
+    pDlg->StartExecuteAsync([=](sal_Int32 nResult){
+        if (nResult == RET_OK)
+        {
+            pRequest->Done(*(pDlg->GetOutputItemSet()));
+            setUndo(mpView, pRequest->GetArgs());
+        }
+
+        mpViewShell->Invalidate(SID_RULER_OBJECT);
+        mpViewShell->Cancel();
+    }, pDlg);
+}
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index 4fd1a539607f..89ba3063be78 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -1381,8 +1381,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
         case SID_ATTR_TRANSFORM:
         {
             SetCurrentFunction( FuTransform::Create( this, GetActiveWindow(), mpDrawView, GetDoc(), rReq ) );
-            Invalidate(SID_RULER_OBJECT);
-            Cancel();
+            // Cancel() and Invalidate() called directly in FuTransform::Create()
         }
         break;
 
commit ff25702c53157935e32858df919e9051767032a2
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Wed Jan 17 12:42:42 2018 +0100

    lokdialog: Convert the Format -> Page... dialog to async exec.
    
    This actually also converts the Style -> Edit Style... at the same time.
    
    Reviewed-on: https://gerrit.libreoffice.org/48043
    Tested-by: Jan Holesovsky <kendy at collabora.com>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    (cherry picked from commit e6e125946358865990ea999c8a4845ec84eb7088)
    
    Change-Id: I4c09fcdfd7a543cce613eaa3620d0b623540d7e8

diff --git a/sw/inc/docsh.hxx b/sw/inc/docsh.hxx
index 9ab55372c184..8b2c064403b3 100644
--- a/sw/inc/docsh.hxx
+++ b/sw/inc/docsh.hxx
@@ -127,7 +127,8 @@ class SW_DLLPUBLIC SwDocShell
         const bool bNew,
         const OString& sPageId,
         SwWrtShell* pActShell = nullptr,
-        SfxRequest* pRequest = nullptr);
+        SfxRequest* pRequest = nullptr,
+        sal_uInt16 nSlot = 0);
 
     SAL_DLLPRIVATE void                  Delete(const OUString &rName, SfxStyleFamily nFamily);
     SAL_DLLPRIVATE void                  Hide(const OUString &rName, SfxStyleFamily nFamily, bool bHidden);
diff --git a/sw/source/uibase/app/docst.cxx b/sw/source/uibase/app/docst.cxx
index bfbe6438110c..4361dd18068c 100644
--- a/sw/source/uibase/app/docst.cxx
+++ b/sw/source/uibase/app/docst.cxx
@@ -322,15 +322,7 @@ void SwDocShell::ExecStyleSheet( SfxRequest& rReq )
             if (sName.isEmpty() && m_xBasePool.get())
                 sName = SfxStyleDialog::GenerateUnusedName(*m_xBasePool);
 
-            Edit(sName, sParent, nFamily, nMask, true, OString(), nullptr, &rReq);
-
-            // Update Watermark if new page style was created
-            if( nFamily == SfxStyleFamily::Page )
-            {
-                SwWrtShell* pShell = GetWrtShell();
-                const SfxWatermarkItem aWatermark = pShell->GetWatermark();
-                pShell->SetWatermark( aWatermark );
-            }
+            Edit(sName, sParent, nFamily, nMask, true, OString(), nullptr, &rReq, nSlot);
         }
         break;
 
@@ -657,10 +649,11 @@ void SwDocShell::Edit(
     const bool bNew,
     const OString& sPage,
     SwWrtShell* pActShell,
-    SfxRequest* pRequest)
+    SfxRequest* pReq,
+    sal_uInt16 nSlot)
 {
     assert( GetWrtShell() );
-    const bool bBasic = pRequest && pRequest->IsAPI();
+    const bool bBasic = pReq && pReq->IsAPI();
     SfxStyleSheetBase *pStyle = nullptr;
 
     bool bModified = m_xDoc->getIDocumentState().IsModified();
@@ -830,36 +823,52 @@ void SwDocShell::Edit(
                                                     *(xTmp.get()), nFamily, sPage,
                                                     pActShell ? pActShell : m_pWrtShell, bNew));
         assert( pDlg );
-        ApplyStyle aApplyStyleHelper(*this, bNew, xTmp, nFamily, pDlg.get(), m_xBasePool, bModified);
-        pDlg->SetApplyHdl(LINK(&aApplyStyleHelper, ApplyStyle, ApplyHdl));
+        std::shared_ptr<ApplyStyle> pApplyStyleHelper(new ApplyStyle(*this, bNew, xTmp, nFamily, pDlg.get(), m_xBasePool, bModified));
+        pDlg->SetApplyHdl(LINK(pApplyStyleHelper.get(), ApplyStyle, ApplyHdl));
 
-        short nDlgRet = pDlg->Execute();
-
-        if (RET_OK == nDlgRet)
+        std::shared_ptr<SfxRequest> pRequest;
+        if (pReq)
         {
-            aApplyStyleHelper.apply();
+            pRequest.reset(new SfxRequest(*pReq));
+            pReq->Ignore(); // the 'old' request is not relevant any more
         }
 
-        if (bNew)
-        {
-            SwRewriter aRewriter;
-            aRewriter.AddRule(UndoArg1, xTmp->GetName());
-            //Group the create style and change style operations together under the
-            //one "create style" comment
-            m_pWrtShell->EndUndo(nNewStyleUndoId, &aRewriter);
-        }
+        pDlg->StartExecuteAsync([=](sal_Int32 nResult){
+            if (RET_OK == nResult)
+                pApplyStyleHelper->apply();
 
-        if (RET_OK != nDlgRet)
-        {
-            if( bNew )
+            if (bNew)
             {
-                GetWrtShell()->Undo();
-                m_xDoc->GetIDocumentUndoRedo().ClearRedo();
+                SwRewriter aRewriter;
+                aRewriter.AddRule(UndoArg1, xTmp->GetName());
+                //Group the create style and change style operations together under the
+                //one "create style" comment
+                m_pWrtShell->EndUndo(nNewStyleUndoId, &aRewriter);
             }
 
-            if( !bModified )
-                m_xDoc->getIDocumentState().ResetModified();
-        }
+            if (RET_OK != nResult)
+            {
+                if (bNew)
+                {
+                    GetWrtShell()->Undo();
+                    m_xDoc->GetIDocumentUndoRedo().ClearRedo();
+                }
+
+                if (!bModified)
+                    m_xDoc->getIDocumentState().ResetModified();
+            }
+
+            // Update Watermark if new page style was created
+            if (nSlot == SID_STYLE_NEW && nFamily == SfxStyleFamily::Page)
+            {
+                SwWrtShell* pShell = GetWrtShell();
+                const SfxWatermarkItem aWatermark = pShell->GetWatermark();
+                pShell->SetWatermark(aWatermark);
+            }
+
+            if (pRequest)
+                pRequest->Done();
+        }, pDlg);
     }
     else
     {
diff --git a/sw/source/uibase/shells/basesh.cxx b/sw/source/uibase/shells/basesh.cxx
index a8e7ff358020..2d38db9fdea0 100644
--- a/sw/source/uibase/shells/basesh.cxx
+++ b/sw/source/uibase/shells/basesh.cxx
@@ -2450,6 +2450,8 @@ void SwBaseShell::ExecDlg(SfxRequest &rReq)
 
                 rTempView.GetDocShell()->FormatPage(rPageDesc.GetName(), sPageId, rSh, &rReq);
                 rTempView.InvalidateRulerPos();
+
+                bDone = true; // FormatPage() takes care of calling Done()
             }
         }
         break;
commit adabda5056d99a1efade39a47bceafa9a467d149
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Wed Jan 17 12:06:34 2018 +0100

    sw: Cleanup various unused return values.
    
    Reviewed-on: https://gerrit.libreoffice.org/48042
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>
    (cherry picked from commit 2bd262305cae9b4268c8fb50993119f1bcd7de14)
    
    Change-Id: Ic0e0c6cfd4b6d79f7c3807ac4300f30343269dea

diff --git a/sw/inc/docsh.hxx b/sw/inc/docsh.hxx
index 6829837d91cf..9ab55372c184 100644
--- a/sw/inc/docsh.hxx
+++ b/sw/inc/docsh.hxx
@@ -119,7 +119,7 @@ class SW_DLLPUBLIC SwDocShell
     /// @param nSlot
     /// Only used for nFamily == SfxStyleFamily::Page. Identifies optional Slot by which the edit is triggered.
     /// Used to activate certain dialog pane
-    SAL_DLLPRIVATE sal_uInt16 Edit(
+    SAL_DLLPRIVATE void Edit(
         const OUString &rName,
         const OUString& rParent,
         const SfxStyleFamily nFamily,
@@ -127,17 +127,17 @@ class SW_DLLPUBLIC SwDocShell
         const bool bNew,
         const OString& sPageId,
         SwWrtShell* pActShell = nullptr,
-        const bool bBasic = false );
+        SfxRequest* pRequest = nullptr);
 
-    SAL_DLLPRIVATE bool                  Delete(const OUString &rName, SfxStyleFamily nFamily);
-    SAL_DLLPRIVATE bool                  Hide(const OUString &rName, SfxStyleFamily nFamily, bool bHidden);
+    SAL_DLLPRIVATE void                  Delete(const OUString &rName, SfxStyleFamily nFamily);
+    SAL_DLLPRIVATE void                  Hide(const OUString &rName, SfxStyleFamily nFamily, bool bHidden);
     SAL_DLLPRIVATE SfxStyleFamily        ApplyStyles(const OUString &rName,
         const SfxStyleFamily nFamily,
         SwWrtShell* pShell,
         sal_uInt16 nMode = 0);
     SAL_DLLPRIVATE SfxStyleFamily        DoWaterCan( const OUString &rName, SfxStyleFamily nFamily);
-    SAL_DLLPRIVATE SfxStyleFamily        UpdateStyle(const OUString &rName, SfxStyleFamily nFamily, SwWrtShell* pShell);
-    SAL_DLLPRIVATE SfxStyleFamily        MakeByExample(const OUString &rName,
+    SAL_DLLPRIVATE void                  UpdateStyle(const OUString &rName, SfxStyleFamily nFamily, SwWrtShell* pShell);
+    SAL_DLLPRIVATE void                  MakeByExample(const OUString &rName,
                                                SfxStyleFamily nFamily, sal_uInt16 nMask, SwWrtShell* pShell);
 
     SAL_DLLPRIVATE void                  SubInitNew();   ///< for InitNew and HtmlSourceMode.
@@ -257,7 +257,8 @@ public:
     void FormatPage(
         const OUString& rPage,
         const OString& rPageId,
-        SwWrtShell& rActShell );
+        SwWrtShell& rActShell,
+        SfxRequest* pRequest = nullptr);
 
     // #i59688#
     /** linked graphics are now loaded on demand.
diff --git a/sw/source/uibase/app/docst.cxx b/sw/source/uibase/app/docst.cxx
index b17e936dd02e..bfbe6438110c 100644
--- a/sw/source/uibase/app/docst.cxx
+++ b/sw/source/uibase/app/docst.cxx
@@ -93,7 +93,7 @@ void  SwDocShell::StateStyleSheet(SfxItemSet& rSet, SwWrtShell* pSh)
 {
     SfxWhichIter aIter(rSet);
     sal_uInt16  nWhich  = aIter.FirstWhich();
-    SfxStyleFamily nActualFamily = (SfxStyleFamily)USHRT_MAX;
+    SfxStyleFamily nActualFamily = SfxStyleFamily(USHRT_MAX);
 
     SwWrtShell* pShell = pSh ? pSh : GetWrtShell();
     if(!pShell)
@@ -242,7 +242,7 @@ void  SwDocShell::StateStyleSheet(SfxItemSet& rSet, SwWrtShell* pSh)
             {
                 SwEditWin& rEdtWin = pShell->GetView().GetEditWin();
                 SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
-                rSet.Put(SfxBoolItem(nWhich, pApply && pApply->eType != (SfxStyleFamily)0));
+                rSet.Put(SfxBoolItem(nWhich, pApply && pApply->eType != SfxStyleFamily(0)));
             }
             break;
             case SID_STYLE_UPDATE_BY_EXAMPLE:
@@ -304,7 +304,7 @@ void SwDocShell::ExecStyleSheet( SfxRequest& rReq )
         if( pArgs && SfxItemState::SET == pArgs->GetItemState( SID_STYLE_FAMILY,
             false, &pItem ))
         {
-            const SfxStyleFamily nFamily = (SfxStyleFamily) static_cast<const SfxUInt16Item*>(pItem)->GetValue();
+            const SfxStyleFamily nFamily = static_cast<SfxStyleFamily>(static_cast<const SfxUInt16Item*>(pItem)->GetValue());
 
             OUString sName;
             sal_uInt16 nMask = 0;
@@ -322,7 +322,7 @@ void SwDocShell::ExecStyleSheet( SfxRequest& rReq )
             if (sName.isEmpty() && m_xBasePool.get())
                 sName = SfxStyleDialog::GenerateUnusedName(*m_xBasePool);
 
-            Edit(sName, sParent, nFamily, nMask, true, OString(), nullptr, rReq.IsAPI());
+            Edit(sName, sParent, nFamily, nMask, true, OString(), nullptr, &rReq);
 
             // Update Watermark if new page style was created
             if( nFamily == SfxStyleFamily::Page )
@@ -422,7 +422,7 @@ void SwDocShell::ExecStyleSheet( SfxRequest& rReq )
 
                 if( SfxItemState::SET == pArgs->GetItemState(SID_STYLE_FAMILY,
                     false, &pItem ))
-                    nFamily = (SfxStyleFamily) static_cast<const SfxUInt16Item*>(pItem)->GetValue();
+                    nFamily = static_cast<SfxStyleFamily>(static_cast<const SfxUInt16Item*>(pItem)->GetValue());
 
                 if( SfxItemState::SET == pArgs->GetItemState(SID_STYLE_FAMILYNAME, false, &pItem ))
                 {
@@ -514,18 +514,18 @@ void SwDocShell::ExecStyleSheet( SfxRequest& rReq )
                         break;
                     case SID_STYLE_APPLY:
                         // Shell-switch in ApplyStyles
-                        nRet = (sal_uInt16) ApplyStyles(aParam, nFamily, pActShell, rReq.GetModifier() );
+                        nRet = static_cast<sal_uInt16>(ApplyStyles(aParam, nFamily, pActShell, rReq.GetModifier() ));
                         bReturns = true;
                         break;
                     case SID_STYLE_WATERCAN:
-                        nRet = (sal_uInt16) DoWaterCan(aParam, nFamily);
+                        nRet = static_cast<sal_uInt16>(DoWaterCan(aParam, nFamily));
                         bReturns = true;
                         break;
                     case SID_STYLE_UPDATE_BY_EXAMPLE:
-                        nRet = static_cast<sal_uInt16>(UpdateStyle(aParam, nFamily, pActShell));
+                        UpdateStyle(aParam, nFamily, pActShell);
                         break;
                     case SID_STYLE_NEW_BY_EXAMPLE:
-                        nRet = static_cast<sal_uInt16>(MakeByExample(aParam, nFamily, nMask, pActShell ));
+                        MakeByExample(aParam, nFamily, nMask, pActShell);
                         break;
 
                     default:
@@ -551,15 +551,13 @@ void SwDocShell::ExecStyleSheet( SfxRequest& rReq )
 class ApplyStyle
 {
 public:
-    ApplyStyle(SwDocShell &rDocSh, bool bNew, SfxStyleSheetBase* pStyle,
-        sal_uInt16 nRet, rtl::Reference< SwDocStyleSheet > const & xTmp,
+    ApplyStyle(SwDocShell &rDocSh, bool bNew,
+        rtl::Reference< SwDocStyleSheet > const & xTmp,
         SfxStyleFamily nFamily, SfxAbstractApplyTabDialog *pDlg,
         rtl::Reference< SfxStyleSheetBasePool > const & xBasePool,
         bool bModified)
         : m_rDocSh(rDocSh)
         , m_bNew(bNew)
-        , m_pStyle(pStyle)
-        , m_nRet(nRet)
         , m_xTmp(xTmp)
         , m_nFamily(nFamily)
         , m_pDlg(pDlg)
@@ -572,12 +570,9 @@ public:
     {
         ApplyHdl(nullptr);
     }
-    sal_uInt16 getRet() const { return m_nRet; }
 private:
     SwDocShell &m_rDocSh;
     bool m_bNew;
-    SfxStyleSheetBase* m_pStyle;
-    sal_uInt16 m_nRet;
     rtl::Reference< SwDocStyleSheet > m_xTmp;
     SfxStyleFamily m_nFamily;
     VclPtr<SfxAbstractApplyTabDialog> m_pDlg;
@@ -593,16 +588,6 @@ IMPL_LINK_NOARG(ApplyStyle, ApplyHdl, LinkParamNone*, void)
 
     pWrtShell->StartAllAction();
 
-    // newly set the mask only with paragraph-templates
-    if( m_bNew )
-    {
-        m_nRet = SfxStyleFamily::Para == m_pStyle->GetFamily()
-                ? m_xTmp->GetMask()
-                : SFXSTYLEBIT_USERDEF;
-    }
-    else if( m_pStyle->GetMask() != m_xTmp->GetMask() )
-        m_nRet = m_xTmp->GetMask();
-
     if( SfxStyleFamily::Para == m_nFamily )
     {
         SfxItemSet aSet( *m_pDlg->GetOutputItemSet() );
@@ -664,7 +649,7 @@ IMPL_LINK_NOARG(ApplyStyle, ApplyHdl, LinkParamNone*, void)
     pWrtShell->EndAllAction();
 }
 
-sal_uInt16 SwDocShell::Edit(
+void SwDocShell::Edit(
     const OUString &rName,
     const OUString &rParent,
     const SfxStyleFamily nFamily,
@@ -672,12 +657,12 @@ sal_uInt16 SwDocShell::Edit(
     const bool bNew,
     const OString& sPage,
     SwWrtShell* pActShell,
-    const bool bBasic )
+    SfxRequest* pRequest)
 {
     assert( GetWrtShell() );
+    const bool bBasic = pRequest && pRequest->IsAPI();
     SfxStyleSheetBase *pStyle = nullptr;
 
-    sal_uInt16 nRet = nMask;
     bool bModified = m_xDoc->getIDocumentState().IsModified();
 
     SwUndoId nNewStyleUndoId(SwUndoId::EMPTY);
@@ -696,7 +681,7 @@ sal_uInt16 SwDocShell::Edit(
         else
             nMask = SFXSTYLEBIT_USERDEF;
 
-        pStyle = &m_xBasePool->Make( rName, (SfxStyleFamily)nFamily, nMask );
+        pStyle = &m_xBasePool->Make( rName, nFamily, nMask );
 
         // set the current one as Parent
         SwDocStyleSheet* pDStyle = static_cast<SwDocStyleSheet*>(pStyle);
@@ -788,12 +773,12 @@ sal_uInt16 SwDocShell::Edit(
     }
     else
     {
-        pStyle = m_xBasePool->Find( rName, (SfxStyleFamily)nFamily );
+        pStyle = m_xBasePool->Find( rName, nFamily );
         SAL_WARN_IF( !pStyle, "sw.ui", "Style not found" );
     }
 
     if(!pStyle)
-        return 0;
+        return;
 
     // put dialogues together
     rtl::Reference< SwDocStyleSheet > xTmp( new SwDocStyleSheet( *static_cast<SwDocStyleSheet*>(pStyle) ) );
@@ -845,7 +830,7 @@ sal_uInt16 SwDocShell::Edit(
                                                     *(xTmp.get()), nFamily, sPage,
                                                     pActShell ? pActShell : m_pWrtShell, bNew));
         assert( pDlg );
-        ApplyStyle aApplyStyleHelper(*this, bNew, pStyle, nRet, xTmp, nFamily, pDlg.get(), m_xBasePool, bModified);
+        ApplyStyle aApplyStyleHelper(*this, bNew, xTmp, nFamily, pDlg.get(), m_xBasePool, bModified);
         pDlg->SetApplyHdl(LINK(&aApplyStyleHelper, ApplyStyle, ApplyHdl));
 
         short nDlgRet = pDlg->Execute();
@@ -875,8 +860,6 @@ sal_uInt16 SwDocShell::Edit(
             if( !bModified )
                 m_xDoc->getIDocumentState().ResetModified();
         }
-
-        nRet = aApplyStyleHelper.getRet();
     }
     else
     {
@@ -885,16 +868,6 @@ sal_uInt16 SwDocShell::Edit(
 
         GetWrtShell()->StartAllAction();
 
-        // newly set the mask only with paragraph-templates
-        if( bNew )
-        {
-            nRet = SfxStyleFamily::Para == pStyle->GetFamily()
-                    ? xTmp->GetMask()
-                    : SFXSTYLEBIT_USERDEF;
-        }
-        else if( pStyle->GetMask() != xTmp->GetMask() )
-            nRet = xTmp->GetMask();
-
         if( SfxStyleFamily::Para == nFamily )
             ::SfxToSwPageDescAttr( *GetWrtShell(), xTmp->GetItemSet() );
         else
@@ -914,11 +887,9 @@ sal_uInt16 SwDocShell::Edit(
         }
         GetWrtShell()->EndAllAction();
     }
-
-    return nRet;
 }
 
-bool SwDocShell::Delete(const OUString &rName, SfxStyleFamily nFamily)
+void SwDocShell::Delete(const OUString &rName, SfxStyleFamily nFamily)
 {
     SfxStyleSheetBase *pStyle = m_xBasePool->Find(rName, nFamily);
 
@@ -929,13 +900,10 @@ bool SwDocShell::Delete(const OUString &rName, SfxStyleFamily nFamily)
         GetWrtShell()->StartAllAction();
         m_xBasePool->Remove(pStyle);
         GetWrtShell()->EndAllAction();
-
-        return true;
     }
-    return false;
 }
 
-bool SwDocShell::Hide(const OUString &rName, SfxStyleFamily nFamily, bool bHidden)
+void SwDocShell::Hide(const OUString &rName, SfxStyleFamily nFamily, bool bHidden)
 {
     SfxStyleSheetBase *pStyle = m_xBasePool->Find(rName, nFamily);
 
@@ -947,10 +915,7 @@ bool SwDocShell::Hide(const OUString &rName, SfxStyleFamily nFamily, bool bHidde
         rtl::Reference< SwDocStyleSheet > xTmp( new SwDocStyleSheet( *static_cast<SwDocStyleSheet*>(pStyle) ) );
         xTmp->SetHidden( bHidden );
         GetWrtShell()->EndAllAction();
-
-        return true;
     }
-    return false;
 }
 
 // apply template
@@ -1027,7 +992,7 @@ SfxStyleFamily SwDocShell::DoWaterCan(const OUString &rName, SfxStyleFamily nFam
 
     SwEditWin& rEdtWin = m_pView->GetEditWin();
     SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate();
-    bool bWaterCan = !(pApply && pApply->eType != (SfxStyleFamily)0);
+    bool bWaterCan = !(pApply && pApply->eType != SfxStyleFamily(0));
 
     if( rName.isEmpty() )
         bWaterCan = false;
@@ -1067,7 +1032,7 @@ SfxStyleFamily SwDocShell::DoWaterCan(const OUString &rName, SfxStyleFamily nFam
         }
     }
     else
-        aTemplate.eType = (SfxStyleFamily)0;
+        aTemplate.eType = SfxStyleFamily(0);
 
     m_pView->GetEditWin().SetApplyTemplate(aTemplate);
 
@@ -1075,7 +1040,7 @@ SfxStyleFamily SwDocShell::DoWaterCan(const OUString &rName, SfxStyleFamily nFam
 }
 
 // update template
-SfxStyleFamily SwDocShell::UpdateStyle(const OUString &rName, SfxStyleFamily nFamily, SwWrtShell* pShell)
+void SwDocShell::UpdateStyle(const OUString &rName, SfxStyleFamily nFamily, SwWrtShell* pShell)
 {
     SwWrtShell* pCurrWrtShell = pShell ? pShell : GetWrtShell();
     assert( pCurrWrtShell );
@@ -1083,8 +1048,8 @@ SfxStyleFamily SwDocShell::UpdateStyle(const OUString &rName, SfxStyleFamily nFa
     SwDocStyleSheet* pStyle =
         static_cast<SwDocStyleSheet*>( m_xBasePool->Find(rName, nFamily) );
 
-    if(!pStyle)
-        return nFamily;
+    if (!pStyle)
+        return;
 
     switch(nFamily)
     {
@@ -1170,11 +1135,10 @@ SfxStyleFamily SwDocShell::UpdateStyle(const OUString &rName, SfxStyleFamily nFa
         break;
         default: break;
     }
-    return nFamily;
 }
 
 // NewByExample
-SfxStyleFamily SwDocShell::MakeByExample( const OUString &rName, SfxStyleFamily nFamily,
+void SwDocShell::MakeByExample( const OUString &rName, SfxStyleFamily nFamily,
                                     sal_uInt16 nMask, SwWrtShell* pShell )
 {
     SwWrtShell* pCurrWrtShell = pShell ? pShell : GetWrtShell();
@@ -1334,7 +1298,6 @@ SfxStyleFamily SwDocShell::MakeByExample( const OUString &rName, SfxStyleFamily
 
         default: break;
     }
-    return nFamily;
 }
 
 std::set<Color> SwDocShell::GetDocColors()
@@ -1401,9 +1364,10 @@ void SwDocShell::LoadStyles_( SfxObjectShell& rSource, bool bPreserveCurrentDocu
 void SwDocShell::FormatPage(
     const OUString& rPage,
     const OString& rPageId,
-    SwWrtShell& rActShell )
+    SwWrtShell& rActShell,
+    SfxRequest* pRequest)
 {
-    Edit( rPage, aEmptyOUStr, SfxStyleFamily::Page, 0, false, rPageId, &rActShell);
+    Edit(rPage, aEmptyOUStr, SfxStyleFamily::Page, 0, false, rPageId, &rActShell, pRequest);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/shells/basesh.cxx b/sw/source/uibase/shells/basesh.cxx
index b938767159bb..a8e7ff358020 100644
--- a/sw/source/uibase/shells/basesh.cxx
+++ b/sw/source/uibase/shells/basesh.cxx
@@ -2448,8 +2448,7 @@ void SwBaseShell::ExecDlg(SfxRequest &rReq)
                         break;
                 }
 
-                rTempView.GetDocShell()->FormatPage(
-                    rPageDesc.GetName(), sPageId, rSh);
+                rTempView.GetDocShell()->FormatPage(rPageDesc.GetName(), sPageId, rSh, &rReq);
                 rTempView.InvalidateRulerPos();
             }
         }
commit f72cd9bd5a51afd531de914bf81ab041b2cb92b7
Author: Pranav Kant <pranavk at collabora.co.uk>
Date:   Thu Jan 18 19:06:23 2018 +0530

    lokdialog: No modal mode in LOK
    
    ... otherwise the cursor in the document goes invisible as soon as the
    dialog is launched.
    
    Change-Id: I77bc30879550b354e1a9593db3c2db7ad3c68193
    Reviewed-on: https://gerrit.libreoffice.org/48126
    Reviewed-by: pranavk <pranavk at collabora.co.uk>
    Tested-by: pranavk <pranavk at collabora.co.uk>
    (cherry picked from commit 0e8d0fe001ceecea95ad7115b835527e13252a17)

diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
index e6db9e2d4fee..36cb0dbf3f4d 100644
--- a/sfx2/source/view/viewfrm.cxx
+++ b/sfx2/source/view/viewfrm.cxx
@@ -67,6 +67,7 @@
 #include <rtl/ustrbuf.hxx>
 
 #include <unotools/ucbhelper.hxx>
+#include <comphelper/lok.hxx>
 #include <comphelper/processfactory.hxx>
 #include <comphelper/namedvaluecollection.hxx>
 #include <comphelper/docpasswordrequest.hxx>
@@ -2249,6 +2250,10 @@ OUString SfxViewFrame::GetActualPresentationURL_Impl() const
 
 void SfxViewFrame::SetModalMode( bool bModal )
 {
+    // no real modality for LOK
+    if (comphelper::LibreOfficeKit::isActive())
+        return;
+
     m_pImpl->bModal = bModal;
     if ( m_xObjSh.is() )
     {


More information about the Libreoffice-commits mailing list