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

Matteo Casalin matteo.casalin at yahoo.com
Sun Jun 3 10:18:22 UTC 2018


 sw/source/ui/vba/vbaselection.cxx        |   10 ++++----
 sw/source/uibase/dochdl/swdtflvr.cxx     |   36 ++++++++++---------------------
 vcl/source/edit/texteng.cxx              |    2 -
 vcl/source/filter/FilterConfigItem.cxx   |    3 +-
 vcl/source/filter/graphicfilter.cxx      |    7 +++---
 vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx |   33 ++++++++++++++++++----------
 6 files changed, 45 insertions(+), 46 deletions(-)

New commits:
commit 565340d457f41197474a75ba1b036bdc3d569041
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Sat Jun 2 23:55:42 2018 +0200

    Fix tdf#100937: LO Freezed when I insert a very long text in...
    
    ... the Description box
    
    The issue was triggered by ImpVclMEdit::Resize initially calling
    TextEngine::SetMaxTextWidth() with a negative width (due to an initial
    empty area, further "reduced" to take into account a vertical scroll
    bar) and then with positive values in following iterations.
    I preferred to consider such negative widths a no-op instead of
    extending them to the "maximum" possible width.
    
    Change-Id: I756652a30c23ebe6674e481e7d8d6e0d8ba45e75

diff --git a/vcl/source/edit/texteng.cxx b/vcl/source/edit/texteng.cxx
index 3beff673c1be..90f40a0f939d 100644
--- a/vcl/source/edit/texteng.cxx
+++ b/vcl/source/edit/texteng.cxx
@@ -219,7 +219,7 @@ void TextEngine::SetMaxTextLen( sal_Int32 nLen )
 
 void TextEngine::SetMaxTextWidth( long nMaxWidth )
 {
-    if ( nMaxWidth != mnMaxTextWidth )
+    if ( nMaxWidth>=0 && nMaxWidth != mnMaxTextWidth )
     {
         mnMaxTextWidth = nMaxWidth;
         FormatFullDoc();
commit 91b5e86d5ef1318bd894b1fc3b537fb4615673da
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Wed May 30 20:49:22 2018 +0200

    Improve 1a2ee0ecd5b0cff52922c1d261f7d03a57a52ca0
    
    Change-Id: I50f369f28c3b97ba7fed494cb238b7756920abc6

diff --git a/vcl/source/filter/graphicfilter.cxx b/vcl/source/filter/graphicfilter.cxx
index 9f5d6caeb0eb..1ba3d1d776ec 100644
--- a/vcl/source/filter/graphicfilter.cxx
+++ b/vcl/source/filter/graphicfilter.cxx
@@ -2439,8 +2439,9 @@ ErrCode GraphicFilter::ExportGraphic( const Graphic& rGraphic, const OUString& r
         }
         else
         {
-            sal_Int32 nIdx{0};
-            do {
+            sal_Int32 nIdx {aFilterPath.isEmpty() ? -1 : 0};
+            while (nIdx>=0)
+            {
 #ifndef DISABLE_DYNLOADING
                 OUString aPhysicalName( ImpCreateFullFilterPath( aFilterPath.getToken(0, ';', nIdx), aFilterName ) );
                 osl::Module aLibrary( aPhysicalName );
@@ -2471,7 +2472,7 @@ ErrCode GraphicFilter::ExportGraphic( const Graphic& rGraphic, const OUString& r
                 }
                 else
                     nStatus = ERRCODE_GRFILTER_FILTERERROR;
-            } while (nIdx>=0);
+            }
         }
     }
     if( nStatus != ERRCODE_NONE )
commit 3c78a19ed66b44ebb2db7b160fa92a010a3c42aa
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Wed May 30 20:37:20 2018 +0200

    Try harder to find a matching file extension
    
    Potential regression from 2a39163aef4211c9d19cb1faee7f55d3718355b6
    
    Change-Id: I67f1f11bd52a1dbf0f77a35df7ad556437ccd39b

diff --git a/vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx b/vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx
index a222d603270c..e4f5ac395b8d 100644
--- a/vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx
+++ b/vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx
@@ -705,23 +705,32 @@ namespace
 
 bool lcl_matchFilter( const rtl::OUString& rFilter, const rtl::OUString& rExt )
 {
-    const sal_Int32 nBegin = rFilter.indexOf(rExt);
+    const sal_Unicode cSep {';'};
+    sal_Int32 nIdx {0};
 
-    if (nBegin<0) // not found
-        return false;
+    for (;;)
+    {
+        const sal_Int32 nBegin = rFilter.indexOf(rExt, nIdx);
 
-    const sal_Unicode cSep{';'};
+        if (nBegin<0) // not found
+            break;
 
-    // Check if the found occurrence is an exact match: left side
-    if (nBegin>0 && rFilter[nBegin-1]!=cSep)
-        return false;
+        // Let nIdx point to end of matched string, useful in order to
+        // check string boundaries and also for a possible next iteration
+        nIdx = nBegin + rExt.getLength();
 
-    // Check if the found occurrence is an exact match: right side
-    const sal_Int32 nEnd = nBegin + rExt.getLength();
-    if (nEnd<rFilter.getLength() && rFilter[nEnd]!=cSep)
-        return false;
+        // Check if the found occurrence is an exact match: right side
+        if (nIdx<rFilter.getLength() && rFilter[nIdx]!=cSep)
+            continue;
 
-    return true;
+        // Check if the found occurrence is an exact match: left side
+        if (nBegin>0 && rFilter[nBegin-1]!=cSep)
+            continue;
+
+        return true;
+    }
+
+    return false;
 }
 
 }
