[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.1' - 16 commits - cui/source external/boost formula/source reportdesign/source sc/source solenv/gbuild sw/qa sw/source vcl/inc vcl/opengl vcl/unx writerfilter/source

Justin Luth justin_luth at sil.org
Mon Jul 4 15:02:47 UTC 2016


 cui/source/options/optopencl.cxx                                 |    7 +-
 external/boost/UnpackedTarball_boost.mk                          |    1 
 external/boost/boost.function.Wplacement-new.patch.1             |   16 +++++
 formula/source/core/resource/core_resource.src                   |    2 
 reportdesign/source/ui/dlg/CondFormat.cxx                        |    5 +
 reportdesign/source/ui/dlg/Condition.cxx                         |    1 
 sc/source/core/data/column2.cxx                                  |    8 +-
 sc/source/core/opencl/formulagroupcl.cxx                         |   13 ++++
 sc/source/core/tool/compiler.cxx                                 |   22 +++++++
 sc/source/ui/app/transobj.cxx                                    |   15 +++++
 sc/source/ui/inc/transobj.hxx                                    |    8 ++
 sc/source/ui/miscdlgs/datafdlg.cxx                               |    8 ++
 sc/source/ui/view/cellsh2.cxx                                    |    4 -
 sc/source/ui/view/gridwin.cxx                                    |   14 ++++
 sc/source/ui/view/select.cxx                                     |    1 
 sc/source/ui/view/tabcont.cxx                                    |    2 
 solenv/gbuild/Output.mk                                          |    1 
 sw/qa/extras/ooxmlexport/data/tdf90697_complexBreaksHeaders.docx |binary
 sw/qa/extras/ooxmlexport/ooxmlexport4.cxx                        |   29 ++++++++--
 sw/qa/extras/rtfexport/data/hyperlink_empty.rtf                  |    8 ++
 sw/qa/extras/rtfexport/rtfexport.cxx                             |   11 +++
 sw/source/core/layout/flowfrm.cxx                                |    5 +
 sw/source/filter/ww8/rtfattributeoutput.cxx                      |   28 ++++-----
 sw/source/uibase/dbui/dbmgr.cxx                                  |    1 
 vcl/inc/openglgdiimpl.hxx                                        |    2 
 vcl/opengl/gdiimpl.cxx                                           |   10 +++
 vcl/unx/gtk/gtksys.cxx                                           |   18 +++++-
 writerfilter/source/dmapper/PropertyMap.cxx                      |    4 +
 28 files changed, 206 insertions(+), 38 deletions(-)

New commits:
commit 312ba80b3b8fcb57dbdfd8c1afb1a38149ff9fe7
Author: Justin Luth <justin_luth at sil.org>
Date:   Sat Jun 25 22:21:08 2016 +0300

    tdf#90697 docx - don't change continuous break into page break
    
    As soon as you set PROP_PAGE_DESC_NAME, you are inserting that
    style as a page break.  Setting a pagebreak via a continous break
    was first introduced in commit 50cb1667020494906afaacb68d4163d1eda527cf
    but the unittest for that commit no longer uses this code.
    I'm suggesting it be reverted.  It really messes up round-tripping
    when continuous breaks are removed/replaced with hard page breaks.
    
    There are a few odd cases where the very first section needs to set the
    page break via the continuous break, so it hasn't been eliminated
    completely.
    
    Change-Id: I5b0e4bb7612ee9df47e5c49b8c2316dc001b5238
    Reviewed-on: https://gerrit.libreoffice.org/26662
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit 50bf96d31ab2eb546f6c71cc93c1fa5dd4bf3044)

diff --git a/sw/qa/extras/ooxmlexport/data/tdf90697_complexBreaksHeaders.docx b/sw/qa/extras/ooxmlexport/data/tdf90697_complexBreaksHeaders.docx
new file mode 100644
index 0000000..b5e7ef0
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf90697_complexBreaksHeaders.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
index 4cc0f07..b9dbde4 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
@@ -25,6 +25,7 @@
 #include <com/sun/star/text/XTextFramesSupplier.hpp>
 #include <com/sun/star/text/XTextViewCursorSupplier.hpp>
 #include <com/sun/star/text/XTextSection.hpp>
+#include <com/sun/star/text/XTextColumns.hpp>
 #include <com/sun/star/style/CaseMap.hpp>
 #include <com/sun/star/style/ParagraphAdjust.hpp>
 #include <com/sun/star/style/LineSpacing.hpp>
@@ -373,6 +374,22 @@ DECLARE_OOXMLEXPORT_TEST(testColumnBreak_ColumnCountIsZero,"fdo74153.docx")
     CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xCursor->getPage());
 }
 
