[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.0' - 6 commits - configure.ac sd/source sw/qa vcl/generic wizards/com writerfilter/source xmloff/source

Andras Timar andras.timar at collabora.com
Thu Nov 5 13:01:56 PST 2015


 configure.ac                                          |    2 -
 sd/source/ui/dlg/animobjs.cxx                         |   10 +++---
 sw/qa/extras/ooxmlimport/data/hello.docx              |binary
 sw/qa/extras/ooxmlimport/data/tdf94374.docx           |binary
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx              |   30 ++++++++++++++++++
 vcl/generic/app/gensys.cxx                            |   18 +---------
 wizards/com/sun/star/wizards/db/SQLQueryComposer.java |   26 +++++++++++++--
 wizards/com/sun/star/wizards/ui/FilterComponent.java  |    4 +-
 writerfilter/source/filter/WriterFilter.cxx           |    3 +
 xmloff/source/style/xmlnumfe.cxx                      |    3 +
 xmloff/source/style/xmlnumfi.cxx                      |    2 -
 11 files changed, 70 insertions(+), 28 deletions(-)

New commits:
commit 6064a8b601a4d3ee6e4bbe598d7ee50712d300e4
Author: Andras Timar <andras.timar at collabora.com>
Date:   Thu Nov 5 22:04:43 2015 +0100

    Bump to version 5.0-8
    
    Change-Id: I74bc0ee02279152bec9ecc54b0d948a6978fa6c8

diff --git a/configure.ac b/configure.ac
index 83412c0..335068e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,7 +9,7 @@ dnl in order to create a configure script.
 # several non-alphanumeric characters, those are split off and used only for the
 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
 
-AC_INIT([Collabora Office],[5.0.10.7],[],[],[https://CollaboraOffice.com/])
+AC_INIT([Collabora Office],[5.0.10.8],[],[],[https://CollaboraOffice.com/])
 
 AC_PREREQ([2.59])
 
commit 5f919351aed1b0e80fd10a33ee3ac08b3697efff
Author: Armin Le Grand <Armin.Le.Grand at me.com>
Date:   Tue Nov 3 12:25:13 2015 +0100

    tdf#95298: corrected some out-of-bound accesses to array
    
    the index variable m_FrameList used to reference the current frame uses
    the state EMTY_FRAMELIST to mark as invalid, which is the max integer
    number. Thus all usages have to be secured to not use m_FrameList
    if set to EMPTY_FRAMELIST. This was missing in some places.
    the max integer
    number. Thus all usages have to be secured to not use m_FrameList
    if set to EMPTY_FRAMELIST. This was missing in some places.
    
    Reviewed-on: https://gerrit.libreoffice.org/19753
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Katarina Behrens <Katarina.Behrens at cib.de>
    
    Cherry-picked from f0cef70cd4164342b218fbee34bf57eedc22c998
    
    Change-Id: Ie1cf4ae2cb79d821f634ec78b621a2647abc61a8
    Reviewed-on: https://gerrit.libreoffice.org/19787
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 6b3b080f8cedc1b496022b18e477af0c7361fba3)

diff --git a/sd/source/ui/dlg/animobjs.cxx b/sd/source/ui/dlg/animobjs.cxx
index 0b033f9..5c66014 100644
--- a/sd/source/ui/dlg/animobjs.cxx
+++ b/sd/source/ui/dlg/animobjs.cxx
@@ -430,7 +430,8 @@ IMPL_LINK( AnimationWindow, ClickRemoveBitmapHdl, void *, pBtn )
     SdPage*     pPage = pMyDoc->GetSdPage(0, PK_STANDARD);
     SdrObject*  pObject;
 
-    if (pBtn == m_pBtnRemoveBitmap)
+    // tdf#95298 check m_nCurrentFrame for EMPTY_FRAMELIST to avoid out-of-bound array access
+    if (pBtn == m_pBtnRemoveBitmap && EMPTY_FRAMELIST  != m_nCurrentFrame)
     {
         delete m_FrameList[m_nCurrentFrame].first;
         delete m_FrameList[m_nCurrentFrame].second;
@@ -449,8 +450,8 @@ IMPL_LINK( AnimationWindow, ClickRemoveBitmapHdl, void *, pBtn )
 
         if (m_nCurrentFrame >= m_FrameList.size())
         {
-            assert(m_FrameList.empty());
-            m_nCurrentFrame = EMPTY_FRAMELIST;
+            // tdf#95298 last frame was deleted, try to use the one before it or go on empty state
+            m_nCurrentFrame = m_FrameList.empty() ? EMPTY_FRAMELIST : m_FrameList.size() - 1;
         }
     }
     else // delete everything
@@ -539,7 +540,8 @@ IMPL_LINK_NOARG(AnimationWindow, ModifyTimeHdl)
 
 void AnimationWindow::UpdateControl(bool const bDisableCtrls)
 {
-    if (!m_FrameList.empty())
+    // tdf#95298 check m_nCurrentFrame for EMPTY_FRAMELIST to avoid out-of-bound array access
+    if (!m_FrameList.empty() && EMPTY_FRAMELIST != m_nCurrentFrame)
     {
         BitmapEx aBmp(*m_FrameList[m_nCurrentFrame].first);
 
commit 3458c7844b3ed8fcb3dcc92dc31ce66d2fc498e3
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Wed Oct 28 17:41:44 2015 +0100

    base new query wizard: fix confusion between display name and field name
    
    Change-Id: I75354ffea2daede55b34e4cf3321d57196be3d9b
    Reviewed-on: https://gerrit.libreoffice.org/19652
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit c7a520868ecf6d5de48dc3964a7bccab3fa480c3)

diff --git a/wizards/com/sun/star/wizards/db/SQLQueryComposer.java b/wizards/com/sun/star/wizards/db/SQLQueryComposer.java
index 0a30846..c9c9400 100644
--- a/wizards/com/sun/star/wizards/db/SQLQueryComposer.java
+++ b/wizards/com/sun/star/wizards/db/SQLQueryComposer.java
@@ -77,7 +77,7 @@ public class SQLQueryComposer
                 int iAggregate = CurDBMetaData.getAggregateIndex(CurDBMetaData.FieldColumns[i].getDisplayFieldName());
                 if (iAggregate > -1)
                 {
-                    sSelectClause += CurDBMetaData.AggregateFieldNames[iAggregate][1] + "(" + getComposedAliasFieldName(CurDBMetaData.AggregateFieldNames[iAggregate][0]) + ")";
+                    sSelectClause += CurDBMetaData.AggregateFieldNames[iAggregate][1] + "(" + getComposedAliasDisplayName(CurDBMetaData.AggregateFieldNames[iAggregate][0]) + ")";
                     if (_baddAliasFieldNames)
                     {
                         sSelectClause += getAliasFieldNameClause(CurDBMetaData.AggregateFieldNames[iAggregate][0]);
@@ -85,7 +85,7 @@ public class SQLQueryComposer
                 }
                 else
                 {
-                    sSelectClause += getComposedAliasFieldName(CurDBMetaData.FieldColumns[i].getDisplayFieldName());
+                    sSelectClause += getComposedAliasDisplayName(CurDBMetaData.FieldColumns[i].getDisplayFieldName());
                     if (_baddAliasFieldNames)
                     {
                         sSelectClause += getAliasFieldNameClause(CurDBMetaData.FieldColumns[i].getDisplayFieldName());
@@ -182,7 +182,7 @@ public class SQLQueryComposer
                 {
                     sOrder += ", ";
                 }
-                sOrder += CurDBMetaData.AggregateFieldNames[iAggregate][1] + "(" + getComposedAliasFieldName(CurDBMetaData.AggregateFieldNames[iAggregate][0]) + ")";
+                sOrder += CurDBMetaData.AggregateFieldNames[iAggregate][1] + "(" + getComposedAliasDisplayName(CurDBMetaData.AggregateFieldNames[iAggregate][0]) + ")";
                 sOrder += " " + CurDBMetaData.getSortFieldNames()[i][1];
                 m_queryComposer.setOrder(sOrder);
             }
@@ -311,7 +311,7 @@ public class SQLQueryComposer
         }
     }
 
-    private String getComposedAliasFieldName(String _fieldname)
+    private String getComposedAliasDisplayName(String _fieldname)
     {
         FieldColumn CurFieldColumn = CurDBMetaData.getFieldColumnByDisplayName(_fieldname);
         final String curCommandName = CurFieldColumn.getCommandName();
@@ -329,6 +329,24 @@ public class SQLQueryComposer
         return quoteName(curAliasName) + "." + quoteName(curFieldName);
     }
 
+    private String getComposedAliasFieldName(String _fieldname)
+    {
+        FieldColumn CurFieldColumn = CurDBMetaData.getFieldColumnByFieldName(_fieldname);
+        final String curCommandName = CurFieldColumn.getCommandName();
+        final String curFieldName = CurFieldColumn.getFieldName();
+        CommandName curComposedCommandName = getComposedCommandByDisplayName(curCommandName);
+        if (curComposedCommandName == null)
+        {
+            //return _fieldname;
+            if ( curCommandName.length() > 0 )
+                return quoteName(curCommandName) + "." + quoteName(curFieldName);
+            else
+                return quoteName(curFieldName);
+        }
+        String curAliasName = curComposedCommandName.getAliasName();
+        return quoteName(curAliasName) + "." + quoteName(curFieldName);
+    }
+
     private CommandName getComposedCommandByAliasName(String _AliasName)
     {
         if (composedCommandNames != null)
diff --git a/wizards/com/sun/star/wizards/ui/FilterComponent.java b/wizards/com/sun/star/wizards/ui/FilterComponent.java
index ab6fa7a..38af3bc 100644
--- a/wizards/com/sun/star/wizards/ui/FilterComponent.java
+++ b/wizards/com/sun/star/wizards/ui/FilterComponent.java
@@ -119,7 +119,7 @@ public class FilterComponent
                     String sControlNameSuffix = sIncSuffix + "_" + getIndexNumber(sControlName);
                     XListBox xCurFieldListBox = UnoRuntime.queryInterface(XListBox.class, CurUnoDialog.xDlgContainer.getControl(sControlName));
                     String CurDisplayFieldName = xCurFieldListBox.getSelectedItem();
-                    FieldColumn CurFieldColumn = new FieldColumn(oQueryMetaData, CurDisplayFieldName);
+                    FieldColumn CurFieldColumn = oQueryMetaData.getFieldColumnByDisplayName(CurDisplayFieldName);
 
                     String sControlNameTextValue = "txtValue" + sControlNameSuffix;
                     XControl xValueControl = CurUnoDialog.xDlgContainer.getControl(sControlNameTextValue);
@@ -303,7 +303,7 @@ public class FilterComponent
             String FieldName;
             if (_CurDBMetaData != null)
             {
-                FieldColumn CurDBFieldColumn = _CurDBMetaData.getFieldColumnByDisplayName(_filtercondition.Name);
+                FieldColumn CurDBFieldColumn = _CurDBMetaData.getFieldColumnByFieldName(_filtercondition.Name);
                 FieldName = CurDBFieldColumn.getFieldTitle();
             }
             else
commit 99f256296fc8121eb02422e58bd0718f1ccbe397
Author: Laurent Balland-Poirier <laurent.balland-poirier at laposte.net>
Date:   Wed Oct 28 16:17:23 2015 +0100

    tdf#93296 dashes in decimal part => 0 min decimal places
    
    During import, as well during export, "0.--" must be considered
    as 0 min decimal places
    
    Change-Id: I33d06dd95c0678660bc0bb222972f82ef54f2c6e
    Reviewed-on: https://gerrit.libreoffice.org/19647
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>
    (cherry picked from commit 3f970cf247ad96d1663462acb0be7f1c767d1ebf)
    Reviewed-on: https://gerrit.libreoffice.org/19781
    (cherry picked from commit 18be99af0b2a9ad6d7303ba6e594774b4292c316)

diff --git a/xmloff/source/style/xmlnumfe.cxx b/xmloff/source/style/xmlnumfe.cxx
index 6c9d360..0d160ad 100644
--- a/xmloff/source/style/xmlnumfe.cxx
+++ b/xmloff/source/style/xmlnumfe.cxx
@@ -1206,7 +1206,10 @@ void SvXMLNumFmtExport::ExportPart_Impl( const SvNumberformat& rFormat, sal_uInt
                     if ( bExpFound && pElemStr )
                         nExpDigits += pElemStr->getLength();
                     else if ( !bDecDashes && pElemStr && (*pElemStr)[0] == '-' )
+                    {
                         bDecDashes = true;
+                        nMinDecimals = 0;
+                    }
                     else if ( !bInInteger && pElemStr )
                     {
                         for ( sal_Int32 i = pElemStr->getLength()-1; i >= 0 && (*pElemStr)[i] == '#'; i-- )
diff --git a/xmloff/source/style/xmlnumfi.cxx b/xmloff/source/style/xmlnumfi.cxx
index e9e25f4..4b01d13 100644
--- a/xmloff/source/style/xmlnumfi.cxx
+++ b/xmloff/source/style/xmlnumfi.cxx
@@ -1021,7 +1021,7 @@ SvXMLNumFmtElementContext::SvXMLNumFmtElementContext( SvXMLImport& rImport,
     }
     if ( aNumInfo.nMinDecimalDigits == -1)
     {
-        if ( bVarDecimals )
+        if ( bVarDecimals || aNumInfo.bDecReplace )
             aNumInfo.nMinDecimalDigits = 0;
         else
             aNumInfo.nMinDecimalDigits = aNumInfo.nDecimals;
commit 832e2019a9c45b1e605a87dcfec2143f03bde97f
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Mon Oct 19 09:21:02 2015 +0200

    tdf#94374 DOCX import: allow insert -> object -> document
    
    (cherry picked from commit 50d48709af3406eb270e5357f5d2cc6a218337a9)
    
    Conflicts:
    	sw/qa/extras/ooxmlimport/ooxmlimport.cxx
    
    Change-Id: I977930d59ef1ae9ae8bd2dfa9a7f3816c46d982c
    Reviewed-on: https://gerrit.libreoffice.org/19758
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 36fa2b8cf538baee272bf91da3d6cda2da6a392c)

diff --git a/sw/qa/extras/ooxmlimport/data/hello.docx b/sw/qa/extras/ooxmlimport/data/hello.docx
new file mode 100644
index 0000000..d5d8d43
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/hello.docx differ
diff --git a/sw/qa/extras/ooxmlimport/data/tdf94374.docx b/sw/qa/extras/ooxmlimport/data/tdf94374.docx
new file mode 100644
index 0000000..d5d8d43
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/tdf94374.docx differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 1668def..8a186ef 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -66,6 +66,8 @@
 #include <com/sun/star/style/PageStyleLayout.hpp>
 #include <com/sun/star/style/ParagraphAdjust.hpp>
 #include <com/sun/star/util/DateTime.hpp>
+#include <com/sun/star/document/XFilter.hpp>
+#include <com/sun/star/document/XImporter.hpp>
 #include <vcl/bmpacc.hxx>
 #include <vcl/svapp.hxx>
 #include <unotest/assertion_traits.hxx>
@@ -75,6 +77,7 @@
 #include <swtypes.hxx>
 #include <tools/datetimeutils.hxx>
 #include <oox/drawingml/drawingmltypes.hxx>
+#include <unotools/streamwrap.hxx>
 
 #include <bordertest.hxx>
 
@@ -96,6 +99,24 @@ public:
         if (OString(filename) == "smartart.docx" || OString(filename) == "strict-smartart.docx" || OString(filename) == "fdo87488.docx")
             SvtFilterOptions::Get().SetSmartArt2Shape(false);
     }
+protected:
+    /// Copy&paste helper.
+    bool paste(const OUString& rFilename, const uno::Reference<text::XTextRange>& xTextRange)
+    {
+        uno::Reference<document::XFilter> xFilter(m_xSFactory->createInstance("com.sun.star.comp.Writer.WriterFilter"), uno::UNO_QUERY_THROW);
+        uno::Reference<document::XImporter> xImporter(xFilter, uno::UNO_QUERY_THROW);
+        xImporter->setTargetDocument(mxComponent);
+        uno::Sequence<beans::PropertyValue> aDescriptor(3);
+        aDescriptor[0].Name = "InputStream";
+        SvStream* pStream = utl::UcbStreamHelper::CreateStream(getURLFromSrc("/sw/qa/extras/ooxmlimport/data/") + rFilename, StreamMode::READ);
+        uno::Reference<io::XStream> xStream(new utl::OStreamWrapper(*pStream));
+        aDescriptor[0].Value <<= xStream;
+        aDescriptor[1].Name = "InsertMode";
+        aDescriptor[1].Value <<= sal_True;
+        aDescriptor[2].Name = "TextInsertModeRange";
+        aDescriptor[2].Value <<= xTextRange;
+        return xFilter->filter(aDescriptor);
+    }
 };
 
 class FailTest : public Test
@@ -2806,6 +2827,15 @@ DECLARE_OOXMLIMPORT_TEST(testTdf89165, "tdf89165.docx")
     // This must not hang in layout
 }
 
+DECLARE_OOXMLIMPORT_TEST(testTdf94374, "hello.docx")
+{
+    uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xText(xTextDocument->getText(), uno::UNO_QUERY);
+    uno::Reference<text::XTextRange> xEnd = xText->getEnd();
+    // This failed: it wasn't possible to insert a DOCX document into an existing Writer one.
+    CPPUNIT_ASSERT(paste("tdf94374.docx", xEnd));
+}
+
 #endif
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/filter/WriterFilter.cxx b/writerfilter/source/filter/WriterFilter.cxx
index a2f289a..546b852 100644
--- a/writerfilter/source/filter/WriterFilter.cxx
+++ b/writerfilter/source/filter/WriterFilter.cxx
@@ -171,8 +171,9 @@ sal_Bool WriterFilter::filter(const uno::Sequence< beans::PropertyValue >& aDesc
             return sal_False;
 
         writerfilter::dmapper::SourceDocumentType eType = writerfilter::dmapper::SourceDocumentType::OOXML;
+        uno::Reference<text::XTextRange> xInsertTextRange = aMediaDesc.getUnpackedValueOrDefault("TextInsertModeRange", uno::Reference<text::XTextRange>());
         writerfilter::Stream::Pointer_t pStream(
-            writerfilter::dmapper::DomainMapperFactory::createMapper(m_xContext, xInputStream, m_xDstDoc, bRepairStorage, eType, uno::Reference<text::XTextRange>(), aMediaDesc));
+            writerfilter::dmapper::DomainMapperFactory::createMapper(m_xContext, xInputStream, m_xDstDoc, bRepairStorage, eType, xInsertTextRange, aMediaDesc));
         //create the tokenizer and domain mapper
         writerfilter::ooxml::OOXMLStream::Pointer_t pDocStream = writerfilter::ooxml::OOXMLDocumentFactory::createStream(m_xContext, xInputStream, bRepairStorage);
         uno::Reference<task::XStatusIndicator> xStatusIndicator = aMediaDesc.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_STATUSINDICATOR(), uno::Reference<task::XStatusIndicator>());
commit 55066180e80b77cdf8520b11cc60dec73c6e0d58
Author: Andras Timar <andras.timar at collabora.com>
Date:   Thu Nov 5 21:58:31 2015 +0100

    Collabora Office: hackish fix of repaint problem of vcl widgets
    
    Change-Id: Ib0eaba0767ff18d03464ba7d1ec1ffdd2ba3ca78

diff --git a/vcl/generic/app/gensys.cxx b/vcl/generic/app/gensys.cxx
index 0bd02ee..f4edf1f 100644
--- a/vcl/generic/app/gensys.cxx
+++ b/vcl/generic/app/gensys.cxx
@@ -191,21 +191,9 @@ const char* SalGenericSystem::getFrameResName()
 
 const char* SalGenericSystem::getFrameClassName()
 {
-    static OStringBuffer aClassName;
-    if( aClassName.isEmpty() )
-    {
-        OUString aIni, aProduct;
-        rtl::Bootstrap::get( "BRAND_BASE_DIR", aIni );
-        aIni += "/" LIBO_ETC_FOLDER "/" SAL_CONFIGFILE( "bootstrap" );
-        rtl::Bootstrap aBootstrap( aIni );
-        aBootstrap.getFrom( "ProductKey", aProduct );
-
-        if( !aProduct.isEmpty() )
-            aClassName.append( OUStringToOString( aProduct, osl_getThreadTextEncoding() ) );
-        else
-            aClassName.append( OUStringToOString( utl::ConfigManager::getProductName(), osl_getThreadTextEncoding()));
-    }
-    return aClassName.getStr();
+    // Someone somewhere hard coded LibreOffice. If frame class name is not LibreOffice, strange repaint
+    // problems occur with edit boxes, dropdown list boxes, etc.
+    return "LibreOffice";
 }
 
 #endif


More information about the Libreoffice-commits mailing list