[Libreoffice-commits] core.git: Branch 'distro/collabora/lov-5.2' - 63 commits - configure.ac cui/source cui/uiconfig download.lst editeng/source extensions/source external/lcms2 external/liborcus external/more_fonts extras/source include/formula include/sfx2 include/vcl linguistic/source Makefile.in odk/settings officecfg/registry sc/source sd/source sfx2/source sfx2/uiconfig svgio/source svtools/source sw/inc sw/qa sw/source sw/uiconfig vcl/inc vcl/source vcl/unx writerfilter/qa writerfilter/source xmloff/source

Eike Rathke erack at redhat.com
Thu Sep 15 07:35:06 UTC 2016


 Makefile.in                                                      |    2 
 configure.ac                                                     |    4 
 cui/source/dialogs/hyphen.cxx                                    |    9 
 cui/source/inc/numpages.hxx                                      |    2 
 cui/source/options/optpath.cxx                                   |   13 -
 cui/source/tabpages/numpages.cxx                                 |    6 
 cui/uiconfig/ui/textflowpage.ui                                  |    5 
 download.lst                                                     |    2 
 editeng/source/misc/svxacorr.cxx                                 |    8 
 extensions/source/update/check/updatecheck.cxx                   |    6 
 external/lcms2/0001-Added-an-extra-check-to-MLU-bounds.patch.1   |   25 ++
 external/lcms2/UnpackedTarball_lcms2.mk                          |    1 
 external/liborcus/Library_orcus.mk                               |    4 
 external/more_fonts/ExternalPackage_sourcecode.mk                |   12 +
 extras/source/autocorr/lang/de/DocumentList.xml                  |    3 
 extras/source/palettes/standard.sob                              |binary
 include/formula/errorcodes.hxx                                   |    9 
 include/sfx2/templateabstractview.hxx                            |    2 
 include/sfx2/templdlg.hxx                                        |    8 
 include/vcl/help.hxx                                             |    2 
 linguistic/source/convdicxml.cxx                                 |    2 
 linguistic/source/dicimp.cxx                                     |    2 
 linguistic/source/gciterator.cxx                                 |    2 
 linguistic/source/lngsvcmgr.cxx                                  |    8 
 odk/settings/settings.mk                                         |   10 
 officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu     |    2 
 sc/source/core/data/column2.cxx                                  |    4 
 sc/source/core/data/table3.cxx                                   |   28 ++
 sc/source/core/tool/interpr7.cxx                                 |  119 ++++++++--
 sc/source/ui/app/inputhdl.cxx                                    |   17 +
 sc/source/ui/view/formatsh.cxx                                   |    4 
 sd/source/ui/func/fuchar.cxx                                     |    2 
 sd/source/ui/view/drviewsf.cxx                                   |   10 
 sd/source/ui/view/outlnvsh.cxx                                   |    2 
 sd/source/ui/view/viewshe3.cxx                                   |    4 
 sfx2/source/control/templateabstractview.cxx                     |   14 +
 sfx2/source/dialog/backingwindow.cxx                             |    5 
 sfx2/source/dialog/templdlg.cxx                                  |   71 +++--
 sfx2/source/dialog/tplcitem.cxx                                  |    4 
 sfx2/source/inc/templdgi.hxx                                     |    2 
 sfx2/uiconfig/ui/saveastemplatedlg.ui                            |    4 
 svgio/source/svgreader/svgstyleattributes.cxx                    |   24 +-
 svtools/source/control/valueset.cxx                              |    2 
 sw/inc/IDocumentSettingAccess.hxx                                |    1 
 sw/qa/core/data/rtf/fail/table-2.rtf                             |binary
 sw/qa/core/data/rtf/pass/tabbox-1.rtf                            |binary
 sw/qa/extras/ooxmlexport/data/tdf101589_dontSplitTable.odt       |binary
 sw/qa/extras/ooxmlexport/data/tdf44986.docx                      |binary
 sw/qa/extras/ooxmlexport/ooxmlexport.cxx                         |   10 
 sw/qa/extras/ooxmlexport/ooxmlexport3.cxx                        |    6 
 sw/qa/extras/rtfimport/data/tdf44986.rtf                         |   35 ++
 sw/qa/extras/rtfimport/rtfimport.cxx                             |   10 
 sw/qa/extras/uiwriter/data/tdf78727.docx                         |binary
 sw/qa/extras/uiwriter/uiwriter.cxx                               |   12 +
 sw/source/core/access/accmap.cxx                                 |    4 
 sw/source/core/crsr/crstrvl.cxx                                  |   17 +
 sw/source/core/doc/DocumentSettingManager.cxx                    |    6 
 sw/source/core/doc/docedt.cxx                                    |    3 
 sw/source/core/docnode/ndtbl.cxx                                 |    2 
 sw/source/core/inc/DocumentSettingManager.hxx                    |    1 
 sw/source/core/layout/flowfrm.cxx                                |    4 
 sw/source/core/unocore/unosett.cxx                               |    2 
 sw/source/core/unocore/unotext.cxx                               |   25 +-
 sw/source/filter/html/css1atr.cxx                                |    6 
 sw/source/filter/ww8/wrtw8nds.cxx                                |   30 ++
 sw/source/ui/chrdlg/chardlg.cxx                                  |    2 
 sw/source/uibase/app/apphdl.cxx                                  |    2 
 sw/source/uibase/app/docst.cxx                                   |    2 
 sw/source/uibase/docvw/edtwin.cxx                                |    7 
 sw/source/uibase/uno/SwXDocumentSettings.cxx                     |   13 +
 sw/uiconfig/swriter/toolbar/changes.xml                          |   24 +-
 sw/uiconfig/swriter/ui/charurlpage.ui                            |   12 +
 vcl/inc/unx/gtk/gtksalmenu.hxx                                   |    1 
 vcl/source/app/help.cxx                                          |    3 
 vcl/unx/generic/glyphs/gcach_layout.cxx                          |   23 -
 vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx                         |    1 
 vcl/unx/gtk/fpicker/SalGtkFolderPicker.cxx                       |    1 
 vcl/unx/gtk/fpicker/SalGtkPicker.cxx                             |    5 
 vcl/unx/gtk/gtksalmenu.cxx                                       |    9 
 writerfilter/qa/cppunittests/rtftok/data/fail/propheight-1.rtf   |binary
 writerfilter/qa/cppunittests/rtftok/data/fail/tablemanager-6.rtf |binary
 writerfilter/qa/cppunittests/rtftok/data/fail/tablemanager-7.rtf |binary
 writerfilter/qa/cppunittests/rtftok/data/fail/topcontext-2.rtf   |binary
 writerfilter/qa/cppunittests/rtftok/data/pass/parser-state-1.rtf |binary
 writerfilter/qa/cppunittests/rtftok/data/pass/valuelist-1.rtf    |binary
 writerfilter/source/dmapper/DomainMapper.cxx                     |    3 
 writerfilter/source/dmapper/DomainMapper_Impl.cxx                |    4 
 writerfilter/source/dmapper/NumberingManager.cxx                 |   11 
 writerfilter/source/dmapper/PropertyMap.cxx                      |    4 
 writerfilter/source/filter/WriterFilter.cxx                      |    1 
 writerfilter/source/ooxml/OOXMLFastContextHandler.cxx            |   19 +
 writerfilter/source/ooxml/OOXMLFastContextHandler.hxx            |    4 
 writerfilter/source/ooxml/factoryimpl_ns.py                      |    2 
 writerfilter/source/ooxml/model.xml                              |   12 -
 writerfilter/source/rtftok/rtfdispatchsymbol.cxx                 |   17 +
 writerfilter/source/rtftok/rtfdispatchvalue.cxx                  |    3 
 writerfilter/source/rtftok/rtfdocumentimpl.cxx                   |   16 -
 writerfilter/source/rtftok/rtfdocumentimpl.hxx                   |    6 
 writerfilter/source/rtftok/rtftokenizer.cxx                      |    2 
 xmloff/source/style/xmlnumfi.cxx                                 |   10 
 xmloff/source/text/txtparae.cxx                                  |    1 
 101 files changed, 637 insertions(+), 222 deletions(-)

New commits:
commit d60dff922b4dba1064cc3a06bc7365e111ddc8a2
Author: Eike Rathke <erack at redhat.com>
Date:   Tue Sep 13 15:26:09 2016 +0200

    recognize NaN with no bits set in lower word as error
    
    Which can happen for example for -nan(0x8000000000000) as a result of
    calculating with -inf. This was displayed as NaN instead of a proper error
    value, now #NUM!
    
    Example test case:
    =FORECAST.ETS.ADD(50, {-1,-2,-3,-4}, {10,20,30,40})
    
    Change-Id: I1e1d95e1f188e0036b72be37dd20039c9a9a13f6
    (cherry picked from commit 4ef10fce39575ec0bd3793b5fdf731c0b9af25a3)
    Reviewed-on: https://gerrit.libreoffice.org/28867
    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 ca19404c254c306d31a332958da5dde5d69a8d20)

diff --git a/include/formula/errorcodes.hxx b/include/formula/errorcodes.hxx
index 13597b9..173c744 100644
--- a/include/formula/errorcodes.hxx
+++ b/include/formula/errorcodes.hxx
@@ -103,11 +103,14 @@ inline sal_uInt16 GetDoubleErrorValue( double fVal )
         return 0;
     if ( ::rtl::math::isInf( fVal ) )
         return errIllegalFPOperation;       // normal INF
-    sal_uInt32 nErr = reinterpret_cast< sal_math_Double * >(
-            &fVal)->nan_parts.fraction_lo;
+    sal_uInt32 nErr = reinterpret_cast< sal_math_Double * >( &fVal)->nan_parts.fraction_lo;
     if ( nErr & 0xffff0000 )
         return errNoValue;                  // just a normal NAN
-    return (sal_uInt16)(nErr & 0x0000ffff);     // any other error
+    if (!nErr)
+        // Another NAN, e.g. -nan(0x8000000000000) from calculating with -inf
+        return errIllegalFPOperation;
+    // Any other error known to us as error code.
+    return (sal_uInt16)(nErr & 0x0000ffff);
 }
 
 } // namespace formula
commit 1cb01d0b298c42f5446a3df026a254c21bc05693
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Sep 12 16:08:38 2016 +0200

    tdf#91966: In SDK, set CPPU_ENV=mscx for 64-bit Windows
    
    Change-Id: Ib93b2db40f43f98d8369cb91ca35692cc92f023b
    (cherry picked from commit 3aaa820446f1ad3d3b0ddc557238b6fb3496dd54)
    Reviewed-on: https://gerrit.libreoffice.org/28871
    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 15cc69ef3b20458889901c0c0ac02c5211a21f48)

diff --git a/odk/settings/settings.mk b/odk/settings/settings.mk
index b5bee39..5dd54f6 100644
--- a/odk/settings/settings.mk
+++ b/odk/settings/settings.mk
@@ -113,8 +113,14 @@ SDK_JAVA_INCLUDES = -I"$(OO_SDK_JAVA_HOME)/include" -I"$(OO_SDK_JAVA_HOME)/inclu
 # define for used compiler necessary for UNO
 # -DCPPU_ENV=msci -- windows msvc 4.x - 7.x
 
-CC_DEFINES_JNI=-DWIN32 -DWNT -D_DLL -DCPPU_ENV=msci
-CC_DEFINES=-DWIN32 -DWNT -D_DLL -DCPPU_ENV=msci
+ifeq "$(PROCTYPE)" "x86_64"
+CPPU_ENV=mscx
+else
+CPPU_ENV=msci
+endif
+
+CC_DEFINES_JNI=-DWIN32 -DWNT -D_DLL -DCPPU_ENV=$(CPPU_ENV)
+CC_DEFINES=-DWIN32 -DWNT -D_DLL -DCPPU_ENV=$(CPPU_ENV)
 CC_OUTPUT_SWITCH=-Fo
 
 LIBO_SDK_LDFLAGS_STDLIBS = $(LIBO_SDK_DETAIL_LDFLAGS_MSVCRT) kernel32.lib
commit ddb03cc38f6f85ca25c92dc8ca475ad95a1ca1da
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Tue Sep 13 04:34:05 2016 +0200

    avoid crash with nullptr access
    
    e.g.
    http://crashreport.libreoffice.org/stats/crash_details/7d19c6e6-19cb-4ba0-a51f-7b7eef514ae1
    
    Change-Id: Ia27780d6fa29a7e4b0665192844afbd8a7471721
    Reviewed-on: https://gerrit.libreoffice.org/28854
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 0dc5bbc155311d6d687e4f29620c6652b988dd0d)