+DECLARE_OOXMLEXPORT_TEST(testTdf90697_complexBreaksHeaders,"tdf90697_complexBreaksHeaders.docx")
+{
+// This is a complex document using many types of section breaks and re-defined headers.
+// Paragraphs 44-47 were in two columns
+    uno::Reference<beans::XPropertySet> xTextSection = getProperty< uno::Reference<beans::XPropertySet> >(getParagraph(45), "TextSection");
+    CPPUNIT_ASSERT(xTextSection.is());
+    uno::Reference<text::XTextColumns> xTextColumns = getProperty< uno::Reference<text::XTextColumns> >(xTextSection, "TextColumns");
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xTextColumns->getColumnCount());
+
+// after that, the section break should switch things back to one column.
+    xTextSection = getProperty< uno::Reference<beans::XPropertySet> >(getParagraph(50), "TextSection");
+    CPPUNIT_ASSERT(xTextSection.is());
+    xTextColumns = getProperty< uno::Reference<text::XTextColumns> >(xTextSection, "TextColumns");
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(0), xTextColumns->getColumnCount());
+}
+
 DECLARE_OOXMLEXPORT_TEST(testIndentation, "test_indentation.docx")
 {
     // fdo#74141 :There was a problem that in style.xml and document.xml in <w:ind> tag "right" & "left" margin
diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx
index 08c7f56..75aee73 100644
--- a/writerfilter/source/dmapper/PropertyMap.cxx
+++ b/writerfilter/source/dmapper/PropertyMap.cxx
@@ -1160,7 +1160,9 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl )
             {
                 try
                 {
-                    xRangeProperties->setPropertyValue(getPropertyName(PROP_PAGE_DESC_NAME), uno::makeAny(aName));
+                    if( m_bIsFirstSection )
+                        xRangeProperties->setPropertyValue(getPropertyName(PROP_PAGE_DESC_NAME), uno::makeAny(aName));
+
                     uno::Reference<beans::XPropertySet> xPageStyle (rDM_Impl.GetPageStyles()->getByName(aName), uno::UNO_QUERY_THROW);
                     HandleMarginsHeaderFooter(rDM_Impl);
                     if (rDM_Impl.IsNewDoc())
commit a0d1d84a94af41eba94fba2a1f14ad4d8ad12ee7
Author: Justin Luth <justin_luth at sil.org>
Date:   Sat Jun 11 10:30:18 2016 +0300

    tdf#76349 writer: treat single-column break as page break
    
    Writerfilter imports docx-defined column breaks that exist without
    being in a column.  Word treats these as if they were a page break.
    Writer basically just preserved and ignored them.
    
    I limited the fix to only consider SVX_BREAK_COLUMN_BEFORE since
    writerfilter is only given “column break” and treats it as column_before.
    
    Change-Id: I0d974441d53243c4426048dd7cb60b3897b803f6
    Reviewed-on: https://gerrit.libreoffice.org/26181
    Tested-by: Justin Luth <justin_luth at sil.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit 2721111437706372eaac9bf1d748723196c573ac)

diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
index 041e54b..4cc0f07 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport4.cxx
@@ -362,9 +362,15 @@ DECLARE_OOXMLEXPORT_TEST(testColumnBreak_ColumnCountIsZero,"fdo74153.docx")
      * The <w:br w:type="column" /> was missing after roundtrip
      */
     xmlDocPtr pXmlDoc = parseExport("word/document.xml");
-    if (!pXmlDoc)
-        return;
-    assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/w:br","type","column");
+    if (pXmlDoc)
+        assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/w:br","type","column");
+
+    //tdf76349 match Word's behavior of treating breaks in single columns as page breaks.
+    uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+    uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+    uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+    xCursor->jumpToLastPage();
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xCursor->getPage());
 }
 
 DECLARE_OOXMLEXPORT_TEST(testIndentation, "test_indentation.docx")
diff --git a/sw/source/core/layout/flowfrm.cxx b/sw/source/core/layout/flowfrm.cxx
index 850fc4e303..0dba6fd 100644
--- a/sw/source/core/layout/flowfrm.cxx
+++ b/sw/source/core/layout/flowfrm.cxx
@@ -1123,8 +1123,11 @@ bool SwFlowFrame::IsPageBreak( bool bAct ) const
                     return false;
             }
 
+            //for compatibility, also break at column break if no columns exist
             const SvxBreak eBreak = pSet->GetBreak().GetBreak();
-            if ( eBreak == SVX_BREAK_PAGE_BEFORE || eBreak == SVX_BREAK_PAGE_BOTH )
+            if ( eBreak == SVX_BREAK_PAGE_BEFORE ||
+                 eBreak == SVX_BREAK_PAGE_BOTH ||
+                 (eBreak == SVX_BREAK_COLUMN_BEFORE && !m_rThis.FindColFrame()) )
                 return true;
             else
             {
commit fd32aefd8140b01d35664c4f51c2b7614e373a5d
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date:   Wed Jun 29 16:21:52 2016 +0200

    Step towards disposing of ScDataFormDlg properly
    
    There were some VclPtrs hiding inside std::vector (twice), so fix
    that, but the destructor is still not called (getting Window::~Window
    inconsistency assert). With this patch however the screenshot cppunit
    test no longer fails
    
    Thanks noelgrandin for help
    
    Change-Id: I8b46c4608cbab2070e36ef4abec226bcd997425e
    Reviewed-on: https://gerrit.libreoffice.org/26772
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noelgrandin at gmail.com>
    (cherry picked from commit ec6956491a0c6553a9fb91f64c6ceb7cd8e8aa52)
    
    fix Window::~Window: inconsistency in top window chain leak
    
    Change-Id: I4f32b77a4b107e5315e0c2bc9b20db897135c8b0
    (cherry picked from commit 937cbdb579820aa1dd0526682df1ea98a34168c5)
    Reviewed-on: https://gerrit.libreoffice.org/26792
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>
    (cherry picked from commit aa7f3a3434c60bec0196e763ff56c76a8c9b57ff)

diff --git a/sc/source/ui/miscdlgs/datafdlg.cxx b/sc/source/ui/miscdlgs/datafdlg.cxx
index 64dd5de..f1d8f63 100644
--- a/sc/source/ui/miscdlgs/datafdlg.cxx
+++ b/sc/source/ui/miscdlgs/datafdlg.cxx
@@ -216,8 +216,14 @@ void ScDataFormDlg::dispose()
     m_pBtnNext.clear();
     m_pBtnClose.clear();
     m_pSlider.clear();
-    m_pGrid.clear();
     m_pFixedText.clear();
+    for ( auto aFTIter = maFixedTexts.begin(); aFTIter != maFixedTexts.end(); ++aFTIter )
+        aFTIter->disposeAndClear();
+    for ( auto aEditIter = maEdits.begin(); aEditIter != maEdits.end(); ++aEditIter )
+        aEditIter->disposeAndClear();
+    maFixedTexts.clear();
+    maEdits.clear();
+    m_pGrid.clear();
     ModalDialog::dispose();
 }
 
diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx
index ca73059..6c54992 100644
--- a/sc/source/ui/view/cellsh2.cxx
+++ b/sc/source/ui/view/cellsh2.cxx
@@ -345,8 +345,8 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
                 ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
                 OSL_ENSURE(pFact, "ScAbstractFactory create fail!");
 
-                AbstractScDataFormDlg* pDlg = pFact->CreateScDataFormDlg(
-                    pTabViewShell->GetDialogParent(), pTabViewShell);
+                std::unique_ptr<AbstractScDataFormDlg> pDlg(pFact->CreateScDataFormDlg(
+                    pTabViewShell->GetDialogParent(), pTabViewShell));
                 OSL_ENSURE(pDlg, "Dialog create fail!");
 
                 pDlg->Execute();
