Makefile.in | 2 RepositoryExternal.mk | 24 accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx | 2 accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx | 16 accessibility/source/standard/vclxaccessiblelist.cxx | 4 accessibility/source/standard/vclxaccessiblelistitem.cxx | 82 basic/qa/cppunit/test_vba.cxx | 6 basic/source/runtime/stdobj.cxx | 1 canvas/source/cairo/cairo_canvashelper.cxx | 5 chart2/source/controller/main/ChartController.cxx | 7 chart2/source/controller/sidebar/ChartElementsPanel.cxx | 3 config_host.mk.in | 2 configure.ac | 27 connectivity/source/drivers/firebird/DatabaseMetaData.cxx | 4 cui/source/tabpages/border.cxx | 2 cui/source/tabpages/transfrm.cxx | 8 cui/uiconfig/ui/numberingoptionspage.ui | 20 desktop/source/app/opencl.cxx | 3 download.lst | 10 drawinglayer/source/processor2d/vclhelperbufferdevice.cxx | 1 editeng/source/items/frmitems.cxx | 12 editeng/source/misc/svxacorr.cxx | 18 embeddedobj/source/commonembedding/visobj.cxx | 5 embeddedobj/source/msole/olecomponent.cxx | 17 embeddedobj/source/msole/olevisual.cxx | 16 embedserv/source/embed/docholder.cxx | 2 external/coinmp/ExternalProject_coinmp.mk | 1 external/curl/ExternalPackage_curl.mk | 2 external/curl/ExternalProject_curl.mk | 2 external/curl/UnpackedTarball_curl.mk | 3 external/curl/curl-7.26.0_win-proxy.patch | 45 external/curl/curl-freebsd.patch.1 | 32 external/curl/curl-msvc-schannel.patch.1 | 4 external/curl/curl-msvc.patch.1 | 12 external/jpeg-turbo/jpeg-turbo.win_build.patch.1 | 28 external/mdds/UnpackedTarball_mdds.mk | 1 external/mdds/tdf90579.patch.0 | 23 external/nss/ExternalPackage_nss.mk | 5 external/nss/UnpackedTarball_nss.mk | 1 external/nss/clang-cl.patch.0 | 4 external/nss/nss-winXP-sdk.patch.1 | 5 external/nss/nss.nowerror.patch | 8 external/nss/nss.patch | 26 external/nss/nss.windowbuild.patch.0 | 55 external/nss/nss.windows.patch | 6 external/nss/nss_macosx.patch | 10 external/nss/ubsan.patch.0 | 29 external/poppler/ExternalProject_poppler.mk | 2 external/poppler/UnpackedTarball_poppler.mk | 1 external/poppler/poppler-libjpeg.patch.1 | 23 extras/source/autocorr/emoji/emoji.ulf | 24 extras/source/autocorr/lang/bg/DocumentList.xml | 12 extras/source/autocorr/lang/ca/DocumentList.xml | 53 extras/source/autocorr/lang/cs/DocumentList.xml | 24 extras/source/autocorr/lang/da/DocumentList.xml | 24 extras/source/autocorr/lang/en-AU/DocumentList.xml | 24 extras/source/autocorr/lang/en-GB/DocumentList.xml | 24 extras/source/autocorr/lang/en-US/DocumentList.xml | 24 extras/source/autocorr/lang/es/DocumentList.xml | 24 extras/source/autocorr/lang/fi/DocumentList.xml | 24 extras/source/autocorr/lang/fr/DocumentList.xml | 36 extras/source/autocorr/lang/hr/DocumentList.xml | 12 extras/source/autocorr/lang/hu/DocumentList.xml | 24 extras/source/autocorr/lang/is/DocumentList.xml | 13 extras/source/autocorr/lang/it/DocumentList.xml | 24 extras/source/autocorr/lang/ja/DocumentList.xml | 12 extras/source/autocorr/lang/ko/DocumentList.xml | 24 extras/source/autocorr/lang/lt/DocumentList.xml | 95 extras/source/autocorr/lang/nl-BE/DocumentList.xml | 24 extras/source/autocorr/lang/nl/DocumentList.xml | 36 extras/source/autocorr/lang/pl/DocumentList.xml | 24 extras/source/autocorr/lang/pt-BR/DocumentList.xml | 24 extras/source/autocorr/lang/pt/DocumentList.xml | 24 extras/source/autocorr/lang/ro/DocumentList.xml | 24 extras/source/autocorr/lang/sk/DocumentList.xml | 24 extras/source/autocorr/lang/sl/DocumentList.xml | 12 extras/source/autocorr/lang/sv/DocumentList.xml | 24 extras/source/autocorr/lang/tr/DocumentList.xml | 24 extras/source/autocorr/lang/zh-CN/DocumentList.xml | 13 extras/source/autocorr/lang/zh-TW/DocumentList.xml | 72 filter/source/msfilter/eschesdo.cxx | 13 filter/source/msfilter/mscodec.cxx | 200 filter/source/xslt/import/spreadsheetml/spreadsheetml2ooo.xsl | 4 filter/uiconfig/ui/pdfgeneralpage.ui | 6 formula/source/core/api/token.cxx | 5 framework/source/services/substitutepathvars.cxx | 3 framework/source/uielement/resourcemenucontroller.cxx | 6 i18npool/source/search/textsearch.cxx | 4 include/editeng/boxitem.hxx | 5 include/filter/msfilter/mscodec.hxx | 213 include/formula/tokenarray.hxx | 11 include/oox/crypto/CryptTools.hxx | 3 include/oox/crypto/Standard2007Engine.hxx | 68 include/oox/drawingml/fillproperties.hxx | 1 include/oox/export/drawingml.hxx | 2 include/oox/ole/vbaproject.hxx | 6 include/opencl/openclwrapper.hxx | 6 include/sax/fshelper.hxx | 2 include/svtools/htmlout.hxx | 2 include/svx/graphctl.hxx | 2 include/svx/sidebar/AreaPropertyPanelBase.hxx | 2 include/svx/svdoole2.hxx | 16 include/svx/svdundo.hxx | 14 include/vcl/opengl/OpenGLContext.hxx | 16 include/vcl/window.hxx | 2 jvmfwk/distributions/OpenOfficeorg/javavendors_macosx.xml | 6 jvmfwk/distributions/OpenOfficeorg/javavendors_wnt.xml | 6 officecfg/registry/schema/org/openoffice/Office/Impress.xcs | 2 oox/source/crypto/CryptTools.cxx | 14 oox/source/crypto/DocumentDecryption.cxx | 22 oox/source/crypto/Standard2007Engine.cxx | 67 oox/source/drawingml/fillproperties.cxx | 4 oox/source/drawingml/fillpropertiesgroupcontext.cxx | 3 oox/source/drawingml/shape.cxx | 2 oox/source/export/chartexport.cxx | 5 oox/source/export/drawingml.cxx | 15 oox/source/export/shapes.cxx | 4 oox/source/ole/vbaproject.cxx | 5 oox/source/ppt/pptshape.cxx | 1 oox/source/ppt/presentationfragmenthandler.cxx | 21 opencl/source/openclwrapper.cxx | 102 readlicense_oo/license/CREDITS.fodt | 3529 +++++----- reportdesign/source/core/inc/ReportUndoFactory.hxx | 2 reportdesign/source/core/sdr/ReportUndoFactory.cxx | 4 reportdesign/source/ui/dlg/Condition.cxx | 2 sal/rtl/strtmpl.cxx | 9 sax/source/tools/fastserializer.cxx | 6 sc/Library_sc.mk | 1 sc/inc/bulkdatahint.hxx | 2 sc/inc/conditio.hxx | 2 sc/inc/documentlinkmgr.hxx | 5 sc/inc/dpobject.hxx | 2 sc/inc/dpsave.hxx | 2 sc/inc/externalrefmgr.hxx | 3 sc/inc/markdata.hxx | 15 sc/inc/rangelst.hxx | 2 sc/inc/scabstdlg.hxx | 4 sc/inc/scitems.hxx | 3 sc/qa/unit/data/xlsx/pivot-table/shared-dategroup.xlsx |binary sc/qa/unit/data/xlsx/pivot-table/shared-nested-dategroup.xlsx |binary sc/qa/unit/data/xlsx/pivot-table/shared-numgroup.xlsx |binary sc/qa/unit/data/xlsx/pivot-table/shared_group.xlsx |binary sc/qa/unit/subsequent_filters-test.cxx | 150 sc/source/core/data/bcaslot.cxx | 16 sc/source/core/data/colorscale.cxx | 4 sc/source/core/data/column.cxx | 16 sc/source/core/data/conditio.cxx | 12 sc/source/core/data/documen2.cxx | 2 sc/source/core/data/documen7.cxx | 6 sc/source/core/data/document.cxx | 8 sc/source/core/data/document10.cxx | 7 sc/source/core/data/dpcache.cxx | 5 sc/source/core/data/dpobject.cxx | 80 sc/source/core/data/drwlayer.cxx | 2 sc/source/core/data/formulacell.cxx | 5 sc/source/core/data/markdata.cxx | 30 sc/source/core/data/table1.cxx | 9 sc/source/core/data/table2.cxx | 6 sc/source/core/data/table3.cxx | 7 sc/source/core/data/table4.cxx | 8 sc/source/core/inc/bcaslot.hxx | 11 sc/source/core/opencl/formulagroupcl.cxx | 29 sc/source/core/opencl/op_addin.cxx | 6 sc/source/core/opencl/op_database.cxx | 82 sc/source/core/opencl/op_financial.cxx | 330 sc/source/core/opencl/op_logical.cxx | 26 sc/source/core/opencl/op_math.cxx | 160 sc/source/core/opencl/op_statistical.cxx | 466 - sc/source/core/opencl/opbase.cxx | 6 sc/source/core/opencl/opbase.hxx | 2 sc/source/core/tool/bulkdatahint.cxx | 4 sc/source/core/tool/cellkeytranslator.cxx | 6 sc/source/core/tool/charthelper.cxx | 10 sc/source/core/tool/compare.cxx | 5 sc/source/core/tool/compiler.cxx | 58 sc/source/core/tool/grouparealistener.cxx | 21 sc/source/core/tool/interpr1.cxx | 6 sc/source/core/tool/interpr2.cxx | 22 sc/source/core/tool/interpr4.cxx | 26 sc/source/core/tool/interpr8.cxx | 56 sc/source/core/tool/rangelst.cxx | 22 sc/source/core/tool/refupdat.cxx | 4 sc/source/core/tool/token.cxx | 75 sc/source/filter/excel/xeview.cxx | 2 sc/source/filter/excel/xicontent.cxx | 106 sc/source/filter/excel/xilink.cxx | 12 sc/source/filter/excel/xistream.cxx | 70 sc/source/filter/inc/defnamesbuffer.hxx | 4 sc/source/filter/inc/pivotcachebuffer.hxx | 7 sc/source/filter/inc/pivottablebuffer.hxx | 10 sc/source/filter/inc/workbookhelper.hxx | 2 sc/source/filter/inc/xistream.hxx | 67 sc/source/filter/inc/xlcontent.hxx | 2 sc/source/filter/oox/defnamesbuffer.cxx | 10 sc/source/filter/oox/formulabuffer.cxx | 47 sc/source/filter/oox/pivotcachebuffer.cxx | 5 sc/source/filter/oox/pivottablebuffer.cxx | 77 sc/source/filter/oox/workbookfragment.cxx | 3 sc/source/filter/oox/workbookhelper.cxx | 17 sc/source/filter/xml/celltextparacontext.cxx | 9 sc/source/filter/xml/celltextparacontext.hxx | 3 sc/source/filter/xml/xmlcelli.cxx | 6 sc/source/filter/xml/xmlcelli.hxx | 2 sc/source/filter/xml/xmlexprt.cxx | 43 sc/source/filter/xml/xmlimprt.cxx | 1 sc/source/filter/xml/xmlimprt.hxx | 1 sc/source/ui/Accessibility/AccessibleCsvControl.cxx | 33 sc/source/ui/app/msgpool.cxx | 7 sc/source/ui/attrdlg/scdlgfact.cxx | 7 sc/source/ui/attrdlg/scdlgfact.hxx | 4 sc/source/ui/condformat/condformatdlg.cxx | 214 sc/source/ui/condformat/condformatdlgitem.cxx | 77 sc/source/ui/condformat/condformatmgr.cxx | 13 sc/source/ui/docshell/dbdocfun.cxx | 54 sc/source/ui/docshell/docfunc.cxx | 54 sc/source/ui/docshell/docsh.cxx | 7 sc/source/ui/docshell/docsh4.cxx | 12 sc/source/ui/docshell/documentlinkmgr.cxx | 26 sc/source/ui/docshell/externalrefmgr.cxx | 16 sc/source/ui/inc/AccessibleCsvControl.hxx | 9 sc/source/ui/inc/condformatdlg.hxx | 33 sc/source/ui/inc/condformatdlgitem.hxx | 68 sc/source/ui/inc/condformatmgr.hxx | 3 sc/source/ui/inc/docfunc.hxx | 5 sc/source/ui/inc/msgpool.hxx | 2 sc/source/ui/inc/undoblk.hxx | 10 sc/source/ui/undo/undoblk.cxx | 105 sc/source/ui/undo/undoblk3.cxx | 2 sc/source/ui/unoobj/cellsuno.cxx | 2 sc/source/ui/unoobj/dapiuno.cxx | 2 sc/source/ui/view/cellsh1.cxx | 74 sc/source/ui/view/gridwin.cxx | 24 sc/source/ui/view/tabcont.cxx | 3 sc/source/ui/view/tabview4.cxx | 24 sc/source/ui/view/tabvwsh2.cxx | 19 sc/source/ui/view/tabvwsh4.cxx | 2 sc/source/ui/view/tabvwshc.cxx | 47 sc/source/ui/view/viewfun2.cxx | 2 sc/source/ui/view/viewfun3.cxx | 4 sd/UIConfig_sdraw.mk | 2 sd/qa/unit/data/pptx/tdf103473.pptx |binary sd/qa/unit/data/pptx/tdf103792.pptx |binary sd/qa/unit/import-tests.cxx | 38 sd/qa/unit/tiledrendering/data/tdf102223.odp |binary sd/qa/unit/tiledrendering/data/tdf103083.fodp | 932 ++ sd/qa/unit/tiledrendering/tiledrendering.cxx | 117 sd/source/core/drawdoc.cxx | 6 sd/source/core/drawdoc3.cxx | 13 sd/source/ui/annotations/annotationwindow.cxx | 4 sd/source/ui/docshell/docshel4.cxx | 4 sd/source/ui/func/fuprlout.cxx | 18 sd/source/ui/func/futext.cxx | 15 sd/source/ui/func/undoback.cxx | 56 sd/source/ui/inc/undoback.hxx | 12 sd/source/ui/unoidl/UnoDocumentSettings.cxx | 2 sd/source/ui/view/drviews1.cxx | 9 sd/source/ui/view/drviews2.cxx | 1 sd/source/ui/view/sdview.cxx | 43 sd/uiconfig/sdraw/popupmenu/pagepanemaster.xml | 20 sd/uiconfig/sdraw/popupmenu/pagepanenoselmaster.xml | 16 sfx2/Package_classification.mk | 3 sfx2/classification/example_ca-ES.xml | 71 sfx2/classification/example_fr-FR.xml | 84 sfx2/classification/example_nl-NL.xml | 71 sfx2/source/doc/docfile.cxx | 9 sfx2/source/doc/templatedlg.cxx | 10 slideshow/Library_OGLTrans.mk | 4 slideshow/source/engine/OGLTrans/generic/OGLTrans_Operation.cxx | 8 svtools/source/svhtml/htmlout.cxx | 44 svx/source/dialog/_contdlg.cxx | 10 svx/source/dialog/frmsel.cxx | 1 svx/source/dialog/graphctl.cxx | 32 svx/source/dialog/imapdlg.cxx | 3 svx/source/sidebar/area/AreaPropertyPanelBase.cxx | 13 svx/source/sidebar/tools/Popup.cxx | 2 svx/source/svdraw/svdoole2.cxx | 18 svx/source/svdraw/svdotext.cxx | 14 svx/source/svdraw/svdundo.cxx | 83 svx/source/table/svdotable.cxx | 18 svx/source/tbxctrls/tbcontrl.cxx | 17 svx/source/unodraw/unoshap4.cxx | 4 svx/uiconfig/ui/sidebararea.ui | 2 sw/qa/extras/odfimport/data/tdf103025.odt |binary sw/qa/extras/odfimport/odfimport.cxx | 9 sw/qa/extras/ooxmlexport/data/tdf103001.docx |binary sw/qa/extras/ooxmlexport/data/tdf103389.docx |binary sw/qa/extras/ooxmlexport/data/tdf103544.docx |binary sw/qa/extras/ooxmlexport/data/tdf103573.docx |binary sw/qa/extras/ooxmlexport/data/tdf79329.docx |binary sw/qa/extras/ooxmlexport/data/tdf81345.docx |binary sw/qa/extras/ooxmlexport/data/tdf95031.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport4.cxx | 25 sw/qa/extras/ooxmlexport/ooxmlexport7.cxx | 59 sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx | 4 sw/qa/extras/ooxmlimport/data/tdf100830.docx |binary sw/qa/extras/ooxmlimport/data/tdf103664.docx |binary sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 25 sw/qa/extras/rtfimport/data/tdf84684.rtf | 399 + sw/qa/extras/rtfimport/rtfimport.cxx | 14 sw/qa/extras/ww8import/data/tdf102334.doc |binary sw/qa/extras/ww8import/ww8import.cxx | 6 sw/source/core/doc/DocumentLinksAdministrationManager.cxx | 83 sw/source/core/doc/notxtfrm.cxx | 16 sw/source/core/docnode/node.cxx | 8 sw/source/core/layout/colfrm.cxx | 6 sw/source/core/layout/pagechg.cxx | 16 sw/source/core/text/txtftn.cxx | 2 sw/source/core/unocore/unodraw.cxx | 9 sw/source/filter/basflt/fltshell.cxx | 6 sw/source/filter/ww8/docxattributeoutput.cxx | 37 sw/source/filter/ww8/docxattributeoutput.hxx | 7 sw/source/filter/ww8/docxexport.cxx | 8 sw/source/filter/ww8/docxsdrexport.cxx | 6 sw/source/filter/ww8/wrtw8sty.cxx | 15 sw/source/filter/ww8/ww8par.cxx | 110 sw/source/filter/ww8/ww8par2.cxx | 7 sw/source/ui/dbui/dbinsdlg.cxx | 39 sw/source/ui/misc/bookmark.cxx | 18 sw/source/uibase/app/docshini.cxx | 3 sw/source/uibase/uiview/view2.cxx | 2 sw/source/uibase/utlui/navipi.cxx | 4 sw/source/uibase/utlui/unotools.cxx | 4 vcl/inc/opengl/watchdog.hxx | 38 vcl/inc/opengl/zone.hxx | 1 vcl/inc/salframe.hxx | 4 vcl/inc/unx/gtk/gtkframe.hxx | 6 vcl/inc/unx/gtk/gtkinst.hxx | 6 vcl/opengl/areaScaleFragmentShader.glsl | 113 vcl/opengl/gdiimpl.cxx | 16 vcl/opengl/salbmp.cxx | 38 vcl/opengl/scale.cxx | 10 vcl/opengl/win/gdiimpl.cxx | 5 vcl/source/app/salvtables.cxx | 3 vcl/source/control/spinfld.cxx | 4 vcl/source/gdi/pdfextoutdevdata.cxx | 6 vcl/source/gdi/pdfwriter_impl.cxx | 36 vcl/source/opengl/OpenGLHelper.cxx | 43 vcl/source/window/floatwin.cxx | 2 vcl/source/window/menu.cxx | 15 vcl/source/window/menubarwindow.cxx | 7 vcl/source/window/menufloatingwindow.cxx | 60 vcl/source/window/menufloatingwindow.hxx | 6 vcl/source/window/paint.cxx | 3 vcl/source/window/taskpanelist.cxx | 2 vcl/source/window/window2.cxx | 16 vcl/unx/generic/glyphs/gcach_layout.cxx | 30 vcl/unx/gtk/a11y/atklistener.cxx | 3 vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx | 88 vcl/unx/gtk/gtkinst.cxx | 21 vcl/unx/gtk/gtkprintwrapper.cxx | 7 vcl/unx/gtk/gtksalframe.cxx | 30 vcl/unx/gtk3/gtk3gtkframe.cxx | 29 vcl/unx/gtk3/gtk3gtkinst.cxx | 200 vcl/win/gdi/salfont.cxx | 110 vcl/win/gdi/salgdi2.cxx | 67 wizards/com/sun/star/wizards/agenda/AgendaWizardDialogImpl.py | 2 wizards/com/sun/star/wizards/fax/FaxWizardDialogImpl.py | 2 wizards/com/sun/star/wizards/letter/LetterWizardDialogImpl.py | 2 wizards/com/sun/star/wizards/ui/event/CommonListener.py | 2 writerfilter/source/dmapper/DomainMapper.cxx | 20 writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 7 writerfilter/source/dmapper/DomainMapperTableHandler.hxx | 2 writerfilter/source/dmapper/DomainMapper_Impl.cxx | 3 writerfilter/source/dmapper/DomainMapper_Impl.hxx | 4 writerfilter/source/dmapper/GraphicHelpers.cxx | 10 writerfilter/source/dmapper/PropertyMap.cxx | 7 writerfilter/source/dmapper/TableManager.cxx | 10 writerfilter/source/dmapper/TableManager.hxx | 3 writerfilter/source/ooxml/OOXMLFastContextHandler.cxx | 16 writerfilter/source/ooxml/OOXMLFastContextHandler.hxx | 2 writerfilter/source/ooxml/model.xml | 2 writerfilter/source/rtftok/rtfsdrimport.cxx | 19 writerfilter/source/rtftok/rtfsdrimport.hxx | 2 xmloff/source/chart/PropertyMaps.cxx | 11 374 files changed, 8356 insertions(+), 4780 deletions(-)
New commits: commit 07ad38b58db829aca5d6d941b0b92710f1cf44ee Author: Tor Lillqvist <[email protected]> Date: Sun Nov 13 11:07:52 2016 +0200 Bump version to 5.2.3.5 Change-Id: Ieec2d27f81d3f6393f48aa0a52f4a7809524f493 diff --git a/configure.ac b/configure.ac index 965e01a..9bf0c73 100644 --- a/configure.ac +++ b/configure.ac @@ -9,7 +9,7 @@ dnl in order to create a configure script. # several non-alphanumeric characters, those are split off and used only for the # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea. -AC_INIT([LibreOffice Vanilla],[5.2.1.4],[],[],[http://documentfoundation.org/]) +AC_INIT([LibreOffice Vanilla],[5.2.3.5],[],[],[http://documentfoundation.org/]) AC_PREREQ([2.59]) commit bb67a3f9847eb364c1d0aea82b97962bfabc3453 Author: Julien Nabet <[email protected]> Date: Fri Nov 11 20:53:49 2016 +0100 tdf#71251: VARCHAR max length is 32765 for Firebird At least for Firebird 2.5 (see http://www.firebirdsql.org/en/firebird-technical-specifications/) Let's put the same for CHAR Cherry-picked from ba8a41bac3765f7b3562d357aeb13f752ea14ba4 Reviewed-on: https://gerrit.libreoffice.org/30783 Reviewed-by: Julien Nabet <[email protected]> Tested-by: Julien Nabet <[email protected]> Change-Id: I4ab232689093b0418a7c1a9751685f41f2dabbf7 Reviewed-on: https://gerrit.libreoffice.org/30786 Tested-by: Jenkins <[email protected]> Reviewed-by: Lionel Elie Mamane <[email protected]> diff --git a/connectivity/source/drivers/firebird/DatabaseMetaData.cxx b/connectivity/source/drivers/firebird/DatabaseMetaData.cxx index f5b1a7e..1caa8af 100644 --- a/connectivity/source/drivers/firebird/DatabaseMetaData.cxx +++ b/connectivity/source/drivers/firebird/DatabaseMetaData.cxx @@ -903,7 +903,7 @@ uno::Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo() // SQL_TEXT aRow[1] = new ORowSetValueDecorator(OUString("CHAR")); aRow[2] = new ORowSetValueDecorator(getColumnTypeFromFBType(SQL_TEXT)); - aRow[3] = new ORowSetValueDecorator(sal_Int16(32767)); // Prevision = max length + aRow[3] = new ORowSetValueDecorator(sal_Int16(32765)); // Prevision = max length aRow[6] = new ORowSetValueDecorator(OUString("length")); // Create Params aRow[9] = new ORowSetValueDecorator( sal_Int16(ColumnSearch::FULL)); // Searchable @@ -915,7 +915,7 @@ uno::Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo() // SQL_VARYING aRow[1] = new ORowSetValueDecorator(OUString("VARCHAR")); aRow[2] = new ORowSetValueDecorator(getColumnTypeFromFBType(SQL_VARYING)); - aRow[3] = new ORowSetValueDecorator(sal_Int16(32767)); // Prevision = max length + aRow[3] = new ORowSetValueDecorator(sal_Int16(32765)); // Prevision = max length aRow[6] = new ORowSetValueDecorator(OUString("length")); // Create Params aRow[9] = new ORowSetValueDecorator( sal_Int16(ColumnSearch::FULL)); // Searchable commit 93439ca1deb30fcdacc24042d2e4b62013eb756d Author: Tamás Zolnai <[email protected]> Date: Thu Nov 10 00:41:49 2016 +0100 tdf#103792: No placeholder text imported for empty title shape Change-Id: I95b4358f0d4311e8f427c8de18863049fb718d9b Reviewed-on: https://gerrit.libreoffice.org/30731 Tested-by: Jenkins <[email protected]> Reviewed-by: Tamás Zolnai <[email protected]> (cherry picked from commit dc024cdd91e3c33eeff8eea22fdef0d90d4dd2c0) Reviewed-on: https://gerrit.libreoffice.org/30762 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index a3ab467..483ba4d 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -1140,7 +1140,7 @@ Reference< XShape > Shape::createAndInsert( } } } - + xText->setString(""); Reference < XTextCursor > xAt = xText->createTextCursor(); getTextBody()->insertAt( rFilterBase, xText, xAt, aCharStyleProperties, mpMasterTextListStyle ); } diff --git a/oox/source/ppt/pptshape.cxx b/oox/source/ppt/pptshape.cxx index 06a173b..ad02b2d 100644 --- a/oox/source/ppt/pptshape.cxx +++ b/oox/source/ppt/pptshape.cxx @@ -141,7 +141,6 @@ void PPTShape::addShape( { sServiceName = "com.sun.star.presentation.TitleTextShape"; aMasterTextListStyle = rSlidePersist.getMasterPersist().get() ? rSlidePersist.getMasterPersist()->getTitleTextStyle() : rSlidePersist.getTitleTextStyle(); - bClearText = true; } break; case XML_subTitle : diff --git a/sd/qa/unit/data/pptx/tdf103792.pptx b/sd/qa/unit/data/pptx/tdf103792.pptx new file mode 100755 index 0000000..e48d25e Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf103792.pptx differ diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index da809a2..0fb52dd 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -123,6 +123,7 @@ public: void testTdf99030(); void testTdf49561(); void testTdf103473(); + void testTdf103792(); CPPUNIT_TEST_SUITE(SdImportTest); @@ -174,6 +175,7 @@ public: CPPUNIT_TEST(testTdf99030); CPPUNIT_TEST(testTdf49561); CPPUNIT_TEST(testTdf103473); + CPPUNIT_TEST(testTdf103792); CPPUNIT_TEST_SUITE_END(); }; @@ -1424,6 +1426,24 @@ void SdImportTest::testTdf103473() xDocShRef->DoClose(); } +void SdImportTest::testTdf103792() +{ + // Title text shape on the actual slide contained no text neither a placeholder text. + sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/tdf103792.pptx"), PPTX); + + const SdrPage *pPage = GetPage(1, xDocShRef); + CPPUNIT_ASSERT_MESSAGE("No page found", pPage != nullptr); + SdrObject *pObj = pPage->GetObj(0); + CPPUNIT_ASSERT_MESSAGE("Wrong object", pObj != nullptr); + SdrTextObj *pTxtObj = dynamic_cast<SdrTextObj *>(pObj); + CPPUNIT_ASSERT_MESSAGE("Not a text object", pTxtObj != nullptr); + + const EditTextObject& aEdit = pTxtObj->GetOutlinerParaObject()->GetTextObject(); + CPPUNIT_ASSERT_EQUAL(OUString("Click to add Title"), aEdit.GetText(0)); + + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest); CPPUNIT_PLUGIN_IMPLEMENT(); commit bdda86ddcb2cf378954390e0ce2d89f109806908 Author: Bartosz Kosiorek <[email protected]> Date: Thu Oct 20 10:50:31 2016 +0200 tdf#101042 Fix for frozen windows in Excel Window protection is "not allowed to move and resize windows" in MS Excel, it is definitely not Frozen Panes ( maData.mbFrozenPanes ) Change-Id: I04f0429738a6daecb26274f169c5118dba73e895 Reviewed-on: https://gerrit.libreoffice.org/30076 Reviewed-by: Eike Rathke <[email protected]> Tested-by: Eike Rathke <[email protected]> (cherry picked from commit 0637d0f43d3dc5b41a1bbc5726d6a68b7c36a519) Reviewed-on: https://gerrit.libreoffice.org/30777 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/sc/source/filter/excel/xeview.cxx b/sc/source/filter/excel/xeview.cxx index 09fbbc1..550c9ed 100644 --- a/sc/source/filter/excel/xeview.cxx +++ b/sc/source/filter/excel/xeview.cxx @@ -414,7 +414,7 @@ void XclExpTabViewSettings::SaveXml( XclExpXmlStream& rStrm ) sax_fastparser::FSHelperPtr& rWorksheet = rStrm.GetCurrentStream(); rWorksheet->startElement( XML_sheetViews, FSEND ); rWorksheet->startElement( XML_sheetView, - XML_windowProtection, XclXmlUtils::ToPsz( maData.mbFrozenPanes ), + // OOXTODO: XML_windowProtection, XML_showFormulas, XclXmlUtils::ToPsz( maData.mbShowFormulas ), XML_showGridLines, XclXmlUtils::ToPsz( maData.mbShowGrid ), XML_showRowColHeaders, XclXmlUtils::ToPsz( maData.mbShowHeadings ), commit d527f686f5dd8d776d2beceaca24ebe758908d85 Author: Tamás Zolnai <[email protected]> Date: Sun Nov 6 18:42:30 2016 +0000 tdf#103544: DOCX exp.: Image loss when have a frame anchored to the same para. Regression from: 83d51e5e52688c4c9bc0ad70a511458bb06a242d Partly revert the commit causes this regression. I checked the related bugs (tdf#78590,tdf#80748) intended to be fixed by this commit and reverting this part does not bring back the corruption. I guess something changed in frames' and text boxes' import in the meantime, because this MergeMarks::IGNORE is useless now. Reviewed-on: https://gerrit.libreoffice.org/30351 Reviewed-by: Tamás Zolnai <[email protected]> Tested-by: Tamás Zolnai <[email protected]> Conflicts: sw/qa/extras/ooxmlexport/ooxmlexport9.cxx Change-Id: If17776e8628561961c7ce2a2994e3fc609f75639 Reviewed-on: https://gerrit.libreoffice.org/30358 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/include/sax/fshelper.hxx b/include/sax/fshelper.hxx index 4c79a36..599aae1 100644 --- a/include/sax/fshelper.hxx +++ b/include/sax/fshelper.hxx @@ -60,7 +60,7 @@ const sal_Int32 FSEND_internal = -1; // same as XML_TOKEN_INVALID namespace sax_fastparser { -enum class MergeMarks { APPEND = 0, PREPEND = 1, POSTPONE = 2, IGNORE = 3 }; +enum class MergeMarks { APPEND = 0, PREPEND = 1, POSTPONE = 2}; typedef css::uno::Reference< css::xml::sax::XFastAttributeList > XFastAttributeListRef; diff --git a/sax/source/tools/fastserializer.cxx b/sax/source/tools/fastserializer.cxx index 49ed24b..620fe68 100644 --- a/sax/source/tools/fastserializer.cxx +++ b/sax/source/tools/fastserializer.cxx @@ -405,7 +405,7 @@ namespace sax_fastparser { // flush, so that we get everything in getData() maCachedOutputStream.flush(); - if (maMarkStack.size() == 1 && eMergeType != MergeMarks::IGNORE) + if (maMarkStack.size() == 1) { #ifdef DBG_UTIL while (!maMarkStack.top()->m_DebugEndedElements.empty()) @@ -469,8 +469,6 @@ namespace sax_fastparser { topDebugEndedElements, topDebugStartedElements); break; - case MergeMarks::IGNORE: - break; } #endif if (maMarkStack.empty()) @@ -488,8 +486,6 @@ namespace sax_fastparser { case MergeMarks::APPEND: maMarkStack.top()->append( aMerge ); break; case MergeMarks::PREPEND: maMarkStack.top()->prepend( aMerge ); break; case MergeMarks::POSTPONE: maMarkStack.top()->postpone( aMerge ); break; - case MergeMarks::IGNORE: break; - } } diff --git a/sw/qa/extras/ooxmlexport/data/tdf103544.docx b/sw/qa/extras/ooxmlexport/data/tdf103544.docx new file mode 100644 index 0000000..2e18f21 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf103544.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx index c3b94a7..d7c1f22 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx @@ -25,6 +25,7 @@ #include <com/sun/star/text/GraphicCrop.hpp> #include <com/sun/star/text/HoriOrientation.hpp> #include <com/sun/star/text/RelOrientation.hpp> +#include <com/sun/star/graphic/XGraphic.hpp> #include <pagedesc.hxx> #include <comphelper/sequenceashashmap.hxx> @@ -1171,6 +1172,19 @@ DECLARE_OOXMLEXPORT_TEST(testTdf103573, "tdf103573.docx") CPPUNIT_ASSERT_EQUAL_MESSAGE("Not centered horizontally relatively to right page border", text::RelOrientation::PAGE_RIGHT, nValue); } +DECLARE_OOXMLEXPORT_TEST(testTdf103544, "tdf103544.docx") +{ + // We have two shapes: a frame and an image + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<drawing::XDrawPage> xDrawPage = xDrawPageSupplier->getDrawPage(); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), xDrawPage->getCount()); + + // Image was lost because of the frame export + uno::Reference<beans::XPropertySet> xImage(getShape(1), uno::UNO_QUERY); + auto xGraphic = getProperty<uno::Reference<graphic::XGraphic> >(xImage, "Graphic"); + CPPUNIT_ASSERT(xGraphic.is()); +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx index 9af064c..3552546 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx @@ -498,8 +498,8 @@ DECLARE_OOXMLEXPORT_TEST(testFDO78590, "FDO78590.docx") return; // This is to ensure that the fld starts and ends inside a hyperlink... - assertXPath ( pXmlDoc, "/w:document/w:body/w:p[1]/w:pPr/w:framePr", "w", "9851" ); - assertXPath ( pXmlDoc, "/w:document/w:body/w:p[1]/w:pPr/w:framePr", "h", "1669" ); + assertXPath ( pXmlDoc, "/w:document/w:body/w:p[2]/w:pPr/w:framePr", "w", "9851" ); + assertXPath ( pXmlDoc, "/w:document/w:body/w:p[2]/w:pPr/w:framePr", "h", "1669" ); } DECLARE_OOXMLEXPORT_TEST(testSdtCitationRun, "sdt-citation-run.docx") diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index da5f181..bdfaac4 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -579,10 +579,7 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT //sdtcontent is written so Set m_bParagraphHasDrawing to false m_rExport.SdrExporter().setParagraphHasDrawing( false ); m_bRunTextIsOn = false; - if(aFramePrTextbox.empty()) - m_pSerializer->mergeTopMarks(Tag_StartParagraph_1); - else - m_pSerializer->mergeTopMarks(Tag_StartParagraph_1, sax_fastparser::MergeMarks::IGNORE); + m_pSerializer->mergeTopMarks(Tag_StartParagraph_1); // Write framePr if(!aFramePrTextbox.empty()) commit 040249c16ff50faadb79dda9aed2e0be04cb0a04 Author: Laurent Balland-Poirier <[email protected]> Date: Fri Nov 11 13:37:09 2016 +0100 tdf#100352 Backport ca-ES, fr-FR and nl-NL classification files Change-Id: I561ff1906c1ddfde5d66d31270633fc4de94589b Reviewed-on: https://gerrit.libreoffice.org/30775 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/sfx2/Package_classification.mk b/sfx2/Package_classification.mk index 4ed779c..71684f4 100644 --- a/sfx2/Package_classification.mk +++ b/sfx2/Package_classification.mk @@ -11,7 +11,10 @@ $(eval $(call gb_Package_Package,sfx2_classification,$(SRCDIR)/sfx2)) $(eval $(call gb_Package_add_files,sfx2_classification,$(LIBO_SHARE_FOLDER)/classification,\ classification/example.xml \ + classification/example_ca-ES.xml \ + classification/example_fr-FR.xml \ classification/example_hu-HU.xml \ + classification/example_nl-NL.xml \ classification/example_pt-BR.xml \ classification/example_sl-SI.xml \ )) diff --git a/sfx2/classification/example_ca-ES.xml b/sfx2/classification/example_ca-ES.xml new file mode 100644 index 0000000..f62d647 --- /dev/null +++ b/sfx2/classification/example_ca-ES.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> +<baf:BusinessAuthorization xmlns:baf="urn:tscp:names:baf:1.1"> + <baf:PolicyAuthorityName>Autoritat de polÃtiques TSCP de exemple</baf:PolicyAuthorityName> + <baf:PolicyName>PolÃtica TSCP de exemple</baf:PolicyName> + <baf:AdministrativeData> + <baf:ProgramID>urn:example:tscp:1</baf:ProgramID> + </baf:AdministrativeData> + <baf:Included> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:non-business" Name="Altres afers"> + <baf:LabelingRules/> + <baf:ImpactLevel> + <baf:Scale>UK-Cabinet</baf:Scale> + <baf:ConfidentalityValue>0</baf:ConfidentalityValue> + </baf:ImpactLevel> + </baf:BusinessAuthorizationCategory> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:general-business" Name="Afers generals"> + <baf:LabelingRules> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Header</baf:Identifier> + <baf:Value>Classificació: afers generals</baf:Value> + </baf:VisualMarkingPart> + </baf:LabelingRules> + <baf:ImpactLevel> + <baf:Scale>UK-Cabinet</baf:Scale> + <baf:ConfidentalityValue>1</baf:ConfidentalityValue> + </baf:ImpactLevel> + </baf:BusinessAuthorizationCategory> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:confidential" Name="Confidencial"> + <baf:LabelingRules> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Header</baf:Identifier> + <baf:Value>Classificació: confidencial</baf:Value> + </baf:VisualMarkingPart> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Footer</baf:Identifier> + <baf:Value>Aquest contingut és de carà cter confidencial. No el distribuïu externament sense autorització.</baf:Value> + </baf:VisualMarkingPart> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Watermark</baf:Identifier> + <baf:Value>Confidencial</baf:Value> + </baf:VisualMarkingPart> + </baf:LabelingRules> + <baf:ImpactLevel> + <baf:Scale>UK-Cabinet</baf:Scale> + <baf:ConfidentalityValue>2</baf:ConfidentalityValue> + </baf:ImpactLevel> + </baf:BusinessAuthorizationCategory> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:internal-only" Name="Ãs intern"> + <baf:LabelingRules> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Header</baf:Identifier> + <baf:Value>Classificació: només dâús intern</baf:Value> + </baf:VisualMarkingPart> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Footer</baf:Identifier> + <baf:Value>Aquest contingut és només dâús intern. No el distribuïu externament.</baf:Value> + </baf:VisualMarkingPart> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Watermark</baf:Identifier> + <baf:Value>Ãs intern</baf:Value> + </baf:VisualMarkingPart> + </baf:LabelingRules> + <baf:ImpactLevel> + <baf:Scale>UK-Cabinet</baf:Scale> + <baf:ConfidentalityValue>3</baf:ConfidentalityValue> + </baf:ImpactLevel> + </baf:BusinessAuthorizationCategory> + </baf:Included> +</baf:BusinessAuthorization> +<!-- vim:set shiftwidth=4 softtabstop=4 expandtab: +--> diff --git a/sfx2/classification/example_fr-FR.xml b/sfx2/classification/example_fr-FR.xml new file mode 100644 index 0000000..4e0ab99 --- /dev/null +++ b/sfx2/classification/example_fr-FR.xml @@ -0,0 +1,84 @@ +<?xml version="1.0"?> +<baf:BusinessAuthorization xmlns:baf="urn:tscp:names:baf:1.1"> + <!-- Translators: this string can be localized --> + <baf:PolicyAuthorityName>Exemple d'autorité TSCP</baf:PolicyAuthorityName> + <!-- Translators: this string can be localized --> + <baf:PolicyName>Exemple de stratégie TSCP</baf:PolicyName> + <baf:AdministrativeData> + <baf:ProgramID>urn:example:tscp:1</baf:ProgramID> + </baf:AdministrativeData> + <baf:Included> + <!-- Translators: the Name attribute in this string can be localized --> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:non-business" Name="Public"> + <baf:LabelingRules/> + <baf:ImpactLevel> + <baf:Scale>UK-Cabinet</baf:Scale> + <baf:ConfidentalityValue>0</baf:ConfidentalityValue> + </baf:ImpactLevel> + </baf:BusinessAuthorizationCategory> + <!-- Translators: the Name attribute in this string can be localized --> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:general-business" Name="Professionnel"> + <baf:LabelingRules> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Header</baf:Identifier> + <!-- Translators: this string can be localized --> + <baf:Value>Classification : professionnel</baf:Value> + </baf:VisualMarkingPart> + </baf:LabelingRules> + <baf:ImpactLevel> + <baf:Scale>UK-Cabinet</baf:Scale> + <baf:ConfidentalityValue>1</baf:ConfidentalityValue> + </baf:ImpactLevel> + </baf:BusinessAuthorizationCategory> + <!-- Translators: the Name attribute in this string can be localized --> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:confidential" Name="Confidentiel"> + <baf:LabelingRules> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Header</baf:Identifier> + <!-- Translators: this string can be localized --> + <baf:Value>Classification : confidentiel</baf:Value> + </baf:VisualMarkingPart> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Footer</baf:Identifier> + <!-- Translators: this string can be localized --> + <baf:Value>Ce contenu est marqué confidentiel. Ne le communiquez pas à l'extérieur sans un accord de l'entreprise.</baf:Value> + </baf:VisualMarkingPart> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Watermark</baf:Identifier> + <!-- Translators: this string can be localized --> + <baf:Value>Confidentiel</baf:Value> + </baf:VisualMarkingPart> + </baf:LabelingRules> + <baf:ImpactLevel> + <baf:Scale>UK-Cabinet</baf:Scale> + <baf:ConfidentalityValue>2</baf:ConfidentalityValue> + </baf:ImpactLevel> + </baf:BusinessAuthorizationCategory> + <!-- Translators: the Name attribute in this string can be localized --> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:internal-only" Name="Exclusivement en interne"> + <baf:LabelingRules> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Header</baf:Identifier> + <!-- Translators: this string can be localized --> + <baf:Value>Classification : exclusivement en interne</baf:Value> + </baf:VisualMarkingPart> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Footer</baf:Identifier> + <!-- Translators: this string can be localized --> + <baf:Value>Ce contenu est marqué pour un usage interne exclusivement. Il ne doit pas être communiqué à l'extérieur de l'entreprise.</baf:Value> + </baf:VisualMarkingPart> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Watermark</baf:Identifier> + <!-- Translators: this string can be localized --> + <baf:Value>Interne exclusivement</baf:Value> + </baf:VisualMarkingPart> + </baf:LabelingRules> + <baf:ImpactLevel> + <baf:Scale>UK-Cabinet</baf:Scale> + <baf:ConfidentalityValue>3</baf:ConfidentalityValue> + </baf:ImpactLevel> + </baf:BusinessAuthorizationCategory> + </baf:Included> +</baf:BusinessAuthorization> +<!-- vim:set shiftwidth=4 softtabstop=4 expandtab: +--> diff --git a/sfx2/classification/example_nl-NL.xml b/sfx2/classification/example_nl-NL.xml new file mode 100644 index 0000000..7afc170 --- /dev/null +++ b/sfx2/classification/example_nl-NL.xml @@ -0,0 +1,71 @@ +<?xml version="1.0"?> +<baf:BusinessAuthorization xmlns:baf="urn:tscp:names:baf:1.1"> + <baf:PolicyAuthorityName>Voorbeeld beleidsauthoriteit TSCP</baf:PolicyAuthorityName> + <baf:PolicyName>Voorbeeld beleid TSCP</baf:PolicyName> + <baf:AdministrativeData> + <baf:ProgramID>urn:example:tscp:1</baf:ProgramID> + </baf:AdministrativeData> + <baf:Included> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:non-business" Name="Openbaar"> + <baf:LabelingRules/> + <baf:ImpactLevel> + <baf:Scale>UK-Cabinet</baf:Scale> + <baf:ConfidentalityValue>0</baf:ConfidentalityValue> + </baf:ImpactLevel> + </baf:BusinessAuthorizationCategory> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:general-business" Name="Algemeen bedrijfsvoering"> + <baf:LabelingRules> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Header</baf:Identifier> + <baf:Value>Classificatie: Algemeen bedrijfsvoering</baf:Value> + </baf:VisualMarkingPart> + </baf:LabelingRules> + <baf:ImpactLevel> + <baf:Scale>UK-Cabinet</baf:Scale> + <baf:ConfidentalityValue>1</baf:ConfidentalityValue> + </baf:ImpactLevel> + </baf:BusinessAuthorizationCategory> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:confidential" Name="Vertrouwelijk"> + <baf:LabelingRules> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Header</baf:Identifier> + <baf:Value>Classificatie: Vertrouwelijk</baf:Value> + </baf:VisualMarkingPart> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Footer</baf:Identifier> + <baf:Value>De inhoud van dit document is vertrouwelijk. Verspreid het uitsluitend met de vereiste toestemming.</baf:Value> + </baf:VisualMarkingPart> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Watermark</baf:Identifier> + <baf:Value>Vertrouwelijk</baf:Value> + </baf:VisualMarkingPart> + </baf:LabelingRules> + <baf:ImpactLevel> + <baf:Scale>UK-Cabinet</baf:Scale> + <baf:ConfidentalityValue>2</baf:ConfidentalityValue> + </baf:ImpactLevel> + </baf:BusinessAuthorizationCategory> + <baf:BusinessAuthorizationCategory Identifier="urn:example:tscp:1:internal-only" Name="Intern"> + <baf:LabelingRules> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Header</baf:Identifier> + <baf:Value>Classificatie: Intern</baf:Value> + </baf:VisualMarkingPart> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Footer</baf:Identifier> + <baf:Value>De inhoud van dit document is uitsluitend voor intern gebruik. Verspreid het niet buiten de organisatie.</baf:Value> + </baf:VisualMarkingPart> + <baf:VisualMarkingPart> + <baf:Identifier>Document: Watermark</baf:Identifier> + <baf:Value>Intern</baf:Value> + </baf:VisualMarkingPart> + </baf:LabelingRules> + <baf:ImpactLevel> + <baf:Scale>UK-Cabinet</baf:Scale> + <baf:ConfidentalityValue>3</baf:ConfidentalityValue> + </baf:ImpactLevel> + </baf:BusinessAuthorizationCategory> + </baf:Included> +</baf:BusinessAuthorization> +<!-- vim:set shiftwidth=4 softtabstop=4 expandtab: +--> commit 028b80db26e80b147b508fdfdc9782c1ba842d27 Author: Eike Rathke <[email protected]> Date: Wed Nov 9 15:12:39 2016 +0100 Resolves: tdf#103689 do not slice 3D area broadcasters into separate sheets Change-Id: Ie167e5e5e953c3e8064b8e128d52f6aa6740575b (cherry picked from commit 129eddc18b4f2cb1320b60bf68de537cf86b60f2) Reviewed-on: https://gerrit.libreoffice.org/30720 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/sc/source/core/data/bcaslot.cxx b/sc/source/core/data/bcaslot.cxx index c171b44..64eecf9 100644 --- a/sc/source/core/data/bcaslot.cxx +++ b/sc/source/core/data/bcaslot.cxx @@ -736,6 +736,11 @@ void ScBroadcastAreaSlotMachine::StartListeningArea( } else { + // A new area needs to be inserted to the corresponding slots, for 3D + // ranges for all sheets, do not slice into per sheet areas or the + // !bDone will break too early (i.e. after the first sheet) if + // subsequent listeners are to be added. + ScBroadcastArea* pArea = nullptr; bool bDone = false; for (SCTAB nTab = rRange.aStart.Tab(); !bDone && nTab <= rRange.aEnd.Tab(); ++nTab) @@ -750,7 +755,6 @@ void ScBroadcastAreaSlotMachine::StartListeningArea( SCSIZE nOff = nStart; SCSIZE nBreak = nOff + nRowBreak; ScBroadcastAreaSlot** pp = ppSlots + nOff; - ScBroadcastArea* pArea = nullptr; while ( !bDone && nOff <= nEnd ) { if ( !*pp ) commit 73f6f293c2007148f38360adfeb4084a63be67a5 Author: Eike Rathke <[email protected]> Date: Mon Nov 7 23:49:46 2016 +0100 Resolves: tdf#103701 bulk-broadcast the correct hint ID for formula groups BulkBroadcastGroupAreas() and BulkDataHint and thus FormulaGroupAreaListener::Notify() omitted to transport the actual hint and assumed SC_HINT_DATACHANGED, but SC_HINT_TABLEOPDIRTY needs to be handled as well. (cherry picked from commit 05d2a66955f8a6552a79696474386ca9f45f9ef2) Backported. Conflicts: sc/inc/bulkdatahint.hxx sc/inc/document.hxx sc/source/core/data/bcaslot.cxx sc/source/core/data/documen7.cxx sc/source/core/data/document.cxx sc/source/core/inc/bcaslot.hxx sc/source/core/tool/bulkdatahint.cxx sc/source/core/tool/grouparealistener.cxx Change-Id: I765f7c95f7aeab295f35dcf6949a3b1926cbe248 Reviewed-on: https://gerrit.libreoffice.org/30701 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/sc/inc/bulkdatahint.hxx b/sc/inc/bulkdatahint.hxx index 4b37584..c35e027 100644 --- a/sc/inc/bulkdatahint.hxx +++ b/sc/inc/bulkdatahint.hxx @@ -28,7 +28,7 @@ class BulkDataHint : public SfxSimpleHint BulkDataHint& operator= ( const BulkDataHint& ) = delete; public: - BulkDataHint( ScDocument& rDoc, const ColumnSpanSet* pSpans ); + BulkDataHint( ScDocument& rDoc, const ColumnSpanSet* pSpans, sal_uInt32 nHintId ); virtual ~BulkDataHint(); void setSpans( const ColumnSpanSet* pSpans ); diff --git a/sc/source/core/data/bcaslot.cxx b/sc/source/core/data/bcaslot.cxx index 8d5e1bb..c171b44 100644 --- a/sc/source/core/data/bcaslot.cxx +++ b/sc/source/core/data/bcaslot.cxx @@ -1091,14 +1091,14 @@ void ScBroadcastAreaSlotMachine::EnterBulkBroadcast() ++nInBulkBroadcast; } -void ScBroadcastAreaSlotMachine::LeaveBulkBroadcast() +void ScBroadcastAreaSlotMachine::LeaveBulkBroadcast( sal_uInt32 nHintId ) { if (nInBulkBroadcast > 0) { if (--nInBulkBroadcast == 0) { ScBroadcastAreasBulk().swap( aBulkBroadcastAreas); - BulkBroadcastGroupAreas(); + BulkBroadcastGroupAreas( nHintId ); } } } @@ -1122,12 +1122,12 @@ void ScBroadcastAreaSlotMachine::InsertBulkGroupArea( ScBroadcastArea* pArea, co pSet->set(rRange, true); } -void ScBroadcastAreaSlotMachine::BulkBroadcastGroupAreas() +void ScBroadcastAreaSlotMachine::BulkBroadcastGroupAreas( sal_uInt32 nHintId ) { if (m_BulkGroupAreas.empty()) return; - sc::BulkDataHint aHint(*pDoc, nullptr); + sc::BulkDataHint aHint(*pDoc, nullptr, nHintId); bool bBroadcasted = false; BulkGroupAreasType::iterator it = m_BulkGroupAreas.begin(), itEnd = m_BulkGroupAreas.end(); @@ -1154,7 +1154,7 @@ void ScBroadcastAreaSlotMachine::BulkBroadcastGroupAreas() m_BulkGroupAreas.clear(); if (bBroadcasted) - pDoc->TrackFormulas(); + pDoc->TrackFormulas( nHintId ); } size_t ScBroadcastAreaSlotMachine::RemoveBulkArea( const ScBroadcastArea* pArea ) diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index dddcde6..9c30f0f 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -1005,7 +1005,7 @@ sal_uLong ScDocument::TransferTab( ScDocument* pSrcDoc, SCTAB nSrcPos, sc::CopyToDocContext aCxt(*this); nDestPos = std::min(nDestPos, (SCTAB)(GetTableCount() - 1)); { // scope for bulk broadcast - ScBulkBroadcast aBulkBroadcast( pBASM); + ScBulkBroadcast aBulkBroadcast( pBASM, SC_HINT_DATACHANGED); if (!bResultsOnly) { const bool bGlobalNamesToLocal = false; diff --git a/sc/source/core/data/documen7.cxx b/sc/source/core/data/documen7.cxx index 6816010..70e7fba 100644 --- a/sc/source/core/data/documen7.cxx +++ b/sc/source/core/data/documen7.cxx @@ -62,7 +62,7 @@ void ScDocument::Broadcast( const ScHint& rHint ) return ; // Clipboard or Undo if ( eHardRecalcState == HARDRECALCSTATE_OFF ) { - ScBulkBroadcast aBulkBroadcast( pBASM); // scoped bulk broadcast + ScBulkBroadcast aBulkBroadcast( pBASM, rHint.GetId()); // scoped bulk broadcast bool bIsBroadcasted = false; SvtBroadcaster* pBC = GetBroadcaster(rHint.GetAddress()); if ( pBC ) @@ -98,7 +98,7 @@ void ScDocument::BroadcastCells( const ScRange& rRange, sal_uInt32 nHint, bool b if (eHardRecalcState == HARDRECALCSTATE_OFF) { - ScBulkBroadcast aBulkBroadcast( pBASM); // scoped bulk broadcast + ScBulkBroadcast aBulkBroadcast( pBASM, nHint); // scoped bulk broadcast bool bIsBroadcasted = false; if (bBroadcastSingleBroadcasters) @@ -226,7 +226,7 @@ void ScDocument::AreaBroadcast( const ScHint& rHint ) return ; // Clipboard or Undo if (eHardRecalcState == HARDRECALCSTATE_OFF) { - ScBulkBroadcast aBulkBroadcast( pBASM); // scoped bulk broadcast + ScBulkBroadcast aBulkBroadcast( pBASM, rHint.GetId()); // scoped bulk broadcast if ( pBASM->AreaBroadcast( rHint ) ) TrackFormulas( rHint.GetId() ); } diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 1ae8454..3ce2df4 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -2904,7 +2904,7 @@ void ScDocument::CopyFromClip( const ScRange& rDestRange, const ScMarkData& rMar StartListeningFromClip( nAllCol1, nAllRow1, nAllCol2, nAllRow2, rMark, nInsFlag ); { - ScBulkBroadcast aBulkBroadcast( GetBASM()); + ScBulkBroadcast aBulkBroadcast( GetBASM(), SC_HINT_DATACHANGED); // Set all formula cells dirty, and collect non-empty non-formula cell // positions so that we can broadcast on them below. @@ -2992,7 +2992,7 @@ void ScDocument::CopyMultiRangeFromClip( aDestRange.aEnd.Col(), aDestRange.aEnd.Row(), rMark, nInsFlag ); { - ScBulkBroadcast aBulkBroadcast( GetBASM()); + ScBulkBroadcast aBulkBroadcast( GetBASM(), SC_HINT_DATACHANGED); // Set formula cells dirty and collect non-formula cells. SetDirtyFromClip( @@ -3722,7 +3722,7 @@ void ScDocument::SetAllFormulasDirty( const sc::SetFormulaDirtyContext& rCxt ) bool bOldAutoCalc = GetAutoCalc(); bAutoCalc = false; // no mulitple calculations { // scope for bulk broadcast - ScBulkBroadcast aBulkBroadcast( GetBASM()); + ScBulkBroadcast aBulkBroadcast( GetBASM(), SC_HINT_DATACHANGED); TableContainer::iterator it = maTabs.begin(); for (;it != maTabs.end(); ++it) if (*it) @@ -3743,7 +3743,7 @@ void ScDocument::SetDirty( const ScRange& rRange, bool bIncludeEmptyCells ) bool bOldAutoCalc = GetAutoCalc(); bAutoCalc = false; // no mulitple calculations { // scope for bulk broadcast - ScBulkBroadcast aBulkBroadcast( GetBASM()); + ScBulkBroadcast aBulkBroadcast( GetBASM(), SC_HINT_DATACHANGED); SCTAB nTab2 = rRange.aEnd.Tab(); for (SCTAB i=rRange.aStart.Tab(); i<=nTab2 && i < static_cast<SCTAB>(maTabs.size()); i++) if (maTabs[i]) maTabs[i]->SetDirty( rRange, diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index 479c17a..923005a 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -242,7 +242,7 @@ void ScTable::DeleteRow( } { // scope for bulk broadcast - ScBulkBroadcast aBulkBroadcast( pDocument->GetBASM()); + ScBulkBroadcast aBulkBroadcast( pDocument->GetBASM(), SC_HINT_DATACHANGED); for (SCCOL j=nStartCol; j<=nEndCol; j++) aCol[j].DeleteRow(nStartRow, nSize, pGroupPos); } @@ -430,7 +430,7 @@ void ScTable::DeleteArea( if (ValidColRow(nCol1, nRow1) && ValidColRow(nCol2, nRow2)) { { // scope for bulk broadcast - ScBulkBroadcast aBulkBroadcast( pDocument->GetBASM()); + ScBulkBroadcast aBulkBroadcast( pDocument->GetBASM(), SC_HINT_DATACHANGED); for (SCCOL i = nCol1; i <= nCol2; i++) aCol[i].DeleteArea(nRow1, nRow2, nDelFlag, bBroadcast, pBroadcastSpans); } @@ -457,7 +457,7 @@ void ScTable::DeleteArea( void ScTable::DeleteSelection( InsertDeleteFlags nDelFlag, const ScMarkData& rMark, bool bBroadcast ) { { // scope for bulk broadcast - ScBulkBroadcast aBulkBroadcast( pDocument->GetBASM()); + ScBulkBroadcast aBulkBroadcast( pDocument->GetBASM(), SC_HINT_DATACHANGED); for (SCCOL i=0; i<=MAXCOL; i++) aCol[i].DeleteSelection(nDelFlag, rMark, bBroadcast); } diff --git a/sc/source/core/inc/bcaslot.hxx b/sc/source/core/inc/bcaslot.hxx index a7d020b..e4f0dbd 100644 --- a/sc/source/core/inc/bcaslot.hxx +++ b/sc/source/core/inc/bcaslot.hxx @@ -318,12 +318,12 @@ public: const ScRange& rRange, SCsCOL nDx, SCsROW nDy, SCsTAB nDz ); void EnterBulkBroadcast(); - void LeaveBulkBroadcast(); + void LeaveBulkBroadcast( sal_uInt32 nHintId ); bool InsertBulkArea( const ScBroadcastArea* p ); void InsertBulkGroupArea( ScBroadcastArea* pArea, const ScRange& rRange ); void RemoveBulkGroupArea( ScBroadcastArea* pArea ); - void BulkBroadcastGroupAreas(); + void BulkBroadcastGroupAreas( sal_uInt32 nHintId ); /// @return: how many removed size_t RemoveBulkArea( const ScBroadcastArea* p ); @@ -350,8 +350,11 @@ public: class ScBulkBroadcast { ScBroadcastAreaSlotMachine* pBASM; + sal_uInt32 mnHintId; public: - explicit ScBulkBroadcast( ScBroadcastAreaSlotMachine* p ) : pBASM(p) + explicit ScBulkBroadcast( ScBroadcastAreaSlotMachine* p, sal_uInt32 nHintId ) : + pBASM(p), + mnHintId(nHintId) { if (pBASM) pBASM->EnterBulkBroadcast(); @@ -359,7 +362,7 @@ public: ~ScBulkBroadcast() { if (pBASM) - pBASM->LeaveBulkBroadcast(); + pBASM->LeaveBulkBroadcast( mnHintId ); } }; diff --git a/sc/source/core/tool/bulkdatahint.cxx b/sc/source/core/tool/bulkdatahint.cxx index 72ac7c0..fde0012 100644 --- a/sc/source/core/tool/bulkdatahint.cxx +++ b/sc/source/core/tool/bulkdatahint.cxx @@ -21,8 +21,8 @@ struct BulkDataHint::Impl mpSpans(pSpans) {} }; -BulkDataHint::BulkDataHint( ScDocument& rDoc, const ColumnSpanSet* pSpans ) : - SfxSimpleHint(SC_HINT_BULK_DATACHANGED), mpImpl(new Impl(rDoc, pSpans)) {} +BulkDataHint::BulkDataHint( ScDocument& rDoc, const ColumnSpanSet* pSpans, sal_uInt32 nHintId ) : + SfxSimpleHint( SC_HINT_BULK_DATACHANGED | nHintId ), mpImpl(new Impl(rDoc, pSpans)) {} BulkDataHint::~BulkDataHint() { diff --git a/sc/source/core/tool/grouparealistener.cxx b/sc/source/core/tool/grouparealistener.cxx index 70847d82..dd89c69 100644 --- a/sc/source/core/tool/grouparealistener.cxx +++ b/sc/source/core/tool/grouparealistener.cxx @@ -111,19 +111,16 @@ void FormulaGroupAreaListener::Notify( const SfxHint& rHint ) if (!pSimpleHint) return; - switch (pSimpleHint->GetId()) + // SC_HINT_BULK_DATACHANGED may include (SC_HINT_DATACHANGED | + // SC_HINT_TABLEOPDIRTY) so has to be checked first. + if (pSimpleHint->GetId() & SC_HINT_BULK_DATACHANGED) { - case SC_HINT_DATACHANGED: - notifyCellChange(rHint, static_cast<const ScHint*>(pSimpleHint)->GetAddress()); - break; - case SC_HINT_BULK_DATACHANGED: - { - const BulkDataHint& rBulkHint = static_cast<const BulkDataHint&>(*pSimpleHint); - notifyBulkChange(rBulkHint); - } - break; - default: - ; + const BulkDataHint& rBulkHint = static_cast<const BulkDataHint&>(rHint); + notifyBulkChange(rBulkHint); + } + else if (pSimpleHint->GetId() & (SC_HINT_DATACHANGED | SC_HINT_TABLEOPDIRTY)) + { + notifyCellChange(rHint, static_cast<const ScHint*>(&rHint)->GetAddress()); } } commit ae38dbaeaf4772aec0c0727cda26a109d482909a Author: Maxim Monastirsky <[email protected]> Date: Fri Nov 11 01:27:49 2016 +0200 tdf#103826 Missing master page pane context menus in Draw (cherry picked from commit 749fe62b32acc3159cf2756aae16df36f091a862) changes from master: Removed officecfg part to avoid breaking string freeze, added nullptr check to be on the safe side. Change-Id: I355e9507692e770063a91d05efd3ebc3e2671d57 Reviewed-on: https://gerrit.libreoffice.org/30766 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/framework/source/uielement/resourcemenucontroller.cxx b/framework/source/uielement/resourcemenucontroller.cxx index 57674a1..2358f1b 100644 --- a/framework/source/uielement/resourcemenucontroller.cxx +++ b/framework/source/uielement/resourcemenucontroller.cxx @@ -181,6 +181,9 @@ void ResourceMenuController::updatePopupMenu() } } + if ( !m_xMenuContainer.is() ) + return; + // Clear previous content. if ( m_xMenuBarManager.is() ) { @@ -246,9 +249,6 @@ void ResourceMenuController::addVerbs( const css::uno::Sequence< css::embed::Ver void ResourceMenuController::fillToolbarData() { - if ( !m_xMenuContainer.is() ) - return; - VCLXMenu* pAwtMenu = VCLXMenu::GetImplementation( m_xPopupMenu ); Menu* pVCLMenu = pAwtMenu->GetMenu(); diff --git a/sd/UIConfig_sdraw.mk b/sd/UIConfig_sdraw.mk index b166919..089814d 100644 --- a/sd/UIConfig_sdraw.mk +++ b/sd/UIConfig_sdraw.mk @@ -34,6 +34,8 @@ $(eval $(call gb_UIConfig_add_popupmenufiles,modules/sdraw,\ sd/uiconfig/sdraw/popupmenu/multiselect \ sd/uiconfig/sdraw/popupmenu/oleobject \ sd/uiconfig/sdraw/popupmenu/outlinetext \ + sd/uiconfig/sdraw/popupmenu/pagepanemaster \ + sd/uiconfig/sdraw/popupmenu/pagepanenoselmaster \ sd/uiconfig/sdraw/popupmenu/pagepanenosel \ sd/uiconfig/sdraw/popupmenu/pagepane \ sd/uiconfig/sdraw/popupmenu/pagetab \ diff --git a/sd/uiconfig/sdraw/popupmenu/pagepanemaster.xml b/sd/uiconfig/sdraw/popupmenu/pagepanemaster.xml new file mode 100644 index 0000000..bf160df --- /dev/null +++ b/sd/uiconfig/sdraw/popupmenu/pagepanemaster.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * +--> +<menu:menupopup xmlns:menu="http://openoffice.org/2001/menu"> + <menu:menuitem menu:id=".uno:Cut"/> + <menu:menuitem menu:id=".uno:Copy"/> + <menu:menuitem menu:id=".uno:Paste"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertMasterPage"/> + <menu:menuitem menu:id=".uno:DeleteMasterPage"/> + <menu:menuitem menu:id=".uno:RenameMasterPage"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:PresentationLayout"/> +</menu:menupopup> diff --git a/sd/uiconfig/sdraw/popupmenu/pagepanenoselmaster.xml b/sd/uiconfig/sdraw/popupmenu/pagepanenoselmaster.xml new file mode 100644 index 0000000..919e3c5 --- /dev/null +++ b/sd/uiconfig/sdraw/popupmenu/pagepanenoselmaster.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * +--> +<menu:menupopup xmlns:menu="http://openoffice.org/2001/menu"> + <menu:menuitem menu:id=".uno:Cut"/> + <menu:menuitem menu:id=".uno:Copy"/> + <menu:menuitem menu:id=".uno:Paste"/> + <menu:menuseparator/> + <menu:menuitem menu:id=".uno:InsertMasterPage"/> +</menu:menupopup> commit 921d0970969b0a8fb7b39d497ff356c156632027 Author: Maxim Monastirsky <[email protected]> Date: Tue Nov 8 10:07:18 2016 +0200 tdf#103087 Border widget must not have focus initially ... unless it was opened using the keyboard. (based on 66b75b4ba9f0a1c8003fa52c7a29575e374644a2) Change-Id: I95753d1c3086177764a08e654a3ff925243743e1 Reviewed-on: https://gerrit.libreoffice.org/30687 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index b711eb5..28684f4 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -259,7 +259,6 @@ private: protected: virtual void Resize() override; virtual bool Close() override; - virtual void GetFocus() override; public: SvxFrameWindow_Impl( sal_uInt16 nId, const Reference< XFrame >& rFrame, vcl::Window* pParentWindow ); @@ -271,6 +270,7 @@ public: virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) override; virtual void DataChanged( const DataChangedEvent& rDCEvt ) override; + virtual void KeyInput( const KeyEvent& rKEvt ) override; }; class SvxLineWindow_Impl : public SfxPopupWindow @@ -1664,10 +1664,10 @@ void SvxFrameWindow_Impl::dispose() SfxPopupWindow::dispose(); } -void SvxFrameWindow_Impl::GetFocus() +void SvxFrameWindow_Impl::KeyInput( const KeyEvent& rKEvt ) { - if (aFrameSet) - aFrameSet->GrabFocus(); + aFrameSet->GrabFocus(); + aFrameSet->KeyInput( rKEvt ); } void SvxFrameWindow_Impl::DataChanged( const DataChangedEvent& rDCEvt ) @@ -2930,6 +2930,13 @@ VclPtr<SfxPopupWindow> SvxFrameToolBoxControl::CreatePopupWindow() FloatWinPopupFlags::AllowTearOff | FloatWinPopupFlags::NoAppFocusClose ); pFrameWin->StartSelection(); + + if ( GetToolBox().IsKeyEvent() ) + { + KeyEvent aEvent( 0, vcl::KeyCode( KEY_HOME ) ); + pFrameWin->KeyInput( aEvent ); + } + SetPopupWindow( pFrameWin ); return pFrameWin; commit 480a2116daf306a07872d7fcf5681a368f4e5f05 Author: Miklos Vajna <[email protected]> Date: Tue Nov 8 09:11:33 2016 +0100 tdf#79329 DOCX import: fix missing outer table with floattable at cell start The bug document has a normal table, then its C1 cell starts with a nested table, which is floating. The problem is that converting the nested table to a textframe invalidates the start text range of the C1 cell in the outer table we store, so the conversion of the outer table from text to table fails. This never worked, so to avoid the regression just don't convert inner floating tables to textframes when they're anchored at the cell start. A more general fix in the future can be addressing the actual invalidation of the cell start/end text ranges, and then this specific fix will not be necessary anymore. (cherry picked from commit c1eebcdac9f2b289fd363399130c485ca5ff444c) Conflicts: sw/qa/extras/ooxmlexport/ooxmlexport9.cxx writerfilter/source/dmapper/DomainMapper.cxx Change-Id: I12cefa41977cf719b07b0fb3ef9ec423c17ef3b1 Reviewed-on: https://gerrit.libreoffice.org/30770 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/sw/qa/extras/ooxmlexport/data/tdf79329.docx b/sw/qa/extras/ooxmlexport/data/tdf79329.docx new file mode 100644 index 0000000..142f295 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf79329.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx index 6babd92..c3b94a7 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx @@ -59,6 +59,14 @@ DECLARE_OOXMLEXPORT_TEST( testChildNodesOfCubicBezierTo, "FDO74774.docx") "/w:document/w:body/w:p[2]/w:r[1]/mc:AlternateContent[1]/mc:Choice/w:drawing[1]/wp:inline[1]/a:graphic[1]/a:graphicData[1]/wpg:wgp[1]/wps:wsp[3]/wps:spPr[1]/a:custGeom[1]/a:pathLst[1]/a:path[1]/a:cubicBezTo[2]/a:pt[3]"); } +DECLARE_OOXMLEXPORT_TEST(testTdf79329, "tdf79329.docx") +{ + uno::Reference<text::XTextTablesSupplier> xTablesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xTables(xTablesSupplier->getTextTables(), uno::UNO_QUERY); + // This was 1: only the inner, not the outer table was created. + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), xTables->getCount()); +} + DECLARE_OOXMLEXPORT_TEST(testMSwordHang,"test_msword_hang.docx") { // fdo#74771: diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index e309870..a46c6f6 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -2542,6 +2542,11 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext ) break; case NS_ooxml::LN_tblStart: + if (m_pImpl->hasTableManager()) + { + bool bTableStartsAtCellStart = m_pImpl->m_nTableDepth > 0 && m_pImpl->m_nTableCellDepth > m_pImpl->m_nLastTableCellParagraphDepth + 1; + m_pImpl->getTableManager().setTableStartsAtCellStart(bTableStartsAtCellStart); + } /* * Hack for Importing Section Properties * LO is not able to import section properties if first element in the @@ -2559,6 +2564,13 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const PropertyMapPtr& rContext ) case NS_ooxml::LN_tblEnd: m_pImpl->m_nTableDepth--; break; + case NS_ooxml::LN_tcStart: + m_pImpl->m_nTableCellDepth++; + break; + case NS_ooxml::LN_tcEnd: + m_pImpl->m_nTableCellDepth--; + m_pImpl->m_nLastTableCellParagraphDepth = 0; + break; case NS_ooxml::LN_glow_glow: case NS_ooxml::LN_shadow_shadow: case NS_ooxml::LN_reflection_reflection: diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 1769982..43ef3be 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -969,7 +969,7 @@ static void lcl_ApplyCellParaProps(uno::Reference<table::XCell> const& xCell, } } -void DomainMapperTableHandler::endTable(unsigned int nestedTableLevel) +void DomainMapperTableHandler::endTable(unsigned int nestedTableLevel, bool bTableStartsAtCellStart) { #ifdef DEBUG_WRITERFILTER TagLogger::getInstance().startElement("tablehandler.endTable"); @@ -1114,7 +1114,10 @@ void DomainMapperTableHandler::endTable(unsigned int nestedTableLevel) { // m_xText points to the body text, get the current xText from m_rDMapper_Impl, in case e.g. we would be in a header. uno::Reference<text::XTextAppendAndConvert> xTextAppendAndConvert(m_rDMapper_Impl.GetTopTextAppend(), uno::UNO_QUERY); - if (xTextAppendAndConvert.is()) + // Only execute the conversion if the table is not anchored at + // the start of an outer table cell, that's not yet + // implemented. + if (xTextAppendAndConvert.is() && !bTableStartsAtCellStart) xTextAppendAndConvert->convertToTextFrame(xStart, xEnd, comphelper::containerToSequence(aFrameProperties)); } } diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.hxx b/writerfilter/source/dmapper/DomainMapperTableHandler.hxx index b1ac2f1..ed9cb04 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.hxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.hxx @@ -94,7 +94,7 @@ public: */ void startTable(unsigned int nDepth, const TablePropertyMapPtr& pProps); /// Handle end of table. - void endTable(unsigned int nestedTableLevel); + void endTable(unsigned int nestedTableLevel, bool bTableStartsAtCellStart); /** Handle start of row. diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index dc054bc..08de96e 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -232,6 +232,8 @@ DomainMapper_Impl::DomainMapper_Impl( m_bIsNewDoc(!rMediaDesc.getUnpackedValueOrDefault("InsertMode", false)), m_bInTableStyleRunProps(false), m_nTableDepth(0), + m_nTableCellDepth(0), + m_nLastTableCellParagraphDepth(0), m_bHasFtnSep(false), m_bIgnoreNextPara(false), m_bIgnoreNextTab(false), @@ -1023,6 +1025,7 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap ) TagLogger::getInstance().startElement("finishParagraph"); #endif + m_nLastTableCellParagraphDepth = m_nTableCellDepth; ParagraphPropertyMap* pParaContext = dynamic_cast< ParagraphPropertyMap* >( pPropertyMap.get() ); if (m_aTextAppendStack.empty()) return; diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index 5b33c39..5f2ce81 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -818,6 +818,10 @@ public: * inTbl SPRM or not). */ sal_Int32 m_nTableDepth; + /// Raw table cell depth. + sal_Int32 m_nTableCellDepth; + /// Table cell depth of the last finished paragraph. + sal_Int32 m_nLastTableCellParagraphDepth; /// If the document has a footnote separator. bool m_bHasFtnSep; diff --git a/writerfilter/source/dmapper/TableManager.cxx b/writerfilter/source/dmapper/TableManager.cxx index b574d83..432abc9 100644 --- a/writerfilter/source/dmapper/TableManager.cxx +++ b/writerfilter/source/dmapper/TableManager.cxx @@ -314,7 +314,7 @@ void TableManager::resolveCurrentTable() mpTableDataHandler->endRow(); } - mpTableDataHandler->endTable(mTableDataStack.size() - 1); + mpTableDataHandler->endTable(mTableDataStack.size() - 1, m_bTableStartsAtCellStart); } catch (css::uno::Exception const& e) { @@ -454,8 +454,14 @@ void TableManager::cellDepth(sal_uInt32 nDepth) mnTableDepthNew = nDepth; } +void TableManager::setTableStartsAtCellStart(bool bTableStartsAtCellStart) +{ + m_bTableStartsAtCellStart = bTableStartsAtCellStart; +} + TableManager::TableManager() - : mnTableDepthNew(0), mnTableDepth(0), mbKeepUnfinishedRow(false) + : mnTableDepthNew(0), mnTableDepth(0), mbKeepUnfinishedRow(false), + m_bTableStartsAtCellStart(false) { setRowEnd(false); setInCell(false); diff --git a/writerfilter/source/dmapper/TableManager.hxx b/writerfilter/source/dmapper/TableManager.hxx index 334634d..f3d5f66 100644 --- a/writerfilter/source/dmapper/TableManager.hxx +++ b/writerfilter/source/dmapper/TableManager.hxx @@ -314,6 +314,8 @@ private: std::stack<TableData::Pointer_t> mTableDataStack; RowData::Pointer_t mpUnfinishedRow; bool mbKeepUnfinishedRow; + /// If this is a nested table, does it start at cell start? + bool m_bTableStartsAtCellStart; /** handler for resolveCurrentTable @@ -515,6 +517,7 @@ public: bool isIgnore() const; + void setTableStartsAtCellStart(bool bTableStartsAtCellStart); }; } diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx index 645ade6..d804e1d 100644 --- a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx +++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx @@ -1284,6 +1284,17 @@ OOXMLFastContextHandlerTextTableCell::~OOXMLFastContextHandlerTextTableCell() void OOXMLFastContextHandlerTextTableCell::startCell() { + if (isForwardEvents()) + { + OOXMLPropertySet * pProps = new OOXMLPropertySet; + { + OOXMLValue::Pointer_t pVal = OOXMLBooleanValue::Create(mnTableDepth > 0); + OOXMLProperty::Pointer_t pProp(new OOXMLProperty(NS_ooxml::LN_tcStart, pVal, OOXMLProperty::SPRM)); + pProps->add(pProp); + } + + mpStream->props(writerfilter::Reference<Properties>::Pointer_t(pProps)); + } } void OOXMLFastContextHandlerTextTableCell::endCell() @@ -1306,6 +1317,11 @@ void OOXMLFastContextHandlerTextTableCell::endCell() OOXMLProperty::Pointer_t pProp(new OOXMLProperty(NS_ooxml::LN_tblCell, pVal, OOXMLProperty::SPRM)); pProps->add(pProp); } + { + OOXMLValue::Pointer_t pVal = OOXMLBooleanValue::Create(mnTableDepth > 0); + OOXMLProperty::Pointer_t pProp(new OOXMLProperty(NS_ooxml::LN_tcEnd, pVal, OOXMLProperty::SPRM)); + pProps->add(pProp); + } mpStream->props(writerfilter::Reference<Properties>::Pointer_t(pProps)); } diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx index f713fcf..60d423c 100644 --- a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx +++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx @@ -391,7 +391,7 @@ public: virtual std::string getType() const override { return "TextTableCell"; } - static void startCell(); + void startCell(); void endCell(); }; diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml index 61438c3..3b6a03e 100644 --- a/writerfilter/source/ooxml/model.xml +++ b/writerfilter/source/ooxml/model.xml @@ -40,6 +40,8 @@ <token tokenid="ooxml:object"/> <token tokenid="ooxml:tblStart"/> <token tokenid="ooxml:tblEnd"/> + <token tokenid="ooxml:tcStart"/> + <token tokenid="ooxml:tcEnd"/> <!-- These are not directly generated from OOXML XML elements / attributes, need to clean them up in the future. --> <token tokenid="ooxml:tblDepth"/> commit 2d4d306d414b4d598346130f90f1933e9fc84b6f Author: Tomaž Vajngerl <[email protected]> Date: Thu Nov 3 23:05:25 2016 +0100 tdf#103803 change from BGRA to RGBA color arrangement on Windows BGRA is native color arrangement on Windows however some intel drivers have problems with large textures if they read from a BGRA buffer. So with this commit we switch to RGBA color arrangement. This shouldn't cause much performance differences, but we need to convert from RGBA to BGRA when printing. + fix: wrong GL format for RGBA image buffers commit: ed42212f53b2e52238346e64dae31a931d6c90a1 Reviewed-on: https://gerrit.libreoffice.org/30544 Tested-by: Jenkins <[email protected]> Reviewed-by: Tomaž Vajngerl <[email protected]> (cherry picked from commit 6b571ae4608ac15256eb7582f442ce69975370f3) Change-Id: Ic112dc6a6c5d8b70e96041d0de15a03bbbdc406f Reviewed-on: https://gerrit.libreoffice.org/30763 Tested-by: Jenkins <[email protected]> Reviewed-by: Michael Meeks <[email protected]> Tested-by: Michael Meeks <[email protected]> diff --git a/vcl/opengl/salbmp.cxx b/vcl/opengl/salbmp.cxx index ef081ee..f9b8005 100644 --- a/vcl/opengl/salbmp.cxx +++ b/vcl/opengl/salbmp.cxx @@ -55,27 +55,15 @@ inline bool determineTextureFormat(sal_uInt16 nBits, GLenum& nFormat, GLenum& nT nType = GL_UNSIGNED_BYTE; return true; case 16: -#ifdef _WIN32 - nFormat = GL_BGR; -#else nFormat = GL_RGB; -#endif nType = GL_UNSIGNED_SHORT_5_6_5; return true; case 24: -#ifdef _WIN32 - nFormat = GL_BGR; -#else nFormat = GL_RGB; -#endif nType = GL_UNSIGNED_BYTE; return true; case 32: -#ifdef _WIN32 - nFormat = GL_BGRA; -#else nFormat = GL_RGBA; -#endif nType = GL_UNSIGNED_BYTE; return true; default: @@ -816,16 +804,6 @@ BitmapBuffer* OpenGLSalBitmap::AcquireBuffer( BitmapAccessMode nMode ) break; case 16: { -#ifdef _WIN32 - pBuffer->mnFormat = ScanlineFormat::N16BitTcLsbMask; - ColorMaskElement aRedMask(0x00007c00); - aRedMask.CalcMaskShift(); - ColorMaskElement aGreenMask(0x000003e0); - aGreenMask.CalcMaskShift(); - ColorMaskElement aBlueMask(0x0000001f); - aBlueMask.CalcMaskShift(); - pBuffer->maColorMask = ColorMask(aRedMask, aGreenMask, aBlueMask); -#else pBuffer->mnFormat = ScanlineFormat::N16BitTcMsbMask; ColorMaskElement aRedMask(0x0000f800); aRedMask.CalcMaskShift(); @@ -834,30 +812,15 @@ BitmapBuffer* OpenGLSalBitmap::AcquireBuffer( BitmapAccessMode nMode ) ColorMaskElement aBlueMask(0x0000001f); aBlueMask.CalcMaskShift(); pBuffer->maColorMask = ColorMask(aRedMask, aGreenMask, aBlueMask); -#endif break; } case 24: { -#ifdef _WIN32 - pBuffer->mnFormat = ScanlineFormat::N24BitTcBgr; -#else pBuffer->mnFormat = ScanlineFormat::N24BitTcRgb; -#endif break; } case 32: { -#ifdef _WIN32 - pBuffer->mnFormat = ScanlineFormat::N32BitTcBgra; - ColorMaskElement aRedMask(0x00ff0000); - aRedMask.CalcMaskShift(); - ColorMaskElement aGreenMask(0x0000ff00); - aGreenMask.CalcMaskShift(); - ColorMaskElement aBlueMask(0x000000ff); - aBlueMask.CalcMaskShift(); - pBuffer->maColorMask = ColorMask(aRedMask, aGreenMask, aBlueMask); -#else pBuffer->mnFormat = ScanlineFormat::N32BitTcRgba; ColorMaskElement aRedMask(0xff000000); aRedMask.CalcMaskShift(); @@ -866,7 +829,6 @@ BitmapBuffer* OpenGLSalBitmap::AcquireBuffer( BitmapAccessMode nMode ) ColorMaskElement aBlueMask(0x0000ff00); aBlueMask.CalcMaskShift(); pBuffer->maColorMask = ColorMask(aRedMask, aGreenMask, aBlueMask); -#endif break; } } diff --git a/vcl/win/gdi/salgdi2.cxx b/vcl/win/gdi/salgdi2.cxx index 8514e73..751b8c9 100644 --- a/vcl/win/gdi/salgdi2.cxx +++ b/vcl/win/gdi/salgdi2.cxx @@ -73,6 +73,45 @@ void WinSalGraphics::copyArea( long nDestX, long nDestY, namespace { +class ColorScanlineConverter +{ +public: + ScanlineFormat meSourceFormat; + ScanlineFormat meDestinationFormat; + + int mnComponentSize; + int mnComponentExchangeIndex; + + long mnScanlineSize; + + ColorScanlineConverter(ScanlineFormat eSourceFormat, ScanlineFormat eDestinationFormat, int nComponentSize, long nScanlineSize) + : meSourceFormat(eSourceFormat) + , meDestinationFormat(eDestinationFormat) + , mnComponentSize(nComponentSize) + , mnComponentExchangeIndex(0) + , mnScanlineSize(nScanlineSize) + { + if (meSourceFormat == ScanlineFormat::N32BitTcAbgr || + meSourceFormat == ScanlineFormat::N32BitTcArgb) + { + mnComponentExchangeIndex = 1; + } + } + + void convertScanline(sal_uInt8* pSource, sal_uInt8* pDestination) + { + for (int x = 0; x < mnScanlineSize; x += mnComponentSize) + { + for (int i = 0; i < mnComponentSize; ++i) + { + pDestination[x + i] = pSource[x + i]; + } + pDestination[x + mnComponentExchangeIndex + 0] = pSource[x + mnComponentExchangeIndex + 2]; + pDestination[x + mnComponentExchangeIndex + 2] = pSource[x + mnComponentExchangeIndex + 0]; + } + } +}; + void convertToWinSalBitmap(SalBitmap& rSalBitmap, WinSalBitmap& rWinSalBitmap) { BitmapPalette aBitmapPalette; @@ -90,11 +129,31 @@ void convertToWinSalBitmap(SalBitmap& rSalBitmap, WinSalBitmap& rWinSalBitmap) sal_uInt8* pSource(pRead->mpBits); sal_uInt8* pDestination(pWrite->mpBits); - for (long y = 0; y < pRead->mnHeight; y++) + std::unique_ptr<ColorScanlineConverter> pConverter; + + if (pRead->mnFormat == ScanlineFormat::N24BitTcRgb) + pConverter.reset(new ColorScanlineConverter(ScanlineFormat::N24BitTcRgb, ScanlineFormat::N24BitTcBgr, + 3, pRead->mnScanlineSize)); + else if (pRead->mnFormat == ScanlineFormat::N32BitTcRgba) + pConverter.reset(new ColorScanlineConverter(ScanlineFormat::N32BitTcRgba, ScanlineFormat::N32BitTcBgra, + 4, pRead->mnScanlineSize)); + if (pConverter) + { + for (long y = 0; y < pRead->mnHeight; y++) + { + pConverter->convertScanline(pSource, pDestination); + pSource += pRead->mnScanlineSize; + pDestination += pWrite->mnScanlineSize; + } + } + else { - memcpy(pDestination, pSource, pRead->mnScanlineSize); - pSource += pRead->mnScanlineSize; - pDestination += pWrite->mnScanlineSize; + for (long y = 0; y < pRead->mnHeight; y++) + { + memcpy(pDestination, pSource, pRead->mnScanlineSize); + pSource += pRead->mnScanlineSize; + pDestination += pWrite->mnScanlineSize; + } } rWinSalBitmap.ReleaseBuffer(pWrite, BitmapAccessMode::Write); commit 483b00e699125523b048279569a2f964a7296c3f Author: Tomaž Vajngerl <[email protected]> Date: Thu Nov 3 23:11:18 2016 +0100 tdf#103804 reduced register areaScale shader and detection for intel Some intel drivers crash when areaScale shader with "large" array is used. This adds a "reduced register" version of the areaScale shader. We still use the first version of the shader for other drivers and switch between the 2 implementations with a runtime detection. Change-Id: I1860f898c03b40a600eb1b41f7262719382a7171 Reviewed-on: https://gerrit.libreoffice.org/30571 Reviewed-by: Tomaž Vajngerl <[email protected]> Tested-by: Tomaž Vajngerl <[email protected]> (cherry picked from commit d115a235bf3ff5366d992d01fb418a3eacb9d125) Reviewed-on: https://gerrit.libreoffice.org/30764 Tested-by: Jenkins <[email protected]> Reviewed-by: Michael Meeks <[email protected]> Tested-by: Michael Meeks <[email protected]> diff --git a/include/vcl/opengl/OpenGLContext.hxx b/include/vcl/opengl/OpenGLContext.hxx index 6863467..a7cc2d6 100644 --- a/include/vcl/opengl/OpenGLContext.hxx +++ b/include/vcl/opengl/OpenGLContext.hxx @@ -52,6 +52,15 @@ struct VCL_DLLPUBLIC GLWindow virtual ~GLWindow(); }; +struct VCL_DLLPUBLIC OpenGLCapabilitySwitch +{ + bool mbLimitedShaderRegisters; + + OpenGLCapabilitySwitch() + : mbLimitedShaderRegisters(false) + {} +}; + class VCL_DLLPUBLIC OpenGLContext { friend class OpenGLTests; @@ -94,6 +103,11 @@ public: return mpRenderState; } + OpenGLCapabilitySwitch& getOpenGLCapabilitySwitch() + { + return maOpenGLCapabilitySwitch; + } + /// Is this GL context the current context ? virtual bool isCurrent(); /// Is any GL context the current context ? @@ -165,6 +179,8 @@ protected: OpenGLFramebuffer* mpFirstFramebuffer; OpenGLFramebuffer* mpLastFramebuffer; + OpenGLCapabilitySwitch maOpenGLCapabilitySwitch; + private: struct ProgramHash { diff --git a/vcl/opengl/areaScaleFragmentShader.glsl b/vcl/opengl/areaScaleFragmentShader.glsl index c83c5e0..e161336 100644 --- a/vcl/opengl/areaScaleFragmentShader.glsl +++ b/vcl/opengl/areaScaleFragmentShader.glsl @@ -7,13 +7,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#version 120 -#if __VERSION__ < 130 -int min( int a, int b ) { return a < b ? a : b; } -float min( float a, float b ) { return a < b ? a : b; } -#endif - -/* TODO Use textureOffset for newest version of GLSL */ +#version 130 uniform sampler2D sampler; uniform int swidth; @@ -34,23 +28,108 @@ varying vec2 mask_coord; uniform sampler2D mask; #endif +vec4 getTexel(int x, int y) +{ + vec2 offset = vec2(x * xsrcconvert, y * ysrcconvert); + vec4 texel = texture2D(sampler, offset); +#ifdef MASKED + texel.a = 1.0 - texture2D(mask, offset).r; +#endif + return texel; +} + +#ifdef USE_REDUCED_REGISTER_VARIANT + +void main(void) +{ + // Convert to pixel coordinates again. + int dx = int(tex_coord.s * xdestconvert); + int dy = int(tex_coord.t * ydestconvert); + + // Compute the range of source pixels which will make up this destination pixel. + float fsx1 = min(dx * xscale, float(swidth - 1)); + float fsx2 = min(fsx1 + xscale, float(swidth - 1)); + + float fsy1 = min(dy * yscale, float(sheight - 1)); + float fsy2 = min(fsy1 + yscale, float(sheight - 1)); + + // To whole pixel coordinates. + int xstart = int(floor(fsx1)); + int xend = int(floor(fsx2)); + + int ystart = int(floor(fsy1)); + int yend = int(floor(fsy2)); + + float xlength = fsx2 - fsx1; + float ylength = fsy2 - fsy1; + + float xContribution[3]; + xContribution[0] = (1.0 - max(0.0, fsx1 - xstart)) / xlength; + xContribution[1] = 1.0 / xlength; + xContribution[2] = (1.0 - max(0.0, (xend + 1) - fsx2)) / xlength; + + float yContribution[3]; + yContribution[0] = (1.0 - max(0.0, fsy1 - ystart)) / ylength; + yContribution[1] = 1.0 / ylength; + yContribution[2] = (1.0 - max(0.0, (yend + 1) - fsy2)) / ylength; + + vec4 sumAll = vec4(0.0, 0.0, 0.0, 0.0); + vec4 texel; + // First Y pass + { + vec4 sumX = vec4(0.0, 0.0, 0.0, 0.0); + + sumX += getTexel(xstart, ystart) * xContribution[0]; + for (int x = xstart + 1; x < xend; ++x) + { + sumX += getTexel(x, ystart) * xContribution[1]; + } + sumX += getTexel(xend, ystart) * xContribution[2]; + + sumAll += sumX * yContribution[0]; + } + + // Middle Y Passes + for (int y = ystart + 1; y < yend; ++y) + { + vec4 sumX = vec4(0.0, 0.0, 0.0, 0.0); + + sumX += getTexel(xstart, y) * xContribution[0]; + for (int x = xstart + 1; x < xend; ++x) + { + sumX += getTexel(x, y) * xContribution[1]; + } + sumX += getTexel(xend, y) * xContribution[2]; + + sumAll += sumX * yContribution[1]; + } + + // Last Y pass + { + vec4 sumX = vec4(0.0, 0.0, 0.0, 0.0); + + sumX += getTexel(xstart, yend) * xContribution[0]; + for (int x = xstart + 1; x < xend; ++x) + { + sumX += getTexel(x, yend) * xContribution[1]; + } + sumX += getTexel(xend, yend) * xContribution[2]; + + sumAll += sumX * yContribution[2]; + } + + gl_FragColor = sumAll; +} +#else void main(void) { // Convert to pixel coordinates again. int dx = int( tex_coord.s * xdestconvert ); int dy = int( tex_coord.t * ydestconvert ); - // Note: These values are always the same for the same X (or Y), - // so they could be precalculated in C++ and passed to the shader, - // but GLSL has limits on the size of uniforms passed to it, - // so it'd need something like texture buffer objects from newer - // GLSL versions, and it seems the hassle is not really worth it. - - // How much each column/row will contribute to the resulting pixel. - // assert( xscale <= 100 ); assert( yscale <= 100 ); float xratio[ 16 + 2 ]; float yratio[ 16 + 2 ]; - // For finding the first and last source pixel. + int xpixel[ 16 + 2 ]; int ypixel[ 16 + 2 ]; @@ -147,5 +226,5 @@ void main(void) gl_FragColor = sum; } - +#endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx index 6c91013..34a8b51 100644 --- a/vcl/opengl/gdiimpl.cxx +++ b/vcl/opengl/gdiimpl.cxx @@ -1259,7 +1259,11 @@ bool scaleTexture(const rtl::Reference< OpenGLContext > &xContext, int nNewWidth = nWidth / ixscale; int nNewHeight = nHeight / iyscale; - OpenGLProgram* pProgram = xContext->UseProgram("textureVertexShader", "areaScaleFragmentShader"); + OString sUseReducedRegisterVariantDefine; + if (xContext->getOpenGLCapabilitySwitch().mbLimitedShaderRegisters) + sUseReducedRegisterVariantDefine = OString("#define USE_REDUCED_REGISTER_VARIANT\n"); + + OpenGLProgram* pProgram = xContext->UseProgram("textureVertexShader", "areaScaleFragmentShader", sUseReducedRegisterVariantDefine); if (pProgram == nullptr) return false; @@ -1324,6 +1328,11 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture( // See OpenGLSalBitmap::ImplScaleArea(). bool areaScaling = false; bool fastAreaScaling = false; + + OString sUseReducedRegisterVariantDefine; + if (mpContext->getOpenGLCapabilitySwitch().mbLimitedShaderRegisters) + sUseReducedRegisterVariantDefine = OString("#define USE_REDUCED_REGISTER_VARIANT\n"); + OUString textureFragmentShader; if( ixscale >= 2 && iyscale >= 2 ) // scale ratio less than 50% { @@ -1388,7 +1397,7 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture( { if( !UseProgram( "transformedTextureVertexShader", textureFragmentShader.isEmpty() ? "maskedTextureFragmentShader" : textureFragmentShader, - "#define MASKED" ) ) + "#define MASKED\n" + sUseReducedRegisterVariantDefine)) return; mpProgram->SetTexture( "mask", aInMask ); GLfloat aMaskCoord[8]; @@ -1400,7 +1409,8 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture( else { if( !UseProgram( "transformedTextureVertexShader", - textureFragmentShader.isEmpty() ? "textureFragmentShader" : textureFragmentShader ) ) + textureFragmentShader.isEmpty() ? "textureFragmentShader" : textureFragmentShader, + sUseReducedRegisterVariantDefine)) return; } diff --git a/vcl/opengl/scale.cxx b/vcl/opengl/scale.cxx index 9feb933..3e2b9d4 100644 --- a/vcl/opengl/scale.cxx +++ b/vcl/opengl/scale.cxx @@ -231,8 +231,14 @@ bool OpenGLSalBitmap::ImplScaleArea( const rtl::Reference< OpenGLContext > &xCon // TODO Make sure the framebuffer is alright + OString sUseReducedRegisterVariantDefine; + if (xContext->getOpenGLCapabilitySwitch().mbLimitedShaderRegisters) + sUseReducedRegisterVariantDefine = OString("#define USE_REDUCED_REGISTER_VARIANT\n"); + OpenGLProgram* pProgram = xContext->UseProgram( "textureVertexShader", - fast ? OUString( "areaScaleFastFragmentShader" ) : OUString( "areaScaleFragmentShader" )); + fast ? OUString( "areaScaleFastFragmentShader" ) : OUString( "areaScaleFragmentShader" ), + sUseReducedRegisterVariantDefine); + if( pProgram == nullptr ) return false; @@ -281,7 +287,7 @@ bool OpenGLSalBitmap::ImplScaleArea( const rtl::Reference< OpenGLContext > &xCon ixscale = 1 / rScaleX; iyscale = 1 / rScaleY; - pProgram = xContext->UseProgram("textureVertexShader", "areaScaleFragmentShader"); + pProgram = xContext->UseProgram("textureVertexShader", "areaScaleFragmentShader", sUseReducedRegisterVariantDefine); if (pProgram == nullptr) return false; diff --git a/vcl/opengl/win/gdiimpl.cxx b/vcl/opengl/win/gdiimpl.cxx index 310eb14..8d1fbea 100644 --- a/vcl/opengl/win/gdiimpl.cxx +++ b/vcl/opengl/win/gdiimpl.cxx @@ -633,6 +633,11 @@ bool WinOpenGLContext::ImplInit() bFirstCall = false; + static OString aVendor(reinterpret_cast<const char*>(glGetString(GL_VENDOR))); + + if (aVendor.equalsIgnoreAsciiCase("intel")) + maOpenGLCapabilitySwitch.mbLimitedShaderRegisters = true; + return true; } commit f362b060454e4f068683b49b43a90ea82aa92c6e Author: Eike Rathke <[email protected]> Date: Wed Oct 19 23:04:34 2016 +0200 Resolves: tdf#97968 adjust references during Cut&Paste of formula groups ... and split groups for cases where references point outside or into the moved range. Change-Id: Iab799e94eed1677f266413b6304651ac4d330e95 (cherry picked from commit dfa92e106f7eaa8c3fc6cda034001197ecc53a8f) Reviewed-on: https://gerrit.libreoffice.org/30067 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index bb1f564..ed04ccd 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -2072,6 +2072,7 @@ class UpdateRefOnNonCopy : public std::unary_function<sc::FormulaGroupEntry, voi const sc::RefUpdateContext* mpCxt; ScDocument* mpUndoDoc; bool mbUpdated; + bool mbClipboardSource; void recompileTokenArray( ScFormulaCell& rTopCell ) { @@ -2176,8 +2177,11 @@ class UpdateRefOnNonCopy : public std::unary_function<sc::FormulaGroupEntry, voi ScAddress aPos = pTop->aPos; ScAddress aOldPos = aPos; + bool bCellMoved; if (mpCxt->maRange.In(aPos)) { + bCellMoved = true; + // The cell is being moved or copied to a new position. The // position has already been updated prior to this call. // Determine its original position before the move which will be @@ -2188,6 +2192,10 @@ class UpdateRefOnNonCopy : public std::unary_function<sc::FormulaGroupEntry, voi aPos.Row() - mpCxt->mnRowDelta, aPos.Tab() - mpCxt->mnTabDelta); } + else + { + bCellMoved = false; + } bool bRecalcOnMove = pCode->IsRecalcModeOnRefMove(); if (bRecalcOnMove) @@ -2224,7 +2232,10 @@ class UpdateRefOnNonCopy : public std::unary_function<sc::FormulaGroupEntry, voi p->SetDirty(); } - fillUndoDoc(aOldPos, rGroup.mnLength, *pOldCode); + // Move from clipboard is Cut&Paste, then do not copy the original + // positions' formula cells to the Undo document. + if (!mbClipboardSource || !bCellMoved) + fillUndoDoc(aOldPos, rGroup.mnLength, *pOldCode); } } @@ -2264,7 +2275,8 @@ public: SCCOL nCol, SCTAB nTab, const sc::RefUpdateContext* pCxt, ScDocument* pUndoDoc) : mnCol(nCol), mnTab(nTab), mpCxt(pCxt), - mpUndoDoc(pUndoDoc), mbUpdated(false) {} + mpUndoDoc(pUndoDoc), mbUpdated(false), + mbClipboardSource(pCxt->mrDoc.IsClipboardSource()){} void operator() ( sc::FormulaGroupEntry& rGroup ) { diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx index f17e8eb..28fdcad 100644 --- a/sc/source/core/tool/token.cxx +++ b/sc/source/core/tool/token.cxx @@ -4476,6 +4476,9 @@ void checkBounds( { assert(!"can't move"); } + + // Check bounds also against the range moved into. + pDeletedRange = &rCxt.maRange; } else if (rCxt.meMode == URM_INSDEL && ((rCxt.mnColDelta < 0 && rCxt.maRange.aStart.Col() > 0) || commit 3498a66f723dd2b57897a21a1a65c66a03688f15 Author: Caolán McNamara <[email protected]> Date: Thu Nov 10 16:10:07 2016 +0000 Resolves: tdf#103809 the argument is a bool* not a VclPtr (cherry picked from commit 8445764681bfe7bd6cd31194878e1314a8fafa3b) Change-Id: Ia07f4ff7b243708304186c840135ec1180621fa5 Reviewed-on: https://gerrit.libreoffice.org/30760 Tested-by: Jenkins <[email protected]> Reviewed-by: Maxim Monastirsky <[email protected]> diff --git a/sw/source/uibase/utlui/navipi.cxx b/sw/source/uibase/utlui/navipi.cxx index 2a62187..365653e 100644 --- a/sw/source/uibase/utlui/navipi.cxx +++ b/sw/source/uibase/utlui/navipi.cxx @@ -230,7 +230,7 @@ IMPL_LINK_TYPED( SwNavigationPI, ToolBoxSelectHdl, ToolBox *, pBox, void ) { // #i75416# move the execution of the search to an asynchronously called static link bool* pbNext = new bool( FN_DOWN == nCurrItemId ); - Application::PostUserEvent( LINK(pView, SwView, MoveNavigationHdl), pbNext, true ); + Application::PostUserEvent( LINK(pView, SwView, MoveNavigationHdl), pbNext ); } break; case FN_SHOW_ROOT: commit 688612e06d0c38fd6ce90fef466d5a4faefddc01 Author: Caolán McNamara <[email protected]> Date: Mon Nov 7 17:06:54 2016 +0000 google docs can generate a pptx with an empty cmLst Change-Id: I2a3dcae5361929c6880b2da1b3107cb2c8141f32 (cherry picked from commit e6157763e9fff300b86f3c17398216f306ba3f32) Reviewed-on: https://gerrit.libreoffice.org/30672 Reviewed-by: David Tardon <[email protected]> Tested-by: David Tardon <[email protected]> diff --git a/oox/source/ppt/presentationfragmenthandler.cxx b/oox/source/ppt/presentationfragmenthandler.cxx index 944f134..b67eb8b 100644 --- a/oox/source/ppt/presentationfragmenthandler.cxx +++ b/oox/source/ppt/presentationfragmenthandler.cxx @@ -325,15 +325,18 @@ void PresentationFragmentHandler::importSlide(sal_uInt32 nSlide, bool bFirstPage pCommentsPersistPtr->getCommentsList().cmLst.clear(); importSlide( xCommentsFragmentHandler, pCommentsPersistPtr ); - //set comment chars for last comment on slide - SlideFragmentHandler* comment_handler = - dynamic_cast<SlideFragmentHandler*>(xCommentsFragmentHandler.get()); - // some comments have no text -> set empty string as text to avoid - // crash (back() on empty vector is undefined) and losing other - // comment data that might be there (author, position, timestamp etc.) - pCommentsPersistPtr->getCommentsList().cmLst.back().setText( - comment_handler->getCharVector().empty() ? "" : - comment_handler->getCharVector().back() ); + if (!pCommentsPersistPtr->getCommentsList().cmLst.empty()) + { + //set comment chars for last comment on slide + SlideFragmentHandler* comment_handler = + dynamic_cast<SlideFragmentHandler*>(xCommentsFragmentHandler.get()); + // some comments have no text -> set empty string as text to avoid + // crash (back() on empty vector is undefined) and losing other + // comment data that might be there (author, position, timestamp etc.) + pCommentsPersistPtr->getCommentsList().cmLst.back().setText( + comment_handler->getCharVector().empty() ? "" : + comment_handler->getCharVector().back() ); + } pCommentsPersistPtr->getCommentAuthors().setValues(maAuthorList); //insert all comments from commentsList commit b09054de8fe149f1eb39a0589053b28e52aea7b5 Author: David Tardon <[email protected]> Date: Sat Nov 5 16:38:14 2016 +0100 remove OpenGL transitions config. file from scheme The OpenGL transitions are optional, so the respective config. file should only be listed in the ogltrans module. This reverts commit dafcb2844bda4af2bc290548548392bda3262307. Change-Id: Ie785db07d04a0baf3dc9fd385f1d8a34837dc38b (cherry picked from commit f316f413f589989013bf161170087e77a82db2d3) Reviewed-on: https://gerrit.libreoffice.org/30611 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/officecfg/registry/schema/org/openoffice/Office/Impress.xcs b/officecfg/registry/schema/org/openoffice/Office/Impress.xcs index 2ba88b4..0354165 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Impress.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Impress.xcs @@ -452,7 +452,7 @@ </desc> <label>List of files containing transition effects</label> </info> - <value oor:separator=";">vnd.sun.star.expand:$BRAND_BASE_DIR/$BRAND_SHARE_SUBDIR/config/soffice.cfg/simpress/transitions.xml;vnd.sun.star.expand:$BRAND_BASE_DIR/$BRAND_SHARE_SUBDIR/config/soffice.cfg/simpress/transitions-ogl.xml</value> + <value oor:separator=";">vnd.sun.star.expand:$BRAND_BASE_DIR/$BRAND_SHARE_SUBDIR/config/soffice.cfg/simpress/transitions.xml</value> </prop> <prop oor:name="EffectFiles" oor:type="oor:string-list" oor:nillable="false"> <!-- OldPath: --> commit 17dbf686cd6f77cb07b7b810f12b3942f2776f1c Author: Justin Luth <[email protected]> Date: Sat Nov 5 11:11:29 2016 +0300 tdf#90070 don't clip flys with borders regression from commit e598ab04476a32a08f18e8f0662fafa5f78f1a4a very aggressively forced a new frame size via compat setting CLIPPED_PICTURES on any fly - not just images. This only affects MS-format documents, EXCEPT that it is a document property, so if the file every spent any part of it's life in MS-format, it will always retain that compatibility setting. That explains why the problem was intermittent for me - and was hard to reproduce in a clean document, even though I'd seen it in .ODTs. bIgnoreLine (ignore the fact that there is no visible line) was a confusing word choice for "if there is no line, then return a spacing size of zero". bEvenIfNoLine=false is better. Change-Id: I50a3bdef3a67339ae517ee6319920651bc56f9be Reviewed-on: https://gerrit.libreoffice.org/30585 Tested-by: Jenkins <[email protected]> Reviewed-by: Justin Luth <[email protected]> (cherry picked from commit d034f273cb24ebe4fde20ad9089ac11cccf316d0) Reviewed-on: https://gerrit.libreoffice.org/30595 diff --git a/editeng/source/items/frmitems.cxx b/editeng/source/items/frmitems.cxx index 00a41e2..5c9c0ea 100644 --- a/editeng/source/items/frmitems.cxx +++ b/editeng/source/items/frmitems.cxx @@ -2390,7 +2390,7 @@ void SvxBoxItem::SetDistance( sal_uInt16 nNew, SvxBoxItemLine nLine ) } -sal_uInt16 SvxBoxItem::CalcLineSpace( SvxBoxItemLine nLine, bool bIgnoreLine ) const +sal_uInt16 SvxBoxItem::CalcLineSpace( SvxBoxItemLine nLine, bool bEvenIfNoLine ) const { SvxBorderLine* pTmp = nullptr; sal_uInt16 nDist = 0; @@ -2420,11 +2420,19 @@ sal_uInt16 SvxBoxItem::CalcLineSpace( SvxBoxItemLine nLine, bool bIgnoreLine ) c { nDist = nDist + pTmp->GetScaledWidth(); } - else if( !bIgnoreLine ) + else if( !bEvenIfNoLine ) nDist = 0; return nDist; } +bool SvxBoxItem::HasBorder( bool bTreatPaddingAsBorder ) const +{ + return CalcLineSpace( SvxBoxItemLine::BOTTOM, bTreatPaddingAsBorder ) + || CalcLineSpace( SvxBoxItemLine::RIGHT, bTreatPaddingAsBorder ) + || CalcLineSpace( SvxBoxItemLine::TOP, bTreatPaddingAsBorder ) + || CalcLineSpace( SvxBoxItemLine::LEFT, bTreatPaddingAsBorder ); +} + // class SvxBoxInfoItem -------------------------------------------------- SvxBoxInfoItem::SvxBoxInfoItem( const sal_uInt16 nId ) : diff --git a/include/editeng/boxitem.hxx b/include/editeng/boxitem.hxx index 58ccb21..2fa7ef0 100644 --- a/include/editeng/boxitem.hxx +++ b/include/editeng/boxitem.hxx @@ -109,8 +109,9 @@ public: void SetRemoveAdjacentCellBorder( bool bSet = true ) { bRemoveAdjCellBorder = bSet; } // Line width plus Space plus inward distance - // bIgnoreLine = TRUE -> Also return distance, when no Line is set - sal_uInt16 CalcLineSpace( SvxBoxItemLine nLine, bool bIgnoreLine = false ) const; + // bEvenIfNoLine = TRUE -> Also return distance, when no Line is set + sal_uInt16 CalcLineSpace( SvxBoxItemLine nLine, bool bEvenIfNoLine = false ) const; + bool HasBorder( bool bTreatPaddingAsBorder = false ) const; static css::table::BorderLine2 SvxLineToLine( const editeng::SvxBorderLine* pLine, bool bConvert ); static bool LineToSvxLine(const css::table::BorderLine& rLine, editeng::SvxBorderLine& rSvxLine, bool bConvert); static bool LineToSvxLine(const css::table::BorderLine2& rLine, editeng::SvxBorderLine& rSvxLine, bool bConvert); diff --git a/sw/source/core/doc/notxtfrm.cxx b/sw/source/core/doc/notxtfrm.cxx index d391bfa..8578e45 100644 --- a/sw/source/core/doc/notxtfrm.cxx +++ b/sw/source/core/doc/notxtfrm.cxx @@ -277,11 +277,23 @@ void SwNoTextFrame::Paint(vcl::RenderContext& rRenderContext, SwRect const& rRec // In case the picture fly frm was clipped, render it with the origin // size instead of scaling it - if ( rNoTNd.getIDocumentSettingAccess()->get( DocumentSettingId::CLIPPED_PICTURES ) ) + if ( pGrfNd && rNoTNd.getIDocumentSettingAccess()->get( DocumentSettingId::CLIPPED_PICTURES ) ) { const SwFlyFreeFrame *pFly = dynamic_cast< const SwFlyFreeFrame* >( FindFlyFrame() ); if( pFly ) - aGrfArea = SwRect( Frame().Pos( ), pFly->GetUnclippedFrame( ).SSize( ) ); + { + bool bGetUnclippedFrame=true; + const SfxPoolItem* pItem; + if( pFly->GetFormat() && SfxItemState::SET == pFly->GetFormat()->GetItemState(RES_BOX, false, &pItem) ) + { + const SvxBoxItem& rBox = *static_cast<const SvxBoxItem*>(pItem); + if( rBox.HasBorder( /*bTreatPaddingAsBorder*/true) ) + bGetUnclippedFrame = false; + } + + if( bGetUnclippedFrame ) + aGrfArea = SwRect( Frame().Pos( ), pFly->GetUnclippedFrame( ).SSize( ) ); + } } aPaintArea.Intersection_( aOrigPaint ); commit b6354501a0b7689ea4e12f8c616a362f66af0988 Author: Justin Luth <[email protected]> Date: Wed Oct 26 19:59:32 2016 +0300 tdf#62625 - reopen temp stream to readBasic .xls VBA InputStream was closed, but an InStream was still open, so InputStream was not being re-created. Apparently either most web protocols aren't properly closed, or else a second stream is needed for these kinds of protocols. Required on Linux for INetProtocol::Http, Generic, Smb, Sftp and perhaps more. Required on Windows/Mac for Remote WebDAV (although http://xx/xx.xls worked) Change-Id: Icb732518fb8185168c5ed1cb9e32c84c9d8d71bb Reviewed-on: https://gerrit.libreoffice.org/30303 Tested-by: Jenkins <[email protected]> Reviewed-by: Stephan Bergmann <[email protected]> (cherry picked from commit d9c7b0a01162254240a1328fa594991eccf6bc65) Reviewed-on: https://gerrit.libreoffice.org/30662 Reviewed-by: Justin Luth <[email protected]> diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx index f681bbf..a792860 100644 --- a/sfx2/source/doc/docfile.cxx +++ b/sfx2/source/doc/docfile.cxx @@ -2368,7 +2368,8 @@ void SfxMedium::GetLockingStream_Impl() void SfxMedium::GetMedium_Impl() { - if ( !pImpl->m_pInStream ) + if ( !pImpl->m_pInStream + || (pImpl->bIsTemp && !pImpl->xInputStream.is() && !pImpl->m_xInputStreamToLoadFrom.is() && !pImpl->xStream.is() && !pImpl->m_xLockingStream.is() ) ) { pImpl->bDownloadDone = false; Reference< css::task::XInteractionHandler > xInteractionHandler = GetInteractionHandler(); commit 37e3b2fcdccc068622d3c5bdc59edec6f8daa733 Author: David Tardon <[email protected]> Date: Sun Nov 6 14:00:50 2016 +0100 tdf#103696 ensure glm always uses radians This is set just locally for OGLTrans, because I have no idea what the other places that use glm expect... Change-Id: I83675ef2463ab945cb3d6885f803dcbae60a5558 (cherry picked from commit afe235a0abf9ef91a353a4d0dccf56961abd2fbf) Reviewed-on: https://gerrit.libreoffice.org/30610 Tested-by: Jenkins <[email protected]> Reviewed-by: Michael Stahl <[email protected]> diff --git a/slideshow/Library_OGLTrans.mk b/slideshow/Library_OGLTrans.mk index db1c788..032a88c 100644 --- a/slideshow/Library_OGLTrans.mk +++ b/slideshow/Library_OGLTrans.mk @@ -15,6 +15,10 @@ $(eval $(call gb_Library_add_defs,OGLTrans,\ )) endif +$(eval $(call gb_Library_add_defs,OGLTrans,\ + -DGLM_FORCE_RADIANS \ +)) + $(eval $(call gb_Library_use_sdk_api,OGLTrans)) $(eval $(call gb_Library_use_libraries,OGLTrans,\ commit e605851978056000e9492246020fb755fb0cbccf Author: Eike Rathke <[email protected]> Date: Tue Oct 18 19:30:24 2016 +0200 Resolves: tdf#101583 references to be expanded must be at least 2 cols/rows ... wide/tall also in named expressions. Change-Id: If0c192def74812cc9405ae633b6f83f7021344d0 (cherry picked from commit 6b9804b8f2ca85e9eb42d344d17cfee7a7a9414c) Reviewed-on: https://gerrit.libreoffice.org/30023 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx index a0eb39b..f17e8eb 100644 --- a/sc/source/core/tool/token.cxx +++ b/sc/source/core/tool/token.cxx @@ -3538,28 +3538,36 @@ bool adjustDoubleRefInName( { if (rCxt.mnRowDelta > 0 && !rRef.Ref1.IsRowRel() && !rRef.Ref2.IsRowRel()) { - // Check and see if we should expand the range at the top. - ScRange aSelectedRange = getSelectedRange(rCxt); ScRange aAbs = rRef.toAbs(rPos); - if (aSelectedRange.Intersects(aAbs)) + // Expand only if at least two rows tall. + if (aAbs.aStart.Row() < aAbs.aEnd.Row()) { - // Selection intersects the referenced range. Only expand the - // bottom position. - rRef.IncEndRowSticky(rCxt.mnRowDelta, rPos); - return true; + // Check and see if we should expand the range at the top. + ScRange aSelectedRange = getSelectedRange(rCxt); + if (aSelectedRange.Intersects(aAbs)) + { + // Selection intersects the referenced range. Only expand the + // bottom position. + rRef.IncEndRowSticky(rCxt.mnRowDelta, rPos); + return true; + } } } if (rCxt.mnColDelta > 0 && !rRef.Ref1.IsColRel() && !rRef.Ref2.IsColRel()) { - // Check and see if we should expand the range at the left. - ScRange aSelectedRange = getSelectedRange(rCxt); ScRange aAbs = rRef.toAbs(rPos); - if (aSelectedRange.Intersects(aAbs)) + // Expand only if at least two columns wide. + if (aAbs.aStart.Col() < aAbs.aEnd.Col()) { - // Selection intersects the referenced range. Only expand the - // right position. - rRef.IncEndColSticky(rCxt.mnColDelta, rPos); - return true; + // Check and see if we should expand the range at the left. + ScRange aSelectedRange = getSelectedRange(rCxt); + if (aSelectedRange.Intersects(aAbs)) + { + // Selection intersects the referenced range. Only expand the + // right position. + rRef.IncEndColSticky(rCxt.mnColDelta, rPos); + return true; + } } } } @@ -3783,8 +3791,11 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInName( { // Check if we could expand range reference by the bottom // edge. For named expressions, we only expand absolute - // references. - if (!rRef.Ref1.IsRowRel() && !rRef.Ref2.IsRowRel() && aAbs.aEnd.Row()+1 == rCxt.maRange.aStart.Row()) + // references. Reference must be at least two rows + // tall. + if (!rRef.Ref1.IsRowRel() && !rRef.Ref2.IsRowRel() && + aAbs.aStart.Row() < aAbs.aEnd.Row() && + aAbs.aEnd.Row()+1 == rCxt.maRange.aStart.Row()) { // Expand by the bottom edge. rRef.Ref2.IncRow(rCxt.mnRowDelta); @@ -3795,8 +3806,11 @@ sc::RefUpdateResult ScTokenArray::AdjustReferenceInName( { // Check if we could expand range reference by the right // edge. For named expressions, we only expand absolute - // references. - if (!rRef.Ref1.IsColRel() && !rRef.Ref2.IsColRel() && aAbs.aEnd.Col()+1 == rCxt.maRange.aStart.Col()) ... etc. - the rest is truncated
_______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