diff --git a/sw/source/uibase/app/apphdl.cxx b/sw/source/uibase/app/apphdl.cxx
index ecfeb18..53db053 100644
--- a/sw/source/uibase/app/apphdl.cxx
+++ b/sw/source/uibase/app/apphdl.cxx
@@ -586,7 +586,7 @@ IMPL_LINK_NOARG_TYPED( SwMailMergeWizardExecutor, EndDialogHdl, Dialog&, void )
     default: // finish
         {
             SwMailMergeConfigItem* pMMConfig = m_pView->GetMailMergeConfigItem();
-            SwView* pSourceView = pMMConfig->GetSourceView();
+            SwView* pSourceView = pMMConfig ? pMMConfig->GetSourceView() : nullptr;
             if(pSourceView)
             {
                 pMMConfig->GetSourceView()->GetViewFrame()->GetFrame().Appear();
commit 71d02537e4f5c4cd87bc663f3488ed15c5f3f211
Author: Michael Stahl <mstahl at redhat.com>
Date:   Mon Sep 12 13:23:00 2016 +0200

    sw: partially revert commit d0b09f41efe938e94a84e783c9ff5742edcbfba8
    
    These still trigger sometimes in JunitTest_toolkit_unoapi_1
    and i haven't had time to track that down, so back to SAL_WARN for
    now...
    
    Change-Id: I4d9f653ffddc7c704d33950d847345f4895d3f87
    (cherry picked from commit 2934f6bcc75c781cdf9e614b9d7d8533eb680b3f)
    Reviewed-on: https://gerrit.libreoffice.org/28862
    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 243ed1a3606a8b9d331e40053e36582bf1fdc9e2)

diff --git a/sw/source/core/access/accmap.cxx b/sw/source/core/access/accmap.cxx
index 4c2aaae..9baa69f 100644
--- a/sw/source/core/access/accmap.cxx
+++ b/sw/source/core/access/accmap.cxx
@@ -1697,7 +1697,7 @@ SwAccessibleMap::~SwAccessibleMap()
     {
         osl::MutexGuard aGuard( maMutex );
 #if OSL_DEBUG_LEVEL > 0
-        assert((!mpFrameMap || mpFrameMap->empty()) &&
+        SAL_WARN_IF(!(!mpFrameMap || mpFrameMap->empty()), "sw.a11y",
                 "Frame map should be empty after disposing the root frame");
         if( mpFrameMap )
         {
@@ -1714,7 +1714,7 @@ SwAccessibleMap::~SwAccessibleMap()
                 ++aIter;
             }
         }
-        assert((!mpShapeMap || mpShapeMap->empty()) &&
+        SAL_WARN_IF(!(!mpShapeMap || mpShapeMap->empty()), "sw.a11y",
                 "Object map should be empty after disposing the root frame");
         if( mpShapeMap )
         {
commit 96f280798ad438b2db1207b5d2a1d3d1767e9953
Author: Yousuf Philips <philipz85 at hotmail.com>
Date:   Sun Sep 11 01:49:46 2016 +0400

    tdf#101566 Remove untranslatable labels from changes toolbar
    
    Change-Id: I62cb3b8d0f57f7fd79cffce3b5aed5e384390e24
    Reviewed-on: https://gerrit.libreoffice.org/28814
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Yousuf Philips <philipz85 at hotmail.com>
    (cherry picked from commit f37d6837bf864a08f567c10c5f5bc0d4e4b5f9f7)
    Reviewed-on: https://gerrit.libreoffice.org/28822
    Reviewed-by: Maxim Monastirsky <momonasmon at gmail.com>
    (cherry picked from commit 4b7707bb8bcf0965d2d81f9c82672cb11829737f)

diff --git a/sw/uiconfig/swriter/toolbar/changes.xml b/sw/uiconfig/swriter/toolbar/changes.xml
index 3ba4ad5..f90a85e 100644
--- a/sw/uiconfig/swriter/toolbar/changes.xml
+++ b/sw/uiconfig/swriter/toolbar/changes.xml
@@ -18,19 +18,19 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 -->
 <toolbar:toolbar xmlns:toolbar="http://openoffice.org/2001/toolbar" xmlns:xlink="http://www.w3.org/1999/xlink">
- <toolbar:toolbaritem xlink:href=".uno:ShowTrackedChanges" toolbar:text="Show" toolbar:helpid="10624"/>
- <toolbar:toolbaritem xlink:href=".uno:TrackChanges" toolbar:text="Record" toolbar:helpid="10725"/>
+ <toolbar:toolbaritem xlink:href=".uno:ShowTrackedChanges" toolbar:helpid="10624"/>
+ <toolbar:toolbaritem xlink:href=".uno:TrackChanges" toolbar:helpid="10725"/>
  <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:PreviousTrackedChange" toolbar:text="Previous"/>
- <toolbar:toolbaritem xlink:href=".uno:NextTrackedChange" toolbar:text="Next"/>
- <toolbar:toolbaritem xlink:href=".uno:AcceptTrackedChange" toolbar:text="Accept" toolbar:helpid="10625"/>
- <toolbar:toolbaritem xlink:href=".uno:RejectTrackedChange" toolbar:text="Reject" toolbar:helpid="10626"/>
- <toolbar:toolbaritem xlink:href=".uno:AcceptTrackedChanges" toolbar:text="List" toolbar:helpid="10622"/>
+ <toolbar:toolbaritem xlink:href=".uno:PreviousTrackedChange"/>
+ <toolbar:toolbaritem xlink:href=".uno:NextTrackedChange"/>
+ <toolbar:toolbaritem xlink:href=".uno:AcceptTrackedChange" toolbar:helpid="10625"/>
+ <toolbar:toolbaritem xlink:href=".uno:RejectTrackedChange" toolbar:helpid="10626"/>
+ <toolbar:toolbaritem xlink:href=".uno:AcceptTrackedChanges" toolbar:helpid="10622"/>
  <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:InsertAnnotation" toolbar:text="Regular Comment" toolbar:helpid="10625"/>
- <toolbar:toolbaritem xlink:href=".uno:CommentChangeTracking" toolbar:text="Change Comment" toolbar:helpid="10625"/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertAnnotation" toolbar:helpid="10625"/>
+ <toolbar:toolbaritem xlink:href=".uno:CommentChangeTracking" toolbar:helpid="10625"/>
  <toolbar:toolbarseparator/>
- <toolbar:toolbaritem xlink:href=".uno:ProtectTraceChangeMode" toolbar:text="Protect" toolbar:helpid="10625"/>
- <toolbar:toolbaritem xlink:href=".uno:CompareDocuments" toolbar:text="Compare"/>
- <toolbar:toolbaritem xlink:href=".uno:MergeDocuments" toolbar:text="Merge" toolbar:visible="false"/>
+ <toolbar:toolbaritem xlink:href=".uno:ProtectTraceChangeMode" toolbar:helpid="10625"/>
+ <toolbar:toolbaritem xlink:href=".uno:CompareDocuments"/>
+ <toolbar:toolbaritem xlink:href=".uno:MergeDocuments"/>
 </toolbar:toolbar>
commit 62413c06f21790a7731866b5b34c19cffe01ff1b
Author: Yousuf Philips <philipz85 at hotmail.com>
Date:   Sat Sep 10 19:19:46 2016 +0400

    tdf#101812 Dont switch to templates view when opening template manager
    
    Change-Id: I3671de21b04f50045c1b7d209e745e2678b7c6f9
    Reviewed-on: https://gerrit.libreoffice.org/28808
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
    (cherry picked from commit 937a284ebfe1261e4b7666e4c1d2b8f9677c1763)

diff --git a/sfx2/source/dialog/backingwindow.cxx b/sfx2/source/dialog/backingwindow.cxx
index 350dc4a..6cbd43b 100644
--- a/sfx2/source/dialog/backingwindow.cxx
+++ b/sfx2/source/dialog/backingwindow.cxx
@@ -619,11 +619,6 @@ IMPL_LINK_TYPED( BackingWindow, MenuSelectHdl, MenuButton*, pButton, void )
         dispatchURL( ".uno:NewDoc", OUString(), xFrame, aArgs );
 
     }
-
-    mpAllRecentThumbnails->Hide();
-    mpLocalView->Show();
-    mpLocalView->reload();
-    mpLocalView->GrabFocus();
 }
 
 IMPL_LINK_TYPED(BackingWindow, CreateContextMenuHdl, ThumbnailViewItem*, pItem, void)
commit fd2b9df00a9758026fbaba75f87e7457c0037fa9
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Sep 12 10:11:37 2016 +0100

    fftester: break as soon as an exception is required
    
    Change-Id: Ia787c42f484c00242f1bcaca8ea7459890ec5745
    Reviewed-on: https://gerrit.libreoffice.org/28829
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit 4bed0a6fbb7a77517e99578e53c94f0391f1b308)

diff --git a/sw/qa/core/data/rtf/fail/table-2.rtf b/sw/qa/core/data/rtf/fail/table-2.rtf
new file mode 100644
index 0000000..35e859b
Binary files /dev/null and b/sw/qa/core/data/rtf/fail/table-2.rtf differ
diff --git a/sw/source/core/unocore/unotext.cxx b/sw/source/core/unocore/unotext.cxx
index b402d86..bad069f 100644
--- a/sw/source/core/unocore/unotext.cxx
+++ b/sw/source/core/unocore/unotext.cxx
@@ -2236,7 +2236,7 @@ throw (lang::IllegalArgumentException, uno::RuntimeException, std::exception)
             break;
         }
 
-        for (sal_Int32 nCell = 0; nCell < nCells; ++nCell)
+        for (sal_Int32 nCell = 0; !bExcept && nCell < nCells; ++nCell)
         {
             SwNodeRange *const pLastCell(
                 (nCell == 0)
commit 5c3bf6af45fc9d485709d294dbb45d3d5bc87409
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Sep 12 09:34:21 2016 +0100

    fftester: no table manager
    
    Change-Id: Icb3c640e04416f9120d37558646a570daeddf0a4
    Reviewed-on: https://gerrit.libreoffice.org/28826
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit 06f64551358c6e59897da067162f56f8b0789838)

diff --git a/writerfilter/qa/cppunittests/rtftok/data/fail/tablemanager-7.rtf b/writerfilter/qa/cppunittests/rtftok/data/fail/tablemanager-7.rtf
new file mode 100644
index 0000000..df41b1f
Binary files /dev/null and b/writerfilter/qa/cppunittests/rtftok/data/fail/tablemanager-7.rtf differ
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 24049b1..dc054bc 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -830,7 +830,7 @@ void DomainMapper_Impl::CheckUnregisteredFrameConversion( )
     TextAppendContext& rAppendContext = m_aTextAppendStack.top();
     // n#779642: ignore fly frame inside table as it could lead to messy situations
     if( rAppendContext.pLastParagraphProperties.get() && rAppendContext.pLastParagraphProperties->IsFrameMode()
-        && !getTableManager().isInTable() )
+        && hasTableManager() && !getTableManager().isInTable() )
     {
         try
         {
commit ebc0a8353f5f4311691e90b8c93ef51d9de08630
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Sep 9 10:50:37 2016 +0100

    Resolves: tdf#101921 no tab navigation in style&formatting sidebar
    
    Change-Id: I737ed446d0ead9d748873fec90b62dcced35e328
    Reviewed-on: https://gerrit.libreoffice.org/28767
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 3d7d318914bd69262da647e0db23ec47d6550afe)
    Reviewed-on: https://gerrit.libreoffice.org/28770
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit c0d5a89b081b81261b7f4b306e64cfb6ce6e950a)

diff --git a/sfx2/source/dialog/templdlg.cxx b/sfx2/source/dialog/templdlg.cxx
index ca53f4c..b81e561 100644
--- a/sfx2/source/dialog/templdlg.cxx
+++ b/sfx2/source/dialog/templdlg.cxx
@@ -340,7 +340,7 @@ std::unique_ptr<PopupMenu> SfxActionListBox::CreateContextMenu()
 }
 
 SfxTemplatePanelControl::SfxTemplatePanelControl(SfxBindings* pBindings, vcl::Window* pParentWindow)
-    : Window(pParentWindow)
+    : Window(pParentWindow, WB_DIALOGCONTROL)
     , pImpl(new SfxTemplateDialog_Impl(pBindings, this))
     , mpBindings(pBindings)
 {
commit da3a41fda25742a51520cebcca639fd76e852f6c
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sat Sep 10 13:46:47 2016 +0100

    fftester: no table manager
    
    Change-Id: I033454670d1ee662bc80bc07578690155d97ce28
    Reviewed-on: https://gerrit.libreoffice.org/28806
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit 03be54fd1cdb9319c2898100423507781d2ce7cb)