commit e3bb9903849929ac426db7add856cba5280e2966
Author: Michael Stahl <mstahl at redhat.com>
Date:   Wed Jun 29 13:06:41 2016 +0200

    vcl: GTK: fix libstdc++ "irreflexive" assert
    
    /usr/include/c++/6.1.1/bits/stl_algo.h:4737:
    Error: comparison doesn't meet irreflexive requirements, assert(!(a < a)).
    
    GdkRectangleCoincident is clearly not a less-than operator as required
    for std::sort.
    
    Change-Id: If2e65d420dc8cdf0707081361a40d4eaea28424e
    (cherry picked from commit e2b267b1906817cc45f0e4896bed58cff5b6b0f9)
    Reviewed-on: https://gerrit.libreoffice.org/26767
    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 92cdfa1cb576cfe5048c17b10208eac71445d3c2)

diff --git a/vcl/unx/gtk/gtksys.cxx b/vcl/unx/gtk/gtksys.cxx
index e663bb9..a29e721 100644
--- a/vcl/unx/gtk/gtksys.cxx
+++ b/vcl/unx/gtk/gtksys.cxx
@@ -62,6 +62,17 @@ GtkSalSystem::GetDisplayXScreenCount()
 namespace
 {
 
+struct GdkRectangleCoincidentLess
+{
+    // fdo#78799 - detect and elide overlaying monitors of different sizes
+    bool operator()(GdkRectangle const& rLeft, GdkRectangle const& rRight)
+    {
+        return
+            rLeft.x < rRight.x
+            || rLeft.y < rRight.y
+            ;
+    }
+};
 struct GdkRectangleCoincident
 {
     // fdo#78799 - detect and elide overlaying monitors of different sizes
@@ -101,10 +112,11 @@ GtkSalSystem::countScreenMonitors()
                 gdk_screen_get_monitor_geometry(pScreen, j, &aGeometry);
                 aGeometries.push_back(aGeometry);
             }
-            GdkRectangleCoincident aCmp;
-            std::sort(aGeometries.begin(), aGeometries.end(), aCmp);
+            std::sort(aGeometries.begin(), aGeometries.end(),
+                    GdkRectangleCoincidentLess());
             const std::vector<GdkRectangle>::iterator aUniqueEnd(
-                    std::unique(aGeometries.begin(), aGeometries.end(), aCmp));
+                    std::unique(aGeometries.begin(), aGeometries.end(),
+                    GdkRectangleCoincident()));
             nMonitors = std::distance(aGeometries.begin(), aUniqueEnd);
         }
         maScreenMonitors.push_back(std::make_pair(pScreen, nMonitors));
commit 498b3eaa782a76024a7847399a468741d183427a
Author: Michael Stahl <mstahl at redhat.com>
Date:   Wed Jun 29 15:09:41 2016 +0200

    boost: suppress GCC6 -Wplacement-new=
    
    function_base.hpp line 308
    error: placement new constructing an object of type "boost::..." and
    size ‘16’ in a region of type ‘char’ and size ‘1’
    
    Change-Id: If905d56bd21dd30a957b50fa3d5eed3a63899d62
    Reviewed-on: https://gerrit.libreoffice.org/26769
    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 0a15048b075a9a610ce7b660dabd3b723d489a6a)

diff --git a/external/boost/UnpackedTarball_boost.mk b/external/boost/UnpackedTarball_boost.mk
index e52f6cd..af1210f 100644
--- a/external/boost/UnpackedTarball_boost.mk
+++ b/external/boost/UnpackedTarball_boost.mk
@@ -64,6 +64,7 @@ boost_patches += boost.wunused.patch
 boost_patches += boost.wdeprecated-auto_ptr.patch.0
 boost_patches += boost.signal2.Wshadow.warnings.patch
 boost_patches += boost.boost_static_assert_unused_attribute.patch.0
+boost_patches += boost.function.Wplacement-new.patch.1
 
 boost_patches += ubsan.patch.0
 boost_patches += rtti.patch.0
diff --git a/external/boost/boost.function.Wplacement-new.patch.1 b/external/boost/boost.function.Wplacement-new.patch.1
new file mode 100644
index 0000000..88908f1
--- /dev/null
+++ b/external/boost/boost.function.Wplacement-new.patch.1
@@ -0,0 +1,16 @@
+GCC 6 warns about function_buffer::data
+
+--- boost/boost/function/function_base.hpp.orig2	2016-06-29 13:54:55.270121431 +0200
++++ boost/boost/function/function_base.hpp	2016-06-29 13:58:50.343103199 +0200
+@@ -37,6 +37,11 @@
+ #include <boost/function_equal.hpp>
+ #include <boost/function/function_fwd.hpp>
+ 
++#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 600)
++# pragma GCC diagnostic push
++# pragma GCC diagnostic ignored "-Wplacement-new="
++#endif
++
+ #if defined(BOOST_MSVC)
+ #   pragma warning( push )
+ #   pragma warning( disable : 4793 ) // complaint about native code generation
commit 386c462e8b9c6e71f804906671af030c82b6d056
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue Jun 28 22:10:06 2016 +0200

    gbuild: recognize newfangled screen TERM=screen.xterm-256color
    
    Seems to have changed from Fedora 23, where it was just "screen", to 24.
    
    Change-Id: I9078c337093d12d62e9afe10b1f02aaf346d4b43
    (cherry picked from commit 4dcba01d97b72db35885c505e647425059740a4c)
    Reviewed-on: https://gerrit.libreoffice.org/26766
    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 1ddc2f93c49660cf651f4faeb1f0f596eab953e2)

diff --git a/solenv/gbuild/Output.mk b/solenv/gbuild/Output.mk
index cd3682f..64bea4e 100644
--- a/solenv/gbuild/Output.mk
+++ b/solenv/gbuild/Output.mk
@@ -62,6 +62,7 @@ KNOWN_TERM:=Eterm aterm gnome kterm linux putty rxvt rxvt-unicode screen xterm x
 KNOWN_TERM+=$(patsubst %,%-color,$(KNOWN_TERM))
 KNOWN_TERM+=$(patsubst %-color,%-256color,$(KNOWN_TERM))
 KNOWN_TERM+=$(patsubst %-color,%+256color,$(KNOWN_TERM))