commit 85613aa81a885488f99ed038f2254ddb0c8a1037
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Wed May 16 23:26:44 2018 +0200

    Fix tdf#117410 - UI: Settings in PDF Options not remembered...
    
    for next export
    
    Change-Id: I6f066c81d96595a4560f5bb9e148001b004b38f0

diff --git a/vcl/source/filter/FilterConfigItem.cxx b/vcl/source/filter/FilterConfigItem.cxx
index 170e4b956046..0eedb63b408d 100644
--- a/vcl/source/filter/FilterConfigItem.cxx
+++ b/vcl/source/filter/FilterConfigItem.cxx
@@ -68,7 +68,8 @@ static bool ImpIsTreeAvailable( Reference< XMultiServiceFactory > const & rXCfgP
         }
         if ( xReadAccess.is() )
         {
-            while (bAvailable && nIdx>=0 )
+            const sal_Int32 nEnd {rTree.getLength()};
+            while (bAvailable && nIdx>=0 && nIdx<nEnd)
             {
                 Reference< XHierarchicalNameAccess > xHierarchicalNameAccess
                     ( xReadAccess, UNO_QUERY );
commit c4fb67f712ddde0e31bda0f22ef4e4247d63ea9a
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Tue May 1 10:58:16 2018 +0200

    Simplify: not empty OUString has at least one token
    
    Change-Id: Iae1ce8dc951f394effb942cba0f19a531b42aea0

diff --git a/sw/source/ui/vba/vbaselection.cxx b/sw/source/ui/vba/vbaselection.cxx
index 0edfc055cd12..55e16e70490b 100644
--- a/sw/source/ui/vba/vbaselection.cxx
+++ b/sw/source/ui/vba/vbaselection.cxx
@@ -27,7 +27,6 @@
 #include <com/sun/star/text/ControlCharacter.hpp>
 #include <com/sun/star/table/XCell.hpp>
 #include <basic/sberrors.hxx>
-#include <comphelper/string.hxx>
 #include <ooo/vba/word/WdUnits.hpp>
 #include <ooo/vba/word/WdMovementType.hpp>
 #include <ooo/vba/word/WdGoToItem.hpp>
@@ -976,11 +975,12 @@ void SwVbaSelection::GetSelectedCellRange( OUString& sTLName, OUString& sBRName
     uno::Reference< text::XTextTableCursor > xTextTableCursor( mxModel->getCurrentSelection(), uno::UNO_QUERY );
     if( xTextTableCursor.is() )
     {
-        OUString sRange( xTextTableCursor->getRangeName() );
-        if( comphelper::string::getTokenCount(sRange, ':') > 0 )
+        const OUString sRange( xTextTableCursor->getRangeName() );
+        if (!sRange.isEmpty())
         {
-            sTLName = sRange.getToken(0, ':');
-            sBRName = sRange.getToken(1, ':');
+            sal_Int32 nIdx{0};
+            sTLName = sRange.getToken(0, ':', nIdx);
+            sBRName = sRange.getToken(0, ':', nIdx);
         }
     }
     if( sTLName.isEmpty() )
commit 7723926deb6dcea1049faf49c2b34e27297a8bda
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Tue May 1 10:48:49 2018 +0200

    Optimize: low-complexity checks first
    
    Change-Id: Icbd126e098873f17d8e4f1d3127c0c0b7a0a82eb

diff --git a/sw/source/uibase/dochdl/swdtflvr.cxx b/sw/source/uibase/dochdl/swdtflvr.cxx
index ac12153aa2b3..996632519910 100644
--- a/sw/source/uibase/dochdl/swdtflvr.cxx
+++ b/sw/source/uibase/dochdl/swdtflvr.cxx
@@ -2140,9 +2140,9 @@ bool SwTransferable::PasteDDE( TransferableDataHelper& rData,
 
             const sal_Int32 nNewlines{comphelper::string::getTokenCount(aExpand, '\n')};
             // When data comes from a spreadsheet, we add a DDE-table
-            if( ( rData.HasFormat( SotClipboardFormatId::SYLK ) ||
-                  rData.HasFormat( SotClipboardFormatId::SYLK_BIGCAPS ) ) &&
-                !aExpand.isEmpty() )
+            if( !aExpand.isEmpty() &&
+                ( rData.HasFormat( SotClipboardFormatId::SYLK ) ||
+                  rData.HasFormat( SotClipboardFormatId::SYLK_BIGCAPS ) ) )
             {
                 const sal_Int32 nRows = nNewlines ? nNewlines-1 : 0;
                 const sal_Int32 nCols = comphelper::string::getTokenCount(aExpand.getToken(0, '\n'), '\t');
commit 856c1ea7c6f0ff08b3fb0dc23e9eb9483fa501ba
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Tue May 1 10:30:40 2018 +0200

    Simplify: not empty OUString has at least one token
    
    Change-Id: I2ab30dc532e3778a6101757bd0f2957c2311c3e9

diff --git a/sw/source/uibase/dochdl/swdtflvr.cxx b/sw/source/uibase/dochdl/swdtflvr.cxx
index d1f7b5e662e1..ac12153aa2b3 100644
--- a/sw/source/uibase/dochdl/swdtflvr.cxx
+++ b/sw/source/uibase/dochdl/swdtflvr.cxx
@@ -2142,9 +2142,7 @@ bool SwTransferable::PasteDDE( TransferableDataHelper& rData,
             // When data comes from a spreadsheet, we add a DDE-table
             if( ( rData.HasFormat( SotClipboardFormatId::SYLK ) ||
                   rData.HasFormat( SotClipboardFormatId::SYLK_BIGCAPS ) ) &&
-                !aExpand.isEmpty() &&
-                 ( 1 < nNewlines ||
-                       comphelper::string::getTokenCount(aExpand, '\t') ) )
+                !aExpand.isEmpty() )
             {
                 const sal_Int32 nRows = nNewlines ? nNewlines-1 : 0;
                 const sal_Int32 nCols = comphelper::string::getTokenCount(aExpand.getToken(0, '\n'), '\t');
commit e0349dc6587f77e69ed6586a095d9a215a834a77
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Tue May 1 10:21:41 2018 +0200

    Simplify: reduce calls to getTokenCount
    
    Change-Id: I740a910cfc5f42b71b91f597d23f7d53dca89643

diff --git a/sw/source/uibase/dochdl/swdtflvr.cxx b/sw/source/uibase/dochdl/swdtflvr.cxx
index 408e1509856c..d1f7b5e662e1 100644
--- a/sw/source/uibase/dochdl/swdtflvr.cxx
+++ b/sw/source/uibase/dochdl/swdtflvr.cxx
@@ -2138,17 +2138,16 @@ bool SwTransferable::PasteDDE( TransferableDataHelper& rData,
     {
         do {            // middle checked loop
 
+            const sal_Int32 nNewlines{comphelper::string::getTokenCount(aExpand, '\n')};
             // When data comes from a spreadsheet, we add a DDE-table
             if( ( rData.HasFormat( SotClipboardFormatId::SYLK ) ||
                   rData.HasFormat( SotClipboardFormatId::SYLK_BIGCAPS ) ) &&
                 !aExpand.isEmpty() &&
-                 ( 1 < comphelper::string::getTokenCount(aExpand, '\n') ||
+                 ( 1 < nNewlines ||
                        comphelper::string::getTokenCount(aExpand, '\t') ) )
             {
-                sal_Int32 nRows = comphelper::string::getTokenCount(aExpand, '\n');
-                if( nRows )
-                    --nRows;
-                sal_Int32 nCols = comphelper::string::getTokenCount(aExpand.getToken(0, '\n'), '\t');
+                const sal_Int32 nRows = nNewlines ? nNewlines-1 : 0;
+                const sal_Int32 nCols = comphelper::string::getTokenCount(aExpand.getToken(0, '\n'), '\t');
 
                 // don't try to insert tables that are too large for writer
                 if (nRows > SAL_MAX_UINT16 || nCols > SAL_MAX_UINT16)
@@ -2182,7 +2181,7 @@ bool SwTransferable::PasteDDE( TransferableDataHelper& rData,
                     SwInsertTableOptions( SwInsertTableFlags::SplitLayout, 1 ), // TODO MULTIHEADER
                     pDDETyp, nRows, nCols );
             }
-            else if( 1 < comphelper::string::getTokenCount(aExpand, '\n') )
+            else if( nNewlines > 1 )
             {
                 // multiple paragraphs -> insert a protected section
                 if( rWrtShell.HasSelection() )
commit 436191347914b81bb4d4cc02e594f4b47b8df8f5
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Tue May 1 10:03:44 2018 +0200

    OUString: simplify and reduce temporaries
    
    Change-Id: I86abb83cad333ff2d119d33d767f54be206e90da

diff --git a/sw/source/uibase/dochdl/swdtflvr.cxx b/sw/source/uibase/dochdl/swdtflvr.cxx
index 5c7a9f474780..408e1509856c 100644
--- a/sw/source/uibase/dochdl/swdtflvr.cxx
+++ b/sw/source/uibase/dochdl/swdtflvr.cxx
@@ -2102,15 +2102,13 @@ bool SwTransferable::PasteDDE( TransferableDataHelper& rData,
     const ::utl::TransliterationWrapper& rColl = ::GetAppCmpStrIgnore();
 
     do {
-        aName = aApp;
-        aName += OUString::number( i );
+        aName = aApp + OUString::number( i );
         for( j = INIT_FLDTYPES; j < nSize; j++ )
         {
             pTyp = rWrtShell.GetFieldType( j );
             if( SwFieldIds::Dde == pTyp->Which() )
             {
-                OUString sTmp( static_cast<SwDDEFieldType*>(pTyp)->GetCmd() );
-                if( rColl.isEqual( sTmp, aCmd ) &&
+                if( rColl.isEqual( static_cast<SwDDEFieldType*>(pTyp)->GetCmd(), aCmd ) &&
                     SfxLinkUpdateMode::ALWAYS == static_cast<SwDDEFieldType*>(pTyp)->GetType() )
                 {
                     aName = pTyp->GetName();
@@ -2147,12 +2145,10 @@ bool SwTransferable::PasteDDE( TransferableDataHelper& rData,
                  ( 1 < comphelper::string::getTokenCount(aExpand, '\n') ||
                        comphelper::string::getTokenCount(aExpand, '\t') ) )
             {
-                OUString sTmp( aExpand );
-                sal_Int32 nRows = comphelper::string::getTokenCount(sTmp, '\n');
+                sal_Int32 nRows = comphelper::string::getTokenCount(aExpand, '\n');
                 if( nRows )
                     --nRows;
-                sTmp = sTmp.getToken( 0, '\n' );
-                sal_Int32 nCols = comphelper::string::getTokenCount(sTmp, '\t');
+                sal_Int32 nCols = comphelper::string::getTokenCount(aExpand.getToken(0, '\n'), '\t');
 
                 // don't try to insert tables that are too large for writer
                 if (nRows > SAL_MAX_UINT16 || nCols > SAL_MAX_UINT16)
@@ -2787,14 +2783,9 @@ bool SwTransferable::CheckForURLOrLNKFile( TransferableDataHelper& rData,
     }
     else
     {
-        sal_Int32 nLen = rFileName.getLength();
-        if( 4 < nLen && '.' == rFileName[ nLen - 4 ])
+        if( rFileName.getLength()>4 && rFileName.endsWithIgnoreAsciiCase(".url") )
         {
-            OUString sExt( rFileName.copy( nLen - 3 ));
-            if( sExt.equalsIgnoreAsciiCase( "url" ))
-            {
-                OSL_ENSURE( false, "how do we read today .URL - Files?" );
-            }
+            OSL_ENSURE( false, "how do we read today .URL - Files?" );
         }
     }
     return bIsURLFile;


More information about the Libreoffice-commits mailing list