diff --git a/writerfilter/qa/cppunittests/rtftok/data/fail/tablemanager-6.rtf b/writerfilter/qa/cppunittests/rtftok/data/fail/tablemanager-6.rtf
new file mode 100644
index 0000000..67a0ea1
Binary files /dev/null and b/writerfilter/qa/cppunittests/rtftok/data/fail/tablemanager-6.rtf differ
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 6bbef8d..24049b1 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -1221,7 +1221,7 @@ void DomainMapper_Impl::appendTextPortion( const OUString& rString, const Proper
     if( pPropertyMap == m_pTopContext && !deferredCharacterProperties.empty() && (GetTopContextType() == CONTEXT_CHARACTER) )
         processDeferredCharacterProperties();
     uno::Reference< text::XTextAppend >  xTextAppend = m_aTextAppendStack.top().xTextAppend;
-    if(xTextAppend.is() && ! getTableManager( ).isIgnore())
+    if (xTextAppend.is() && hasTableManager() && !getTableManager().isIgnore())
     {
         try
         {
commit 94fd641414b54b6059dbda1401f33e9ab9d30a24
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sat Sep 10 11:47:16 2016 +0100

    fftester: use of deleted RTFParserState
    
    but we only use the RTFParserState to use its m_pDocumentImpl and
    the m_pDocumentImpl is never changed for the RTFParserState lifetime,
    so take the m_pDocumentImpl at ctor time instead and use that
    directly later
    
    Change-Id: I15152e3f6d9008553b4a384a5e5da21373904cc9
    Reviewed-on: https://gerrit.libreoffice.org/28803
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit 68be1d3a8964d548a0113fe28a70e09349ddd0d7)

diff --git a/writerfilter/qa/cppunittests/rtftok/data/pass/parser-state-1.rtf b/writerfilter/qa/cppunittests/rtftok/data/pass/parser-state-1.rtf
new file mode 100644
index 0000000..3fe4b28
Binary files /dev/null and b/writerfilter/qa/cppunittests/rtftok/data/pass/parser-state-1.rtf differ
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 53f3fc2..a1df2d0 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -3291,7 +3291,7 @@ RTFDrawingObject::RTFDrawingObject()
 }
 
 RTFFrame::RTFFrame(RTFParserState* pParserState)
-    : m_pParserState(pParserState),
+    : m_pDocumentImpl(pParserState->m_pDocumentImpl),
       m_nX(0),
       m_nY(0),
       m_nW(0),
@@ -3309,10 +3309,10 @@ RTFFrame::RTFFrame(RTFParserState* pParserState)
 
 void RTFFrame::setSprm(Id nId, Id nValue)
 {
-    if (m_pParserState->m_pDocumentImpl->getFirstRun() && !m_pParserState->m_pDocumentImpl->isStyleSheetImport())
+    if (m_pDocumentImpl->getFirstRun() && !m_pDocumentImpl->isStyleSheetImport())
     {
-        m_pParserState->m_pDocumentImpl->checkFirstRun();
-        m_pParserState->m_pDocumentImpl->setNeedPar(false);
+        m_pDocumentImpl->checkFirstRun();
+        m_pDocumentImpl->setNeedPar(false);
     }
     switch (nId)
     {
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
index 32bbe4a..062cae2 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
@@ -182,12 +182,13 @@ public:
 };
 
 class RTFParserState;
+class RTFDocumentImpl;
 
 /// Stores the properties of a frame
 class RTFFrame
 {
 private:
-    RTFParserState* m_pParserState;
+    RTFDocumentImpl* m_pDocumentImpl;
     sal_Int32 m_nX, m_nY, m_nW, m_nH;
     sal_Int32 m_nHoriPadding, m_nVertPadding;
     sal_Int32 m_nHoriAlign, m_nHoriAnchor, m_nVertAlign, m_nVertAnchor;
commit 8e3cc589e50206114783e45cadf1ce857a6513d0
Author: Justin Luth <justin_luth at sil.org>
Date:   Fri Sep 9 23:52:08 2016 +0300

    tdf#86926 writerfilter allow fallback if exceptions
    
        The multiset routine was put in to increase the speed of applying
        properties.  However, if one property causes an exception, the
        remaining properties are never applied. There is already a fallback
        routine (if the multiset can't be created), so use that instead
        of returning in a failed state.
    
        Change-Id: Iac53edd5fca8e8543d536609113a7b1109befd82
        Reviewed-on: https://gerrit.libreoffice.org/28765
        Tested-by: Jenkins <ci at libreoffice.org>
        Reviewed-by: Justin Luth <justin_luth at sil.org>
    
    Change-Id: I9305c56d45a81ed58a7d331afa5559a39f44266e
    Reviewed-on: https://gerrit.libreoffice.org/28790
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Justin Luth <justin_luth at sil.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit c97f1aff7077959e65852f65e3217e5dffd262ce)

diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx
index ac192e6..83e2934 100644
--- a/writerfilter/source/dmapper/PropertyMap.cxx
+++ b/writerfilter/source/dmapper/PropertyMap.cxx
@@ -1453,12 +1453,12 @@ void SectionPropertyMap::ApplyProperties_(
         try
         {
             xMultiSet->setPropertyValues(comphelper::containerToSequence(vNames), comphelper::containerToSequence(vValues));
+            return;
         }
         catch( const uno::Exception& )
         {
             OSL_FAIL( "Exception in SectionPropertyMap::ApplyProperties_");
         }
-        return;
     }
     for (size_t i = 0; i < vNames.size(); ++i)
     {
commit 377a8b36a1f9a32c05bc042f31a893719ce02666
Author: Andras Timar <andras.timar at collabora.com>
Date:   Sun Sep 11 14:00:50 2016 +0200

    tdf#101949 update Source Code Pro fonts to 2.030 and 1.050
    
    Change-Id: Ic314f2b970ea96ec1eb027979723985138638cdb
    Reviewed-on: https://gerrit.libreoffice.org/28819
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Adolfo Jayme Barrientos <fitojb at ubuntu.com>
    (cherry picked from commit 93725af2265d1171bcad27d69db11934b2ae6de5)

diff --git a/download.lst b/download.lst
index 13c7e9f..31480f7 100644
--- a/download.lst
+++ b/download.lst
@@ -49,7 +49,7 @@ export FONT_LIBERATION_TARBALL := 5c781723a0d9ed6188960defba8e91cf-liberation-fo
 export FONT_LINLIBERTINEG_TARBALL := e7a384790b13c29113e22e596ade9687-LinLibertineG-20120116.zip
 export FONT_OPENSANS_TARBALL := 7a15edea7d415ac5150ea403e27401fd-open-sans-font-ttf-1.10.tar.gz
 export FONT_PTSERIF_TARBALL := c3c1a8ba7452950636e871d25020ce0d-pt-serif-font-1.0000W.tar.gz
-export FONT_SOURCECODE_TARBALL := 0279a21fab6f245e85a6f85fea54f511-source-code-font-1.009.tar.gz
+export FONT_SOURCECODE_TARBALL := 907d6e99f241876695c19ff3db0b8923-source-code-pro-2.030R-ro-1.050R-it.tar.gz
 export FONT_SOURCESANS_TARBALL := edc4d741888bc0d38e32dbaa17149596-source-sans-pro-2.010R-ro-1.065R-it.tar.gz
 export FREEHAND_MD5SUM := 8cf70c5dc4d24d2dc4a107f509d2d6d7
 export FREEHAND_TARBALL := libfreehand-0.1.1.tar.bz2
diff --git a/external/more_fonts/ExternalPackage_sourcecode.mk b/external/more_fonts/ExternalPackage_sourcecode.mk
index 6160e56..5f1d7f7 100644
--- a/external/more_fonts/ExternalPackage_sourcecode.mk
+++ b/external/more_fonts/ExternalPackage_sourcecode.mk
@@ -10,8 +10,20 @@
 $(eval $(call gb_ExternalPackage_ExternalPackage,fonts_sourcecode,font_sourcecode))
 
 $(eval $(call gb_ExternalPackage_add_unpacked_files,fonts_sourcecode,$(LIBO_SHARE_FOLDER)/fonts/truetype,\
+	SourceCodePro-BlackIt.ttf \
+	SourceCodePro-Black.ttf \
+	SourceCodePro-BoldIt.ttf \
 	SourceCodePro-Bold.ttf \
+	SourceCodePro-ExtraLightIt.ttf \
+	SourceCodePro-ExtraLight.ttf \
+	SourceCodePro-It.ttf \
+	SourceCodePro-LightIt.ttf \
+	SourceCodePro-Light.ttf \
+	SourceCodePro-MediumIt.ttf \
+	SourceCodePro-Medium.ttf \
 	SourceCodePro-Regular.ttf \
+	SourceCodePro-SemiboldIt.ttf \
+	SourceCodePro-Semibold.ttf \
 ))
 
 # vim: set noet sw=4 ts=4:
commit 104b53fe1de6fc53a7f2591e32b79c78d2c61845
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Sep 8 16:36:59 2016 +0100

    Resolves: tdf#101881 gtk3 3.18 menubar doesn't grab keyboard...
    
    the same way gtk3 3.20 does with gtk_grab_add, so on gtk_menu_shell_deselect
    the keyboard focus doesn't remain in the menubar.
    
    bisecting gtk itself I find...
    
    commit 5cbbb90e311d95192d1b68ba89c3190cdb652868
    Author: Carlos Garnacho <carlosg at gnome.org>
    Date:   Thu Nov 26 19:54:31 2015 +0100
    
        GtkCellRendererAccel: Use gdk_seat_grab()
    
        https://bugzilla.gnome.org/show_bug.cgi?id=759309
    
    is the commit that makes it do what I want, so add an extra
    gtk_grab_add/gtk_grab_remove around our entry and exit of the menubar
    
    Change-Id: I5bf09834b4e1a14d30403208d03b3abd28a382a8
    (cherry picked from commit d45d8ae3c51606eb1d9e63396a0eab13c8742907)
    Reviewed-on: https://gerrit.libreoffice.org/28759
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Maxim Monastirsky <momonasmon at gmail.com>
    (cherry picked from commit 571c187f0610f59573b5e2285b6bfc9589236532)

diff --git a/vcl/inc/unx/gtk/gtksalmenu.hxx b/vcl/inc/unx/gtk/gtksalmenu.hxx
index 90fcb7d..08b4113 100644
--- a/vcl/inc/unx/gtk/gtksalmenu.hxx
+++ b/vcl/inc/unx/gtk/gtksalmenu.hxx
@@ -48,6 +48,7 @@ private:
     bool                            mbMenuBar;
     bool                            mbNeedsUpdate;
     bool                            mbReturnFocusToDocument;
+    bool                            mbAddedGrab;
     GtkWidget*                      mpMenuBarContainerWidget;
     GtkWidget*                      mpMenuBarWidget;
     GtkWidget*                      mpCloseButton;
diff --git a/vcl/unx/gtk/gtksalmenu.cxx b/vcl/unx/gtk/gtksalmenu.cxx
index 2980ac0..c891cf3 100644
--- a/vcl/unx/gtk/gtksalmenu.cxx
+++ b/vcl/unx/gtk/gtksalmenu.cxx
@@ -423,6 +423,7 @@ GtkSalMenu::GtkSalMenu( bool bMenuBar ) :
     mbMenuBar( bMenuBar ),
     mbNeedsUpdate( false ),
     mbReturnFocusToDocument( false ),
+    mbAddedGrab( false ),
     mpMenuBarContainerWidget( nullptr ),
     mpMenuBarWidget( nullptr ),
     mpCloseButton( nullptr ),
@@ -602,6 +603,11 @@ void GtkSalMenu::ShowCloseButton(bool bShow)
 //focus to the next pane by itself.
 void GtkSalMenu::ReturnFocus()
 {
+    if (mbAddedGrab)
+    {
+        gtk_grab_remove(mpMenuBarWidget);
+        mbAddedGrab = false;
+    }
     if (!mbReturnFocusToDocument)
         gtk_widget_grab_focus(GTK_WIDGET(mpFrame->getEventBox()));
     else
@@ -661,6 +667,8 @@ bool GtkSalMenu::TakeFocus()
 
     //this pairing results in a menubar with keyboard focus with no menus
     //auto-popped down
+    gtk_grab_add(mpMenuBarWidget);
+    mbAddedGrab = true;
     gtk_menu_shell_select_first(GTK_MENU_SHELL(mpMenuBarWidget), false);
     gtk_menu_shell_deselect(GTK_MENU_SHELL(mpMenuBarWidget));
     mbReturnFocusToDocument = true;
commit 07b3c383bb12d7a47c831fc4c0481e16a286ec0d
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Wed Sep 7 22:17:34 2016 +0200

    tdf#78727 sw: fix missing textbox text when anchored inside flying table
    
    It was missing as the shape text range was deleted twice, as
    DelFlyInRange() thought both the fly and the draw frame format own its
    contents range, while only the fly one does (when called by
    SwDoc::MakeFlyAndMove(), called by SwXText::convertToTextFrame()).
    
    Thanks Red Hat for the pizza!
    
    (cherry picked from commit 9d9e5b40c1a6d91323564e60b25ccf04df86db4b)
    
    Conflicts:
    	sw/qa/extras/uiwriter/uiwriter.cxx
    
    Change-Id: I26e23550df085511e0e87f593f1a461057413d0e
    Reviewed-on: https://gerrit.libreoffice.org/28776
    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 ebd72cfc297ecfe617e9112f977a8ca12c2cacee)

diff --git a/sw/qa/extras/uiwriter/data/tdf78727.docx b/sw/qa/extras/uiwriter/data/tdf78727.docx
new file mode 100644
index 0000000..a8787d4
Binary files /dev/null and b/sw/qa/extras/uiwriter/data/tdf78727.docx differ
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 57d53fc..5dcb81e 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -199,6 +199,7 @@ public:
     void testTdf99004();
     void testTdf84695();
     void testTdf84695NormalChar();
+    void testTdf78727();
 
     CPPUNIT_TEST_SUITE(SwUiWriterTest);
     CPPUNIT_TEST(testReplaceForward);
@@ -300,6 +301,7 @@ public:
     CPPUNIT_TEST(testTdf99004);
     CPPUNIT_TEST(testTdf84695);
     CPPUNIT_TEST(testTdf84695NormalChar);
+    CPPUNIT_TEST(testTdf78727);
     CPPUNIT_TEST_SUITE_END();
 
 private:
@@ -3704,6 +3706,16 @@ void SwUiWriterTest::testTdf84695NormalChar()
     CPPUNIT_ASSERT_EQUAL(OUString("a"), xShape->getString());
 }
 
+void SwUiWriterTest::testTdf78727()
+{
+    SwDoc* pDoc = createDoc("tdf78727.docx");
+    SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0);
+    // This was 1: make sure we don't loose the TextBox anchored inside the
+    // table that is moved inside a text frame.
+    std::set<const SwFrameFormat*> aSet;
+    CPPUNIT_ASSERT(SwTextBoxHelper::getCount(pPage, aSet) > 1);
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(SwUiWriterTest);
 CPPUNIT_PLUGIN_IMPLEMENT();
 
diff --git a/sw/source/core/doc/docedt.cxx b/sw/source/core/doc/docedt.cxx
index 0f55ea6..a62ed4c 100644
--- a/sw/source/core/doc/docedt.cxx
+++ b/sw/source/core/doc/docedt.cxx
@@ -212,7 +212,8 @@ void DelFlyInRange( const SwNodeIndex& rMkNdIdx,
             {
                 // If the Fly is deleted, all Flys in its content have to be deleted too.
                 const SwFormatContent &rContent = pFormat->GetContent();
-                if( rContent.GetContentIdx() )
+                // But only fly formats own their content, not draw formats.
+                if (rContent.GetContentIdx() && pFormat->Which() == RES_FLYFRMFMT)
                 {
                     DelFlyInRange( *rContent.GetContentIdx(),
                                     SwNodeIndex( *rContent.GetContentIdx()->
commit f7c281c1ea270bd77add2b85f0bf94e423cf9336
Author: Eike Rathke <erack at redhat.com>
Date:   Wed Sep 7 21:04:43 2016 +0200

    Resolves: tdf#101963 loading zh-TW ROC calendar use EE|E instead of YYYY|YY
    
    This still (unnecessarily) prefixes with [~ROC] but preserves the
    intended "no leading zero" semantics.
    
    Change-Id: I154be0978a8147ceddefcb546c257d44f770b5de
    (cherry picked from commit 95c91f098e8974c41c8d403a351fe53db6822165)
    Reviewed-on: https://gerrit.libreoffice.org/28732
    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 7f037e2230d059320aff8610b6d24c0a44a71e41)

diff --git a/xmloff/source/style/xmlnumfi.cxx b/xmloff/source/style/xmlnumfi.cxx
index 3120bea..bf9ab75 100644
--- a/xmloff/source/style/xmlnumfi.cxx
+++ b/xmloff/source/style/xmlnumfi.cxx
@@ -1135,11 +1135,17 @@ void SvXMLNumFmtElementContext::EndElement()
         case XML_TOK_STYLE_YEAR:
             rParent.UpdateCalendar( sCalendar );
 //! I18N doesn't provide SYSTEM or extended date information yet
-            // Y after G (era) is replaced by E
-            if ( rParent.HasEra() )
+            // Y after G (era) is replaced by E, also if we're switching to the
+            // other second known calendar for a locale.
+            /* TODO: here only for zh-TW, handle for other locales as well. */
+            if ( rParent.HasEra() ||
+                    (sCalendar.equalsIgnoreAsciiCaseAscii("ROC") &&
+                     rParent.GetLocaleData().getLoadedLanguageTag().getBcp47() == "zh-TW"))
+            {
                 rParent.AddNfKeyword(
                     sal::static_int_cast< sal_uInt16 >(
                         bEffLong ? NF_KEY_EEC : NF_KEY_EC ) );
+            }
             else
                 rParent.AddNfKeyword(
                     sal::static_int_cast< sal_uInt16 >(
commit 2bad967e3247e2dc5090bbc513c4ae1f149303d9
Author: Khaled Hosny <khaledhosny at eglug.org>
Date:   Wed Sep 7 17:11:17 2016 +0200

    Fix not-so-newly introduced perf regression in vcl
    
    Reverts f688acfdae00ebdd891737e533d54368810185e1 and the cluster
    boundaries part of 1da9b4c24e806ad2447b4a656e2a7192755bb6a8, checking
    the user of the GlyphItem::IS_IN_CLUSTER flag again, I think the old
    code provides what they expect.
    
    (cherry picked from commit 6323e6628668849438e6e19ba7ad2c6598263261)
    
    Change-Id: I74bcca3a203164028a0be8fe75fde73e54faba1b
    Reviewed-on: https://gerrit.libreoffice.org/28726
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 69885cb07b7cc8290946c97d45f0b7379dcf77b1)

diff --git a/vcl/unx/generic/glyphs/gcach_layout.cxx b/vcl/unx/generic/glyphs/gcach_layout.cxx
index dc9a84f..d8bf44b 100644
--- a/vcl/unx/generic/glyphs/gcach_layout.cxx
+++ b/vcl/unx/generic/glyphs/gcach_layout.cxx
@@ -326,7 +326,6 @@ private:
     hb_script_t             maHbScript;
     hb_face_t*              mpHbFace;
     int                     mnUnitsPerEM;
-    css::uno::Reference<css::i18n::XBreakIterator> mxBreak;
 
 public:
     explicit                HbLayoutEngine(ServerFont&);
@@ -513,12 +512,6 @@ bool HbLayoutEngine::Layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
             hb_glyph_info_t *pHbGlyphInfos = hb_buffer_get_glyph_infos(pHbBuffer, nullptr);
             hb_glyph_position_t *pHbPositions = hb_buffer_get_glyph_positions(pHbBuffer, nullptr);
 
-            sal_Int32 nGraphemeStartPos = std::numeric_limits<sal_Int32>::max();
-            sal_Int32 nGraphemeEndPos = std::numeric_limits<sal_Int32>::min();
-            if (!mxBreak.is())
-                mxBreak = vcl::unohelper::CreateBreakIterator();
-            com::sun::star::lang::Locale aLocale(rArgs.maLanguageTag.getLocale());
-
             for (int i = 0; i < nRunGlyphCount; ++i) {
                 int32_t nGlyphIndex = pHbGlyphInfos[i].codepoint;
                 int32_t nCharPos = pHbGlyphInfos[i].cluster;
@@ -539,22 +532,8 @@ bool HbLayoutEngine::Layout(ServerFontLayout& rLayout, ImplLayoutArgs& rArgs)
                 nGlyphIndex = rFont.FixupGlyphIndex(nGlyphIndex, aChar);
 
                 bool bInCluster = false;
-                if(bRightToLeft && (nCharPos < nGraphemeStartPos))
-                {
-                    sal_Int32 nDone;
-                    nGraphemeStartPos = mxBreak->previousCharacters(rArgs.mrStr, nCharPos+1, aLocale,
-                                                  com::sun::star::i18n::CharacterIteratorMode::SKIPCELL, 1, nDone);
-                }
-                else if(!bRightToLeft && (nCharPos >= nGraphemeEndPos))
-                {
-                    sal_Int32 nDone;
-                    nGraphemeEndPos = mxBreak->nextCharacters(rArgs.mrStr, nCharPos, aLocale,
-                                                  com::sun::star::i18n::CharacterIteratorMode::SKIPCELL, 1, nDone);
-                }
-                else
-                {
+                if (i > 0 && pHbGlyphInfos[i].cluster == pHbGlyphInfos[i - 1].cluster)
                     bInCluster = true;
-                }
 
                 long nGlyphFlags = 0;
                 if (bRightToLeft)
commit 48db5852411d59414537190845662a2bd96a2e3b
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Sep 6 08:16:37 2016 +0200

    tdf#44986 RTF import: handle \trwWidthA by faking cells
    
    The DOCX import handles this at a tokenizer level, so let's do the same
    in the RTF case as well.
    
    (cherry picked from commit 0f2d5db38bac64b665c6e4a127bbbd63a7ed9af5)
    
    Change-Id: Id7ff43fa9e9bcd05b13d187623d39fb072758057
    Reviewed-on: https://gerrit.libreoffice.org/28748
    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 246df61b34e1ff5b5d7ecf7e46f04bb677548c9a)

diff --git a/sw/qa/extras/rtfimport/data/tdf44986.rtf b/sw/qa/extras/rtfimport/data/tdf44986.rtf
new file mode 100644
index 0000000..d255e10
--- /dev/null
+++ b/sw/qa/extras/rtfimport/data/tdf44986.rtf
@@ -0,0 +1,35 @@
+{\rtf1
+\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\nooverflow\faroman\rin0\lin0\itap0\pararsid8937578 \rtlch\fcs1
+\af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1031\langfe1031\cgrid\langnp1031\langfenp1031
+{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7962097 before}
+{\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\insrsid11416584
+\par \ltrrow}
+\trowd \irow0\irowband0\ltrrow\ts11\trgaph70\trleft-144\trkeep\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15
+\trftsWidth1\trftsWidthB3\trftsWidthA3\trwWidthA6237\trpaddl70\trpaddr70\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind-74\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrnone \clbrdrr\brdrs\brdrw15
+\cltxlrtb\clftsWidth3\clwWidth3405\clshdrawnil \cellx3261\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\nooverflow\faroman\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1031\langfe1031\cgrid\langnp1031\langfenp1031
+{
+\rtlch\fcs1 \af4\afs16 \ltrch\fcs0 \fs16\loch\af4\hich\af4\dbch\af31505\insrsid15290907\charrsid14246932 \hich\af4\dbch\af31505\loch\f4 A1}
+{\rtlch\fcs1 \af4 \ltrch\fcs0 \loch\af4\hich\af4\dbch\af31505\insrsid11416584\charrsid14246932 \cell
+}
+\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1031\langfe1031\cgrid\langnp1031\langfenp1031
+{\rtlch\fcs1 \af0 \ltrch\fcs0
+\insrsid11416584\charrsid14246932 \trowd \irow0\irowband0\ltrrow\ts11\trgaph70\trleft-144\trkeep\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15
+\trftsWidth1\trftsWidthB3\trftsWidthA3\trwWidthA6237\trpaddl70\trpaddr70\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind-74\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrnone \clbrdrr\brdrs\brdrw15
+\cltxlrtb\clftsWidth3\clwWidth3405\clshdrawnil \cellx3261\row \ltrrow}
+\trowd \irow1\irowband1\lastrow \ltrrow\ts11\trgaph70\trleft-144\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15
+\trftsWidth1\trftsWidthB3\trpaddl70\trpaddr70\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind-74\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrnone \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth9642\clshdrawnil
+\cellx9498\pard\plain \ltrpar\ql \li0\ri0\widctlpar\intbl\wrapdefault\nooverflow\faroman\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1031\langfe1031\cgrid\langnp1031\langfenp1031
+{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0
+\fs16\loch\af1\hich\af1\dbch\af31505\insrsid15290907\charrsid14246932 \hich\af1\dbch\af31505\loch\f1 A2}
+{\rtlch\fcs1 \af1\afs16 \ltrch\fcs0 \fs16\loch\af1\hich\af1\dbch\af31505\insrsid11416584\charrsid14246932 \cell }
+\pard\plain \ltrpar
+\ql \li0\ri0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1031\langfe1031\cgrid\langnp1031\langfenp1031
+{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid11416584\charrsid14246932
+\trowd \irow1\irowband1\lastrow \ltrrow\ts11\trgaph70\trleft-144\trbrdrt\brdrs\brdrw15 \trbrdrl\brdrs\brdrw15 \trbrdrb\brdrs\brdrw15 \trbrdrr\brdrs\brdrw15
+\trftsWidth1\trftsWidthB3\trpaddl70\trpaddr70\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind-74\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw15 \clbrdrl\brdrs\brdrw15 \clbrdrb\brdrnone \clbrdrr\brdrs\brdrw15 \cltxlrtb\clftsWidth3\clwWidth9642\clshdrawnil
+\cellx9498\row }
+\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\nooverflow\faroman\rin0\lin0\itap0\pararsid8937578
+{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid7962097 after}
+{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14246932
+\par }
+}
diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx
index 5f5d27a..3f87aa1 100644
--- a/sw/qa/extras/rtfimport/rtfimport.cxx
+++ b/sw/qa/extras/rtfimport/rtfimport.cxx
@@ -2684,6 +2684,16 @@ DECLARE_RTFIMPORT_TEST(testTdf100507, "tdf100507.rtf")
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(6618), getProperty<sal_Int32>(getParagraph(1), "ParaLeftMargin"));
 }
 
+DECLARE_RTFIMPORT_TEST(testTdf44986, "tdf44986.rtf")
+{
+    // Check that the table at the second paragraph.
+    uno::Reference<text::XTextTable> xTable(getParagraphOrTable(2), uno::UNO_QUERY);
+    uno::Reference<table::XTableRows> xTableRows(xTable->getRows(), uno::UNO_QUERY);
+    // Check the first row of the table, it should have two cells (one separator).
+    // This was 0: the first row had no separators, so it had only one cell, which was too wide.
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1), getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(0), "TableColumnSeparators").getLength());
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/rtftok/rtfdispatchsymbol.cxx b/writerfilter/source/rtftok/rtfdispatchsymbol.cxx
index e33d140..2529492 100644
--- a/writerfilter/source/rtftok/rtfdispatchsymbol.cxx
+++ b/writerfilter/source/rtftok/rtfdispatchsymbol.cxx
@@ -229,6 +229,16 @@ RTFError RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword)
     break;
     case RTF_ROW:
     {
+        if (m_aStates.top().nTableRowWidthAfter > 0)
+        {
+            // Add fake cellx / cell, RTF equivalent of
+            // OOXMLFastContextHandlerTextTableRow::handleGridAfter().
+            auto pXValue = std::make_shared<RTFValue>(m_aStates.top().nTableRowWidthAfter);
+            m_aStates.top().aTableRowSprms.set(NS_ooxml::LN_CT_TblGridBase_gridCol, pXValue, RTFOverwrite::NO_APPEND);
+            dispatchSymbol(RTF_CELL);
+            m_aStates.top().nTableRowWidthAfter = 0;
+        }
+
         bool bRestored = false;
         // Ending a row, but no cells defined?
         // See if there was an invalid table row reset, so we can restore cell infos to help invalid documents.
diff --git a/writerfilter/source/rtftok/rtfdispatchvalue.cxx b/writerfilter/source/rtftok/rtfdispatchvalue.cxx
index dfd9dff..b667290 100644
--- a/writerfilter/source/rtftok/rtfdispatchvalue.cxx
+++ b/writerfilter/source/rtftok/rtfdispatchvalue.cxx
@@ -1402,6 +1402,9 @@ RTFError RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
     case RTF_DIBITMAP:
         m_aStates.top().aPicture.eStyle = RTFBmpStyle::DIBITMAP;
         break;
+    case RTF_TRWWIDTHA:
+        m_aStates.top().nTableRowWidthAfter = nParam;
+        break;
     default:
     {
         SAL_INFO("writerfilter", "TODO handle value '" << keywordToString(nKeyword) << "'");
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 93f1207..53f3fc2 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -3054,6 +3054,11 @@ RTFError RTFDocumentImpl::popState()
             replayBuffer(m_aSuperBuffer, nullptr, nullptr);
     }
 
+    if (!m_aStates.empty() && m_aStates.top().nTableRowWidthAfter > 0 && aState.nTableRowWidthAfter == 0)
+        // An RTF_ROW in the inner group already parsed nTableRowWidthAfter,
+        // don't do it again in the outer state later.
+        m_aStates.top().nTableRowWidthAfter = 0;
+
     return RTFError::OK;
 }
 
@@ -3222,7 +3227,8 @@ RTFParserState::RTFParserState(RTFDocumentImpl* pDocumentImpl)
       bInShapeGroup(false),
       bInShape(false),
       bCreatedShapeGroup(false),
-      bStartedTrackchange(false)
+      bStartedTrackchange(false),
+      nTableRowWidthAfter(0)
 {
 }
 
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
index 1663b90..32bbe4a 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
@@ -313,6 +313,9 @@ public:
     OUString aPropName;
     /// User-defined property: value type.
     css::uno::Type aPropType;
+
+    /// Width of invisible cell at the end of the row.
+    int nTableRowWidthAfter;
 };
 
 /// An RTF stack is similar to std::stack, except that it has an operator[].
commit c04dc4e2d6149792d99635c0bacfc41d4d4e668d
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Mon Aug 8 04:44:09 2016 +0200

    it is possible that Sources is empty
    
    See e.g.
    http://crashreport.libreoffice.org/stats/crash_details/570429b8-21e3-494e-9677-ea95fa8a5293
    
    Change-Id: I8c05efd61fa5a91511c06c660c49a0c470a96c88
    Reviewed-on: https://gerrit.libreoffice.org/27947
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Reviewed-on: https://gerrit.libreoffice.org/28753
    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 08f79e4686b97b8dae4acf0a804b8bbd1c29dd34)

diff --git a/extensions/source/update/check/updatecheck.cxx b/extensions/source/update/check/updatecheck.cxx
index 8fe2363..86dc5c5 100644
--- a/extensions/source/update/check/updatecheck.cxx
+++ b/extensions/source/update/check/updatecheck.cxx
@@ -846,6 +846,12 @@ UpdateCheck::download()
     State eState = m_eState;
     aGuard.clear();
 
+    if (aInfo.Sources.empty())
+    {
+        SAL_WARN("extension.updatecheck", "download called without source");
+        return;
+    }
+
     if( aInfo.Sources[0].IsDirect )
     {
         // Ignore second click of a double click
commit 2b2eb111e8f06a28b0d5b104d01081b3be678ec3
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Sep 6 20:31:06 2016 +0100

    rtf: throw early on a bad nestrow token
    
    Change-Id: I9de8d09bce18fd1e8a145617794594a99a5f996e
    Reviewed-on: https://gerrit.libreoffice.org/28711
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit 518d3a6173742e0b8b8d30d8ad3584fe5af129c4)

diff --git a/writerfilter/source/rtftok/rtfdispatchsymbol.cxx b/writerfilter/source/rtftok/rtfdispatchsymbol.cxx
index 966a0b7..e33d140 100644
--- a/writerfilter/source/rtftok/rtfdispatchsymbol.cxx
+++ b/writerfilter/source/rtftok/rtfdispatchsymbol.cxx
@@ -202,12 +202,12 @@ RTFError RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword)
                           pBuffer->pRowProperties,
                           m_nNestedCells, m_nNestedCurrentCellX);
 