+KNOWN_TERM+=$(patsubst %,screen.%,$(KNOWN_TERM))
 ifneq ($(strip $(gb_COLOR)),)
 ifneq ($(filter $(TERM),$(KNOWN_TERM)),)
 
commit b425d0d9439344f4ea03ba91ad656267ee5747a7
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Jun 27 13:02:20 2016 +0200

    tdf#100641 correct OOXML function name is EFFECT instead of EFFECTIVE
    
    (cherry picked from commit ed5bcef57b678cb92c68bf842a72e50f4dd1e2ea)
    
    accept EFFECTIVE as EFFECT in OOXML import
    
    (cherry picked from commit f3f89f4f3180b0fd63c5290c665894c6a27f2ae2)
    
    18a914972d69a37e9dcf5b18ffbea9177004dad7
    
    Change-Id: Ieb7484afe210e378efd43ba3a181cd90d29619b9
    Reviewed-on: https://gerrit.libreoffice.org/26704
    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 4c6685a93cc4b82d2a9300f9a4fd64c5c54fb568)

diff --git a/formula/source/core/resource/core_resource.src b/formula/source/core/resource/core_resource.src
index af22f1b..a024aa0 100644
--- a/formula/source/core/resource/core_resource.src
+++ b/formula/source/core/resource/core_resource.src
@@ -663,7 +663,7 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML
     String SC_OPCODE_PPMT { Text = "PPMT" ; };
     String SC_OPCODE_CUM_IPMT { Text = "CUMIPMT" ; };
     String SC_OPCODE_CUM_PRINC { Text = "CUMPRINC" ; };
-    String SC_OPCODE_EFFECTIVE { Text = "EFFECTIVE" ; };
+    String SC_OPCODE_EFFECTIVE { Text = "EFFECT" ; };
     String SC_OPCODE_NOMINAL { Text = "NOMINAL" ; };
     String SC_OPCODE_SUB_TOTAL { Text = "SUBTOTAL" ; };
     String SC_OPCODE_DB_SUM { Text = "DSUM" ; };
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index a841c80..c6684c8 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -2672,6 +2672,28 @@ bool ScCompiler::IsOpCode( const OUString& rName, bool bInArray )
             }
         }
     }
+    else if (mxSymbols->isOOXML())
+    {
+        // OOXML names that are not written in the current mapping but to be
+        // recognized as old versions wrote them.
+        struct FunctionName
+        {
+            const sal_Char* pName;
+            OpCode          eOp;
+        };
+        static const FunctionName aOoxmlAliases[] = {
+            { "EFFECTIVE",  ocEffective }   // EFFECTIVE -> EFFECT
+        };
+        for (const FunctionName& rOoxmlAlias : aOoxmlAliases)
+        {
+            if (rName.equalsIgnoreAsciiCaseAscii( rOoxmlAlias.pName))
+            {
+                maRawToken.SetOpCode( rOoxmlAlias.eOp);
+                bFound = true;
+                break;  // for
+            }
+        }
+    }
     if (!bFound)
     {
         OUString aIntName;
commit ad2debcefa7a2669004155e58b3afdda70ba7434
Author: Tor Lillqvist <tml at collabora.com>
Date:   Mon Jun 27 10:28:55 2016 +0300

    tdf#100222: Show the dialog just once even if both toggles were changed
    
    Change-Id: If6058d68f80ebc3e235f0a681cfe3240985e2429
    Reviewed-on: https://gerrit.libreoffice.org/26697
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>
    (cherry picked from commit 93440e1c1237a2237e8a3b8914514d8889bb6172)

diff --git a/cui/source/options/optopencl.cxx b/cui/source/options/optopencl.cxx
index f055ed0..2bf4cfe 100644
--- a/cui/source/options/optopencl.cxx
+++ b/cui/source/options/optopencl.cxx
@@ -155,9 +155,6 @@ bool SvxOpenCLTabPage::FillItemSet( SfxItemSet* )
     {
         officecfg::Office::Common::Misc::UseSwInterpreter::set(mpUseSwInterpreter->IsChecked(), batch);
         bModified = true;
-
-        ScopedVclPtrInstance<MessageDialog> aWarnBox(this, CUI_RES(RID_SVXSTR_OPTIONS_RESTART), VCL_MESSAGE_INFO);
-        aWarnBox->Execute();
     }
 
     if (mpUseOpenCL->IsValueChangedFromSaved())
@@ -167,13 +164,14 @@ bool SvxOpenCLTabPage::FillItemSet( SfxItemSet* )
     {
         maConfig.set();
         bModified = true;
-
-        ScopedVclPtrInstance<MessageDialog> aWarnBox(this, CUI_RES(RID_SVXSTR_OPTIONS_RESTART), VCL_MESSAGE_INFO);
-        aWarnBox->Execute();
     }
 
     if (bModified)
+    {
+        ScopedVclPtrInstance<MessageDialog> aWarnBox(this, CUI_RES(RID_SVXSTR_OPTIONS_RESTART), VCL_MESSAGE_INFO);
+        aWarnBox->Execute();
         batch->commit();
+    }
 
     return bModified;
 }
commit 34dbeaed44df03a57faa346d1a7e7e0a0205476d
Author: Tor Lillqvist <tml at collabora.com>
Date:   Mon Jun 27 17:26:44 2016 +0300

    tdf#75387: Don't case-fold strings for formula group calculations
    
    There should be no need for it as far as I see. Possibly it made some
    sense back when we thought we could use OpenCL for operators and
    functions that are supposed to ignore the case of strings they
    handle. But we hopefully should never try to use OpenCL for string
    data nowadays anyway. And actually, the case-folding ended up
    affecting strings handled by the so-called software interpreter. For
    the tdf#75387, the sample sheet worked fine when OpenCL was enabled.
    
    Change-Id: I1c170ebf09551fea0964f394cdb3c65079672257
    (cherry picked from commit f948dce856d51704e1962553198015dbebb6e527)
    Reviewed-on: https://gerrit.libreoffice.org/26746
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>
    (cherry picked from commit 593d8c825df9c0e79b2a8bb9a726ffb34b146845)

diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 2287b3b..4d7476e 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -2326,7 +2326,7 @@ bool appendToBlock(
                 rCxt.ensureStrArray(rColArray, nArrayLen);
 
                 for (; itData != itDataEnd; ++itData, ++nPos)
-                    (*rColArray.mpStrArray)[nPos] = itData->getDataIgnoreCase();
+                    (*rColArray.mpStrArray)[nPos] = itData->getData();
             }
             break;
             case sc::element_type_edittext:
@@ -2338,7 +2338,7 @@ bool appendToBlock(
                 for (; itData != itDataEnd; ++itData, ++nPos)
                 {
                     OUString aStr = ScEditUtil::GetString(**itData, pDoc);
-                    (*rColArray.mpStrArray)[nPos] = rPool.intern(aStr).getDataIgnoreCase();
+                    (*rColArray.mpStrArray)[nPos] = rPool.intern(aStr).getData();
                 }
             }
             break;
@@ -2439,7 +2439,7 @@ void copyFirstStringBlock(
             sc::string_block::iterator itEnd = it;
             std::advance(itEnd, nLen);
             for (; it != itEnd; ++it, ++itArray)
-                *itArray = it->getDataIgnoreCase();
+                *itArray = it->getData();
         }
         break;
         case sc::element_type_edittext:
@@ -2453,7 +2453,7 @@ void copyFirstStringBlock(
             {
                 EditTextObject* pText = *it;
                 OUString aStr = ScEditUtil::GetString(*pText, &rDoc);
-                *itArray = rPool.intern(aStr).getDataIgnoreCase();
+                *itArray = rPool.intern(aStr).getData();
             }
         }
         break;
commit 1a62df94f05d538738b5c62afeed7db103280a5c
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Jun 20 12:13:02 2016 +0100

    tdf#96540 dragging between sheets can change the current cursor position
    
    so the at position at time of drop may not be that at the start of
    the drag.
    
    So set the current cursor position to ScTransferObj when the drag starts
    and retrieve it later
    
    Related to:
    
    commit ac3b66057ba677903b6de354317417b267be0fa0
    Author: Kohei Yoshida <kyoshida at novell.com>
    Date:   Thu Sep 16 11:09:29 2010 +0200
    
        calc-selection-fixed-cursor.diff: Migrated
    
        n#502717, i#21869, i#97093, when making selection, don't move the cursor position
    
    and
    
    commit c433fa0639ccf5caeb0c128c8a3794322e2a1c81
    Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Date:   Fri Jul 6 02:04:44 2012 +0200
    
        adjust the calculation of the cursor pos if ALT is used, fdo#48869
    
        Change-Id: I6316717c860d999270aa7f0fb50af5f6dfc7efd7
    
    I haven't used SetSourceCursorPos everywhere a ScTransferObj is created, just
    where its created through a drag event
    
    Change-Id: I50c36b4a2ba45426edebc1f1dfa5e262db3c5d03
    Reviewed-on: https://gerrit.libreoffice.org/26512
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    (cherry picked from commit f9b46bbd2446a6c9a0aaab31016536bda4a77294)
    Reviewed-on: https://gerrit.libreoffice.org/26538
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>
    (cherry picked from commit 172d13121ff2afa1a2d2697570394560ae9a6ffa)

diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx
index 85f65e2..d1ac04e 100644
--- a/sc/source/ui/app/transobj.cxx
+++ b/sc/source/ui/app/transobj.cxx
@@ -116,6 +116,8 @@ ScTransferObj::ScTransferObj( ScDocument* pClipDoc, const TransferableObjectDesc
     aObjDesc( rDesc ),
     nDragHandleX( 0 ),
     nDragHandleY( 0 ),
+    nSourceCursorX( MAXCOL + 1 ),
+    nSourceCursorY( MAXROW + 1 ),
     nDragSourceFlags( 0 ),
     bDragWasInternal( false ),
     bUsedForLink( false ),
@@ -517,6 +519,19 @@ void ScTransferObj::SetDragHandlePos( SCCOL nX, SCROW nY )
     nDragHandleY = nY;
 }
 
