connectivity/source/drivers/macab/MacabResultSet.cxx | 5 connectivity/source/drivers/macab/MacabStatement.cxx | 7 dbaccess/source/core/misc/dsntypes.cxx | 2 dbaccess/source/ui/browser/sbagrid.cxx | 35 external/coinmp/ExternalProject_coinmp.mk | 11 external/lpsolve/ExternalProject_lpsolve.mk | 1 include/vcl/outdev.hxx | 9 readlicense_oo/license/CREDITS.fodt | 2274 ++++++------- sc/source/ui/app/transobj.cxx | 3 sc/source/ui/cctrl/checklistmenu.cxx | 3 sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx | 5 sc/source/ui/dbgui/PivotLayoutTreeListData.cxx | 10 sc/source/ui/dbgui/PivotLayoutTreeListLabel.cxx | 10 sc/source/ui/sidebar/AlignmentPropertyPanel.cxx | 33 scp2/source/winexplorerext/registryitem_winexplorerext.scp | 18 sd/CppunitTest_sd_filters_test.mk | 5 sd/qa/unit/data/cgm/fail/ooo6420-1.cgm | 400 ++ solenv/bin/modules/installer/windows/property.pm | 7 solenv/gdb/libreoffice/sw.py | 37 starmath/source/node.cxx | 2 svtools/source/control/tabbar.cxx | 7 svx/source/sidebar/line/LineWidthControl.cxx | 1 svx/source/sidebar/possize/PosSizePropertyPanel.cxx | 33 sw/source/core/fields/docufld.cxx | 6 sw/source/core/uibase/wrtsh/wrtsh1.cxx | 12 sw/source/filter/html/wrthtml.cxx | 3 sw/source/ui/fldui/changedb.cxx | 3 sw/source/ui/frmdlg/frmpage.cxx | 30 vcl/generic/fontmanager/fontmanager.cxx | 25 vcl/generic/print/genpspgraphics.cxx | 8 vcl/headless/svptext.cxx | 4 vcl/inc/fontmanager.hxx | 7 vcl/inc/generic/genpspgraphics.h | 6 vcl/inc/headless/svpgdi.hxx | 2 vcl/inc/outdev.h | 2 vcl/inc/quartz/salgdi.h | 2 vcl/inc/salgdi.hxx | 3 vcl/inc/unx/salgdi.h | 2 vcl/inc/win/salgdi.h | 2 vcl/quartz/salgdi.cxx | 2 vcl/source/gdi/embeddedfontshelper.cxx | 5 vcl/source/gdi/pdfwriter_impl.cxx | 52 vcl/source/glyphs/graphite_layout.cxx | 2 vcl/source/outdev/font.cxx | 39 vcl/source/window/btndlg.cxx | 8 vcl/unx/generic/gdi/salgdi3.cxx | 4 vcl/win/source/gdi/salgdi3.cxx | 2 wizards/source/access2base/Control.xba | 9 48 files changed, 1886 insertions(+), 1272 deletions(-)
New commits: commit 9c1d2558a9ebe0ffd35f633be7c74fc9dc22c96e Author: Caolán McNamara <[email protected]> Date: Tue Oct 14 11:32:50 2014 +0100 Resolves: fdo#84887 TabBar::ImplShowPage crash (cherry picked from commit ff7c2cd0dc89f0ffa6742f1f5dcf89f5a6f03839) Signed-off-by: Stephan Bergmann <[email protected]> Change-Id: I84250c6a40baeabd0d12958dfe0aea346d2b4fc8 diff --git a/sd/CppunitTest_sd_filters_test.mk b/sd/CppunitTest_sd_filters_test.mk index 646b112..5331a79 100644 --- a/sd/CppunitTest_sd_filters_test.mk +++ b/sd/CppunitTest_sd_filters_test.mk @@ -100,6 +100,9 @@ $(eval $(call gb_CppunitTest_use_components,sd_filters_test,\ $(eval $(call gb_CppunitTest_use_configuration,sd_filters_test)) -$(call gb_CppunitTest_get_target,sd_filters_test) : $(call gb_AllLangResTarget_get_target,sd) +# sd dlopens libicg.so for cgm import, so ensure its built by now +$(call gb_CppunitTest_get_target,sd_filters_test) : | \ + $(call gb_AllLangResTarget_get_target,sd) \ + $(call gb_Library_get_target,icg) \ # vim: set noet sw=4 ts=4: diff --git a/sd/qa/unit/data/cgm/fail/ooo6420-1.cgm b/sd/qa/unit/data/cgm/fail/ooo6420-1.cgm new file mode 100644 index 0000000..5b42b6f --- /dev/null +++ b/sd/qa/unit/data/cgm/fail/ooo6420-1.cgm @@ -0,0 +1,400 @@ +BEGMF 'xfig-fig012228'; +mfversion 1; +mfdesc 'Converted from /tmp/xfig-fig012228 using fig2dev -Lcgm'; +mfelemlist 'DRAWINGPLUS'; +vdctype integer; +fontlist 'Hardware', + 'Times New Roman', 'Times New Roman Bold', 'Times New Roman Italic', + 'Helvetica', 'Courier', + 'Times-Roman', 'Times-Italic', + 'Times-Bold', 'Times-BoldItalic', + 'AvantGarde-Book', 'AvantGarde-BookOblique', + 'AvantGarde-Demi', 'AvantGarde-DemiOblique', + 'Bookman-light', 'Bookman-lightItalic', + 'Bookman-Demi', 'Bookman-DemiItalic', + 'Courier', 'Courier-Oblique', + 'Courier-Bold', 'Courier-BoldOblique', + 'Helvetica', 'Helvetica-Oblique', + 'Helvetica-Bold', 'Helvetica-BoldOblique', + 'Helvetica-Narrow', 'Helvetica-Narrow-Oblique', + 'Helvetica-Narrow-Bold', 'Helvetica-Narrow-BoldOblique', + 'NewCenturySchlbk-Roman', 'NewCenturySchlbk-Italic', + 'NewCenturySchlbk-Bold', 'NewCenturySchlbk-BoldItalic', + 'Palatino-Roman', 'Palatino-Italic', + 'Palatino-Bold', 'Palatino-BoldItalic', + 'Symbol', 'ZapfChancery-MediumItalic', 'ZapfDingbats'; +BEGMFDEFAULTS; + vdcext (0,0) (12974,8467); + clip off; + colrmode indexed; + colrtable 1 + 0 0 0 + 0 0 255 + 0 255 0 + 0 255 255 + 255 0 0 + 255 0 255 + 255 255 0 + 255 255 255 + 0 0 142 + 0 0 175 + 0 0 209 + 135 206 255 + 0 142 0 + 0 175 0 + 0 209 0 + 0 142 142 + 0 175 175 + 0 209 209 + 142 0 0 + 175 0 0 + 209 0 0 + 142 0 142 + 175 0 175 + 209 0 209 + 127 48 0 + 160 63 0 + 191 96 0 + 255 127 127 + 255 160 160 + 255 191 191 + 255 224 224 + 255 214 0; + linewidthmode abs; + edgewidthmode abs; + backcolr 255 255 255; + textprec stroke; + transparency ON; +ENDMFDEFAULTS; +BEGPIC 'xfig-fig012228'; +BEGPICBODY; +% Circle % +intstyle EMPTY; +edgevis ON; +edgetype 1; +edgewidth 30; +edgecolr 1; +circle (7747,5647) 225; +% Polygon % +polygon (2797,6997) (3697,5197) (2797,3397) (2797,6997); +% Polyline % +linetype 1; +linewidth 30; +linecolr 1; +line (3697,5197) (3907,5197); +intstyle SOLID; +fillcolr 1; +polygon (3847,5257)(4087,5197)(3847,5137); +% Polyline % +line (772,4747) (2797,4747); +% Polyline % +line (772,3847) (2797,3847); +% Polyline % +line (997,472) (8422,472); +% Polyline % +line (997,1372) (8422,1372); +% Polyline % +line (6622,2272) (8422,2272); +% Box % +intstyle EMPTY; +rect (5497,4522) (6622,3622); +% Polyline % +line (6622,4072) (6880,4072); +intstyle SOLID; +fillcolr 8; +polygon (6772,4132)(7012,4072)(6772,4012)(6820,4072); +% Polygon % +intstyle EMPTY; +polygon (8422,3622) (9322,1822) (8422,22) (8422,3622); +% Polyline % +line (9322,1822) (9532,1822); +intstyle SOLID; +fillcolr 1; +polygon (9472,1882)(9712,1822)(9472,1762); +% Polyline % +line (9772,3397) (9772,4522) (7747,4522) (7747,5182); +polygon (7687,5122)(7747,5362)(7807,5122); +% Polyline % +line (772,6322) (772,7387); +line (712,7147)(772,7387)(832,7147); +% Polyline % +line (772,5647) (2797,5647); +% Polyline % +line (322,6322) (1672,6322) (1672,5647); +% Polyline % +line (9772,4522) (10222,4522); +% Polyline % +line (10447,4522) (12472,4522) (12472,8122) (322,8122) (322,6322); +% Polyline % +line (9772,3397) (9772,697) (11062,697); +line (10822,757)(11062,697)(10822,637); +% Polyline % +line (9772,2722) (11962,2722); +line (11722,2782)(11962,2722)(11722,2662); +% Polyline % +line (10537,3622) (10537,3847) (12022,3847); +% Polyline % +line (10222,4522) (10222,3397) (11962,3397); +line (11722,3457)(11962,3397)(11722,3337); +% Polyline % +line (10222,4072) (11962,4072); +line (11722,4132)(11962,4072)(11722,4012); +% Polyline % +line (4147,7222) (4147,4072) (5257,4072); +polygon (5197,4132)(5437,4072)(5197,4012); +% Polyline % +line (4147,7222) (8182,7222); +polygon (8122,7282)(8362,7222)(8122,7162); +% Polyline % +line (10837,7672) (8422,7672) (8422,6772) (10837,6772); +line (10597,7732)(10837,7672)(10597,7612); +line (10597,6832)(10837,6772)(10597,6712); +% Polyline % +line (4147,6322) (7747,6322) (7747,6112); +polygon (7807,6172)(7747,5932)(7687,6172); +% Polyline % +line (7972,5647) (8182,5647); +polygon (8122,5707)(8362,5647)(8122,5587); +% Polyline % +line (1672,6547) (1882,6547); +polygon (1822,6607)(2062,6547)(1822,6487); +% Polyline % +line (10987,3847) (10777,3847); +polygon (10837,3787)(10597,3847)(10837,3907); +% Polyline % +line (9772,4522) (9982,4522); +polygon (9922,4582)(10162,4522)(9922,4462); +% Polyline % +line (10942,4522) (10732,4522); +polygon (10792,4462)(10552,4522)(10792,4582); +% Box % +intstyle EMPTY; +rect (5497,2722) (6622,1822); +% Polyline % +line (5047,2272) (5305,2272); +intstyle SOLID; +fillcolr 8; +polygon (5197,2332)(5437,2272)(5197,2212)(5245,2272); +% Polyline % +line (1447,7447) (1447,6547) (2572,6547); +% Polyline % +line (10837,6097) (8422,6097) (8422,5197) (10837,5197); +line (10597,6157)(10837,6097)(10597,6037); +line (10597,5257)(10837,5197)(10597,5137); +% Polyline % +line (2077,6547) (2797,6547); +% Text % +textfontindex 25; +textalign right base 0.0 0.0; +textcolr 1; +charheight 140; +charori (0,1200) (1200,0); +text (862,1282) final 'FMS_IN'; +% Text % +text (862,382) final 'WFB_IN'; +% Text % +textalign left base 0.0 0.0; +text (7162,3982) final 'NET'; +% Text % +text (5767,4207) final 'PCM'; +% Text % +text (5767,3892) final 'capture'; +% Text % +textalign ctr base 0.0 0.0; +text (1222,7582) final 'DECRYPT'; +% Text % +textalign left base 0.0 0.0; +text (12067,3892) final 'CRYPT'; +% Text % +text (10042,2047) final 'SE_OUT'; +% Text % +text (9997,1012) final 'GS_OUT'; +% Text % +textalign right base 0.0 0.0; +text (8197,1642) final 'FMS_IN'; +% Text % +text (8197,742) final 'WFB_IN'; +% Text % +text (4912,2182) final 'NET'; +% Text % +textalign left base 0.0 0.0; +text (5767,2407) final 'PCM'; +% Text % +text (5767,2092) final 'receive'; +% Text % +text (4327,4612) final 'NET_CAPTURE'; +% Text % +text (4372,6592) final 'LSTA_OUT'; +% Text % +text (4372,7492) final 'FMS_OUT'; +% Text % +textalign right base 0.0 0.0; +text (2662,6817) final 'CYUN_IN'; +% Text % +text (2572,5917) final 'SE_IN'; +% Text % +text (2572,5017) final 'PA_IN'; +% Text % +text (2572,4117) final 'GS_IN'; +% Text % +text (8332,2542) final 'NET_RECEIVE'; +% Text % +textalign left base 0.0 0.0; +text (2932,5107) final 'LEFT'; +% Text % +text (8512,1732) final 'RIGHT'; +% Text % +textalign right base 0.0 0.0; +text (682,4657) final 'PA_IN'; +% Text % +text (682,3757) final 'GS_IN'; +% Text % +text (682,5557) final 'SE_IN'; +% Text % +textalign left base 0.0 0.0; +text (10987,7582) final 'FMS_OUT'; +% Text % +text (10987,6682) final 'WFB_OUT'; +% Text % +text (10987,6007) final 'TA_OUT'; +% Text % +text (10987,5107) final 'LS_OUT'; +% Text % +text (12067,2632) final 'PA_OUT'; +% Text % +text (11212,607) final 'GS_OUT'; +% Text % +textalign ctr base 0.0 0.0; +text (11302,3577) final 'OL-SE'; +% Text % +text (9997,5377) final 'OL-LS'; +% Text % +text (9997,6277) final 'OL-TA'; +% Text % +text (6172,8302) final 'LOOP-RS'; +% Text % +text (1222,5827) final 'IL-SE'; +% Text % +text (11347,2902) final 'OL-PA'; +% Text % +textalign left base 0.0 0.0; +text (12067,3307) final 'SE_OUT'; +% Text % +textalign ctr base 0.0 0.0; +text (10312,4612) final 'RS1'; +% Text % +textalign left base 0.0 0.0; +text (8197,4657) final 'TA_BACK'; +% Text % +textalign ctr base 0.0 0.0; +text (9097,5512) final 'LS_ON'; +% Text % +text (9097,6412) final 'TA_ON'; +% Text % +text (10357,2992) final 'PA_ON'; +% Polygon % +colrtable 33 255 255 255; +fillcolr 33; +polygon (2122,6772) (2122,6322) (2572,6547) (2122,6772); +% Polygon % +polygon (2122,5872) (2122,5422) (2572,5647) (2122,5872); +% Polygon % +polygon (2122,4972) (2122,4522) (2572,4747) (2122,4972); +% Polygon % +polygon (2122,4072) (2122,3622) (2572,3847) (2122,4072); +% Polygon % +polygon (4372,4297) (4372,3847) (4822,4072) (4372,4297); +% Polygon % +polygon (9997,922) (9997,472) (10447,697) (9997,922); +% Polygon % +polygon (7747,2497) (7747,2047) (8197,2272) (7747,2497); +% Polygon % +polygon (7747,1597) (7747,1147) (8197,1372) (7747,1597); +% Polygon % +polygon (7747,697) (7747,247) (8197,472) (7747,697); +% Polygon % +polygon (9547,2047) (9997,2047) (9772,2497) (9547,2047); +% Box % +rect (997,5782) (1447,5512); +% Box % +rect (5947,8257) (6397,7987); +% Box % +rect (11122,2857) (11572,2587); +% Box % +rect (11122,3532) (11572,3262); +% Polygon % +polygon (4372,7447) (4372,6997) (4822,7222) (4372,7447); +% Polygon % +polygon (4372,6547) (4372,6097) (4822,6322) (4372,6547); +% Box % +rect (9772,6232) (10222,5962); +% Box % +rect (9772,5332) (10222,5062); +% Polyline % +linewidth 45; +linecolr 8; +line (8332,4522) (8017,4522); +% Polyline % +line (10222,4207) (10222,4522); +% Polyline % +line (10222,2722) (10537,2722); +% Polyline % +line (10852,3397) (10537,3397); +% Polyline % +line (8917,5197) (9232,5197); +% Polyline % +line (8917,6097) (9232,6097); +% Polyline % +linewidth 30; +linecolr 1; +line (8332,4522) (8017,4657); +% Polyline % +line (10222,4207) (10357,4522); +% Polyline % +line (10222,2722) (10537,2857); +% Polyline % +line (10852,3397) (10537,3532); +% Polyline % +line (8917,5197) (9232,5332); +% Polyline % +line (8917,6097) (9232,6232); +% Circle % +edgewidth 15; +circle (8332,4522) 45; +% Circle % +circle (8017,4522) 45; +% Circle % +circle (8017,4747) 45; +% Circle % +circle (10222,4207) 45; +% Circle % +circle (10222,4522) 45; +% Circle % +circle (10447,4522) 45; +% Circle % +circle (10222,2722) 45; +% Circle % +circle (10537,2722) 45; +% Circle % +circle (10537,2947) 45; +% Circle % +circle (10852,3397) 45; +% Circle % +circle (10537,3397) 45; +% Circle % +circle (10537,3622) 45; +% Circle % +circle (8917,5197) 45; +% Circle % +circle (9232,5197) 45; +% Circle % +circle (9232,5422) 45; +% Circle % +circle (8917,6097) 45; +% Circle % +circle (9232,6322) 45; +% Circle % +circle (9232,6097) 45; +% End of Picture % +ENDPIC; +ENDMF; diff --git a/svtools/source/control/tabbar.cxx b/svtools/source/control/tabbar.cxx index 9183f73..c85c5a1 100644 --- a/svtools/source/control/tabbar.cxx +++ b/svtools/source/control/tabbar.cxx @@ -787,10 +787,11 @@ void TabBar::SetScrollAlwaysEnabled(bool bScrollAlwaysEnabled) ImplEnableControls(); } - - void TabBar::ImplShowPage( sal_uInt16 nPos ) { + if (nPos >= mpItemList->size()) + return; + // calculate width long nWidth = GetOutputSizePixel().Width(); if ( nWidth >= TABBAR_OFFSET_X ) @@ -811,8 +812,6 @@ void TabBar::ImplShowPage( sal_uInt16 nPos ) } } - - IMPL_LINK( TabBar, ImplClickHdl, ImplTabButton*, pBtn ) { EndEditMode(); commit 77900b96fe41a74d3d532279abf60b49b736906b Author: Julien Nabet <[email protected]> Date: Wed Feb 4 21:58:55 2015 +0100 Resolves tdf#89129: crash when defining a specific relationship Returns early if comparison matches so you can reduce iterator scope and avoid last test for logging. Cherry-picked from 30f6ec7cfdf63cea265148bbe3a07d8df34e96d5 /usr/include/c++/4.9/debug/safe_iterator.h:168:error: attempt to copy- construct an iterator from a singular iterator. Objects involved in the operation: iterator "this" @ 0x0x7fffffff3a30 { type = N11__gnu_debug14_Safe_iteratorIN9__gnu_cxx17__normal_iteratorIPPvNSt9__cxx19986vectorIS3_SaIS3_EEEEENSt7__debug6vectorIS3_S7_EEEE (mutable iterator); state = past-the-end; references sequence with type `NSt7__debug6vectorIPvSaIS1_EEE' @ 0x0x7fffffff4088 } iterator "other" @ 0x0x7fffffff3a90 { type = N11__gnu_debug14_Safe_iteratorIN9__gnu_cxx17__normal_iteratorIPPvNSt9__cxx19986vectorIS3_SaIS3_EEEEENSt7__debug6vectorIS3_S7_EEEE (mutable iterator); state = singular; references sequence with type `NSt7__debug6vectorIPvSaIS1_EEE' @ 0x0x7fffffff4088 } 4 0x00002aaab193d6e9 in boost::void_ptr_iterator<__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<void**, std::__cxx1998::vector<void*, std::allocator<void*> > >, std::__debug::vector<void*, std::allocator<void*> > >, ImplBtnDlgItem>::base (this=0x7fffffff3a90) at /home/julien/compile-libreoffice/libreoffice/workdir/UnpackedTarball/boost/boost/ptr_container/detail/void_ptr_iterator.hpp:121 5 0x00002aaab193d269 in boost::operator==<__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<void**, std::__cxx1998::vector<void*, std::allocator<void*> > >, std::__debug::vector<void*, std::allocator<void*> > >, ImplBtnDlgItem, __gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<void**, std::__cxx1998::vector<void*, std::allocator<void*> > >, std::__debug::vector<void*, std::allocator<void*> > >, ImplBtnDlgItem> (l=..., r=...) at /home/julien/compile-libreoffice/libreoffice/workdir/UnpackedTarball/boost/boost/ptr_container/detail/void_ptr_iterator.hpp:179 6 0x00002aaab193c2ca in ButtonDialog::RemoveButton (this=0x7fffffff3d90, nId=1) at /home/julien/compile-libreoffice/libreoffice/vcl/source/window/btndlg.cxx:340 7 0x00002aaad8ed109b in dbaui::ORelationTableView::lookForUiActivities (this=0x317ef30) at /home/julien/compile-libreoffice/libreoffice/dbaccess/source/ui/relationdesign/RelationTableView.cxx:342 Change-Id: Ied45c222c94d2a362075a3b1550b6092aad77c62 Reviewed-on: https://gerrit.libreoffice.org/14325 Reviewed-by: Lionel Elie Mamane <[email protected]> Tested-by: Lionel Elie Mamane <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/14349 diff --git a/vcl/source/window/btndlg.cxx b/vcl/source/window/btndlg.cxx index 21e909f..db23a30 100644 --- a/vcl/source/window/btndlg.cxx +++ b/vcl/source/window/btndlg.cxx @@ -322,8 +322,7 @@ void ButtonDialog::AddButton( StandardButtonType eType, sal_uInt16 nId, void ButtonDialog::RemoveButton( sal_uInt16 nId ) { - btn_iterator it; - for (it = maItemList.begin(); it != maItemList.end(); ++it) + for (btn_iterator it = maItemList.begin(); it != maItemList.end(); ++it) { if (it->mnId == nId) { @@ -333,12 +332,11 @@ void ButtonDialog::RemoveButton( sal_uInt16 nId ) delete it->mpPushButton; maItemList.erase(it); - break; + return; } } - if (it == maItemList.end()) - SAL_WARN( "vcl.window", "ButtonDialog::RemoveButton(): ButtonId invalid" ); + SAL_WARN( "vcl.window", "ButtonDialog::RemoveButton(): ButtonId invalid" ); } void ButtonDialog::Clear() commit 5b10200606202ba3d4d26ce086f9a9b7d9e86507 Author: Caolán McNamara <[email protected]> Date: Thu Feb 5 10:30:48 2015 +0000 Resolves: tdf#88825 absent datasource causes exception / abort ::dbtools::ensureRowSetConnection throws on failure, and it can fail of course if the database doesn't exist its not generally useful to throw through a vcl event handler as that just leads back to the dispatch loop. (cherry picked from commit 863122b9adecedfcf35ffac1354ef8a85d5b6827) Conflicts: dbaccess/source/ui/browser/sbagrid.cxx Change-Id: I8e8f4cff06de5684f163ed1b658a8794f54a7df2 Reviewed-on: https://gerrit.libreoffice.org/14330 Reviewed-by: Lionel Elie Mamane <[email protected]> Tested-by: Lionel Elie Mamane <[email protected]> diff --git a/dbaccess/source/ui/browser/sbagrid.cxx b/dbaccess/source/ui/browser/sbagrid.cxx index 1fd9685..889e94a 100644 --- a/dbaccess/source/ui/browser/sbagrid.cxx +++ b/dbaccess/source/ui/browser/sbagrid.cxx @@ -971,9 +971,9 @@ Reference< XPropertySet > SbaGridControl::getField(sal_uInt16 nModelPos) else OSL_FAIL("SbaGridControl::getField getColumns returns NULL or ModelPos is > than count!"); } - catch (const Exception&) + catch (const Exception& e) { - OSL_FAIL("SbaGridControl::getField Exception occurred!"); + SAL_WARN("dbaccess", "SbaGridControl::getField Exception occurred: " << e.Message); } return xEmptyReturn; @@ -984,24 +984,31 @@ bool SbaGridControl::IsReadOnlyDB() const // assume yes if anything fails bool bDBIsReadOnly = true; - // the db is the implemented by the parent of the grid control's model ... - Reference< XChild > xColumns(GetPeer()->getColumns(), UNO_QUERY); - if (xColumns.is()) + try { - Reference< XRowSet > xDataSource(xColumns->getParent(), UNO_QUERY); - Reference< XChild > xConn(::dbtools::getConnection(xDataSource),UNO_QUERY); - if (xConn.is()) + // the db is the implemented by the parent of the grid control's model ... + Reference< XChild > xColumns(GetPeer()->getColumns(), UNO_QUERY); + if (xColumns.is()) { - // ... and the RO-flag simply is implemented by a property - Reference< XPropertySet > xDbProps(xConn->getParent(), UNO_QUERY); - if (xDbProps.is()) + Reference< XRowSet > xDataSource(xColumns->getParent(), UNO_QUERY); + Reference< XChild > xConn(::dbtools::getConnection(xDataSource),UNO_QUERY); + if (xConn.is()) { - Reference< XPropertySetInfo > xInfo = xDbProps->getPropertySetInfo(); - if (xInfo->hasPropertyByName(PROPERTY_ISREADONLY)) - bDBIsReadOnly = ::comphelper::getBOOL(xDbProps->getPropertyValue(PROPERTY_ISREADONLY)); + // ... and the RO-flag simply is implemented by a property + Reference< XPropertySet > xDbProps(xConn->getParent(), UNO_QUERY); + if (xDbProps.is()) + { + Reference< XPropertySetInfo > xInfo = xDbProps->getPropertySetInfo(); + if (xInfo->hasPropertyByName(PROPERTY_ISREADONLY)) + bDBIsReadOnly = ::comphelper::getBOOL(xDbProps->getPropertyValue(PROPERTY_ISREADONLY)); + } } } } + catch (const Exception& e) + { + SAL_WARN("dbaccess", "SbaGridControl::IsReadOnlyDB Exception occurred: " << e.Message); + } return bDBIsReadOnly; } commit 0546d0bf9ddbacfac39c3ac1c08933436c93eb93 Author: Norbert Thiebaud <[email protected]> Date: Tue Feb 3 16:12:50 2015 +0100 tdf#89048 Macab initialize record list even for never-match condition. Change-Id: I323f6532d00f30cde50616e9399cad6bbe00cb8c Reviewed-on: https://gerrit.libreoffice.org/14310 Reviewed-by: Lionel Elie Mamane <[email protected]> Tested-by: Lionel Elie Mamane <[email protected]> diff --git a/connectivity/source/drivers/macab/MacabResultSet.cxx b/connectivity/source/drivers/macab/MacabResultSet.cxx index d0206df..934db87 100644 --- a/connectivity/source/drivers/macab/MacabResultSet.cxx +++ b/connectivity/source/drivers/macab/MacabResultSet.cxx @@ -86,6 +86,11 @@ void MacabResultSet::someMacabRecords(const MacabCondition *pCondition) // maximum alloted size, which means that we'll never have to resize) m_aMacabRecords = new MacabRecords(allRecords); + if(pCondition->isAlwaysFalse()) + { + return; + } + MacabRecords::iterator iterator; for (iterator = allRecords->begin(); diff --git a/connectivity/source/drivers/macab/MacabStatement.cxx b/connectivity/source/drivers/macab/MacabStatement.cxx index c5a0c3e..800acc1 100644 --- a/connectivity/source/drivers/macab/MacabStatement.cxx +++ b/connectivity/source/drivers/macab/MacabStatement.cxx @@ -331,7 +331,7 @@ void MacabCommonStatement::selectRecords(MacabResultSet *pResult) const throw(SQ MacabCondition *pCondition = analyseWhereClause(pParseNode); if (pCondition->isAlwaysTrue()) pResult->allMacabRecords(); - else if (!pCondition->isAlwaysFalse()) + else pResult->someMacabRecords(pCondition); delete pCondition; return; commit 57e8e9e8bc46313ddc4a3ce7b8e0d479c9018d66 Author: Michael Stahl <[email protected]> Date: Tue Feb 3 12:57:40 2015 +0100 tdf#77241: sw: fix creation of field data source string SwChangeDBDlg::UpdateFlds() depends on undefined behaviour in constructing sTemp, because the call to GetDBName initializes local variables that are already used in other sub-expressions of the statement. (regression from 8a7a9992906ba59d575ca9e4441b3e84fea5fae0) Change-Id: Ibf8c0091da672e133d7a35bc61c059eaf65a3bc2 Reviewed-on: https://gerrit.libreoffice.org/14305 Reviewed-by: Lionel Elie Mamane <[email protected]> Tested-by: Lionel Elie Mamane <[email protected]> diff --git a/sw/source/ui/fldui/changedb.cxx b/sw/source/ui/fldui/changedb.cxx index 8ef135a..80cfb68 100644 --- a/sw/source/ui/fldui/changedb.cxx +++ b/sw/source/ui/fldui/changedb.cxx @@ -203,7 +203,8 @@ void SwChangeDBDlg::UpdateFlds() OUString sTableName; OUString sColumnName; sal_Bool bIsTable = sal_False; - const OUString sTemp = m_pAvailDBTLB->GetDBName(sTableName, sColumnName, &bIsTable) + const OUString DBName(m_pAvailDBTLB->GetDBName(sTableName, sColumnName, &bIsTable)); + const OUString sTemp = DBName + OUString(DB_DELIM) + sTableName + OUString(DB_DELIM) commit 3c282929fed0b9484ba5adfc68019010bf47f552 Author: Maxime de Roucy <[email protected]> Date: Mon Dec 22 13:57:55 2014 +0100 fdo#67534 Fix "Property Handler" shared lock As explained in the following link, access mode should be set to "EnableShareDenyNone" to avoid blocking others process to access the file opened by the Property Handler. http://msdn.microsoft.com/en-us/library/windows/desktop/dd894084%28v=vs.85%29.aspx Reviewed-on: https://gerrit.libreoffice.org/13596 Reviewed-by: Michael Meeks <[email protected]> Tested-by: Andras Timar <[email protected]> Conflicts: scp2/source/winexplorerext/registryitem_winexplorerext.scp Change-Id: I61cc251078c20f6a8cf7fa052c222a86e4e383b3 Reviewed-on: https://gerrit.libreoffice.org/14300 Reviewed-by: Andras Timar <[email protected]> Tested-by: Andras Timar <[email protected]> diff --git a/scp2/source/winexplorerext/registryitem_winexplorerext.scp b/scp2/source/winexplorerext/registryitem_winexplorerext.scp index a8eda1d..ccd1dba 100644 --- a/scp2/source/winexplorerext/registryitem_winexplorerext.scp +++ b/scp2/source/winexplorerext/registryitem_winexplorerext.scp @@ -339,6 +339,15 @@ RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_PropHdl Value = "%PRODUCTNAME Property Handler"; End +RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_EnableShareDenyWrite + ParentID = PREDEFINED_HKEY_CLASSES_ROOT; + ModuleID = gid_Module_Optional_Winexplorerext; + ComponentCondition = "VersionNT >= 600"; + Subkey = "CLSID\{AE424E85-F6DF-4910-A6A9-438797986431}"; + Name = "EnableShareDenyNone"; + Value = "#1"; +End + RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_PropHdl_x64 ParentID = PREDEFINED_HKEY_CLASSES_ROOT; ModuleID = gid_Module_Optional_Winexplorerext_x64; @@ -347,6 +356,15 @@ RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_PropHdl_x64 Value = "%PRODUCTNAME Property Handler"; End +RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_EnableShareDenyWrite_x64 + ParentID = PREDEFINED_HKEY_CLASSES_ROOT; + ModuleID = gid_Module_Optional_Winexplorerext_x64; + ComponentCondition = "VersionNT >= 600"; + Subkey = "CLSID\{AE424E85-F6DF-4910-A6A9-438797986431}"; + Name = "EnableShareDenyNone"; + Value = "#1"; +End + RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_InProcServer32 ParentID = PREDEFINED_HKEY_CLASSES_ROOT; ModuleID = gid_Module_Optional_Winexplorerext; commit 2bfb99ae3243606f1558dbc69e0fe571e1de4e48 Author: Caolán McNamara <[email protected]> Date: Sat Jan 24 20:59:27 2015 +0000 Resolves: rhbz#1179642 crash in GetFocus with empty mpPreviouslyFocusedListBox Change-Id: I7559067c00617482d34e7cbdd177202868cbfc76 (cherry picked from commit dae7d2089516d9cf014b9fad0adb484f19282a29) Reviewed-on: https://gerrit.libreoffice.org/14162 Tested-by: Markus Mohrhard <[email protected]> Reviewed-by: Markus Mohrhard <[email protected]> diff --git a/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx b/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx index 3710e4c..34fd1f7 100644 --- a/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx +++ b/sc/source/ui/dbgui/PivotLayoutTreeListBase.cxx @@ -123,9 +123,10 @@ void ScPivotLayoutTreeListBase::GetFocus() if( GetGetFocusFlags() & GETFOCUS_MNEMONIC ) { SvTreeListEntry* pEntry = mpParent->mpPreviouslyFocusedListBox->GetCurEntry(); - InsertEntryForSourceTarget(pEntry, NULL); + if (pEntry) + InsertEntryForSourceTarget(pEntry, NULL); - if(mpParent->mpPreviouslyFocusedListBox != NULL) + if (mpParent->mpPreviouslyFocusedListBox != NULL) mpParent->mpPreviouslyFocusedListBox->GrabFocus(); } commit ff876c5ca311d3a416923c24c39e7129dd267a72 Author: Caolán McNamara <[email protected]> Date: Fri Jan 23 16:45:51 2015 +0000 Resolves: fdo#75565 reduce block on pasting rtf like we do for html Change-Id: I74a9748a2e4981dc5d1677f06db7eceed9e4b108 (cherry picked from commit 0efbd9931ea854cf71c4c54ca3f3d55d6db1fa13) Reviewed-on: https://gerrit.libreoffice.org/14144 Tested-by: Markus Mohrhard <[email protected]> Reviewed-by: Markus Mohrhard <[email protected]> (cherry picked from commit a0ef7698b7df63b8befe274305051063425f8eb6) diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx index 1d3bb94..380f494 100644 --- a/sc/source/ui/app/transobj.cxx +++ b/sc/source/ui/app/transobj.cxx @@ -290,8 +290,9 @@ bool ScTransferObj::GetData( const datatransfer::DataFlavor& rFlavor, const OUSt bool bIncludeFiltered = pDoc->IsCutMode() || bUsedForLink; + bool bReduceBlockFormat = nFormat == SOT_FORMATSTR_ID_HTML || nFormat == SOT_FORMAT_RTF; ScRange aReducedBlock = aBlock; - if ( nFormat == SOT_FORMATSTR_ID_HTML && (aBlock.aEnd.Col() == MAXCOL || aBlock.aEnd.Row() == MAXROW) && aBlock.aStart.Tab() == aBlock.aEnd.Tab() ) + if (bReduceBlockFormat && (aBlock.aEnd.Col() == MAXCOL || aBlock.aEnd.Row() == MAXROW) && aBlock.aStart.Tab() == aBlock.aEnd.Tab()) { bool bShrunk = false; //shrink the area to allow pasting to external applications commit e8270bb89115ef5edf017c1230aacf23f887f7db Author: Caolán McNamara <[email protected]> Date: Mon Feb 2 21:04:28 2015 +0000 Related: fdo#88455 crash using delete in available fields Change-Id: I4ac5fe6f42b425ee96124b2dde39ff397a081638 (cherry picked from commit 1746c886362b8525b04365dd6b7203b8098b99ba) Reviewed-on: https://gerrit.libreoffice.org/14291 Tested-by: Markus Mohrhard <[email protected]> Reviewed-by: Markus Mohrhard <[email protected]> diff --git a/sc/source/ui/dbgui/PivotLayoutTreeListData.cxx b/sc/source/ui/dbgui/PivotLayoutTreeListData.cxx index e8f4805..33dbaa2 100644 --- a/sc/source/ui/dbgui/PivotLayoutTreeListData.cxx +++ b/sc/source/ui/dbgui/PivotLayoutTreeListData.cxx @@ -253,12 +253,14 @@ void ScPivotLayoutTreeListData::KeyInput(const KeyEvent& rKeyEvent) KeyCode aCode = rKeyEvent.GetKeyCode(); sal_uInt16 nCode = aCode.GetCode(); - switch (nCode) + if (nCode == KEY_DELETE) { - case KEY_DELETE: - GetModel()->Remove(GetCurEntry()); - return; + const SvTreeListEntry* pEntry = GetCurEntry(); + if (pEntry) + GetModel()->Remove(pEntry); + return; } + SvTreeListBox::KeyInput(rKeyEvent); } diff --git a/sc/source/ui/dbgui/PivotLayoutTreeListLabel.cxx b/sc/source/ui/dbgui/PivotLayoutTreeListLabel.cxx index a094f2a..746b512 100644 --- a/sc/source/ui/dbgui/PivotLayoutTreeListLabel.cxx +++ b/sc/source/ui/dbgui/PivotLayoutTreeListLabel.cxx @@ -80,12 +80,14 @@ void ScPivotLayoutTreeListLabel::KeyInput(const KeyEvent& rKeyEvent) KeyCode aCode = rKeyEvent.GetKeyCode(); sal_uInt16 nCode = aCode.GetCode(); - switch (nCode) + if (nCode == KEY_DELETE) { - case KEY_DELETE: - GetModel()->Remove(GetCurEntry()); - return; + const SvTreeListEntry* pEntry = GetCurEntry(); + if (pEntry) + GetModel()->Remove(pEntry); + return; } + SvTreeListBox::KeyInput(rKeyEvent); } commit b4a2dea5856cba7539d87db9ea7073196fb6f7b1 Author: László Németh <[email protected]> Date: Tue Jan 27 10:15:05 2015 +0100 tdf#88051 fix Graphite layout at Linux Libertine G ligature followed by tab Change-Id: Iecedb87f6329c1cddcaa4cd939b349924e58d256 Reviewed-on: https://gerrit.libreoffice.org/14201 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/vcl/source/glyphs/graphite_layout.cxx b/vcl/source/glyphs/graphite_layout.cxx index 5343577..d840e73 100644 --- a/vcl/source/glyphs/graphite_layout.cxx +++ b/vcl/source/glyphs/graphite_layout.cxx @@ -599,7 +599,7 @@ gr_segment * GraphiteLayout::CreateSegment(ImplLayoutArgs& rArgs) if ( !xCharClass.is() ) xCharClass = vcl::unohelper::CreateCharacterClassification(); size_t numchars2 = rArgs.mnEndCharPos - mnSegCharOffset; // fdo#52540, fdo#68313, fdo#70666 avoid bad ligature replacement - if (numchars > numchars2 && xCharClass->getType(rArgs.mpStr, numchars2 + 1) == ::com::sun::star::i18n::UnicodeType::LOWERCASE_LETTER) + if (numchars > numchars2 && (rArgs.mpStr[numchars2] == '\t' || xCharClass->getType(rArgs.mpStr, numchars2 + 1) == ::com::sun::star::i18n::UnicodeType::LOWERCASE_LETTER)) numchars = numchars2; if (mpFeatures) pSegment = gr_make_seg(mpFont, mpFace, 0, mpFeatures->values(), gr_utf16, commit 0b63b5800d5592dbf469dd831332cdd51554cfd9 Author: Stephan Bergmann <[email protected]> Date: Thu Jan 29 10:02:25 2015 +0100 tdf#80370: Fix Mac OS X install names of external/{coinmp,lpsolve} (cherry picked from commit f694ab5198587dcacd8c40c9095e7bc9435cbff2) Conflicts: external/lpsolve/ExternalProject_lpsolve.mk Change-Id: I240c8c940d7d3e1310c4ee33911e8c7019e67060 Reviewed-on: https://gerrit.libreoffice.org/14288 Tested-by: Caolán McNamara <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> diff --git a/external/coinmp/ExternalProject_coinmp.mk b/external/coinmp/ExternalProject_coinmp.mk index b483d45..19286b1 100644 --- a/external/coinmp/ExternalProject_coinmp.mk +++ b/external/coinmp/ExternalProject_coinmp.mk @@ -29,8 +29,19 @@ $(call gb_ExternalProject_get_state_target,coinmp,build) : ./configure COIN_SKIP_PROJECTS="Data/Sample" \ $(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \ $(if $(DISABLE_DYNLOADING),--disable-shared) \ + $(if $(filter MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO) \ --enable-dependency-linking F77=unavailable \ && $(MAKE) \ + $(if $(filter MACOSX,$(OS)),&& $(PERL) \ + $(SRCDIR)/solenv/bin/macosx-change-install-names.pl shl OOO \ + $(gb_Package_SOURCEDIR_coinmp)/Cbc/src/.libs/libCbc.3.8.8.dylib \ + $(gb_Package_SOURCEDIR_coinmp)/Cbc/src/.libs/libCbcSolver.3.8.8.dylib \ + $(gb_Package_SOURCEDIR_coinmp)/Cgl/src/.libs/libCgl.1.8.5.dylib \ + $(gb_Package_SOURCEDIR_coinmp)/Clp/src/.libs/libClp.1.12.6.dylib \ + $(gb_Package_SOURCEDIR_coinmp)/Clp/src/OsiClp/.libs/libOsiClp.1.12.6.dylib \ + $(gb_Package_SOURCEDIR_coinmp)/CoinMP/src/.libs/libCoinMP.1.7.6.dylib \ + $(gb_Package_SOURCEDIR_coinmp)/CoinUtils/src/.libs/libCoinUtils.3.9.11.dylib \ + $(gb_Package_SOURCEDIR_coinmp)/Osi/src/Osi/.libs/libOsi.1.11.5.dylib) \ ) endif diff --git a/external/lpsolve/ExternalProject_lpsolve.mk b/external/lpsolve/ExternalProject_lpsolve.mk index 9576298..dc1b482 100644 --- a/external/lpsolve/ExternalProject_lpsolve.mk +++ b/external/lpsolve/ExternalProject_lpsolve.mk @@ -32,6 +32,7 @@ endif # $(COM) else # $(OS)!=WNT $(call gb_ExternalProject_get_state_target,lpsolve,build): $(call gb_ExternalProject_run,build,\ + $(if $(filter MACOSX,$(OS)),EXTRA_LINKFLAGS='-install_name @__________________________________________________OOO/liblpsolve55.dylib') \ sh $(if $(filter MACOSX,$(OS)),ccc.osx, \ $(if $(filter TRUE,$(DISABLE_DYNLOADING)),ccc.static, \ $(if $(filter AIXGCC,$(OS)$(COM)),ccc.aix.gcc, \ commit 4c63a2fe915063857f00062bd86d059035a9a156 Author: Jean-Pierre Ledure <[email protected]> Date: Sun Feb 1 15:19:08 2015 +0100 Access2Base - Patch#2 Bug in Control.RemoveItem Removing last item of a Listbox produces an "Index out of range" run-time error Bug reported in user forum https://forum.openoffice.org/en/forum/viewtopic.php?f=47&t=75008 Change-Id: I713e7b6c29286c3774652a9a06c9392fdbe858fd Reviewed-on: https://gerrit.libreoffice.org/14271 Reviewed-by: Lionel Elie Mamane <[email protected]> Tested-by: Lionel Elie Mamane <[email protected]> diff --git a/wizards/source/access2base/Control.xba b/wizards/source/access2base/Control.xba index 7e15a1d..0575732 100644 --- a/wizards/source/access2base/Control.xba +++ b/wizards/source/access2base/Control.xba @@ -682,21 +682,24 @@ Dim vRowSource() As Variant, iCount As Integer, i As Integer, j As integer, bFou For j = i To iCount - 1 vRowSource(j) = vRowSource(j + 1) Next j - ReDim Preserve vRowSource(0 To iCount - 1) bFound = True Exit For ' Remove only 1st occurrence of string End If Next i Case Else If pvIndex < 0 Or pvIndex > iCount Then Goto Error_Index - bFound = True For i = pvIndex To iCount - 1 vRowSource(i) = vRowSource(i + 1) Next i - ReDim Preserve vRowSource(0 To iCount - 1) + bFound = True End Select If bFound Then + If iCount > 0 Then ' https://forum.openoffice.org/en/forum/viewtopic.php?f=47&t=75008 + ReDim Preserve vRowSource(0 To iCount - 1) + Else + vRowSource = Array() + End If If _ParentType <> CTLPARENTISDIALOG Then ControlModel.ListSource = vRowSource() End If commit 9d2e221e9281ce52c20469baec15bff8c674c282 Author: Michael Stahl <[email protected]> Date: Mon Feb 2 16:53:45 2015 +0100 tdf#88899: sw: fix expanding of SwDocInfoField with DateTime The lcl_TimeToDouble function produced very small numbers that round to zero. (regression from 9830fd36dbdb72c79703b0c61efc027fba793c5a) Change-Id: I091da9c2a913fae0c2bbf229942db3c1bd3598f4 Reviewed-on: https://gerrit.libreoffice.org/14282 Reviewed-by: Lionel Elie Mamane <[email protected]> Tested-by: Lionel Elie Mamane <[email protected]> diff --git a/sw/source/core/fields/docufld.cxx b/sw/source/core/fields/docufld.cxx index 2ba6e71..5c2c6b4 100644 --- a/sw/source/core/fields/docufld.cxx +++ b/sw/source/core/fields/docufld.cxx @@ -1046,7 +1046,11 @@ template<class T> static double lcl_TimeToDouble( const T& rTime ) { const double fNanoSecondsPerDay = 86400000000000.0; - return ((rTime.Hours*3600000)+(rTime.Minutes*60000)+(rTime.Seconds*1000)+(rTime.NanoSeconds)) / fNanoSecondsPerDay; + return ( (rTime.Hours * SAL_CONST_INT64(3600000000000)) + + (rTime.Minutes * SAL_CONST_INT64( 60000000000)) + + (rTime.Seconds * SAL_CONST_INT64( 1000000000)) + + (rTime.NanoSeconds)) + / fNanoSecondsPerDay; } template<class D> commit df2763e7797a836748595cbd9bd75acc0c9ed2d3 Author: Lionel Elie Mamane <[email protected]> Date: Sat Jan 31 17:01:15 2015 +0100 tdf#88814 parameters are kinda-partially supported, so follow the suggestion Change-Id: I1a39378d521f128e6b8f35a0bce781435f94e5a8 diff --git a/connectivity/source/drivers/macab/MacabStatement.cxx b/connectivity/source/drivers/macab/MacabStatement.cxx index 87b2799..c5a0c3e 100644 --- a/connectivity/source/drivers/macab/MacabStatement.cxx +++ b/connectivity/source/drivers/macab/MacabStatement.cxx @@ -85,7 +85,6 @@ void MacabCommonStatement::disposing() void MacabCommonStatement::resetParameters() const throw(::com::sun::star::sdbc::SQLException) { - impl_throwError(STR_PARA_ONLY_PREPARED); } void MacabCommonStatement::getNextParameter(OUString &) const throw(::com::sun::star::sdbc::SQLException) @@ -327,9 +326,7 @@ void MacabCommonStatement::selectRecords(MacabResultSet *pResult) const throw(SQ { if (SQL_ISRULE(pParseNode, where_clause)) { - // Since we don't support parameters, don't reset them. If we ever - // support them, uncomment this line and fix resetParameters. - //resetParameters(); + resetParameters(); pParseNode = pParseNode->getChild(1); MacabCondition *pCondition = analyseWhereClause(pParseNode); if (pCondition->isAlwaysTrue()) commit 477ffef44215bf662157b0c18af2a7adad9e0377 Author: Michael Stahl <[email protected]> Date: Tue Jan 27 00:20:58 2015 +0100 rhbz#1177022: vcl: fix PDF embedding of Type 1 fonts Problem is that for the "CM Typewriter" font the Width for "space" (32) is exported as 0 instead of 525, which is the correct value in the AFM. The reason is that PDFWriterImpl::emitEmbeddedFont() has various arrays to map from font code points to Unicode code points, and there are duplicate mappings, so the 160->32 mapping overrides 32->32. The PrintFontManager::PrintFont::readAfmMetrics() actually creates a Unicode to font code mapping (which may legitimately be n:1) that is then inverted; add an additional hack to store a set of "preferred" Unicodes so that PDFWriterImpl can pick the right Unicode. Presumably the code that is stored explicitly via "C" or "CH" in the AFM should take priority over more generic mappings. (cherry picked from commit 5183910a90e97cafc3cfaaad40acdaec0b792f6d) Conflicts: vcl/inc/cairotextrender.hxx vcl/inc/salgdi.hxx vcl/inc/textrender.hxx vcl/inc/unx/salgdi.h vcl/source/gdi/pdfwriter_impl.cxx vcl/unx/generic/gdi/cairotextrender.cxx vcl/unx/generic/gdi/salgdi3.cxx Change-Id: Id4205a1cd45ba6a0a5facee1e39f70c3535e7dd4 Reviewed-on: https://gerrit.libreoffice.org/14207 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/vcl/generic/fontmanager/fontmanager.cxx b/vcl/generic/fontmanager/fontmanager.cxx index 0677625..2bef8ad 100644 --- a/vcl/generic/fontmanager/fontmanager.cxx +++ b/vcl/generic/fontmanager/fontmanager.cxx @@ -290,6 +290,7 @@ bool PrintFontManager::PrintFont::readAfmMetrics( MultiAtomProvider* pProvider, } m_aEncodingVector.clear(); + m_aEncodingVectorPriority.clear(); // fill in global info // PSName @@ -503,7 +504,10 @@ bool PrintFontManager::PrintFont::readAfmMetrics( MultiAtomProvider* pProvider, { pUnicodes[i] = pChar->code + 0xf000; if( bFillEncodingvector ) + { m_aEncodingVector[ pUnicodes[i] ] = pChar->code; + m_aEncodingVectorPriority.insert(pUnicodes[i]); + } continue; } @@ -564,7 +568,10 @@ bool PrintFontManager::PrintFont::readAfmMetrics( MultiAtomProvider* pProvider, { m_pMetrics->m_aMetrics[ pUnicodes[i] ] = aMetric; if( bFillEncodingvector ) + { m_aEncodingVector[ pUnicodes[i] ] = pChar->code; + m_aEncodingVectorPriority.insert(pUnicodes[i]); + } } else if( pChar->name ) { @@ -592,13 +599,21 @@ bool PrintFontManager::PrintFont::readAfmMetrics( MultiAtomProvider* pProvider, ::std::pair< ::boost::unordered_multimap< sal_uInt8, sal_Unicode >::const_iterator, ::boost::unordered_multimap< sal_uInt8, sal_Unicode >::const_iterator > aCodes = rManager.getUnicodeFromAdobeCode( pChar->code ); + bool bFirst = true; while( aCodes.first != aCodes.second ) { if( (*aCodes.first).second != 0 ) { m_pMetrics->m_aMetrics[ (*aCodes.first).second ] = aMetric; if( bFillEncodingvector ) + { m_aEncodingVector[ (*aCodes.first).second ] = pChar->code; + if (bFirst) // arbitrarily prefer the first one + { + m_aEncodingVectorPriority.insert((*aCodes.first).second); + bFirst = false; + } + } } ++aCodes.first; } @@ -612,7 +627,10 @@ bool PrintFontManager::PrintFont::readAfmMetrics( MultiAtomProvider* pProvider, m_pMetrics->m_aMetrics[ code ] = aMetric; // maybe should try to find the name in the convtabs ? if( bFillEncodingvector ) + { m_aEncodingVector[ code ] = pChar->code; + m_aEncodingVectorPriority.insert(code); + } } } } @@ -2132,7 +2150,7 @@ void PrintFontManager::getGlyphWidths( fontID nFont, } } -const std::map< sal_Unicode, sal_Int32 >* PrintFontManager::getEncodingMap( fontID nFont, const std::map< sal_Unicode, OString >** pNonEncoded ) const +const std::map< sal_Unicode, sal_Int32 >* PrintFontManager::getEncodingMap( fontID nFont, const std::map< sal_Unicode, OString >** pNonEncoded, std::set<sal_Unicode> const** ppPriority ) const { PrintFont* pFont = getFont( nFont ); if( !pFont || pFont->m_eType != fonttype::Type1 ) @@ -2144,6 +2162,11 @@ const std::map< sal_Unicode, sal_Int32 >* PrintFontManager::getEncodingMap( font if( pNonEncoded ) *pNonEncoded = pFont->m_aNonEncoded.size() ? &pFont->m_aNonEncoded : NULL; + if (ppPriority) + { + *ppPriority = &pFont->m_aEncodingVectorPriority; + } + return pFont->m_aEncodingVector.size() ? &pFont->m_aEncodingVector : NULL; } diff --git a/vcl/generic/print/genpspgraphics.cxx b/vcl/generic/print/genpspgraphics.cxx index 1678852..b89efd6 100644 --- a/vcl/generic/print/genpspgraphics.cxx +++ b/vcl/generic/print/genpspgraphics.cxx @@ -1008,7 +1008,7 @@ bool GenPspGraphics::CreateFontSubset( return bSuccess; } -const Ucs2SIntMap* GenPspGraphics::GetFontEncodingVector( const PhysicalFontFace* pFont, const Ucs2OStrMap** pNonEncoded ) +const Ucs2SIntMap* GenPspGraphics::GetFontEncodingVector( const PhysicalFontFace* pFont, const Ucs2OStrMap** pNonEncoded, std::set<sal_Unicode> const** ppPriority) { // in this context the pFont->GetFontId() is a valid PSP // font since they are the only ones left after the PDF @@ -1016,7 +1016,7 @@ const Ucs2SIntMap* GenPspGraphics::GetFontEncodingVector( const PhysicalFontFace // which this method was created). The correct way would // be to have the GlyphCache search for the PhysicalFontFace pFont psp::fontID aFont = pFont->GetFontId(); - return GenPspGraphics::DoGetFontEncodingVector( aFont, pNonEncoded ); + return GenPspGraphics::DoGetFontEncodingVector( aFont, pNonEncoded, ppPriority ); } void GenPspGraphics::GetGlyphWidths( const PhysicalFontFace* pFont, @@ -1033,7 +1033,7 @@ void GenPspGraphics::GetGlyphWidths( const PhysicalFontFace* pFont, GenPspGraphics::DoGetGlyphWidths( aFont, bVertical, rWidths, rUnicodeEnc ); } -const Ucs2SIntMap* GenPspGraphics::DoGetFontEncodingVector( fontID aFont, const Ucs2OStrMap** pNonEncoded ) +const Ucs2SIntMap* GenPspGraphics::DoGetFontEncodingVector( fontID aFont, const Ucs2OStrMap** pNonEncoded, std::set<sal_Unicode> const** ppPriority) { psp::PrintFontManager& rMgr = psp::PrintFontManager::get(); @@ -1045,7 +1045,7 @@ const Ucs2SIntMap* GenPspGraphics::DoGetFontEncodingVector( fontID aFont, const return NULL; } - return rMgr.getEncodingMap( aFont, pNonEncoded ); + return rMgr.getEncodingMap( aFont, pNonEncoded, ppPriority ); } void GenPspGraphics::DoGetGlyphWidths( psp::fontID aFont, diff --git a/vcl/headless/svptext.cxx b/vcl/headless/svptext.cxx index 49b1464..40f86d4 100644 --- a/vcl/headless/svptext.cxx +++ b/vcl/headless/svptext.cxx @@ -321,7 +321,7 @@ bool SvpSalGraphics::CreateFontSubset( return bSuccess; } -const Ucs2SIntMap* SvpSalGraphics::GetFontEncodingVector( const PhysicalFontFace* pFont, const Ucs2OStrMap** pNonEncoded ) +const Ucs2SIntMap* SvpSalGraphics::GetFontEncodingVector( const PhysicalFontFace* pFont, const Ucs2OStrMap** pNonEncoded, std::set<sal_Unicode> const** ppPriority) { // in this context the pFont->GetFontId() is a valid PSP // font since they are the only ones left after the PDF @@ -329,7 +329,7 @@ const Ucs2SIntMap* SvpSalGraphics::GetFontEncodingVector( const PhysicalFontFace // which this method was created). The correct way would // be to have the GlyphCache search for the PhysicalFontFace pFont psp::fontID aFont = pFont->GetFontId(); - return GenPspGraphics::DoGetFontEncodingVector( aFont, pNonEncoded ); + return GenPspGraphics::DoGetFontEncodingVector(aFont, pNonEncoded, ppPriority); } const void* SvpSalGraphics::GetEmbedFontData( diff --git a/vcl/inc/fontmanager.hxx b/vcl/inc/fontmanager.hxx index e1203bd..0091849 100644 --- a/vcl/inc/fontmanager.hxx +++ b/vcl/inc/fontmanager.hxx @@ -202,7 +202,12 @@ class VCL_PLUGIN_PUBLIC PrintFontManager bool m_bHaveVerticalSubstitutedGlyphs; bool m_bUserOverride; + /// mapping from unicode (well, UCS-2) to font code std::map< sal_Unicode, sal_Int32 > m_aEncodingVector; + /// HACK for Type 1 fonts: if multiple UCS-2 codes map to the same + /// font code, this set contains the preferred one, i.e., the one that + /// is specified explicitly via "C" or "CH" in the AFM file + std::set<sal_Unicode> m_aEncodingVectorPriority; std::map< sal_Unicode, OString > m_aNonEncoded; explicit PrintFont( fonttype::type eType ); @@ -438,7 +443,7 @@ public: // if ppNonEncoded is set and non encoded type1 glyphs exist // then *ppNonEncoded is set to the mapping for nonencoded glyphs. // the encoding vector contains -1 for non encoded glyphs - const std::map< sal_Unicode, sal_Int32 >* getEncodingMap( fontID nFontID, const std::map< sal_Unicode, OString >** ppNonEncoded ) const; + const std::map< sal_Unicode, sal_Int32 >* getEncodingMap( fontID nFontID, const std::map< sal_Unicode, OString >** ppNonEncoded, std::set<sal_Unicode> const ** ppPriority ) const; // evaluates copyright flags for TrueType fonts for printing/viewing // type1 fonts do not have such a feature, so return for them is true diff --git a/vcl/inc/generic/genpspgraphics.h b/vcl/inc/generic/genpspgraphics.h index 9cc4766..0f64be9 100644 --- a/vcl/inc/generic/genpspgraphics.h +++ b/vcl/inc/generic/genpspgraphics.h @@ -60,7 +60,8 @@ public: // helper methods for sharing with X11SalGraphics static const Ucs2SIntMap* DoGetFontEncodingVector( psp::fontID aFont, - const Ucs2OStrMap** pNonEncoded ); + const Ucs2OStrMap** pNonEncoded, + std::set<sal_Unicode> const** ppPriority); static void DoGetGlyphWidths( psp::fontID aFont, bool bVertical, Int32Vector& rWidths, @@ -106,7 +107,8 @@ public: int nGlyphs, FontSubsetInfo& rInfo ) SAL_OVERRIDE; virtual const Ucs2SIntMap* GetFontEncodingVector( const PhysicalFontFace*, - const Ucs2OStrMap** ppNonEncoded ) SAL_OVERRIDE; + const Ucs2OStrMap** ppNonEncoded, + std::set<sal_Unicode> const** ppPriority) SAL_OVERRIDE; virtual const void* GetEmbedFontData( const PhysicalFontFace*, const sal_Ucs* pUnicodes, sal_Int32* pWidths, diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx index 800ab1a..898e7ff 100644 --- a/vcl/inc/headless/svpgdi.hxx +++ b/vcl/inc/headless/svpgdi.hxx @@ -169,7 +169,7 @@ public: int nGlyphs, FontSubsetInfo& rInfo ) SAL_OVERRIDE; - virtual const Ucs2SIntMap* GetFontEncodingVector( const PhysicalFontFace*, const Ucs2OStrMap** ppNonEncoded ) SAL_OVERRIDE; + virtual const Ucs2SIntMap* GetFontEncodingVector( const PhysicalFontFace*, const Ucs2OStrMap** ppNonEncoded, std::set<sal_Unicode> const** ) SAL_OVERRIDE; virtual const void* GetEmbedFontData( const PhysicalFontFace*, const sal_Ucs* pUnicodes, sal_Int32* pWidths, diff --git a/vcl/inc/quartz/salgdi.h b/vcl/inc/quartz/salgdi.h index 57dec5b..d73964b 100644 --- a/vcl/inc/quartz/salgdi.h +++ b/vcl/inc/quartz/salgdi.h @@ -366,7 +366,7 @@ public: // glyphs with only a name) exist it is set to the corresponding // map for non encoded glyphs; the encoding vector contains -1 // as encoding for these cases - virtual const Ucs2SIntMap* GetFontEncodingVector( const PhysicalFontFace*, const Ucs2OStrMap** ppNonEncoded ) SAL_OVERRIDE; + virtual const Ucs2SIntMap* GetFontEncodingVector( const PhysicalFontFace*, const Ucs2OStrMap** ppNonEncoded, std::set<sal_Unicode> const** ) SAL_OVERRIDE; // GetEmbedFontData: gets the font data for a font marked // embeddable by GetDevFontList or NULL in case of error diff --git a/vcl/inc/salgdi.hxx b/vcl/inc/salgdi.hxx index 8ef2638..f0da7f6 100644 --- a/vcl/inc/salgdi.hxx +++ b/vcl/inc/salgdi.hxx @@ -30,6 +30,7 @@ #include "sallayout.hxx" #include <map> +#include <set> class PhysicalFontCollection; class SalBitmap; @@ -273,7 +274,7 @@ public: // map for non encoded glyphs; the encoding vector contains -1 // as encoding for these cases virtual const Ucs2SIntMap* - GetFontEncodingVector( const PhysicalFontFace*, const Ucs2OStrMap** ppNonEncoded ) = 0; + GetFontEncodingVector( const PhysicalFontFace*, const Ucs2OStrMap** ppNonEncoded, std::set<sal_Unicode> const** ppPriority) = 0; // GetEmbedFontData: gets the font data for a font marked // embeddable by GetDevFontList or NULL in case of error diff --git a/vcl/inc/unx/salgdi.h b/vcl/inc/unx/salgdi.h index 7c799f4..1518a43 100644 --- a/vcl/inc/unx/salgdi.h +++ b/vcl/inc/unx/salgdi.h @@ -242,7 +242,7 @@ public: int nGlyphs, FontSubsetInfo& rInfo ) SAL_OVERRIDE; - virtual const Ucs2SIntMap* GetFontEncodingVector( const PhysicalFontFace*, const Ucs2OStrMap** ppNonEncoded ) SAL_OVERRIDE; + virtual const Ucs2SIntMap* GetFontEncodingVector( const PhysicalFontFace*, const Ucs2OStrMap** ppNonEncoded, std::set<sal_Unicode> const**) SAL_OVERRIDE; virtual const void* GetEmbedFontData( const PhysicalFontFace*, const sal_Ucs* pUnicodes, sal_Int32* pWidths, diff --git a/vcl/inc/win/salgdi.h b/vcl/inc/win/salgdi.h index dac4d6e..82d79a6 100644 --- a/vcl/inc/win/salgdi.h +++ b/vcl/inc/win/salgdi.h @@ -346,7 +346,7 @@ public: // glyphs with only a name) exist it is set to the corresponding // map for non encoded glyphs; the encoding vector contains -1 // as encoding for these cases - virtual const Ucs2SIntMap* GetFontEncodingVector( const PhysicalFontFace*, const Ucs2OStrMap** ppNonEncoded ); + virtual const Ucs2SIntMap* GetFontEncodingVector( const PhysicalFontFace*, const Ucs2OStrMap** ppNonEncoded, std::set<sal_Unicode> const** ); // GetEmbedFontData: gets the font data for a font marked // embeddable by GetDevFontList or NULL in case of error diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx index 4a346df..287401e 100644 --- a/vcl/quartz/salgdi.cxx +++ b/vcl/quartz/salgdi.cxx @@ -757,7 +757,7 @@ void AquaSalGraphics::GetGlyphWidths( const PhysicalFontFace* pFontData, bool bV } const Ucs2SIntMap* AquaSalGraphics::GetFontEncodingVector( - const PhysicalFontFace*, const Ucs2OStrMap** /*ppNonEncoded*/ ) + const PhysicalFontFace*, const Ucs2OStrMap** /*ppNonEncoded*/, std::set<sal_Unicode> const** ) { return NULL; } diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index 888dd1c..4d21f4c 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -3074,7 +3074,9 @@ std::map< sal_Int32, sal_Int32 > PDFWriterImpl::emitEmbeddedFont( const Physical sal_Int32 nFontDescriptor = 0; // prepare font encoding - const Ucs2SIntMap* pEncoding = m_pReferenceDevice->mpGraphics->GetFontEncodingVector( pFont, NULL ); + std::set<sal_Unicode> const * pPriority(0); + const Ucs2SIntMap *const pEncoding = + m_pReferenceDevice->mpGraphics->GetFontEncodingVector( pFont, NULL, &pPriority ); sal_Int32 nToUnicodeStream = 0; sal_uInt8 nEncoding[256]; sal_Ucs nEncodedCodes[256]; @@ -3101,8 +3103,31 @@ std::map< sal_Int32, sal_Int32 > PDFWriterImpl::emitEmbeddedFont( const Physical //Instead perhaps we could try and get the GetFontCharMap and loop //over sal_UCS4 GetCharFromIndex( int nCharIndex ) const from 0 to 255 //to build it up - if (nEncodedCodes[nCode] != 0) - continue; + if (nEncoding[nCode] != 0) + { + // should not have 2 identical mappings + assert(nEncodedCodes[nCode] != it->first); + if (pPriority) + { + bool bExist = pPriority->find(nEncodedCodes[nCode]) != pPriority->end(); + bool bIter = pPriority->find(it->first) != pPriority->end(); + SAL_WARN_IF(bExist && bIter, "vcl.gdi", "both are preferred? odd..."); + if (bExist) + { + continue; + } + // note: aUnicodes will contain the old one but that + // does not matter because there's nothing iterating it + } + else + { + // is this fallback important? let's prefer lower one. + // actually the map is sorted so just rely on that + assert(nEncodedCodes[nCode] < it->first); + SAL_WARN("vcl.gdi", "emitEmbeddedFont: ignoring code " << nCode << " mapping to " << it->first << " in favor of " << nEncodedCodes[nCode]); + continue; + } + } nEncodedCodes[ nCode ] = it->first; nEncoding[ nCode ] = static_cast<sal_uInt8>( nCode ); pEncToUnicodeIndex[ nCode ] = static_cast<sal_Int32>(aUnicodes.size()); @@ -7226,7 +7251,7 @@ void PDFWriterImpl::registerGlyphs( int nGlyphs, const Ucs2SIntMap* pEncoding = NULL; const Ucs2OStrMap* pNonEncoded = NULL; getReferenceDevice()->AcquireGraphics(); - pEncoding = m_pReferenceDevice->mpGraphics->GetFontEncodingVector( pCurrentFont, &pNonEncoded ); + pEncoding = m_pReferenceDevice->mpGraphics->GetFontEncodingVector( pCurrentFont, &pNonEncoded, 0 ); Ucs2SIntMap::const_iterator enc_it; Ucs2OStrMap::const_iterator nonenc_it; diff --git a/vcl/unx/generic/gdi/salgdi3.cxx b/vcl/unx/generic/gdi/salgdi3.cxx index 841aeef..6f0544b 100644 --- a/vcl/unx/generic/gdi/salgdi3.cxx +++ b/vcl/unx/generic/gdi/salgdi3.cxx @@ -721,7 +721,7 @@ void X11SalGraphics::FreeEmbedFontData( const void* pData, long nLen ) GenPspGraphics::DoFreeEmbedFontData( pData, nLen ); } -const Ucs2SIntMap* X11SalGraphics::GetFontEncodingVector( const PhysicalFontFace* pFont, const Ucs2OStrMap** pNonEncoded ) +const Ucs2SIntMap* X11SalGraphics::GetFontEncodingVector( const PhysicalFontFace* pFont, const Ucs2OStrMap** pNonEncoded, std::set<sal_Unicode> const** ppPriority) { // in this context the pFont->GetFontId() is a valid PSP // font since they are the only ones left after the PDF @@ -729,7 +729,7 @@ const Ucs2SIntMap* X11SalGraphics::GetFontEncodingVector( const PhysicalFontFace // which this method was created). The correct way would // be to have the GlyphCache search for the PhysicalFontFace pFont psp::fontID aFont = pFont->GetFontId(); - return GenPspGraphics::DoGetFontEncodingVector( aFont, pNonEncoded ); + return GenPspGraphics::DoGetFontEncodingVector( aFont, pNonEncoded, ppPriority ); } void X11SalGraphics::GetGlyphWidths( const PhysicalFontFace* pFont, diff --git a/vcl/win/source/gdi/salgdi3.cxx b/vcl/win/source/gdi/salgdi3.cxx index d2e13a9..2c5aaf7 100644 --- a/vcl/win/source/gdi/salgdi3.cxx +++ b/vcl/win/source/gdi/salgdi3.cxx @@ -2654,7 +2654,7 @@ void WinSalGraphics::FreeEmbedFontData( const void* pData, long /*nLen*/ ) delete[] reinterpret_cast<char*>(const_cast<void*>(pData)); } -const Ucs2SIntMap* WinSalGraphics::GetFontEncodingVector( const PhysicalFontFace* pFont, const Ucs2OStrMap** pNonEncoded ) +const Ucs2SIntMap* WinSalGraphics::GetFontEncodingVector( const PhysicalFontFace* pFont, const Ucs2OStrMap** pNonEncoded, std::set<sal_Unicode> const**) { // TODO: even for builtin fonts we get here... why? if( !pFont->IsEmbeddable() ) commit 321a758cd44713bcb1370a0fb3c4caa84a33263e Author: Andras Timar <[email protected]> Date: Tue Jan 27 22:36:27 2015 +0100 tdf#87803 bin useless $buildidstring Change-Id: Ie5f3651ec8386cdb59ebbd63c12670fd8668499a (cherry picked from commit 94716a4d071418ac4cef42ce85da1c42a0df6347) Reviewed-on: https://gerrit.libreoffice.org/14221 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/solenv/bin/modules/installer/windows/property.pm b/solenv/bin/modules/installer/windows/property.pm index 0742ebd..d09d315 100644 --- a/solenv/bin/modules/installer/windows/property.pm +++ b/solenv/bin/modules/installer/windows/property.pm @@ -53,13 +53,6 @@ sub get_arpcomments_for_property_table $comment = $comment . " ($languagestring)"; - my $localminor = ""; - $localminor = $installer::globals::minor; - - my $buildidstring = "(" . $installer::globals::build . $localminor . "(Build:" . $installer::globals::buildid . "))"; - - $comment = $comment . " " . $buildidstring; - return $comment; } commit 11cab73f1d70be0821477030a6b63c416cc2a64c Author: Michael Stahl <[email protected]> Date: Wed Jan 28 17:13:15 2015 +0100 gdb pretty printers: fix the sw::mark::IMark and SwModify printers If these are called on a value that is of a different type than what is checked in the children() method, nothing is printed except exceptions about non-existent _iterator. GDB can figure out the dynamic type itself and call the pretty printer only if it's actually a UnoMark so don't register it for IMark. Same thing for SwUnoCrsr, there is already a class for it. Change-Id: I00238f1e3f01741d607eec9d47671302b858b965 (cherry picked from commit 218bd97b83238496a4d2b36d0a1edaca519cdde5) Reviewed-on: https://gerrit.libreoffice.org/14239 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/solenv/gdb/libreoffice/sw.py b/solenv/gdb/libreoffice/sw.py index 97cba13..71445d5 100644 --- a/solenv/gdb/libreoffice/sw.py +++ b/solenv/gdb/libreoffice/sw.py @@ -89,8 +89,8 @@ class SwRectPrinter(object): children = [ ( 'point', point), ( 'size', size ) ] return children.__iter__() -class SwIMarkPrinter(object): - '''Prints sw::mark::IMark.''' +class SwUnoMarkPrinter(object): + '''Prints sw::mark::UnoMark.''' def __init__(self, typename, value): self.typename = typename @@ -100,31 +100,11 @@ class SwIMarkPrinter(object): return "%s" % (self.typename) def children(self): - if str(self.value.dynamic_type) == "sw::mark::UnoMark": - unoMark = self.value.cast(self.value.dynamic_type) - pos1 = unoMark['m_pPos1'] - pos2 = unoMark['m_pPos2'] - children = [ ( 'pos1', pos1), ( 'pos2', pos2 ) ] - return children.__iter__() - else: - return self._iterator(self.value) - -class SwModifyPrinter(object): - '''Prints SwModify.''' - - def __init__(self, typename, value): - self.typename = typename - self.value = value - - def to_string(self): - return "%s" % (self.typename) - - def children(self): - if str(self.value.dynamic_type) == "SwUnoCrsr": - unoCrsr = self.value.cast(self.value.dynamic_type) - return SwUnoCrsrPrinter(self.typename, unoCrsr).children() - else: - return self._iterator(self.value) + unoMark = self.value.cast(self.value.dynamic_type) + pos1 = unoMark['m_pPos1'] + pos2 = unoMark['m_pPos2'] + children = [ ( 'pos1', pos1), ( 'pos2', pos2 ) ] + return children.__iter__() class SwXTextRangeImplPrinter(object): '''Prints SwXTextRange::Impl.''' @@ -313,11 +293,10 @@ def build_pretty_printers(): printer.add('SwPaM', SwPaMPrinter) printer.add('SwUnoCrsr', SwUnoCrsrPrinter) printer.add('SwRect', SwRectPrinter) - printer.add('sw::mark::IMark', SwIMarkPrinter) + printer.add('sw::mark::UnoMark', SwUnoMarkPrinter) printer.add('SwXTextRange::Impl', SwXTextRangeImplPrinter) printer.add('sw::UnoImplPtr', SwUnoImplPtrPrinter) printer.add('SwXTextRange', SwXTextRangePrinter) - printer.add('SwModify', SwModifyPrinter) printer.add('SwXTextCursor::Impl', SwXTextCursorImplPrinter) printer.add('SwXTextCursor', SwXTextCursorPrinter) commit cdf040bbf2cee33d56b9ec90a6a33bb389d8cf6d Author: Eike Rathke <[email protected]> Date: Thu Jan 29 22:57:13 2015 +0100 Resolves: tdf#88740 parse with locale decimal separator And use a proper string to double conversion and early bail out conditions. (cherry picked from commit 1884c0bbd40f0ded41d7a1656cb64fb1f6368c36) tdf#88740 fix sidebar angle rotation i18n (cherry picked from commit 9a7bf47098fe69b5c6069372708918ef94a9d597) use a less ugly string to double conversion, tdf#88740 follow-up And check string length before accessing characters.. (cherry picked from commit 3ba5ac834780fc2565aff99e42dd8c3b2202fba3) 30355f3aaf77b1952e21050e3593e575571d7aaa ac3c2bf2f67f0cc7fc106515a875512771676e01 f97a25cd2cab0dccf2154465da7c1235ef3ca8c6 Backport: added vcl/settings.hxx Change-Id: I6c89dd850405ad74ebd175800131cdcac19a8c86 Reviewed-on: https://gerrit.libreoffice.org/14245 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx b/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx index bdc61d7d7..9326d6e 100644 --- a/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx +++ b/sc/source/ui/sidebar/AlignmentPropertyPanel.cxx @@ -26,6 +26,8 @@ #include <svx/algitem.hxx> #include <svx/dlgutil.hxx> #include <vcl/toolbox.hxx> +#include <vcl/settings.hxx> +#include <vcl/svapp.hxx> #include <svx/sidebar/SidebarDialControl.hxx> using namespace css; @@ -113,16 +115,35 @@ void AlignmentPropertyPanel::Initialize() IMPL_LINK( AlignmentPropertyPanel, AngleModifiedHdl, void *, EMPTYARG ) { OUString sTmp = mpMtrAngle->GetText(); + if (sTmp.isEmpty()) + return 0; + sal_Unicode nChar = sTmp[0]; + if( nChar == '-' ) + { + if (sTmp.getLength() < 2) + return 0; + nChar = sTmp[1]; + } + + if( (nChar < '0') || (nChar > '9') ) + return 0; - sal_Unicode nChar = sTmp.isEmpty() ? 0 : sTmp[0]; - if((sTmp.getLength()== 1 && nChar == '-') || - (nChar != '-' && ((nChar < '0') || (nChar > '9') ) )) ////modify + const LocaleDataWrapper& rLocaleWrapper( Application::GetSettings().GetLocaleDataWrapper() ); + const sal_Unicode cSep = rLocaleWrapper.getNumDecimalSep()[0]; + + // Do not check that the entire string was parsed up to its end, there may + // be a degree symbol following the number. Note that this also means that + // the number recognized just stops at any non-matching character. + /* TODO: we could check for the degree symbol stop if there are no other + * cases with different symbol characters in any language? */ + rtl_math_ConversionStatus eStatus; + double fTmp = rtl::math::stringToDouble( sTmp, cSep, 0, &eStatus); + if (eStatus != rtl_math_ConversionStatus_Ok) return 0; - double dTmp = sTmp.toDouble(); - FormatDegrees(dTmp); + FormatDegrees(fTmp); - sal_Int64 nTmp = (sal_Int64)dTmp*100; + sal_Int64 nTmp = (sal_Int64)fTmp*100; SfxInt32Item aAngleItem( SID_ATTR_ALIGN_DEGREES,(sal_uInt32) nTmp); GetBindings()->GetDispatcher()->Execute( diff --git a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx index b7573a1f..d0369df 100644 --- a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx +++ b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx @@ -492,12 +492,13 @@ IMPL_LINK( PosSizePropertyPanel, ClickAutoHdl, void *, EMPTYARG ) IMPL_LINK( PosSizePropertyPanel, AngleModifiedHdl, void *, EMPTYARG ) { OUString sTmp = mpMtrAngle->GetText(); - bool bNegative = false; + if (sTmp.isEmpty()) + return 0; sal_Unicode nChar = sTmp[0]; - if( nChar == '-' ) { - bNegative = true; + if (sTmp.getLength() < 2) + return 0; nChar = sTmp[1]; } @@ -507,15 +508,20 @@ IMPL_LINK( PosSizePropertyPanel, AngleModifiedHdl, void *, EMPTYARG ) const LocaleDataWrapper& rLocaleWrapper( Application::GetSettings().GetLocaleDataWrapper() ); const sal_Unicode cSep = rLocaleWrapper.getNumDecimalSep()[0]; - sTmp = sTmp.replace(cSep,'.'); // toDouble() expects decimal point + // Do not check that the entire string was parsed up to its end, there may + // be a degree symbol following the number. Note that this also means that + // the number recognized just stops at any non-matching character. + /* TODO: we could check for the degree symbol stop if there are no other + * cases with different symbol characters in any language? */ + rtl_math_ConversionStatus eStatus; + double fTmp = rtl::math::stringToDouble( sTmp, cSep, 0, &eStatus); + if (eStatus != rtl_math_ConversionStatus_Ok) + return 0; + + while (fTmp < 0) + fTmp += 360; - double dTmp = sTmp.toDouble(); - if(bNegative) - { - while(dTmp<0) - dTmp += 360; - } - sal_Int64 nTmp = dTmp*100; + sal_Int64 nTmp = fTmp*100; // #i123993# Need to take UIScale into account when executing rotations const double fUIScale(mpView && mpView->GetModel() ? double(mpView->GetModel()->GetUIScale()) : 1.0); commit 204f2e6473ae352eda45fbbab0191dc2bc395b6c Author: Lionel Elie Mamane <[email protected]> Date: Wed Jan 28 21:23:43 2015 +0100 fix build Change-Id: I2c90deee96a090ddcd74ea2b2a33cc63213be2e6 Reviewed-on: https://gerrit.libreoffice.org/14235 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx index d2cc20a..b7573a1f 100644 --- a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx +++ b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx @@ -37,6 +37,7 @@ #include <vcl/toolbox.hxx> #include <svl/aeitem.hxx> #include <svx/svdview.hxx> +#include <vcl/settings.hxx> using namespace css; using namespace cssu; commit 59e5d24908ab227f3cdc75dba1ec75266f3f0230 Author: Andras Timar <[email protected]> Date: Wed Jan 28 11:07:00 2015 +0100 tdf#88740 fix sidebar angle rotation i18n Change-Id: I30355f3aaf77b1952e21050e3593e575571d7aaa (cherry picked from commit 9a7bf47098fe69b5c6069372708918ef94a9d597) Reviewed-on: https://gerrit.libreoffice.org/14222 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx index b2c3754..d2cc20a 100644 --- a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx +++ b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx @@ -502,6 +502,12 @@ IMPL_LINK( PosSizePropertyPanel, AngleModifiedHdl, void *, EMPTYARG ) if( (nChar < '0') || (nChar > '9') ) return 0; + + const LocaleDataWrapper& rLocaleWrapper( Application::GetSettings().GetLocaleDataWrapper() ); + const sal_Unicode cSep = rLocaleWrapper.getNumDecimalSep()[0]; + + sTmp = sTmp.replace(cSep,'.'); // toDouble() expects decimal point + double dTmp = sTmp.toDouble(); if(bNegative) { commit a63f1ff53c63de2078d22447f93ae2b99778d8a9 Author: Christian Lohmaier <[email protected]> Date: Wed Jan 28 12:55:01 2015 +0100 update credits Change-Id: Id2552278aa27f0f3164482cacb6582820b804c3d diff --git a/readlicense_oo/license/CREDITS.fodt b/readlicense_oo/license/CREDITS.fodt index 370e3a8..6f7dcda 100644 --- a/readlicense_oo/license/CREDITS.fodt +++ b/readlicense_oo/license/CREDITS.fodt @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oas is:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names: experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text"> - <office:meta><dc:title>Credits » LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits for the LibreOffice development/coding.</dc:description><meta:generator>LibreOffice/4.3.5.2$Linux_X86_64 LibreOffice_project/3a87456aaa6a95c63eea1c1b3201acedf0751bd5</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic meta:table-count="5" meta:image-count="1" meta:object-count="0" meta:page-count="2" meta:paragraph-count="3070" meta:word-count="10833" meta:character-count="78390" meta:non-whitespace-character-count="68624"/><meta:user-defined meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta> + <office:meta><dc:title>Credits » LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits for the LibreOffice development/coding.</dc:description><meta:generator>LibreOffice/4.3.5.2$Linux_X86_64 LibreOffice_project/3a87456aaa6a95c63eea1c1b3201acedf0751bd5</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic meta:table-count="5" meta:image-count="1" meta:object-count="0" meta:page-count="2" meta:paragraph-count="3082" meta:word-count="10870" meta:character-count="78655" meta:non-whitespace-character-count="68855"/><meta:user-defined meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta> <office:settings> <config:config-item-set config:name="ooo:view-settings"> - <config:config-item config:name="ViewAreaTop" config:type="long">3441</config:config-item> + <config:config-item config:name="ViewAreaTop" config:type="long">1275</config:config-item> <config:config-item config:name="ViewAreaLeft" config:type="long">501</config:config-item> - <config:config-item config:name="ViewAreaWidth" config:type="long">36846</config:config-item> - <config:config-item config:name="ViewAreaHeight" config:type="long">24493</config:config-item> + <config:config-item config:name="ViewAreaWidth" config:type="long">67326</config:config-item> + <config:config-item config:name="ViewAreaHeight" config:type="long">32140</config:config-item> <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item> <config:config-item config:name="InBrowseMode" config:type="boolean">true</config:config-item> <config:config-item-map-indexed config:name="Views"> @@ -16,9 +16,9 @@ <config:config-item config:name="ViewLeft" config:type="long">3709</config:config-item> <config:config-item config:name="ViewTop" config:type="long">3475</config:config-item> <config:config-item config:name="VisibleLeft" config:type="long">501</config:config-item> - <config:config-item config:name="VisibleTop" config:type="long">3441</config:config-item> - <config:config-item config:name="VisibleRight" config:type="long">37345</config:config-item> - <config:config-item config:name="VisibleBottom" config:type="long">27933</config:config-item> + <config:config-item config:name="VisibleTop" config:type="long">1275</config:config-item> + <config:config-item config:name="VisibleRight" config:type="long">67825</config:config-item> + <config:config-item config:name="VisibleBottom" config:type="long">33413</config:config-item> <config:config-item config:name="ZoomType" config:type="short">0</config:config-item> <config:config-item config:name="ViewLayoutColumns" config:type="short">0</config:config-item> <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item> @@ -82,7 +82,7 @@ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item> <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item> <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/> - <config:config-item config:name="Rsid" config:type="int">2435427</config:config-item> + <config:config-item config:name="Rsid" config:type="int">2586761</config:config-item> <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item> <config:config-item config:name="PrinterSetup" config:type="base64Binary"/> <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item> @@ -301,26 +301,23 @@ </office:styles> <office:automatic-styles> <style:style style:name="Tabelle1" style:family="table"> - <style:table-properties style:width="26.393cm" table:align="left"/> + <style:table-properties style:width="25.539cm" table:align="left"/> </style:style> <style:style style:name="Tabelle1.A" style:family="table-column"> <style:table-column-properties style:column-width="6.659cm"/> </style:style> <style:style style:name="Tabelle1.B" style:family="table-column"> - <style:table-column-properties style:column-width="6.151cm"/> + <style:table-column-properties style:column-width="6.793cm"/> </style:style> <style:style style:name="Tabelle1.C" style:family="table-column"> - <style:table-column-properties style:column-width="6.793cm"/> + <style:table-column-properties style:column-width="5.858cm"/> </style:style> <style:style style:name="Tabelle1.D" style:family="table-column"> - <style:table-column-properties style:column-width="6.791cm"/> + <style:table-column-properties style:column-width="6.23cm"/> </style:style> <style:style style:name="Tabelle1.A1" style:family="table-cell"> <style:table-cell-properties style:vertical-align="middle" fo:padding="0.049cm" fo:border="none"/> </style:style> - <style:style style:name="Tabelle1.B220" style:family="table-cell"> - <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/> - </style:style> <style:style style:name="Tabelle2" style:family="table"> <style:table-properties style:width="16.69cm" table:align="left"/> </style:style> @@ -385,23 +382,26 @@ <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/> </style:style> <style:style style:name="Tabelle5" style:family="table"> - <style:table-properties style:width="31.635cm" table:align="left"/> + <style:table-properties style:width="31.424cm" table:align="left"/> </style:style> <style:style style:name="Tabelle5.A" style:family="table-column"> - <style:table-column-properties style:column-width="6.632cm"/> + <style:table-column-properties style:column-width="6.553cm"/> </style:style> <style:style style:name="Tabelle5.B" style:family="table-column"> - <style:table-column-properties style:column-width="6.738cm"/> + <style:table-column-properties style:column-width="6.364cm"/> </style:style> <style:style style:name="Tabelle5.C" style:family="table-column"> - <style:table-column-properties style:column-width="11.689cm"/> + <style:table-column-properties style:column-width="6.738cm"/> </style:style> <style:style style:name="Tabelle5.D" style:family="table-column"> - <style:table-column-properties style:column-width="6.576cm"/> + <style:table-column-properties style:column-width="11.769cm"/> </style:style> <style:style style:name="Tabelle5.A1" style:family="table-cell"> <style:table-cell-properties style:vertical-align="middle" fo:padding="0.049cm" fo:border="none"/> </style:style> + <style:style style:name="Tabelle5.B507" style:family="table-cell"> + <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/> + </style:style> <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Table_20_Contents"> <style:text-properties fo:font-size="2pt" style:font-size-asian="2pt" style:font-size-complex="2pt"/> </style:style> @@ -1008,7 +1008,7 @@ </office:binary-data> </draw:image> </draw:frame>Credits</text:p> - <text:p text:style-name="Text_20_body">1012 individuals contributed to OpenOffice.org (and whose contributions were imported into LibreOffice) or LibreOffice until 2014-11-24 13:52:48.</text:p> + <text:p text:style-name="Text_20_body">1015 individuals contributed to OpenOffice.org (and whose contributions were imported into LibreOffice) or LibreOffice until 2015-01-22 15:45:37.</text:p> <text:p text:style-name="Text_20_body"><text:span text:style-name="T1">*</text:span> marks developers whose first contributions happened after 2010-09-28.</text:p> <text:h text:style-name="Heading_20_2" text:outline-level="2">Developers committing code since 2010-09-28</text:h> <table:table table:name="Tabelle1" table:style-name="Tabelle1"> @@ -1035,38 +1035,38 @@ <text:p text:style-name="Table_20_Contents">Vladimir Glazunov<text:line-break/>Commits: 25434<text:line-break/>Joined: 2000-12-04</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Caolán McNamara<text:line-break/>Commits: 16251<text:line-break/>Joined: 2000-10-10</text:p> + <text:p text:style-name="Table_20_Contents">Caolán McNamara<text:line-break/>Commits: 16427<text:line-break/>Joined: 2000-10-10</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Ivo Hinkelmann<text:line-break/>Commits: 9480<text:line-break/>Joined: 2002-09-09</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Stephan Bergmann<text:line-break/>Commits: 7929<text:line-break/>Joined: 2000-10-04</text:p> + <text:p text:style-name="Table_20_Contents">Stephan Bergmann<text:line-break/>Commits: 8054<text:line-break/>Joined: 2000-10-04</text:p> </table:table-cell> </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Tor Lillqvist<text:line-break/>Commits: 6614<text:line-break/>Joined: 2010-03-23</text:p> + <text:p text:style-name="Table_20_Contents">Tor Lillqvist<text:line-break/>Commits: 6634<text:line-break/>Joined: 2010-03-23</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Kohei Yoshida<text:line-break/>Commits: 5346<text:line-break/>Joined: 2009-06-19</text:p> + <text:p text:style-name="Table_20_Contents">Kohei Yoshida<text:line-break/>Commits: 5360<text:line-break/>Joined: 2009-06-19</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Frank Schoenheit [fs]<text:line-break/>Commits: 5008<text:line-break/>Joined: 2000-09-19</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Michael Stahl<text:line-break/>Commits: 4212<text:line-break/>Joined: 2008-06-16</text:p> + <text:p text:style-name="Table_20_Contents">Michael Stahl<text:line-break/>Commits: 4243<text:line-break/>Joined: 2008-06-16</text:p> </table:table-cell> </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Miklos Vajna<text:line-break/>Commits: 3864<text:line-break/>Joined: 2010-07-29</text:p> + <text:p text:style-name="Table_20_Contents">Miklos Vajna<text:line-break/>Commits: 3928<text:line-break/>Joined: 2010-07-29</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 3368<text:line-break/>Joined: <text:span text:style-name="T2">2011-12-12</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 3376<text:line-break/>Joined: <text:span text:style-name="T2">2011-12-12</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Markus Mohrhard<text:line-break/>Commits: 3240<text:line-break/>Joined: <text:span text:style-name="T2">2011-03-17</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Markus Mohrhard<text:line-break/>Commits: 3257<text:line-break/>Joined: <text:span text:style-name="T2">2011-03-17</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Hans-Joachim Lankenau<text:line-break/>Commits: 3007<text:line-break/>Joined: 2000-09-19</text:p> @@ -1074,7 +1074,7 @@ </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">David Tardon<text:line-break/>Commits: 2940<text:line-break/>Joined: 2009-11-12</text:p> + <text:p text:style-name="Table_20_Contents">David Tardon<text:line-break/>Commits: 2950<text:line-break/>Joined: 2009-11-12</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Ocke Janssen [oj]<text:line-break/>Commits: 2850<text:line-break/>Joined: 2000-09-20</text:p> @@ -1083,12 +1083,12 @@ <text:p text:style-name="Table_20_Contents">Mathias Bauer<text:line-break/>Commits: 2580<text:line-break/>Joined: 2000-09-20</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Oliver Specht<text:line-break/>Commits: 2458<text:line-break/>Joined: 2000-09-21</text:p> + <text:p text:style-name="Table_20_Contents">Eike Rathke<text:line-break/>Commits: 2469<text:line-break/>Joined: 2000-10-11</text:p> </table:table-cell> </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Eike Rathke<text:line-break/>Commits: 2451<text:line-break/>Joined: 2000-10-11</text:p> + <text:p text:style-name="Table_20_Contents">Oliver Specht<text:line-break/>Commits: 2458<text:line-break/>Joined: 2000-09-21</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Thomas Arnhold<text:line-break/>Commits: 2176<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-16</text:span></text:p> @@ -1097,12 +1097,12 @@ <text:p text:style-name="Table_20_Contents">Philipp Lohmann [pl]<text:line-break/>Commits: 2089<text:line-break/>Joined: 2000-09-21</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Norbert Thiebaud<text:line-break/>Commits: 2083<text:line-break/>Joined: <text:span text:style-name="T2">2010-09-29</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Norbert Thiebaud<text:line-break/>Commits: 2085<text:line-break/>Joined: <text:span text:style-name="T2">2010-09-29</text:span></text:p> </table:table-cell> </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Jan Holesovsky<text:line-break/>Commits: 1915<text:line-break/>Joined: 2009-06-23</text:p> + <text:p text:style-name="Table_20_Contents">Jan Holesovsky<text:line-break/>Commits: 1926<text:line-break/>Joined: 2009-06-23</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Christian Lippka<text:line-break/>Commits: 1805<text:line-break/>Joined: 2000-09-25</text:p> @@ -1111,18 +1111,18 @@ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Matúš Kukan<text:line-break/>Commits: 1617<text:line-break/>Joined: <text:span text:style-name="T2">2011-04-06</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Bjoern Michaelsen<text:line-break/>Commits: 1583<text:line-break/>Joined: 2009-10-14</text:p> + <text:p text:style-name="Table_20_Contents">Bjoern Michaelsen<text:line-break/>Commits: 1598<text:line-break/>Joined: 2009-10-14</text:p> </table:table-cell> </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 1553<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 1568<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andras Timar<text:line-break/>Commits: 1519<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-02</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andras Timar<text:line-break/>Commits: 1528<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-02</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">LuboÅ¡ LuÅák<text:line-break/>Commits: 1499<text:line-break/>Joined: 2010-09-21</text:p> + <text:p text:style-name="Table_20_Contents">LuboÅ¡ LuÅák<text:line-break/>Commits: 1511<text:line-break/>Joined: 2010-09-21</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Michael Meeks<text:line-break/>Commits: 1395<text:line-break/>Joined: 2004-08-05</text:p> @@ -1164,10 +1164,10 @@ <text:p text:style-name="Table_20_Contents">Henning Brinkmann<text:line-break/>Commits: 899<text:line-break/>Joined: 2002-08-14</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Cédric Bosdonnat<text:line-break/>Commits: 882<text:line-break/>Joined: 2009-11-16</text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Lionel Elie Mamane<text:line-break/>Commits: 896<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-15</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Lionel Elie Mamane<text:line-break/>Commits: 874<text:line-break/>Joined: <text:span text:style-name="T2">2011-01-15</text:span></text:p> + <text:p text:style-name="Table_20_Contents">Cédric Bosdonnat<text:line-break/>Commits: 882<text:line-break/>Joined: 2009-11-16</text:p> </table:table-cell> </table:table-row> <table:table-row> @@ -1178,7 +1178,7 @@ <text:p text:style-name="Table_20_Contents">Sven Jacobi<text:line-break/>Commits: 850<text:line-break/>Joined: 2000-09-21</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Takeshi Abe<text:line-break/>Commits: 841<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-08</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Takeshi Abe<text:line-break/>Commits: 846<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-08</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents">Herbert Dürr<text:line-break/>Commits: 827<text:line-break/>Joined: 2000-10-17</text:p> @@ -1189,13 +1189,13 @@ <text:p text:style-name="Table_20_Contents">Martin Gallwey<text:line-break/>Commits: 827<text:line-break/>Joined: 2000-11-08</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Matteo Casalin<text:line-break/>Commits: 797<text:line-break/>Joined: <text:span text:style-name="T2">2011-11-13</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tomaž Vajngerl<text:line-break/>Commits: 817<text:line-break/>Joined: <text:span text:style-name="T2">2012-06-02</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents">Mikhail Voytenko<text:line-break/>Commits: 793<text:line-break/>Joined: 2001-01-16</text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Matteo Casalin<text:line-break/>Commits: 806<text:line-break/>Joined: <text:span text:style-name="T2">2011-11-13</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Tomaž Vajngerl<text:line-break/>Commits: 757<text:line-break/>Joined: <text:span text:style-name="T2">2012-06-02</text:span></text:p> + <text:p text:style-name="Table_20_Contents">Mikhail Voytenko<text:line-break/>Commits: 793<text:line-break/>Joined: 2001-01-16</text:p> </table:table-cell> </table:table-row> <table:table-row> @@ -1248,7 +1248,7 @@ <text:p text:style-name="Table_20_Contents">Andreas Bregas<text:line-break/>Commits: 470<text:line-break/>Joined: 2000-09-25</text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Chris Sherlock<text:line-break/>Commits: 460<text:line-break/>Joined: <text:span text:style-name="T2">2013-02-25</text:span></text:p> + <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Chris Sherlock<text:line-break/>Commits: 469<text:line-break/>Joined: <text:span text:style-name="T2">2013-02-25</text:span></text:p> </table:table-cell> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Peter Foley<text:line-break/>Commits: 442<text:line-break/>Joined: <text:span text:style-name="T2">2011-09-04</text:span></text:p> @@ -1284,7 +1284,7 @@ </table:table-row> <table:table-row> <table:table-cell table:style-name="Tabelle1.A1" office:value-type="string"> - <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Michael Meeks<text:line-break/>Commits: 286<text:line-break/>Joined: <text:span text:style-name="T2">2013-09-10</text:span></text:p> ... etc. - the rest is truncated
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