-        assert(m_aStates.top().pCurrentBuffer == &m_aTableBufferStack.back());
-        if (m_aTableBufferStack.size() == 1)
+        if (m_aTableBufferStack.size() == 1 || !m_aStates.top().pCurrentBuffer)
         {
             throw io::WrongFormatException(
                 "mismatch between \\itap and number of \\nestrow", nullptr);
         }
+        assert(m_aStates.top().pCurrentBuffer == &m_aTableBufferStack.back());
         // note: there may be several states pointing to table buffer!
         for (std::size_t i = 0; i < m_aStates.size(); ++i)
         {
commit 3fe10b83143882f21ccc0373d494f70525756823
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Sep 6 20:19:04 2016 +0100

    rtf: don't skip backwards on skipping bin specified bytes
    
    otherwise we could end up re-parsing the block endlessly
    
    Change-Id: Ia90a9e5b513951c91e1917483f9e030dbee98ffb
    Reviewed-on: https://gerrit.libreoffice.org/28709
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit 047396e4e792b041b20757091263499709fc4e8a)

diff --git a/writerfilter/source/rtftok/rtftokenizer.cxx b/writerfilter/source/rtftok/rtftokenizer.cxx
index 2dab789..ba411d2 100644
--- a/writerfilter/source/rtftok/rtftokenizer.cxx
+++ b/writerfilter/source/rtftok/rtftokenizer.cxx
@@ -282,7 +282,7 @@ RTFError RTFTokenizer::dispatchKeyword(OString& rKeyword, bool bParam, int nPara
     {
         // skip binary data explicitely, to not trip over rtf markup
         // control characters
-        if (rKeyword.equals("bin"))
+        if (rKeyword.equals("bin") && nParam > 0)
             Strm().SeekRel(nParam);
         return RTFError::OK;
     }
commit 0c562bd17aa7c920b6ad442f20e4b39f9a259f63
Author: Yousuf Philips <philipz85 at hotmail.com>
Date:   Fri Aug 26 16:57:13 2016 +0400

    tdf#94547 Default set of pattern presets
    
    Change-Id: Ife81b445826c9bdb971b9a7c7c7c352051b1368b
    Reviewed-on: https://gerrit.libreoffice.org/28410
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: jan iversen <jani at documentfoundation.org>
    Tested-by: jan iversen <jani at documentfoundation.org>
    (cherry picked from commit 3cba0fd0a45b7eeb7497457822c071cc79f8ce3b)

diff --git a/extras/source/palettes/standard.sob b/extras/source/palettes/standard.sob
index ee1f29f..ad75f0f 100644
Binary files a/extras/source/palettes/standard.sob and b/extras/source/palettes/standard.sob differ
commit 47f886b518eb390ee5674135d2a38094d2901c13
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Aug 30 09:14:47 2016 +0200

    Related: tdf#44986 DOCX import: handle w:gridAfter by faking cells
    
    This is similar to the w:gridBefore handling code introduced in commit
    cf33af732ed0d3d553bb74636e3b14c55d44c153 (handle w:gridBefore by faking
    cells (fdo#38414), 2014-04-23), except that the fake cells here are
    inserted after the real ones, not before.
    
    Change-Id: I4c03bd49e52016a58e0e002ae85dede6a96e5f55
    Reviewed-on: https://gerrit.libreoffice.org/28487
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Jenkins <ci at libreoffice.org>
    (cherry picked from commit 1d1748d143ab4270a2ca1b5117852b1b1bb4c526)
    Reviewed-on: https://gerrit.libreoffice.org/28624
    Reviewed-by: jan iversen <jani at documentfoundation.org>
    Tested-by: jan iversen <jani at documentfoundation.org>
    (cherry picked from commit 0ba2229a57527e78f237119efa413f122c9ca74b)

diff --git a/sw/qa/extras/ooxmlexport/data/tdf44986.docx b/sw/qa/extras/ooxmlexport/data/tdf44986.docx
new file mode 100644
index 0000000..7859ab4
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf44986.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index cb20af1..90cef9f 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -17,6 +17,7 @@
 #include <com/sun/star/text/HoriOrientation.hpp>
 #include <com/sun/star/text/XTextRangeCompare.hpp>
 #include <com/sun/star/text/WritingMode2.hpp>
+#include <com/sun/star/text/TableColumnSeparator.hpp>
 #include <oox/drawingml/drawingmltypes.hxx>
 #include <config_features.h>
 #include <string>
@@ -821,6 +822,15 @@ DECLARE_OOXMLEXPORT_TEST(testTDF99434, "protectedform.docx")
     CPPUNIT_ASSERT(bProt);
 }
 
+DECLARE_OOXMLEXPORT_TEST(testTdf44986, "tdf44986.docx")
+{
+    // Check that the table at the second paragraph.
+    uno::Reference<text::XTextTable> xTable(getParagraphOrTable(2), uno::UNO_QUERY);
+    uno::Reference<table::XTableRows> xTableRows(xTable->getRows(), uno::UNO_QUERY);
+    // Check the first row of the table, it should have two cells (one separator).
+    // This was 0: the first row had no separators, so it had only one cell, which was too wide.
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(1), getProperty< uno::Sequence<text::TableColumnSeparator> >(xTableRows->getByIndex(0), "TableColumnSeparators").getLength());
+}
 
 CPPUNIT_PLUGIN_IMPLEMENT();
 
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
index 5edac7a..645ade6 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx
@@ -1331,6 +1331,14 @@ void OOXMLFastContextHandlerTextTableRow::startRow()
 
 void OOXMLFastContextHandlerTextTableRow::endRow()
 {
+    if (mpGridAfter)
+    {
+        // Grid after is the same as grid before, the empty cells are just
+        // inserted after the real ones, not before.
+        handleGridBefore(mpGridAfter);
+        mpGridAfter = nullptr;
+    }
+
     startParagraphGroup();
 
     if (isForwardEvents())
@@ -1364,6 +1372,17 @@ void OOXMLFastContextHandlerTextTableRow::endRow()
     endParagraphGroup();
 }
 
+void OOXMLFastContextHandlerTextTableRow::handleGridAfter(const OOXMLValue::Pointer_t& rValue)
+{
+    if (OOXMLFastContextHandler* pTableRowProperties = getParent())
+    {
+        if (OOXMLFastContextHandler* pTableRow = pTableRowProperties->getParent())
+            // Save the value into the table row context, so it can be handled
+            // right before the end of the row.
+            pTableRow->setGridAfter(rValue);
+    }
+}
+
 // Handle w:gridBefore here by faking necessary input that'll fake cells. I'm apparently
 // not insane enough to find out how to add cells in dmapper.
 void OOXMLFastContextHandlerTextTableRow::handleGridBefore( const OOXMLValue::Pointer_t& val )
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
index 34c118d..f713fcf 100644
--- a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
+++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx
@@ -188,6 +188,8 @@ public:
     virtual void setDefaultStringValue();
 
     void sendPropertyToParent();
+    OOXMLFastContextHandler* getParent() const { return mpParent; }
+    void setGridAfter(const OOXMLValue::Pointer_t& pGridAfter) { mpGridAfter = pGridAfter; }
 
 protected:
     OOXMLFastContextHandler * mpParent;
@@ -222,6 +224,7 @@ protected:
     const css::uno::Reference< css::uno::XComponentContext >& getComponentContext() { return m_xContext;}
 
     bool inPositionV;
+    OOXMLValue::Pointer_t mpGridAfter;
 
 private:
     void operator =(OOXMLFastContextHandler &) = delete;
@@ -403,6 +406,7 @@ public:
     static void startRow();
     void endRow();
     void handleGridBefore( const OOXMLValue::Pointer_t& val );
+    void handleGridAfter(const OOXMLValue::Pointer_t& rValue);
 private:
     static OOXMLProperty::Pointer_t fakeNoBorder( Id id );
 };