+void ScTransferObj::SetSourceCursorPos( SCCOL nX, SCROW nY )
+{
+    nSourceCursorX = nX;
+    nSourceCursorY = nY;
+}
+
+bool ScTransferObj::WasSourceCursorInSelection() const
+{
+    return
+        nSourceCursorX >= aBlock.aStart.Col() && nSourceCursorX <= aBlock.aEnd.Col() &&
+        nSourceCursorY >= aBlock.aStart.Row() && nSourceCursorY <= aBlock.aEnd.Row();
+}
+
 void ScTransferObj::SetVisibleTab( SCTAB nNew )
 {
     nVisibleTab = nNew;
diff --git a/sc/source/ui/inc/transobj.hxx b/sc/source/ui/inc/transobj.hxx
index a29fd4c..abce989 100644
--- a/sc/source/ui/inc/transobj.hxx
+++ b/sc/source/ui/inc/transobj.hxx
@@ -49,6 +49,8 @@ private:
     css::uno::Reference<css::sheet::XSheetCellRanges> xDragSourceRanges;
     SCCOL                           nDragHandleX;
     SCROW                           nDragHandleY;
+    SCCOL                           nSourceCursorX;
+    SCROW                           nSourceCursorY;
     SCTAB                           nVisibleTab;
     sal_uInt16                      nDragSourceFlags;
     bool                            bDragWasInternal;
@@ -83,8 +85,11 @@ public:
     SCROW               GetNonFilteredRows() const { return nNonFiltered; }
     SCCOL               GetDragHandleX() const  { return nDragHandleX; }
     SCROW               GetDragHandleY() const  { return nDragHandleY; }
+    bool                WasSourceCursorInSelection() const;
+    SCCOL               GetSourceCursorX() const  { return nSourceCursorX; }
+    SCROW               GetSourceCursorY() const  { return nSourceCursorY; }
     SCTAB               GetVisibleTab() const   { return nVisibleTab; }
-    sal_uInt16              GetDragSourceFlags() const  { return nDragSourceFlags; }
+    sal_uInt16          GetDragSourceFlags() const  { return nDragSourceFlags; }
     bool                HasFilteredRows() const { return bHasFiltered; }
     bool                GetUseInApi() const     { return bUseInApi; }
     ScDocShell*         GetSourceDocShell();
@@ -93,6 +98,7 @@ public:
 
     void                SetDrawPersist( const SfxObjectShellRef& rRef );
     void                SetDragHandlePos( SCCOL nX, SCROW nY );
+    void                SetSourceCursorPos( SCCOL nX, SCROW nY );
     void                SetVisibleTab( SCTAB nNew );
     void                SetDragSource( ScDocShell* pSourceShell, const ScMarkData& rMark );
     void                SetDragSourceFlags( sal_uInt16 nFlags );
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 8982dbd..2518a29 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -4340,8 +4340,18 @@ sal_Int8 ScGridWindow::DropTransferObj( ScTransferObj* pTransObj, SCCOL nDestPos
                 {
                     pView->MarkRange( aDest, false );
 
-                    SCCOL nDCol = pViewData->GetCurX() - aSource.aStart.Col() + nCorrectCursorPosCol;
-                    SCROW nDRow = pViewData->GetCurY() - aSource.aStart.Row() + nCorrectCursorPosRow;
+                    SCCOL nDCol;
+                    SCROW nDRow;
+                    if (pTransObj->WasSourceCursorInSelection())
+                    {
+                        nDCol = pTransObj->GetSourceCursorX() - aSource.aStart.Col() + nCorrectCursorPosCol;
+                        nDRow = pTransObj->GetSourceCursorY() - aSource.aStart.Row() + nCorrectCursorPosRow;
+                    }
+                    else
+                    {
+                        nDCol = 0;
+                        nDRow = 0;
+                    }
                     pView->SetCursor( aDest.aStart.Col() + nDCol, aDest.aStart.Row() + nDRow );
                 }
 
diff --git a/sc/source/ui/view/select.cxx b/sc/source/ui/view/select.cxx
index a9b4a20..b7a629a 100644
--- a/sc/source/ui/view/select.cxx
+++ b/sc/source/ui/view/select.cxx
@@ -198,6 +198,7 @@ void ScViewFunctionSet::BeginDrag()
                 SCCOL nHandleX = (nPosX >= (SCsCOL) nStartX) ? nPosX - nStartX : 0;
                 SCROW nHandleY = (nPosY >= (SCsROW) nStartY) ? nPosY - nStartY : 0;
                 pTransferObj->SetDragHandlePos( nHandleX, nHandleY );
+                pTransferObj->SetSourceCursorPos( pViewData->GetCurX(), pViewData->GetCurY() );
                 pTransferObj->SetVisibleTab( nTab );
 
                 pTransferObj->SetDragSource( pDocSh, rMark );
diff --git a/sc/source/ui/view/tabcont.cxx b/sc/source/ui/view/tabcont.cxx
index bfb992e..ae51a99 100644
--- a/sc/source/ui/view/tabcont.cxx
+++ b/sc/source/ui/view/tabcont.cxx
@@ -482,6 +482,8 @@ void ScTabControl::DoDrag( const vcl::Region& /* rRegion */ )
 
     pTransferObj->SetDragSource( pDocSh, aTabMark );
 
+    pTransferObj->SetSourceCursorPos( pViewData->GetCurX(), pViewData->GetCurY() );
+
     vcl::Window* pWindow = pViewData->GetActiveWin();
     SC_MOD()->SetDragObject( pTransferObj, nullptr );      // for internal D&D
     pTransferObj->StartDrag( pWindow, DND_ACTION_COPYMOVE | DND_ACTION_LINK );
commit 1ef195a39ae1534218e953cafeb17586bbc42c1b
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Jun 22 12:22:20 2016 +0100

    Resolves: tdf#100303 Report crashes on close of conditional formatting dialog
    
    Condition multiply inherits so the Builder::disposeBuilder call was missed
    
    and prenotify occurs during ::dispose when there is no m_pConditionPlayground
    anymore, so m_pConditionPlayground == 0 where pPlaygroundCandidate is 0
    passes, so a random widget gets cast to somethings its not, hence the bad
    cast exception
    
    Change-Id: I6d081dd55df1a68ab893294858e1ab0054d5e049
    (cherry picked from commit 547e4b3a80708600edbc3f5669b4428877b5a951)
    Reviewed-on: https://gerrit.libreoffice.org/26569
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    (cherry picked from commit 7cb1840b41fcb1cf0ec60a0ceecfd1cbf6e44ae7)

diff --git a/reportdesign/source/ui/dlg/CondFormat.cxx b/reportdesign/source/ui/dlg/CondFormat.cxx
index 175a740..8351806 100644
--- a/reportdesign/source/ui/dlg/CondFormat.cxx
+++ b/reportdesign/source/ui/dlg/CondFormat.cxx
@@ -500,7 +500,10 @@ namespace rptui
             }
             case MouseNotifyEvent::GETFOCUS:
             {
-                if ( m_bDeletingCondition )
+                if (m_bDeletingCondition)
+                    break;
+
+                if (!m_pConditionPlayground) //e.g. during dispose
                     break;
 
                 const vcl::Window* pGetFocusWindow( _rNEvt.GetWindow() );
diff --git a/reportdesign/source/ui/dlg/Condition.cxx b/reportdesign/source/ui/dlg/Condition.cxx
index d5477f1..43c8b7b 100644
--- a/reportdesign/source/ui/dlg/Condition.cxx
+++ b/reportdesign/source/ui/dlg/Condition.cxx
@@ -329,6 +329,7 @@ void Condition::dispose()
     m_pAddCondition.clear();
     m_pRemoveCondition.clear();
     m_pColorFloat.disposeAndClear();
+    disposeBuilder();
     VclHBox::dispose();
 }
 
commit db719b93cfd0aef145a2cef55776df9a7865ea7d
Author: Tor Lillqvist <tml at collabora.com>
Date:   Mon Jun 27 12:36:22 2016 +0300

    tdf#98515: Bail out early if kernel would have ridiculously many parameters
    
    The Right Thing to do would be to compare the accumulated kernel
    parameter size against the CL_DEVICE_MAX_PARAMETER_SIZE of the device,
    but let's just do this sanity check for now. Bail out if the kernel
    would have more than 50 parameters.
    
    Calculating the accumulated kernel parameter size would be more
    complicated and I don't want to touch this code more than
    necessary. The kernel compilation will fail anyway if the size of
    parameters exceeds the limit and this sanity check is just to make us
    bail out a bit earlier.
    
    In tdf#98515 the slowness seems to indeed be caused by the OpenCL code
    generation , and there the number of parameters was 999, so this
    sanity check does fix the slow loading issue (I checked).
    
    (cherry picked from commit a48aefcae40663b63005d49a04fc7b89a473d613)
    
    Change-Id: Iead6dfb94ec8e7b2968ffed9423f0f9522a10ce9
    Reviewed-on: https://gerrit.libreoffice.org/26703
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    (cherry picked from commit bc34f5bae1ffc42fb848b2341020fc3fa52afbe2)

diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx
index 49360df..8055ecf 100644
--- a/sc/source/core/opencl/formulagroupcl.cxx
+++ b/sc/source/core/opencl/formulagroupcl.cxx
@@ -2630,6 +2630,19 @@ DynamicKernelSoPArguments::DynamicKernelSoPArguments(const ScCalcConfig& config,
                     const formula::DoubleVectorRefToken* pDVR =
                         static_cast<const formula::DoubleVectorRefToken*>(pChild);
 
+                    // FIXME: The Right Thing to do would be to compare the accumulated kernel
+                    // parameter size against the CL_DEVICE_MAX_PARAMETER_SIZE of the device, but
+                    // let's just do this sanity check for now. The kernel compilation will
+                    // hopefully fail anyway if the size of parameters exceeds the limit and this
+                    // sanity check is just to make us bail out a bit earlier.
+
+                    // The number 50 comes from the fact that the minimum size of
+                    // CL_DEVICE_MAX_PARAMETER_SIZE is 256, which for 32-bit code probably means 64
+                    // of them. Round down a bit.
+
+                    if (pDVR->GetArrays().size() > 50)
+                        throw UnhandledToken(pChild, ("Kernel would have ridiculously many parameters (" + std::to_string(2 + pDVR->GetArrays().size()) + ")").c_str());
+
                     for (size_t j = 0; j < pDVR->GetArrays().size(); ++j)
                     {
                         SAL_INFO("sc.opencl", "i=" << i << " j=" << j <<
commit 0e92c0fecb2e64cad90c8097653dc791aa4d546e
Author: Michael Stahl <mstahl at redhat.com>
Date:   Mon Jun 27 17:28:05 2016 +0200

    tdf#100495 sw: Exchange Database shouldn't delete the created odb file
    
    (regression from f01f31201f9b26b3071ab25f9a5a3a0311ff7423)
    
    Change-Id: Ie5b83a82711229bda045b7ef7a9167cfd873f616
    (cherry picked from commit 5a042dad2779eefc76269e14b888bd84df590aac)
    Reviewed-on: https://gerrit.libreoffice.org/26723
    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 f1dc76532638a5093b878919a3c7dd3aa5d22f09)

diff --git a/sw/source/uibase/dbui/dbmgr.cxx b/sw/source/uibase/dbui/dbmgr.cxx
index bfe28a3..abcf707 100644
--- a/sw/source/uibase/dbui/dbmgr.cxx
+++ b/sw/source/uibase/dbui/dbmgr.cxx
@@ -2698,7 +2698,6 @@ OUString SwDBManager::LoadAndRegisterDataSource(const DBConnURITypes type, const
                 // Cannot embed, as embedded data source would need the URL of the parent document.
                 OUString sHomePath(SvtPathOptions().GetWorkPath());
                 utl::TempFile aTempFile(sNewName, true, &sOutputExt, pDestDir ? pDestDir : &sHomePath);
-                aTempFile.EnableKillingFile();
                 OUString sTmpName = aTempFile.GetURL();
                 xStore->storeAsURL(sTmpName, uno::Sequence<beans::PropertyValue>());
             }
commit 84b87428195c2d1202fe8d648237526e6fa5fd0e
Author: Michael Stahl <mstahl at redhat.com>
Date:   Wed Jun 15 18:07:12 2016 +0200

    tdf#100105 sw: RTF export: fix empty hyperlinks
    
    For empty hyperlinks the EndURL() is called immediately after StartURL()
    Due to the way the various buffers are written, the group closing braces
    are written before the groups are opened, which is rather invalid.
    
    Using the m_aRun buffer instead of m_aStyles appears to fix the problem.
    
    (regression from b8907bf3d3b37c686a414ffbbd2d732348aab5b9)
    
    (cherry picked from commit b4855bd63c05096df1a2da339133f243bb30d902)
    Reviewed-on: https://gerrit.libreoffice.org/26336
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    (cherry picked from commit 744bd590fd2c39638e8df41a569cb2cc376e7450)
    
    Change-Id: I6910e1afa0ee262ae0496cf1d3aa83ae3e537ad0
    Reviewed-on: https://gerrit.libreoffice.org/26699
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit f687c57465292e940f9e0d69aa2e4ee3376bd569)

diff --git a/sw/qa/extras/rtfexport/data/hyperlink_empty.rtf b/sw/qa/extras/rtfexport/data/hyperlink_empty.rtf
new file mode 100644
index 0000000..bdd263d
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/hyperlink_empty.rtf
@@ -0,0 +1,8 @@
+{\rtf1
+{\field
+{\*\fldinst HYPERLINK "http://example.net"}
+{\fldrslt }
+}
+foobar
+\par
+}
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index fb2b63b..3fced50 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -523,6 +523,17 @@ DECLARE_RTFEXPORT_TEST(testHyperlink, "hyperlink.rtf")
     CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(getRun(getParagraph(1), 3, "!"), "HyperLinkURL"));
 }
 
