[Libreoffice-commits] core.git: Branch 'libreoffice-5-2' - sw/qa sw/source writerfilter/source

Michael Stahl mstahl at redhat.com
Thu Jan 19 15:44:19 UTC 2017


 sw/qa/extras/ooxmlimport/ooxmlimport.cxx          |   10 +++++---
 sw/source/uibase/uiview/view.cxx                  |   13 +++++++++-
 sw/source/uibase/uno/SwXDocumentSettings.cxx      |   16 -------------
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   27 +++++++++++-----------
 4 files changed, 33 insertions(+), 33 deletions(-)

New commits:
commit 8c940adc98ed9e5844506d5b66a0cdf57f9e1e7c
Author: Michael Stahl <mstahl at redhat.com>
Date:   Wed Jan 18 18:25:46 2017 +0100

    tdf#99074 sw: remove duplicate property "IsBrowseMode" again
    
    Commit e0f9bb795251d950b5dd960fcd030170c8eb67aa added the property
    "IsBrowseMode" to SwXDocumentSettings, but it is already available in
    the API as SwXViewSettings property "ShowOnlineLayout".
    
    The problem is that both of these properties get exported in ODF into
    settings.xml, so it contains "IsBrowseMode" twice.
    
    Unfortunately the SwXViewSettings are not available in writerfilter,
    because the XModel::getCurrentController() is null, the view is created
    after the import.
    
    But there is already a way to store ViewData in the SfxBaseModel, which
    is then used by SfxBaseController::ConnectSfxFrame_Impl() when creating
    the view.  This applies the property at just the right time.
    
    (cherry picked from commit 2dce8dd41c208ecda40c054635f3736147ec8914)
    
    Change-Id: I842845d09a7b3fe81e27a1ed8ac8a8594da7f4e8
    Reviewed-on: https://gerrit.libreoffice.org/33285
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 36e34cb..b55b17c 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -65,6 +65,7 @@
 #include <com/sun/star/style/CaseMap.hpp>
 #include <com/sun/star/style/PageStyleLayout.hpp>
 #include <com/sun/star/util/DateTime.hpp>
+#include <com/sun/star/view/XViewSettingsSupplier.hpp>
 #include <com/sun/star/document/XFilter.hpp>
 #include <com/sun/star/document/XImporter.hpp>
 #include <vcl/bitmapaccess.hxx>
@@ -3225,10 +3226,13 @@ DECLARE_OOXMLIMPORT_TEST(testTdf98882, "tdf98882.docx")
 
 DECLARE_OOXMLIMPORT_TEST(testTdf99074, "tdf99074.docx")
 {
-    uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY);
-    uno::Reference<uno::XInterface> xSettings = xFactory->createInstance("com.sun.star.document.Settings");
+    uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+    uno::Reference<view::XViewSettingsSupplier> const xController(
+        xModel->getCurrentController(), uno::UNO_QUERY);
+    uno::Reference<beans::XPropertySet> const xViewSettings(
+        xController->getViewSettings());
     // This was false, Web Layout was ignored on import.
-    CPPUNIT_ASSERT(getProperty<bool>(xSettings, "InBrowseMode"));
+    CPPUNIT_ASSERT(getProperty<bool>(xViewSettings, "ShowOnlineLayout"));
 }
 
 DECLARE_OOXMLIMPORT_TEST(testTdf99140, "tdf99140.docx")