diff --git a/writerfilter/source/ooxml/factoryimpl_ns.py b/writerfilter/source/ooxml/factoryimpl_ns.py
index 6ad9a83..d9baaa1 100644
--- a/writerfilter/source/ooxml/factoryimpl_ns.py
+++ b/writerfilter/source/ooxml/factoryimpl_ns.py
@@ -439,7 +439,7 @@ def factoryChooseAction(actionNode):
     elif actionNode.getAttribute("action") in ("startRow", "endRow"):
         ret.append("    %sif (OOXMLFastContextHandlerTextTableRow* pTextTableRow = dynamic_cast<OOXMLFastContextHandlerTextTableRow*>(pHandler))" % extra_space)
         ret.append("    %s    pTextTableRow->%s();" % (extra_space, actionNode.getAttribute("action")))
-    elif actionNode.getAttribute("action") == "handleGridBefore":
+    elif actionNode.getAttribute("action") == "handleGridBefore" or actionNode.getAttribute("action") == "handleGridAfter":
         ret.append("    %sif (OOXMLFastContextHandlerTextTableRow* pTextTableRow = dynamic_cast<OOXMLFastContextHandlerTextTableRow*>(pHandler))" % extra_space)
         ret.append("    %s    pTextTableRow->%s();" % (extra_space, actionNode.getAttribute("action")))
     elif actionNode.getAttribute("action") in ("sendProperty", "handleHyperlink"):
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index 32935c9..61438c3 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -14382,7 +14382,7 @@
             <ref name="CT_TrPrBaseGridBefore"/>
           </element>
           <element name="gridAfter">
-            <ref name="CT_DecimalNumber"/>
+            <ref name="CT_TrPrBaseGridAfter"/>
           </element>
           <element name="wBefore">
             <ref name="CT_TblWidth"/>
@@ -14415,6 +14415,11 @@
           <ref name="ST_DecimalNumber"/>
         </attribute>
       </define>
+      <define name="CT_TrPrBaseGridAfter">
+        <attribute name="val">
+          <ref name="ST_DecimalNumber"/>
+        </attribute>
+      </define>
       <define name="CT_TrPr">
         <ref name="CT_TrPrBase"/>
         <element name="ins">
@@ -18298,8 +18303,6 @@
     <resource name="CT_TrPrBase" resource="Properties">
       <element name="cnfStyle" tokenid="ooxml:CT_TrPrBase_cnfStyle"/>
       <element name="divId" tokenid="ooxml:CT_TrPrBase_divId"/>
-<!--      <element name="gridBefore" tokenid="ooxml:CT_TrPrBase_gridBefore"/> -->
-      <element name="gridAfter" tokenid="ooxml:CT_TrPrBase_gridAfter"/>
       <element name="wBefore" tokenid="ooxml:CT_TrPrBase_wBefore"/>
       <element name="wAfter" tokenid="ooxml:CT_TrPrBase_wAfter"/>
       <element name="cantSplit" tokenid="ooxml:CT_TrPrBase_cantSplit"/>
@@ -18312,6 +18315,9 @@
     <resource name="CT_TrPrBaseGridBefore" resource="TextTableRow">
       <attribute name="val" tokenid="ooxml:CT_TrPrBase_gridBefore" action="handleGridBefore"/>
     </resource>
+    <resource name="CT_TrPrBaseGridAfter" resource="TextTableRow">
+      <attribute name="val" tokenid="ooxml:CT_TrPrBase_gridAfter" action="handleGridAfter"/>
+    </resource>
     <resource name="CT_TrPr" resource="Properties">
       <element name="ins" tokenid="ooxml:CT_TrPr_ins"/>
       <element name="del" tokenid="ooxml:CT_TrPr_del"/>
commit 27c55d3d6c043041b770865ebe0f6997046d29c0
Author: Johnny_M <klasse at partyheld.de>
Date:   Sat Sep 3 01:10:11 2016 +0200

    tdf#101863 Remove superfluous apostrophe auto-corrections in DE
    
    Following auto-corrections in the DE locale are are being removed:
    
    gehts -> geht´s
    gibts -> gibt´s
    wirds -> wird´s
    
    Change-Id: Ide648de5800881c829a2ad807e2a585244ccd4a7
    Reviewed-on: https://gerrit.libreoffice.org/28635
    Tested-by: jan iversen <jani at documentfoundation.org>
    Reviewed-by: jan iversen <jani at documentfoundation.org>
    (cherry picked from commit 4b62ad397c1ed137cbe69aa0882d290a92052e9a)

diff --git a/extras/source/autocorr/lang/de/DocumentList.xml b/extras/source/autocorr/lang/de/DocumentList.xml
index 0ee0004..2b8cf95 100644
--- a/extras/source/autocorr/lang/de/DocumentList.xml
+++ b/extras/source/autocorr/lang/de/DocumentList.xml
@@ -110,13 +110,11 @@
   <block-list:block block-list:abbreviated-name="Gechichte" block-list:name="Geschichte"/>
   <block-list:block block-list:abbreviated-name="gehn" block-list:name="gehen"/>
   <block-list:block block-list:abbreviated-name="geht´s" block-list:name="geht’s"/>