+DECLARE_RTFEXPORT_TEST(testHyperlinkTdf100105, "hyperlink_empty.rtf")
+{
+    // export of empty link was invalid, group was closed before it was opened
+    uno::Reference<text::XTextDocument> xTextDoc(mxComponent, uno::UNO_QUERY);
+    uno::Reference<text::XTextCursor> xCursor(xTextDoc->getText()->createTextCursor());
+    xCursor->gotoStart(false);
+    CPPUNIT_ASSERT_EQUAL(OUString("http://example.net"), getProperty<OUString>(xCursor, "HyperLinkURL"));
+    // getRun doesn't provide a 0-length hyperlink
+    CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(getRun(getParagraph(1), 1, "foobar"), "HyperLinkURL"));
+}
+
 DECLARE_RTFEXPORT_TEST(test78758, "fdo78758.rtf")
 {
     CPPUNIT_ASSERT_EQUAL(OUString("#__RefHeading___Toc264438068"),
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx
index 9e1c583..4e088f1 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -555,27 +555,27 @@ bool RtfAttributeOutput::StartURL(const OUString& rUrl, const OUString& rTarget)
     // Ignore hyperlink without an URL.
     if (!rUrl.isEmpty())
     {
-        m_aStyles.append('{');
-        m_aStyles.append(OOO_STRING_SVTOOLS_RTF_FIELD);
-        m_aStyles.append('{');
-        m_aStyles.append(OOO_STRING_SVTOOLS_RTF_IGNORE);
-        m_aStyles.append(OOO_STRING_SVTOOLS_RTF_FLDINST);
-        m_aStyles.append(" HYPERLINK ");
+        m_aRun->append('{');
+        m_aRun->append(OOO_STRING_SVTOOLS_RTF_FIELD);
+        m_aRun->append('{');
+        m_aRun->append(OOO_STRING_SVTOOLS_RTF_IGNORE);
+        m_aRun->append(OOO_STRING_SVTOOLS_RTF_FLDINST);
+        m_aRun->append(" HYPERLINK ");
 
         OUString sURL(rUrl);
-        m_aStyles.append("\"");
-        m_aStyles.append(msfilter::rtfutil::OutString(sURL, m_rExport.eCurrentEncoding));
-        m_aStyles.append("\" ");
+        m_aRun->append("\"");
+        m_aRun->append(msfilter::rtfutil::OutString(sURL, m_rExport.eCurrentEncoding));
+        m_aRun->append("\" ");
 
         if (!rTarget.isEmpty())
         {
-            m_aStyles.append("\\\\t \"");
-            m_aStyles.append(msfilter::rtfutil::OutString(rTarget, m_rExport.eCurrentEncoding));
-            m_aStyles.append("\" ");
+            m_aRun->append("\\\\t \"");
+            m_aRun->append(msfilter::rtfutil::OutString(rTarget, m_rExport.eCurrentEncoding));
+            m_aRun->append("\" ");
         }
 
-        m_aStyles.append("}");
-        m_aStyles.append("{" OOO_STRING_SVTOOLS_RTF_FLDRSLT " {");
+        m_aRun->append("}");
+        m_aRun->append("{" OOO_STRING_SVTOOLS_RTF_FLDRSLT " {");
     }
     return true;
 }
commit d37e32b966fdfe8bad77e8e8fdcd3de86bf862e3
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.co.uk>
Date:   Fri Jun 24 16:42:45 2016 +0800

    tdf#100411 start the flush timer when batching (PostBatchDraw)
    
    When we batch a draw command we need to start the flush timer
    (if not already started) as otherwise it could happen that we
    won't flush the offscreen texture at the correct time or at all.
    This fixes a problem with drawing of pop-up "help" text.
    
    (cherry picked from commit e1296e295e7d4f1104d2c90b1f51d52251358bea)
    
    Change-Id: I6afcf173c3ac517ed0612cd413d95e28c19faa81
    Reviewed-on: https://gerrit.libreoffice.org/26630
    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 24c3838b5fd2005d9df902c9a7d03fcba78adbe4)