diff --git a/sw/source/uibase/uiview/view.cxx b/sw/source/uibase/uiview/view.cxx
index 354f007..2bfba0d 100644
--- a/sw/source/uibase/uiview/view.cxx
+++ b/sw/source/uibase/uiview/view.cxx
@@ -1262,7 +1262,8 @@ void SwView::ReadUserDataSequence ( const uno::Sequence < beans::PropertyValue >
                  bGotVisibleTop = false, bGotVisibleRight = false,
                  bGotVisibleBottom = false, bGotZoomType = false,
                  bGotZoomFactor = false, bGotIsSelectedFrame = false,
-                 bGotViewLayoutColumns = false, bGotViewLayoutBookMode = false;
+                 bGotViewLayoutColumns = false, bGotViewLayoutBookMode = false,
+                 bBrowseMode = false, bGotBrowseMode = false;
 
         for (sal_Int32 i = 0 ; i < nLength; i++)
         {
@@ -1325,8 +1326,18 @@ void SwView::ReadUserDataSequence ( const uno::Sequence < beans::PropertyValue >
                pValue->Value >>= bSelectedFrame;
                bGotIsSelectedFrame = true;
             }
+            else if (pValue->Name == "ShowOnlineLayout")
+            {
+               pValue->Value >>= bBrowseMode;
+               bGotBrowseMode = true;
+            }
             pValue++;
         }
+        if (bGotBrowseMode)
+        {
+            // delegate further
+            GetViewImpl()->GetUNOObject_Impl()->getViewSettings()->setPropertyValue("ShowOnlineLayout", uno::Any(bBrowseMode));
+        }
         if (bGotVisibleBottom)
         {
             Point aCursorPos( nX, nY );
diff --git a/sw/source/uibase/uno/SwXDocumentSettings.cxx b/sw/source/uibase/uno/SwXDocumentSettings.cxx
index 0d80269..8a786f4 100644
--- a/sw/source/uibase/uno/SwXDocumentSettings.cxx
+++ b/sw/source/uibase/uno/SwXDocumentSettings.cxx
@@ -132,7 +132,6 @@ enum SwDocumentSettingsPropertyHandles
     HANDLE_APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING,
     HANDLE_PROP_LINE_SPACING_SHRINKS_FIRST_LINE,
     HANDLE_SUBTRACT_FLYS,
-    HANDLE_BROWSE_MODE,
 };
 
 static MasterPropertySetInfo * lcl_createSettingsInfo()
@@ -208,7 +207,6 @@ static MasterPropertySetInfo * lcl_createSettingsInfo()
         { OUString("ApplyParagraphMarkFormatToNumbering"), HANDLE_APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING, cppu::UnoType<bool>::get(), 0},
         { OUString("PropLineSpacingShrinksFirstLine"),       HANDLE_PROP_LINE_SPACING_SHRINKS_FIRST_LINE,         cppu::UnoType<bool>::get(),           0},
         { OUString("SubtractFlysAnchoredAtFlys"),       HANDLE_SUBTRACT_FLYS,         cppu::UnoType<bool>::get(),           0},
-        { OUString("InBrowseMode"), HANDLE_BROWSE_MODE, cppu::UnoType<bool>::get(), 0},
 /*
  * As OS said, we don't have a view when we need to set this, so I have to
  * find another solution before adding them to this property set - MTG
@@ -854,15 +852,6 @@ void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInf
             }
         }
         break;
-        case HANDLE_BROWSE_MODE:
-        {
-            bool bTmp;
-            if (rValue >>= bTmp)
-            {
-                mpDoc->getIDocumentSettingAccess().set(DocumentSettingId::BROWSE_MODE, bTmp);
-            }
-        }
-        break;
         default:
             throw UnknownPropertyException();
     }
@@ -1272,11 +1261,6 @@ void SwXDocumentSettings::_getSingleValue( const comphelper::PropertyInfo & rInf
             rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::SUBTRACT_FLYS);
         }
         break;
-        case HANDLE_BROWSE_MODE:
-        {
-            rValue <<= mpDoc->getIDocumentSettingAccess().get(DocumentSettingId::BROWSE_MODE);
-        }
-        break;
         default:
             throw UnknownPropertyException();
     }
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 855c131..4d7d277 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -67,6 +67,7 @@
 #include <com/sun/star/drawing/XControlShape.hpp>
 #include <com/sun/star/text/ControlCharacter.hpp>
 #include <com/sun/star/text/XTextColumns.hpp>
+
 #include <oox/mathml/import.hxx>
 #include <GraphicHelpers.hxx>
 #include <dmapper/GraphicZOrderHelper.hxx>
@@ -5030,18 +5031,21 @@ void DomainMapper_Impl::ApplySettingsTable()
                 xTextDefaults->setPropertyValue(getPropertyName(PROP_PARA_LINE_SPACING), uno::makeAny(aSpacing));
             }
 
-            if (m_pSettingsTable->GetZoomFactor())
+            if (m_pSettingsTable->GetZoomFactor() || m_pSettingsTable->GetView())
             {
-                uno::Sequence<beans::PropertyValue> aViewProps(3);
-                aViewProps[0].Name = "ZoomFactor";
-                aViewProps[0].Value <<= m_pSettingsTable->GetZoomFactor();
-                aViewProps[1].Name = "VisibleBottom";
-                aViewProps[1].Value <<= sal_Int32(0);
-                aViewProps[2].Name = "ZoomType";
-                aViewProps[2].Value <<= sal_Int16(0);
-
+                std::vector<beans::PropertyValue> aViewProps;
+                if (m_pSettingsTable->GetZoomFactor())
+                {
+                    aViewProps.push_back(beans::PropertyValue("ZoomFactor", -1, uno::makeAny(m_pSettingsTable->GetZoomFactor()), beans::PropertyState_DIRECT_VALUE));
+                    aViewProps.push_back(beans::PropertyValue("VisibleBottom", -1, uno::makeAny(sal_Int32(0)), beans::PropertyState_DIRECT_VALUE));
+                    aViewProps.push_back(beans::PropertyValue("ZoomType", -1, uno::makeAny(sal_Int16(0)), beans::PropertyState_DIRECT_VALUE));
+                }
+                if (m_pSettingsTable->GetView())
+                {
+                    aViewProps.push_back(beans::PropertyValue("ShowOnlineLayout", -1, uno::makeAny(m_pSettingsTable->GetView() == NS_ooxml::LN_Value_doc_ST_View_web), beans::PropertyState_DIRECT_VALUE));
+                }
                 uno::Reference<container::XIndexContainer> xBox = document::IndexedPropertyValues::create(m_xComponentContext);
-                xBox->insertByIndex(sal_Int32(0), uno::makeAny(aViewProps));
+                xBox->insertByIndex(sal_Int32(0), uno::makeAny(comphelper::containerToSequence(aViewProps)));
                 uno::Reference<container::XIndexAccess> xIndexAccess(xBox, uno::UNO_QUERY);
                 uno::Reference<document::XViewDataSupplier> xViewDataSupplier(m_xTextDocument, uno::UNO_QUERY);
                 xViewDataSupplier->setViewData(xIndexAccess);
@@ -5055,9 +5059,6 @@ void DomainMapper_Impl::ApplySettingsTable()
             if( m_pSettingsTable->GetEmbedSystemFonts())
                 xSettings->setPropertyValue( getPropertyName( PROP_EMBED_SYSTEM_FONTS ), uno::makeAny(true) );
             xSettings->setPropertyValue("AddParaTableSpacing", uno::makeAny(m_pSettingsTable->GetDoNotUseHTMLParagraphAutoSpacing()));
-            // Web Layout.
-            if (m_pSettingsTable->GetView() == NS_ooxml::LN_Value_doc_ST_View_web)
-                xSettings->setPropertyValue("InBrowseMode", uno::makeAny(true));
             if( m_pSettingsTable->GetProtectForm() )
                 xSettings->setPropertyValue("ProtectForm", uno::makeAny( true ));
         }


More information about the Libreoffice-commits mailing list