-  <block-list:block block-list:abbreviated-name="gehts" block-list:name="geht’s"/>
   <block-list:block block-list:abbreviated-name="geht's" block-list:name="geht’s"/>
   <block-list:block block-list:abbreviated-name="Geidcht" block-list:name="Gedicht"/>
   <block-list:block block-list:abbreviated-name="Geschichtne" block-list:name="Geschichten"/>
   <block-list:block block-list:abbreviated-name="Geshichte" block-list:name="Geschichte"/>
   <block-list:block block-list:abbreviated-name="gibt´s" block-list:name="gibt’s"/>
-  <block-list:block block-list:abbreviated-name="gibts" block-list:name="gibt’s"/>
   <block-list:block block-list:abbreviated-name="gibt's" block-list:name="gibt’s"/>
   <block-list:block block-list:abbreviated-name="gnaz" block-list:name="ganz"/>
   <block-list:block block-list:abbreviated-name="Grupe" block-list:name="Gruppe"/>
@@ -241,7 +239,6 @@
   <block-list:block block-list:abbreviated-name="widergeben" block-list:name="wiedergeben"/>
   <block-list:block block-list:abbreviated-name="wiederspiegeln" block-list:name="widerspiegeln"/>
   <block-list:block block-list:abbreviated-name="wird´s" block-list:name="wird’s"/>
-  <block-list:block block-list:abbreviated-name="wirds" block-list:name="wird’s"/>
   <block-list:block block-list:abbreviated-name="wird's" block-list:name="wird’s"/>
   <block-list:block block-list:abbreviated-name="Wrot" block-list:name="Wort"/>
   <block-list:block block-list:abbreviated-name="wüdre" block-list:name="würde"/>
commit 608e634ea187fa8f04a49cde9323911d1b17de2e
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Sep 6 15:57:30 2016 +0100

    fftester: missing ValueLast
    
    Change-Id: I8e881871b1ae4dea757263d04796779e62e168dc
    Reviewed-on: https://gerrit.libreoffice.org/28694
    Reviewed-by: jan iversen <jani at documentfoundation.org>
    Tested-by: jan iversen <jani at documentfoundation.org>
    (cherry picked from commit f810ca3d93f392fe4523dd58400b79f62bf8862f)

diff --git a/writerfilter/qa/cppunittests/rtftok/data/pass/valuelist-1.rtf b/writerfilter/qa/cppunittests/rtftok/data/pass/valuelist-1.rtf
new file mode 100644
index 0000000..847e165
Binary files /dev/null and b/writerfilter/qa/cppunittests/rtftok/data/pass/valuelist-1.rtf differ
diff --git a/writerfilter/source/rtftok/rtfdispatchsymbol.cxx b/writerfilter/source/rtftok/rtfdispatchsymbol.cxx
index 218810b..966a0b7 100644
--- a/writerfilter/source/rtftok/rtfdispatchsymbol.cxx
+++ b/writerfilter/source/rtftok/rtfdispatchsymbol.cxx
@@ -243,7 +243,8 @@ RTFError RTFDocumentImpl::dispatchSymbol(RTFKeyword nKeyword)
         if ((m_nCellxMax - m_nTopLevelCurrentCellX) >= MINLAY)
         {
             auto pXValueLast = m_aStates.top().aTableRowSprms.find(NS_ooxml::LN_CT_TblGridBase_gridCol, false);
-            auto pXValue = std::make_shared<RTFValue>(pXValueLast->getInt() + m_nCellxMax - m_nTopLevelCurrentCellX);
+            const int nXValueLast = pXValueLast ? pXValueLast->getInt() : 0;
+            auto pXValue = std::make_shared<RTFValue>(nXValueLast + m_nCellxMax - m_nTopLevelCurrentCellX);
             m_aStates.top().aTableRowSprms.eraseLast(NS_ooxml::LN_CT_TblGridBase_gridCol);
             m_aStates.top().aTableRowSprms.set(NS_ooxml::LN_CT_TblGridBase_gridCol, pXValue, RTFOverwrite::NO_APPEND);
             m_nTopLevelCurrentCellX = m_nCellxMax;
commit 5b270c4cc7f4d40f13b7556c32b603bfc518a994
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Sep 6 14:49:31 2016 +0100

    if we throw in sw on HoriOrientation::NONE then don't pass it in from rtf
    
    Change-Id: Ie01cca9b7cc432fc1fe14bb600af5083d6ca6a0d
    Reviewed-on: https://gerrit.libreoffice.org/28688
    Reviewed-by: jan iversen <jani at documentfoundation.org>
    Tested-by: jan iversen <jani at documentfoundation.org>
    (cherry picked from commit 696f11078c3bf236f5d455fded6463f85763a6e6)

diff --git a/sw/source/core/unocore/unosett.cxx b/sw/source/core/unocore/unosett.cxx
index cd84531..81fd65d 100644
--- a/sw/source/core/unocore/unosett.cxx
+++ b/sw/source/core/unocore/unosett.cxx
@@ -1674,7 +1674,7 @@ void SwXNumberingRules::SetPropertiesToNumFormat(
             {
                 case 0: //"Adjust"
                 {
-                    sal_Int16 nValue = 0;
+                    sal_Int16 nValue = text::HoriOrientation::NONE;
                     pProp->Value >>= nValue;
                     if(nValue > 0 &&
                         nValue <= text::HoriOrientation::LEFT &&
diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx
index 0cbd6db..aa4fc93 100644
--- a/writerfilter/source/dmapper/NumberingManager.cxx
+++ b/writerfilter/source/dmapper/NumberingManager.cxx
@@ -987,7 +987,7 @@ void ListsManager::lcl_sprm( Sprm& rSprm )
             break;
             case NS_ooxml::LN_CT_Lvl_lvlJc:
             {
-                sal_Int16 nValue = 0;
+                sal_Int16 nValue = text::HoriOrientation::NONE;
                 switch (nIntValue)
                 {
                 case NS_ooxml::LN_Value_ST_Jc_left:
@@ -1002,9 +1002,12 @@ void ListsManager::lcl_sprm( Sprm& rSprm )
                     nValue = text::HoriOrientation::RIGHT;
                     break;
                 }
-                m_pCurrentDefinition->GetCurrentLevel( )->Insert(
-                    PROP_ADJUST, uno::makeAny( nValue ) );
-                    writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
+                if (nValue != text::HoriOrientation::NONE)
+                {
+                    m_pCurrentDefinition->GetCurrentLevel( )->Insert(
+                        PROP_ADJUST, uno::makeAny( nValue ) );
+                        writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
+                }
             }
             break;
             case NS_ooxml::LN_CT_Lvl_pPr:
commit 0d73da09d17f93c62592cbec32881a4dbb182c80
Author: Yousuf Philips <philipz85 at hotmail.com>
Date:   Sun Sep 4 04:59:11 2016 +0400

    Make character dialog's hyperlink tab accessible
    
    Change-Id: I6b2351b5a46562236dc93c6de3daa185e2a72fb2
    Reviewed-on: https://gerrit.libreoffice.org/28653
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 62fdfdded30e3e7507590a07791cc78e6b2b1d80)
    Reviewed-on: https://gerrit.libreoffice.org/28695
    Reviewed-by: jan iversen <jani at documentfoundation.org>
    Tested-by: jan iversen <jani at documentfoundation.org>
    (cherry picked from commit c0b72139e7c619c484daac0cd84201fd95327224)

diff --git a/sw/uiconfig/swriter/ui/charurlpage.ui b/sw/uiconfig/swriter/ui/charurlpage.ui
index ba39e55..c69e10c 100644
--- a/sw/uiconfig/swriter/ui/charurlpage.ui
+++ b/sw/uiconfig/swriter/ui/charurlpage.ui
@@ -33,6 +33,8 @@
                     <property name="can_focus">False</property>
                     <property name="xalign">1</property>
                     <property name="label" translatable="yes">URL:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">urled</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
@@ -45,6 +47,8 @@
                     <property name="can_focus">False</property>
                     <property name="xalign">1</property>
                     <property name="label" translatable="yes">Name:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">nameed</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
@@ -57,6 +61,8 @@
                     <property name="can_focus">False</property>
                     <property name="xalign">1</property>
                     <property name="label" translatable="yes">Text:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">texted</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
@@ -69,6 +75,8 @@
                     <property name="can_focus">False</property>
                     <property name="xalign">1</property>
                     <property name="label" translatable="yes">Target frame:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">targetfrmlb</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
@@ -214,6 +222,8 @@
                     <property name="can_focus">False</property>
                     <property name="xalign">1</property>
                     <property name="label" translatable="yes">Visited links:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">visitedlb</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
@@ -226,6 +236,8 @@
                     <property name="can_focus">False</property>
                     <property name="xalign">1</property>
                     <property name="label" translatable="yes">Unvisited links:</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">unvisitedlb</property>
                   </object>
                   <packing>
                     <property name="left_attach">0</property>
commit 3b1f279ddc831ac1d0cd926fa55da7753fef7056
Author: Yousuf Philips <philipz85 at hotmail.com>
Date:   Sun Sep 4 08:34:52 2016 +0400

    a11y: fix missing labels in sw paragraph dialog textflow tab
    
    Change-Id: I3173cf240131788013345aa864156286affa476d
    Reviewed-on: https://gerrit.libreoffice.org/28657
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 9ea5483d9bd44b136c89e45ef96bbf3df0a7cdef)
    Reviewed-on: https://gerrit.libreoffice.org/28696
    Reviewed-by: jan iversen <jani at documentfoundation.org>
    Tested-by: jan iversen <jani at documentfoundation.org>
    (cherry picked from commit 721b55bcf1ab31b24b28aac6d9a54784fc290d6c)

diff --git a/cui/uiconfig/ui/textflowpage.ui b/cui/uiconfig/ui/textflowpage.ui
index c11f30d..0674dbc 100644
--- a/cui/uiconfig/ui/textflowpage.ui
+++ b/cui/uiconfig/ui/textflowpage.ui
@@ -116,6 +116,7 @@
                     <property name="halign">start</property>
                     <property name="label" translatable="yes">C_haracters at line end</property>
                     <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">spinLineEnd</property>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -129,6 +130,7 @@
                     <property name="halign">start</property>
                     <property name="label" translatable="yes">Cha_racters at line begin</property>
                     <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">spinLineBegin</property>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -142,6 +144,7 @@
                     <property name="halign">start</property>
                     <property name="label" translatable="yes">_Maximum number of consecutive hyphens</property>
                     <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">spinMaxNum</property>
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
@@ -209,7 +212,7 @@
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">False</property>
-                    <property name="margin_left">25</property>
+                    <property name="margin_left">22</property>
                     <property name="use_underline">True</property>
                     <property name="xalign">0</property>
                     <property name="inconsistent">True</property>
commit 8599ff2fa6a535a56f47ebdcd9bd875fce7db005
Author: Yousuf Philips <philipz85 at hotmail.com>
Date:   Mon Aug 29 20:37:12 2016 +0400

    tdf#90497 Unhide document themes sidebar design deck
    
    Change-Id: Id936c255432816e6a5defa0a39e0ce9f4f93ebd6
    Reviewed-on: https://gerrit.libreoffice.org/28465
    Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
    Tested-by: Tomaž Vajngerl <quikee at gmail.com>
    (cherry picked from commit 5758f8a7f8e2e9819ef09f4e1fe38921b247dc65)
    Reviewed-on: https://gerrit.libreoffice.org/28699
    Reviewed-by: jan iversen <jani at documentfoundation.org>
    Tested-by: jan iversen <jani at documentfoundation.org>
    (cherry picked from commit f14be52b1995731ebc06fb99689d90909ac29d4b)

diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
index b907f65..d6115f9 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
@@ -220,7 +220,7 @@
         </prop>
         <prop oor:name="ContextList">
           <value oor:separator=";">
-            WriterVariants, Text, hidden;
+            WriterVariants, Text, visible;
           </value>
         </prop>
         <prop oor:name="OrderIndex" oor:type="xs:int">
commit 529c31df3de747356af7f281acdfac3edf5523f2
Author: Maxim Monastirsky <momonasmon at gmail.com>
Date:   Tue Sep 6 21:23:49 2016 +0300

    tdf#101779 Allow multiline tooltips in template manager
    
    Based on 0c3a9aa403c209e522dc5c32258c33381677c91e
    
    Also includes:
    
    Related: tdf#101779 TipStyleBalloon for ShowQuickHelp too
    
    681294d55b6b4edcdef08982596cb4bcee32e635 converted
    TableDataWindow::RequestHelp to use ShowQuickHelp,
    but it wants to set TipStyleBalloon to be able to use
    line break. Also I want to do the same in the template
    manager dialog, in the following commit.
    
    (cherry picked from commit 331d3a8b23cdbff0e1434aa5a553efdcc2c7c822)
    
    Change-Id: Ie2569a5ab29620a5f4474dafd2309513c08bd7d2
    Reviewed-on: https://gerrit.libreoffice.org/28701
    Reviewed-by: jan iversen <jani at documentfoundation.org>
    Tested-by: jan iversen <jani at documentfoundation.org>
    (cherry picked from commit abd7dc569ec746f5eef03613ecfbcbf75491e640)

diff --git a/include/sfx2/templateabstractview.hxx b/include/sfx2/templateabstractview.hxx
index 7913947..404b982 100644
--- a/include/sfx2/templateabstractview.hxx
+++ b/include/sfx2/templateabstractview.hxx
@@ -85,6 +85,8 @@ public:
 
     virtual void MouseButtonDown( const MouseEvent& rMEvt ) override;
 
+    virtual void RequestHelp( const HelpEvent& rHEvt ) override;
+
     virtual void Command( const CommandEvent& rCEvt ) override;
 
     virtual void KeyInput( const KeyEvent& rKEvt ) override;
diff --git a/include/vcl/help.hxx b/include/vcl/help.hxx
index 2070caa..e76bd91 100644
--- a/include/vcl/help.hxx
+++ b/include/vcl/help.hxx
@@ -43,7 +43,7 @@ enum class QuickHelpFlags
     CtrlText          = 0x0040,
 /// no delay when opening the quick help. Applies to ShowBallon and ShowQuickHelp
     NoDelay           = 0x0080,
-/// force balloon-style in ShowPopover
+/// force balloon-style in ShowPopover and ShowQuickHelp
     TipStyleBalloon   = 0x0100,
     NoEvadePointer    = 0x0200,
     BiDiRtl           = 0x0400,
diff --git a/sfx2/source/control/templateabstractview.cxx b/sfx2/source/control/templateabstractview.cxx
index 45f644d..539a207 100644
--- a/sfx2/source/control/templateabstractview.cxx
+++ b/sfx2/source/control/templateabstractview.cxx
@@ -16,6 +16,7 @@
 #include <sfx2/docfac.hxx>
 #include <tools/urlobj.hxx>
 #include <unotools/ucbstreamhelper.hxx>
+#include <vcl/help.hxx>
 #include <vcl/pngread.hxx>
 #include <vcl/layout.hxx>
 #include <unotools/moduleoptions.hxx>
@@ -190,6 +191,19 @@ void TemplateAbstractView::MouseButtonDown( const MouseEvent& rMEvt )
     ThumbnailView::MouseButtonDown(rMEvt);
 }
 
+void TemplateAbstractView::RequestHelp( const HelpEvent& rHEvt )
+{
+    if ( rHEvt.GetMode() & HelpEventMode::QUICK )
+    {
+        Rectangle aRect( OutputToScreenPixel( GetPosPixel() ), GetSizePixel() );
+        Help::ShowQuickHelp( this, aRect, GetQuickHelpText(),
+                             QuickHelpFlags::CtrlText | QuickHelpFlags::TipStyleBalloon );
+        return;
+    }
+
+    ThumbnailView::RequestHelp( rHEvt );
+}
+
 void TemplateAbstractView::Command( const CommandEvent& rCEvt )
 {
     if ( rCEvt.GetCommand() == CommandEventId::ContextMenu )
diff --git a/vcl/source/app/help.cxx b/vcl/source/app/help.cxx
index 0ebf141..d29806a 100644
--- a/vcl/source/app/help.cxx
+++ b/vcl/source/app/help.cxx
@@ -178,7 +178,8 @@ bool Help::ShowQuickHelp( vcl::Window* pParent,
                           const OUString& rLongHelpText,
                           QuickHelpFlags nStyle )
 {
-    ImplShowHelpWindow( pParent, HELPWINSTYLE_QUICK, nStyle,
+    sal_uInt16 nHelpWinStyle = ( nStyle & QuickHelpFlags::TipStyleBalloon ) ? HELPWINSTYLE_BALLOON : HELPWINSTYLE_QUICK;
+    ImplShowHelpWindow( pParent, nHelpWinStyle, nStyle,
                         rHelpText, rLongHelpText,
                         pParent->OutputToScreenPixel( pParent->GetPointerPosPixel() ), rScreenRect );
     return true;
commit a7d1593dabe751457a94624962584f761f3d6caf
Author: Maxim Monastirsky <momonasmon at gmail.com>
Date:   Mon Sep 5 01:56:19 2016 +0300

    tdf#101471 Unity: make sure vcl menu is hidden
    
    MenuBar::SetDisplayable happens to be called before
    GtkSalMenu::EnableUnity(true) under gtk2, which leaves the vcl
    menu visible (but not painted completely). Solve this by calling
    SetDisplayable from inside EnableUnity, as it was before
    800704e0c46f6f86f6a18a477ba4b6f313c5693a.
    
    Note that calling SetDisplayable has a side effect of disabling
    of menubar keyboard events, but we don't care about that,
    because Unity menu is outside the application anyway.
    
    Change-Id: I3948d5b57b1df480cee4fb962a5dc6b63a849b15
    Reviewed-on: https://gerrit.libreoffice.org/28676
    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 bc57ca9d6dc107fd0dcdfcb844ca8b937624281e)

diff --git a/vcl/unx/gtk/gtksalmenu.cxx b/vcl/unx/gtk/gtksalmenu.cxx
index 873ce39..2980ac0 100644
--- a/vcl/unx/gtk/gtksalmenu.cxx
+++ b/vcl/unx/gtk/gtksalmenu.cxx
@@ -1085,6 +1085,7 @@ void GtkSalMenu::EnableUnity(bool bEnable)
         else
             DestroyMenuBarWidget();
         bUnityMode = bEnable;
+        static_cast<MenuBar*>(mpVCLMenu)->SetDisplayable(!bEnable);
     }
 }
 
commit 827bbe98890b2c2e6808c11d8bcb9156653411b5
Author: Michael Stahl <mstahl at redhat.com>
Date:   Thu Sep 1 23:06:00 2016 +0200

    editeng: don't let wild-card auto-correct leave current word
    
    If a paragraph has e.g. multiple -> in it then auto-correct of the first
    one will create via the .*->.* rule a new auto-correct entry that has as
    long-word the word that contains the first -> until the last -> and
    everything in between.  This will be somewhat irritating when it is
    eventually applied.  Avoid it by limiting the wild-card loop to the
    current word, which is apparently the intent anyway.
    
    (regression from a07425892205ff8951027ea20459b97370d01de6)
    
    Change-Id: I294bae863c44eb460627b61b4383133131fe4b3a
    Reviewed-on: https://gerrit.libreoffice.org/28608
    Reviewed-by: László Németh <nemeth at numbertext.org>
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    (cherry picked from commit 9670f0d17ffed1ff07cb1deddcabc26c756e4bc1)
    Reviewed-on: https://gerrit.libreoffice.org/28633
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit d1de6e3d560407051faddb0497f36f644becd527)

diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index 0bfd925..1fe52ca 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -2823,6 +2823,11 @@ const SvxAutocorrWord* SvxAutocorrWordList::WordMatches(const SvxAutocorrWord *p
                         nSttWdPos = rTxt.indexOf( sTmp, nFndPos);
                         if (nSttWdPos != -1)
                         {
+                            sal_Int32 nTmp(nFndPos);
+                            while (nTmp < nSttWdPos && !IsWordDelim(rTxt[nTmp]))
+                                nTmp++;
+                            if (nTmp < nSttWdPos)
+                                break; // word delimiter found
                             buf.append(rTxt.copy(nFndPos, nSttWdPos - nFndPos)).append(pFnd->GetLong());
                             nFndPos = nSttWdPos + sTmp.getLength();
                         }
commit 0326dbdf462451faec525d12a63f501a12e611af
Author: Yousuf Philips <philipz85 at hotmail.com>
Date:   Mon Sep 5 20:49:37 2016 +0400

    tdf#101115 Make save as template dialog accessible
    
    Change-Id: I59dba20aa0a812d0ea27dd3a3a58d856b736318c
    Reviewed-on: https://gerrit.libreoffice.org/28674
    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 869d980a5e5b1552c52651b0ccbee85bfad8bfed)

diff --git a/sfx2/uiconfig/ui/saveastemplatedlg.ui b/sfx2/uiconfig/ui/saveastemplatedlg.ui
index d8ff31c..f56fae1 100644
--- a/sfx2/uiconfig/ui/saveastemplatedlg.ui
+++ b/sfx2/uiconfig/ui/saveastemplatedlg.ui
@@ -101,6 +101,8 @@
                     <property name="can_focus">False</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">Enter Template Name</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">name_entry</property>
                     <attributes>
                       <attribute name="weight" value="normal"/>
                     </attributes>
@@ -141,6 +143,8 @@
                     <property name="can_focus">False</property>
                     <property name="xalign">0</property>
                     <property name="label" translatable="yes">Select Template Category</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">categorylb:border</property>
                     <attributes>
                       <attribute name="weight" value="normal"/>
                     </attributes>
commit 38950d4e2b47c86ec04c6cc5824ece259e46d700
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Sep 2 21:38:35 2016 +0100

    Resolves: tdf#101795 restore hiding on end of Gtk fpicker execute
    
    but don't hide it at the end of every RunDialog::run so that the
    dialog still exists and is visible if the "sure you want to overwrite"
    dialog needs to be displayed
    
    and restore the cui options stuff to its original state as well,
    undoing the earlier efforts of...
    
    commit c1bd3156cf66318023f36d81ce809a38072588e4
    Author: Caolán McNamara <caolanm at redhat.com>
    Date:   Thu Jul 21 21:44:06 2016 +0100
    
        Resolves: tdf#101054 crash on options->path with non-native file picker
    
    and
    
    commit 3bbc0574d78d129359638b74612de2f93419eeb0
    Author: Caolán McNamara <caolanm at redhat.com>
    Date:   Tue Jul 5 10:16:51 2016 +0100
    
        Resolves: rhbz#1352835 path options doesn't promptly destroy folder picker
    
    Change-Id: I5d6bcee9fb0a73a95cc29e8f3f2ee2aea91a135a
    (cherry picked from commit 696e83b663d4f3e00f23947613f9f3916a4dd14d)
    Reviewed-on: https://gerrit.libreoffice.org/28642
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Maxim Monastirsky <momonasmon at gmail.com>
    (cherry picked from commit 21188796975be8187e234de446aae4371c3b360a)

diff --git a/cui/source/options/optpath.cxx b/cui/source/options/optpath.cxx
index 6aa3466..b51694f 100644
--- a/cui/source/options/optpath.cxx
+++ b/cui/source/options/optpath.cxx
@@ -633,12 +633,11 @@ IMPL_LINK_NOARG_TYPED(SvxPathTabPage, PathHdl_Impl, Button*, void)
             else
             {
                 short nRet = xFolderPicker->execute();
-                if (nRet == ExecutableDialogResults::OK)
-                {
-                    OUString sFolder(xFolderPicker->getDirectory());
-                    ChangeCurrentEntry(sFolder);
-                }
-                xFolderPicker.clear();
+                if (ExecutableDialogResults::OK != nRet)
+                    return;
+
+                OUString sFolder(xFolderPicker->getDirectory());
+                ChangeCurrentEntry(sFolder);
             }
         }
         catch( Exception& )