diff --git a/vcl/inc/openglgdiimpl.hxx b/vcl/inc/openglgdiimpl.hxx
index df7b9e9..2037268 100644
--- a/vcl/inc/openglgdiimpl.hxx
+++ b/vcl/inc/openglgdiimpl.hxx
@@ -169,6 +169,8 @@ public:
     // operations to do after painting
     void PostDraw();
 
+    void PostBatchDraw();
+
 protected:
     bool AcquireContext(bool bForceCreate = false);
     bool ReleaseContext();
diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx
index 188db65..1422c6a 100644
--- a/vcl/opengl/gdiimpl.cxx
+++ b/vcl/opengl/gdiimpl.cxx
@@ -249,6 +249,15 @@ void OpenGLSalGraphicsImpl::PostDraw()
     OpenGLZone::leave();
 }
 
+void OpenGLSalGraphicsImpl::PostBatchDraw()
+{
+    if (IsOffscreen())
+        return;
+
+    if (!mpFlush->IsActive())
+        mpFlush->Start();
+}
+
 void OpenGLSalGraphicsImpl::ApplyProgramMatrices(float fPixelOffset)
 {
     mpProgram->ApplyMatrix(GetWidth(), GetHeight(), fPixelOffset);
@@ -1519,6 +1528,7 @@ void OpenGLSalGraphicsImpl::DrawMask( OpenGLTexture& rMask, SalColor nMaskColor,
 void OpenGLSalGraphicsImpl::DeferredTextDraw(OpenGLTexture& rTexture, SalColor aMaskColor, const SalTwoRect& rPosAry)
 {
     mpAccumulatedTextures->insert(rTexture, aMaskColor, rPosAry);
+    PostBatchDraw();
 }
 
 void OpenGLSalGraphicsImpl::FlushDeferredDrawing()
commit 2ea72b322911ecb4c8df0c23bb2570e74bdc5407
Author: Tor Lillqvist <tml at collabora.com>
Date:   Thu Jun 23 17:40:30 2016 +0300

    tdf#100222: Inform user that a restart is needed after toggling OpenCL use
    
    (cherry picked from commit c7c27b9b191291cf36e4940aef3e3e7371855797)
    
    Change-Id: Ic33cb02440276bc0601c86f2c9eab7d74a6b9874
    Reviewed-on: https://gerrit.libreoffice.org/26611
    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 6d3a5d8aa07e575c153316a9725f36c43abd0bca)

diff --git a/cui/source/options/optopencl.cxx b/cui/source/options/optopencl.cxx
index db1470e..f055ed0 100644
--- a/cui/source/options/optopencl.cxx
+++ b/cui/source/options/optopencl.cxx
@@ -167,6 +167,9 @@ bool SvxOpenCLTabPage::FillItemSet( SfxItemSet* )
     {
         maConfig.set();
         bModified = true;
+
+        ScopedVclPtrInstance<MessageDialog> aWarnBox(this, CUI_RES(RID_SVXSTR_OPTIONS_RESTART), VCL_MESSAGE_INFO);
+        aWarnBox->Execute();
     }
 
     if (bModified)


More information about the Libreoffice-commits mailing list