@@ -724,9 +723,9 @@ IMPL_LINK_TYPED( SvxPathTabPage, HeaderEndDrag_Impl, HeaderBar*, pBar, void )
 
 IMPL_LINK_TYPED( SvxPathTabPage, DialogClosedHdl, DialogClosedEvent*, pEvt, void )
 {
-    assert(xFolderPicker.is() && "SvxPathTabPage::DialogClosedHdl(): no folder picker");
     if (RET_OK == pEvt->DialogResult)
     {
+        assert(xFolderPicker.is() && "SvxPathTabPage::DialogClosedHdl(): no folder picker");
         OUString sURL = xFolderPicker->getDirectory();
         ChangeCurrentEntry( sURL );
     }
diff --git a/vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx b/vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx
index 4a9453b..8b97bdd 100644
--- a/vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx
+++ b/vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx
@@ -1050,6 +1050,7 @@ sal_Int16 SAL_CALL SalGtkFilePicker::execute() throw( uno::RuntimeException, std
                 break;
         }
     }
+    gtk_widget_hide(m_pDialog);
 
     if (mnHID_FolderChange)
         g_signal_handler_disconnect(GTK_FILE_CHOOSER( m_pDialog ), mnHID_FolderChange);
diff --git a/vcl/unx/gtk/fpicker/SalGtkFolderPicker.cxx b/vcl/unx/gtk/fpicker/SalGtkFolderPicker.cxx
index 88523da..1f2e46b 100644
--- a/vcl/unx/gtk/fpicker/SalGtkFolderPicker.cxx
+++ b/vcl/unx/gtk/fpicker/SalGtkFolderPicker.cxx
@@ -162,6 +162,7 @@ sal_Int16 SAL_CALL SalGtkFolderPicker::execute() throw( uno::RuntimeException, s
             retVal = 0;
             break;
     }
+    gtk_widget_hide(m_pDialog);
 
     return retVal;
 }
diff --git a/vcl/unx/gtk/fpicker/SalGtkPicker.cxx b/vcl/unx/gtk/fpicker/SalGtkPicker.cxx
index 968051d..d7f72b2 100644
--- a/vcl/unx/gtk/fpicker/SalGtkPicker.cxx
+++ b/vcl/unx/gtk/fpicker/SalGtkPicker.cxx
@@ -182,11 +182,6 @@ gint RunDialog::run()
     if (mxToolkit.is())
         mxToolkit->removeTopWindowListener(this);
 
-#if !GTK_CHECK_VERSION(3,0,0)
-    if (nStatus != 1)   //PLAY
-        gtk_widget_hide( mpDialog );
-#endif
-
     return nStatus;
 }
 
commit bf86fed32742b5181d8005e9468814da9ca6c699
Author: Maxim Monastirsky <momonasmon at gmail.com>
Date:   Thu Sep 1 00:27:29 2016 +0300

    Gallery submenu was missing from native menus
    
    ... for both OS X and gtk3. The reason is that it was
    filled in item highlight handler, which isn't implemented
    for native menus. Instead use the menu activation handler,
    like for the similar button in SvxLineTabPage.
    
    To test this patch open Writer, Format > Bullets and
    Numbering... > Options. Switch "Number" to "Graphics",
    and click on the "Select" button.
    
    (cherry picked from commit c780c6726dca5e2fe33297e44f25ae3e00703294)
    
    Change-Id: I437fd6536dbd9e6ba51282eaacc8b43c3a2d6cbf
    Reviewed-on: https://gerrit.libreoffice.org/28670
    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 c356e54e2b2ef67043945d5e5762d3a9015ca41f)

diff --git a/cui/source/inc/numpages.hxx b/cui/source/inc/numpages.hxx
index c5243bf..61901fc 100644
--- a/cui/source/inc/numpages.hxx
+++ b/cui/source/inc/numpages.hxx
@@ -318,7 +318,7 @@ class SvxNumOptionsTabPage : public SfxTabPage
 
         DECL_LINK_TYPED( NumberTypeSelectHdl_Impl, ListBox&, void );
         DECL_LINK_TYPED( LevelHdl_Impl, ListBox&, void );
-        DECL_LINK_TYPED( PopupActivateHdl_Impl, Menu *, bool);
+        DECL_LINK_TYPED( PopupActivateHdl_Impl, MenuButton *, void );
         DECL_LINK_TYPED( GraphicHdl_Impl, MenuButton *, void );
         DECL_LINK_TYPED( BulletHdl_Impl, Button*, void);
         DECL_LINK_TYPED( SizeHdl_Impl, Edit&, void );
diff --git a/cui/source/tabpages/numpages.cxx b/cui/source/tabpages/numpages.cxx
index 22d23e0..ff8d562 100644
--- a/cui/source/tabpages/numpages.cxx
+++ b/cui/source/tabpages/numpages.cxx
@@ -1217,6 +1217,7 @@ SvxNumOptionsTabPage::SvxNumOptionsTabPage(vcl::Window* pParent,
     m_pBulletPB->SetClickHdl(LINK(this, SvxNumOptionsTabPage, BulletHdl_Impl));
     m_pFmtLB->SetSelectHdl(LINK(this, SvxNumOptionsTabPage, NumberTypeSelectHdl_Impl));
     m_pBitmapMB->SetSelectHdl(LINK(this, SvxNumOptionsTabPage, GraphicHdl_Impl));
+    m_pBitmapMB->SetActivateHdl(LINK(this, SvxNumOptionsTabPage, PopupActivateHdl_Impl));
     m_pLevelLB->EnableMultiSelection(true);
     m_pLevelLB->SetSelectHdl(LINK(this, SvxNumOptionsTabPage, LevelHdl_Impl));
     m_pCharFmtLB->SetSelectHdl(LINK(this, SvxNumOptionsTabPage, CharFmtHdl_Impl));
@@ -1235,8 +1236,6 @@ SvxNumOptionsTabPage::SvxNumOptionsTabPage(vcl::Window* pParent,
     aInvalidateTimer.SetTimeout(50);
 
     Menu *pBitmapMenu = m_pBitmapMB->GetPopupMenu();
-
-    pBitmapMenu->SetHighlightHdl(LINK(this, SvxNumOptionsTabPage, PopupActivateHdl_Impl));
     m_nGalleryId = pBitmapMenu->GetItemId("gallery");
     assert(m_nGalleryId != MENU_ITEM_NOTFOUND);
     PopupMenu* pPopup = new PopupMenu;
@@ -2116,7 +2115,7 @@ IMPL_LINK_TYPED( SvxNumOptionsTabPage, GraphicHdl_Impl, MenuButton *, pButton, v
     }
 }
 
-IMPL_LINK_NOARG_TYPED(SvxNumOptionsTabPage, PopupActivateHdl_Impl, Menu *, bool)
+IMPL_LINK_NOARG_TYPED(SvxNumOptionsTabPage, PopupActivateHdl_Impl, MenuButton *, void)
 {
     if(!bMenuButtonInitialized)
     {
@@ -2168,7 +2167,6 @@ IMPL_LINK_NOARG_TYPED(SvxNumOptionsTabPage, PopupActivateHdl_Impl, Menu *, bool)
         }
         LeaveWait();
     }
-    return false;
 }
 
 IMPL_LINK_NOARG_TYPED(SvxNumOptionsTabPage, BulletHdl_Impl, Button*, void)
commit f9a15b196ca143e5be1fe54ddcf1879657d211d3
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Sep 2 21:12:43 2016 +0100

    fftester: apparent wrong property tested for existence
    
    Change-Id: I5d208bb2a85d7aa4eea9b1c950eeb6f35493f759
    (cherry picked from commit a42f4aaba352a4d33ce77898e7b7b7bc0c10f1f8)
    Reviewed-on: https://gerrit.libreoffice.org/28630
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    (cherry picked from commit 96e76028ef33e6617d702f07a0ad4a485db50f11)

diff --git a/writerfilter/qa/cppunittests/rtftok/data/fail/propheight-1.rtf b/writerfilter/qa/cppunittests/rtftok/data/fail/propheight-1.rtf
new file mode 100644
index 0000000..130ff3f
Binary files /dev/null and b/writerfilter/qa/cppunittests/rtftok/data/fail/propheight-1.rtf differ
diff --git a/writerfilter/source/dmapper/PropertyMap.cxx b/writerfilter/source/dmapper/PropertyMap.cxx
index 5bc56b8..ac192e6 100644
--- a/writerfilter/source/dmapper/PropertyMap.cxx
+++ b/writerfilter/source/dmapper/PropertyMap.cxx
@@ -1247,7 +1247,7 @@ void SectionPropertyMap::CloseSectionGroup( DomainMapper_Impl& rDM_Impl )
         if( pEntry.get( ) )
         {
             boost::optional<PropertyMap::Property> pPropHeight = pEntry->pProperties->getProperty(PROP_CHAR_HEIGHT_ASIAN);
-            if(pProp)
+            if (pPropHeight)
             {
                 double fHeight = 0;
                 if( pPropHeight->second >>= fHeight )
commit e82fa8b41be29be0a6ca884d982f3df04a274340
Author: Tor Lillqvist <tml at collabora.com>
Date:   Fri Sep 2 20:44:27 2016 +0300

    tdf#101866: Get rid of two more erroneous upper-casings of strings
    
    Follow-up to f948dce856d51704e1962553198015dbebb6e527.
    
    Change-Id: I46c5a96a076fa6eec952e31201bb3563464cf602
    Reviewed-on: https://gerrit.libreoffice.org/28626
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Tor Lillqvist <tml at collabora.com>
    (cherry picked from commit 326da3886e6f700ad1fb269df201fae9fa01d5df)
    Reviewed-on: https://gerrit.libreoffice.org/28627
    Tested-by: Jenkins <ci at libreoffice.org>
    Tested-by: Eike Rathke <erack at redhat.com>
    (cherry picked from commit 36ee7be1e3e34b8eb07de1fc5e7f9f3681e58173)

diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 5ef6603..1f3aea8 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -2388,7 +2388,7 @@ bool appendToBlock(
                     if (aRes.meType == sc::FormulaResultValue::String)
                     {
                         rCxt.ensureStrArray(rColArray, nArrayLen);
-                        (*rColArray.mpStrArray)[nPos] = aRes.maString.getDataIgnoreCase();
+                        (*rColArray.mpStrArray)[nPos] = aRes.maString.getData();
                     }
                     else
                     {
@@ -2526,7 +2526,7 @@ copyFirstFormulaBlock(
                 pStrArray = rCxt.m_StrArrays.back().get();
             }
 
-            (*pStrArray)[nPos] = aRes.maString.getDataIgnoreCase();
+            (*pStrArray)[nPos] = aRes.maString.getData();
         }
     }
 
commit 0e28e0a00425c09d62f0a3e72882dbc52f1d625d
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Sep 2 15:12:12 2016 +0100

    Resolves: tdf#101681 set hyperlink tooltip for the full hyperlink area
    
    not just a single point in it.
    
    This way gtk3 knows the successive tooltip hints for the positions
    along the hyperlink are for the same tooltip
    
    (cherry picked from commit 84e8e11dc3c73bcfe63f5e9c6cc49ee18a511a9b)
    
    Change-Id: I46a8c960e528f6a9aaab5bea145c6870f22e46c5
    Reviewed-on: https://gerrit.libreoffice.org/28622
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit 456b1dd03f210dc725ce134bdf9344f8e6df17aa)

diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx
index 7dd29d4..1fb7c833 100644
--- a/sw/source/core/crsr/crstrvl.cxx
+++ b/sw/source/core/crsr/crstrvl.cxx
@@ -1429,16 +1429,25 @@ bool SwCursorShell::GetContentAtPos( const Point& rPt,
                         }
                         if( bRet )
                         {
-                            rContentAtPos.sStr = pTextNd->GetExpandText(
-                                pTextAttr->GetStart(),
-                                *pTextAttr->GetEnd() - pTextAttr->GetStart() );
+                            const sal_Int32 nSt = pTextAttr->GetStart();
+                            const sal_Int32 nEnd = *pTextAttr->End();
+
+                            rContentAtPos.sStr = pTextNd->GetExpandText(nSt, nEnd-nSt);
 
                             rContentAtPos.aFnd.pAttr = &pTextAttr->GetAttr();
                             rContentAtPos.eContentAtPos = SwContentAtPos::SW_INETATTR;
                             rContentAtPos.pFndTextAttr = pTextAttr;
 
                             if( pFieldRect && nullptr != ( pFrame = pTextNd->getLayoutFrame( GetLayout(), &aPt ) ) )
-                                pFrame->GetCharRect( *pFieldRect, aPos, &aTmpState );
+                            {
+                                SwRect aStart;
+                                SwPosition aStartPos(*pTextNd, nSt);
+                                pFrame->GetCharRect(aStart, aStartPos, &aTmpState);
+                                SwRect aEnd;
+                                SwPosition aEndPos(*pTextNd, nEnd);
+                                pFrame->GetCharRect(aEnd, aEndPos, &aTmpState);
+                                *pFieldRect = aStart.Union(aEnd);
+                            }
                         }
                     }
                 }
commit 338cc1ad5b8fb51f118246038804a2eaa9534cf7
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Aug 31 10:58:49 2016 +0100

    Resolves: tdf#98100 no valueset tooltips with extended tips...
    
    and no offline help available. I feel this was the original
    (day-0-checkin) intent of the code, otherwise why bother with
    the "| HelpEventMode::BALLOON" as that makes no difference
    to the existing logic. And this per-item help is what other
    similiar widgets do.
    
    Change-Id: Idda130450db322acefd9ecc13986067790f9a614
    (cherry picked from commit 281027ea88d4d683449d4ce2cdb0563223741465)
    Reviewed-on: https://gerrit.libreoffice.org/28542
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit 934c79c22ee63c25538e25b18d780377cc09f3af)

diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx
index e3bdbeb..d411eea 100644
--- a/svtools/source/control/valueset.cxx
+++ b/svtools/source/control/valueset.cxx
@@ -1494,7 +1494,7 @@ void ValueSet::Resize()
 
 void ValueSet::RequestHelp( const HelpEvent& rHelpEvent )
 {
-    if ( (rHelpEvent.GetMode() & (HelpEventMode::QUICK | HelpEventMode::BALLOON)) == HelpEventMode::QUICK )
+    if (rHelpEvent.GetMode() & (HelpEventMode::QUICK | HelpEventMode::BALLOON))
     {
         Point aPos = ScreenToOutputPixel( rHelpEvent.GetMousePosPixel() );
         size_t nItemPos = ImplGetItem( aPos );
commit 75544ab41dd65b5e5e88dcc0cdfc74f6baf2f11e
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Aug 30 17:52:41 2016 +0100

    Resolves: tdf#97055 hyphenation claims its already active after closing
    
    cancel button works, hyphen all works, but closing it via wm close
    skips the cancel callback.
    
    simplest thing seems to be to call SpellEnd when necessary, flagging
    that its not necessary by disabling the close button on the RET_OK
    case
    
    Change-Id: Ib0a67c4395e9d20941e735ebb14f6bd7f7ddb66c
    (cherry picked from commit c7fd6532682a12d8981e6b19b4fbb75d6d3c412c)
    Reviewed-on: https://gerrit.libreoffice.org/28503
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit b9375c082822e4a1030c9dfca8cb0c959b78633d)

diff --git a/cui/source/dialogs/hyphen.cxx b/cui/source/dialogs/hyphen.cxx
index 06ed08c..4798a13 100644
--- a/cui/source/dialogs/hyphen.cxx
+++ b/cui/source/dialogs/hyphen.cxx
@@ -268,7 +268,10 @@ void SvxHyphenWordDialog::ContinueHyph_Impl( sal_Int32 nInsPos )
         }
     }
     else
-        EndDialog( RET_OK );
+    {
+        m_pCloseBtn->Disable();
+        EndDialog(RET_OK);
+    }
 }
 
 
@@ -399,7 +402,6 @@ IMPL_LINK_NOARG_TYPED(SvxHyphenWordDialog, CancelHdl_Impl, Button*, void)
     if( !m_bBusy )
     {
         m_bBusy = true;
-        m_pHyphWrapper->SpellEnd();
         EndDialog();
         m_bBusy = false;
     }
@@ -501,6 +503,8 @@ SvxHyphenWordDialog::~SvxHyphenWordDialog()
 
 void SvxHyphenWordDialog::dispose()
 {
+    if (m_pCloseBtn->IsEnabled())
+        m_pHyphWrapper->SpellEnd();
     m_pWordEdit.clear();
     m_pLeftBtn.clear();
     m_pRightBtn.clear();
@@ -512,7 +516,6 @@ void SvxHyphenWordDialog::dispose()
     SfxModalDialog::dispose();
 }
 
-
 void SvxHyphenWordDialog::SetWindowTitle( LanguageType nLang )
 {
     SetText( m_aLabel + " (" + SvtLanguageTable::GetLanguageString( nLang ) + ")" );
commit 722ab93773879faf8b810ac610466bb0b57ced46
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Aug 30 12:38:27 2016 +0100

    Resolves: tdf#96369 don't superscript ordinals for mixed text and numbers
    
    e.g. 5th is ok, but foo5th is not
    
    this is basically a regression from
    
    commit 17e6b8fd05af8fff86847c0ef1e8cc9ad013a1bd
    Date:   Thu Apr 7 13:33:48 2011 +0200
    
    where the older code would only do the conversion if the string
    before the number was comprised of non-letters, so go back
    to that logic.
    
    Change-Id: I928c365eb11891e78331bbd165dbdb9541ac0361
    (cherry picked from commit 776e2e2635487523cd1757f382f54487b36b5ad3)
    Reviewed-on: https://gerrit.libreoffice.org/28495
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit 4edd7ed8bc2c75a23babe9893fdbe58dd7bcf562)

diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index 5545432..0bfd925 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -461,13 +461,12 @@ bool SvxAutoCorrect::FnChgOrdinalNumber(
         bool bFoundEnd = false;
         bool isValidNumber = true;
         sal_Int32 i = nEndPos;
-
         while (i > nSttPos)
         {
             i--;
             bool isDigit = rCC.isDigit(rTxt, i);
             if (bFoundEnd)
-                isValidNumber |= isDigit;
+                isValidNumber &= (isDigit || !rCC.isLetter(rTxt, i));
 
             if (isDigit && !bFoundEnd)
             {
commit 542d484adab2fdeef0a746b22a955c1e975c1164
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Thu Sep 1 13:50:06 2016 +0200

    pTemplate can probably be null here
    
    Observed with "make clean && make CppunitTest_sw_filters_test" (which misses a
    dependency, a bug to be fixed next, so happens to not set up m_pTemplate in

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list