[Libreoffice-commits] core.git: Branch 'feature/smaller-base-cell' - 2308 commits - accessibility/bridge accessibility/inc accessibility/prj accessibility/source afms/prj android/abs-lib android/Bootstrap android/CustomTarget_android_desktop.mk android/CustomTarget_docloader.mk android/CustomTarget_lo4android.mk android/CustomTarget_sdremote.mk android/experimental android/Module_android.mk android/qa android/sdremote animations/prj animations/source apache-commons/ExternalProject_apache_commons_codec.mk apache-commons/ExternalProject_apache_commons_httpclient.mk apache-commons/ExternalProject_apache_commons_lang.mk apache-commons/ExternalProject_apache_commons_logging.mk apache-commons/prj apple_remote/prj autodoc/Executable_autodoc.mk autodoc/inc autodoc/prj autodoc/source avmedia/inc avmedia/Library_avmediagst_0_10.mk avmedia/prj avmedia/source basctl/inc basctl/prj basctl/sdi basctl/source basctl/uiconfig basebmp/prj basebmp/test basegfx/inc basegfx/prj basegfx/qa basegfx/source basic /CppunitTest_basic_vba.mk basic/inc basic/Module_basic.mk basic/prj basic/qa basic/source bean/com bean/Library_officebean.mk bean/prj bean/qa beanshell/ExternalProject_beanshell.mk beanshell/prj binaryurp/prj binaryurp/source bin/distro-install-desktop-integration bin/distro-install-file-lists bin/get-bugzilla-attachments-by-mimetype bin/lo-commit-stat bin/module-deps.pl bin/verify-custom-widgets-libs bluez_bluetooth/prj boost/boost_1_44_0-gcc4.8.patch boost/prj boost/UnpackedTarball_boost.mk bootstrap bridges/prj bridges/source bridges/test cairo/cairo cairo/ExternalProject_cairo.mk cairo/ExternalProject_pixman.mk cairo/pixman cairo/prj canvas/prj canvas/source canvas/workben chart2/CppunitTest_chart2_importtest.mk chart2/Module_chart2.mk chart2/prj chart2/qa chart2/source chart2/workbench cli_ure/prj cli_ure/source clucene/patches clucene/prj codemaker/prj codemaker/source codemaker/StaticLibrary_codemaker_cpp.mk codemaker/StaticLibrary_codemaker_java.mk codemaker/StaticL ibrary_codemaker.mk comphelper/inc comphelper/Library_comphelper.mk comphelper/Package_inc.mk comphelper/prj comphelper/README comphelper/source compilerplugins/clang compilerplugins/Makefile-clang.mk compilerplugins/README config_host/config_global.h.in config_host/config_mingw.h.in config_host/config_typesizes.h.in config_host.mk.in configmgr/prj configmgr/source configure.ac connectivity/CppunitTest_connectivity_commontools.mk connectivity/inc connectivity/Library_hsqldb.mk connectivity/Library_kab1.mk connectivity/Library_kabdrv1.mk connectivity/Library_mozabdrv.mk connectivity/Library_mysql.mk connectivity/Library_tdeabdrv1.mk connectivity/prj connectivity/qa connectivity/source connectivity/workben cosv/inc cosv/prj cosv/source cosv/StaticLibrary_cosv.mk cppcanvas/inc cppcanvas/prj cppcanvas/source cppu/CustomTarget_cppu_allheaders.mk cppuhelper/CustomTarget_cppuhelper_allheaders.mk cppuhelper/Library_cppuhelper.mk cppuhelper/Module_cppuhelper.mk cppuhelper/Package_inc .mk cppuhelper/prj cppuhelper/source cppuhelper/StaticLibrary_findsofficepath.mk cppuhelper/test cppuhelper/ZipPackage_cppuhelper_odk_headers.mk cppu/inc cppu/Library_affine_uno.mk cppu/Library_cppu.mk cppu/Library_log_uno.mk cppu/Library_purpenvhelper.mk cppu/Library_unsafe_uno.mk cppu/Module_cppu.mk cppunit/ExternalProject_cppunit.mk cppunit/prj cppu/Package_inc.mk cppu/prj cppu/source cpputools/prj cppu/ZipPackage_cppu_odk_headers.mk crashrep/CustomTarget_crashrep_res.mk crashrep/prj crashrep/source crashrep/WinResTarget_crashrep.mk cross_tail_build/Makefile cross_tail_build/prj cross_tail_build/README cross_toolset/Makefile cross_toolset/prj cross_toolset/README ct2n/prj ct2n/Zip_ct2n.mk cui/AllLangResTarget_cui.mk cui/Library_cui.mk cui/prj cui/source cui/uiconfig cui/UI_cui.mk curl/ExternalProject_curl.mk curl/prj dbaccess/inc dbaccess/Library_dbu.mk dbaccess/Library_sdbt.mk dbaccess/Module_dbaccess.mk dbaccess/prj dbaccess/qa dbaccess/source dbaccess/uiconfig dbaccess /UI_dbaccess.mk dbaccess/util desktop/Extension_test-passive.mk desktop/inc desktop/Jar_passive_java.mk desktop/Library_libreoffice.mk desktop/Library_passive_native.mk desktop/Library_sofficeapp.mk desktop/Module_desktop.mk desktop/prj desktop/Pyuno_passive_python.mk desktop/Rdb_passive_generic.mk desktop/Rdb_passive_platform.mk desktop/source desktop/test desktop/uiconfig desktop/UI_deployment.mk desktop/unx desktop/util desktop/win32 desktop/WinResTarget_sbase.mk desktop/WinResTarget_scalc.mk desktop/WinResTarget_sdraw.mk desktop/WinResTarget_simpress.mk desktop/WinResTarget_smath.mk desktop/WinResTarget_sofficebin.mk desktop/WinResTarget_soffice.mk desktop/WinResTarget_sweb.mk desktop/WinResTarget_swriter.mk dictionaries distro-configs/LibreOfficeLinux.conf distro-configs/LibreOfficeMinGW.conf distro-configs/LibreOfficeOpenBSD.conf distro-configs/LibreOfficeWin32.conf distro-configs/OxygenOfficeLinux.conf distro-configs/OxygenOfficeWin32.conf dmake/acinclude.m4 dmake/acl ocal.m4 dmake/alloc.h dmake/AUTHORS dmake/autogen.sh dmake/ChangeLog dmake/compile dmake/config.guess dmake/config.h.in dmake/config.sub dmake/configure dmake/configure.in dmake/COPYING dmake/dag.c dmake/db.h dmake/dbug dmake/depcomp dmake/dmake.c dmake/dmake.h dmake/dmakeroot.h.in dmake/dmdump.c dmake/dmstring.c dmake/doc dmake/dstdarg.h dmake/expand.c dmake/extern.h dmake/function.c dmake/getinp.c dmake/.gitignore dmake/hash.c dmake/imacs.c dmake/infer.c dmake/INSTALL dmake/install-sh dmake/itypes.h dmake/macparse.c dmake/make.bat dmake/make.c dmake/make.cmd dmake/Makefile.am dmake/Makefile.in dmake/makefile.mk dmake/man dmake/missing dmake/mkinstalldirs dmake/msdos dmake/NEWS dmake/os2 dmake/parse.c dmake/path.c dmake/percent.c dmake/posix.h dmake/qssl dmake/quit.c dmake/rcsclean.awk dmake/README dmake/rulparse.c dmake/stamp-h dmake/startup dmake/stat.c dmake/state.c dmake/stdmacs.h dmake/struct.h dmake/sysintf.c dmake/tests dmake/tos dmake/unix dmake/vextern.h dmake/win9 5 dmake/winnt download.lst drawinglayer/inc drawinglayer/prj drawinglayer/source dtrans/Library_dnd.mk dtrans/Library_ftransl.mk dtrans/Library_sysdtrans.mk dtrans/prj dtrans/source dtrans/test editeng/CppunitTest_editeng_core.mk editeng/inc editeng/Package_inc.mk editeng/prj editeng/qa editeng/source embeddedobj/prj embeddedobj/source embeddedobj/test embedserv/Library_inprocserv.mk embedserv/prj embedserv/source epm/prj eventattacher/prj expat/ExternalProject_expat.mk expat/prj extensions/inc extensions/Library_bib.mk extensions/Library_dbp.mk extensions/Library_oleautobridge2.mk extensions/Module_extensions.mk extensions/prj extensions/qa extensions/source extensions/StaticLibrary_npsoenv.mk extensions/StaticLibrary_plugcon.mk extensions/test extensions/uiconfig extensions/WinResTarget_activex.mk extensions/workben external/CustomTarget_stdlibs.mk external/Module_external.mk external/Package_msvc80_dlls.mk external/Package_stdlibs.mk external/prj external/StaticLibrary_gn u_getopt.mk extras/AllLangZip_autotextshare.mk extras/CustomTarget_autocorr.mk extras/Module_extras.mk extras/Package_glade.mk extras/Package_labels.mk extras/Package_wordbook.mk extras/prj extras/source extras/Zip_autocorr.mk extras/Zip_wordbook.mk fileaccess/prj fileaccess/source filter/Configuration_filter.mk filter/inc filter/prj filter/qa filter/source filter/uiconfig fontconfig/ExternalProject_fontconfig.mk fontconfig/fontconfig-2.8.0.patch fontconfig/prj forms/prj forms/qa forms/source formula/inc formula/prj formula/source fpicker/prj fpicker/source fpicker/test framework/inc framework/prj framework/qa framework/source freetype/prj g .git-hooks/commit-msg .gitignore graphite/prj helpcompiler/inc helpcompiler/Library_helplinker.mk helpcompiler/Package_inc.mk helpcompiler/prj helpcompiler/source helpcontent2 hsqldb/ExternalProject_hsqldb.mk hsqldb/prj hunspell/ExternalProject_hunspell.mk hunspell/prj hwpfilter/prj hwpfilter/source hyphen/ExternalProject_hyphen.mk hyphe n/prj i18npool/CustomTarget_breakiterator.mk i18npool/inc i18npool/Library_i18nisolang1.mk i18npool/prj i18npool/qa i18npool/source i18nutil/prj i18nutil/source icon-themes/crystal icon-themes/galaxy icon-themes/hicontrast icon-themes/human icon-themes/industrial icon-themes/oxygen icon-themes/tango icu/ExternalProject_icu.mk icu/icu4c.9737.CVE-2013-0900_changesets_32865_32908.patch icu/icu4c.9948.mlym-crash.patch icu/icu4c-CVE-2013-0900_umutex.patch icu/Module_icu.mk icu/prj icu/UnpackedTarball_icu_data.mk icu/UnpackedTarball_icu.mk idlc/Executable_idlc.mk idlc/inc idlc/prj idlc/source idl/prj idl/source instsetoo_native/CustomTarget_install.mk instsetoo_native/inc_common instsetoo_native/inc_ooohelppack instsetoo_native/inc_openoffice instsetoo_native/inc_sdkoo instsetoo_native/Makefile instsetoo_native/Module_instsetoo_native.mk instsetoo_native/prj instsetoo_native/README instsetoo_native/res instsetoo_native/util io/prj ios/CustomTarget_Viewer_app.mk ios/Executable_View er.mk io/source javaunohelper/com javaunohelper/Module_javaunohelper.mk javaunohelper/prj javaunohelper/test javaunohelper/Zip_juh.mk jfreereport/ExternalProject_jfreereport_flow_engine.mk jfreereport/ExternalProject_jfreereport_flute.mk jfreereport/ExternalProject_jfreereport_libbase.mk jfreereport/ExternalProject_jfreereport_libfonts.mk jfreereport/ExternalProject_jfreereport_libformula.mk jfreereport/ExternalProject_jfreereport_liblayout.mk jfreereport/ExternalProject_jfreereport_libloader.mk jfreereport/ExternalProject_jfreereport_librepository.mk jfreereport/ExternalProject_jfreereport_libserializer.mk jfreereport/ExternalProject_jfreereport_libxml.mk jfreereport/ExternalProject_jfreereport_sac.mk jfreereport/prj jpeg/prj jurt/com jurt/Library_jpipe.mk jurt/Module_jurt.mk jurt/prj jurt/Zip_jurt.mk jvmaccess/prj jvmaccess/source jvmfwk/inc jvmfwk/plugins jvmfwk/prj jvmfwk/source l10ntools/Executable_renewpo.mk l10ntools/Executable_ulfconv.mk l10ntools/inc l10ntools/Jar_F CFGMerge.mk l10ntools/Module_l10ntools.mk l10ntools/Package_inc.mk l10ntools/Package_scripts.mk l10ntools/prj l10ntools/scripts l10ntools/source l10ntools/StaticLibrary_transex.mk languagetool/ExternalProject_languagetool.mk languagetool/prj lcms2/ExternalProject_lcms2.mk lcms2/prj libcdr/ExternalProject_libcdr.mk libcdr/libcdr-0.0.10-ellipse.patch libcdr/libcdr-0.0.11-encoding.patch libcdr/Module_libcdr.mk libcdr/prj libcdr/UnpackedTarball_cdr.mk libcmis/libcmis-0.3.0-lotus-live-fix.patch libcmis/Module_libcmis.mk libcmis/prj libcmis/UnpackedTarball_cmis.mk libexttextcat/ExternalProject_exttextcat.mk libexttextcat/prj libexttextcat/Zip_fingerprint.mk liblangtag/ExternalPackage_langtag.mk liblangtag/ExternalProject_langtag.mk liblangtag/Module_liblangtag.mk liblangtag/prj liblangtag/README liblangtag/StaticLibrary_langtag.mk libmariadb/ExternalPackage_libmariadb.mk libmariadb/Makefile libmariadb/mariadb-swap.patch libmariadb/mariadb-thread.patch libmariadb/Module_libmariadb. mk libmariadb/my_config.h libmariadb/mysql_version.h libmariadb/prj libmariadb/StaticLibrary_mariadb.mk libmariadb/UnpackedTarball_mariadb.mk libmspub/ExternalProject_libmspub.mk libmspub/libmspub-0.0.4-boost.patch libmspub/Module_libmspub.mk libmspub/prj libmspub/UnpackedTarball_mspub.mk liborcus/ExternalProject_liborcus.mk liborcus/liborcus_0.1.0-boost-include.patch.1 liborcus/prj liborcus/UnpackedTarball_orcus.mk liborcus/vsprojects libpng/prj librelogo/prj librelogo/source libvisio/ExternalProject_libvisio.mk libvisio/Module_libvisio.mk libvisio/prj libwpd/ExternalProject_libwpd.mk libwpd/Module_libwpd.mk libwpd/prj libwpg/Module_libwpg.mk libwpg/prj libwps/Module_libwps.mk libwps/prj libxml2/ExternalPackage_xml2.mk libxml2/ExternalProject_xml2.mk libxml2/libxml2-configure.patch libxml2/libxml2-long-path.patch libxml2/libxml2-vc10.patch libxml2/Makefile libxml2/makefile.mk libxml2/Module_libxml2.mk libxml2/prj libxml2/UnpackedTarball_xml2.mk libxmlsec/ExternalProject_xml sec.mk libxmlsec/prj libxmlsec/xmlsec1-vc.patch libxslt/ExternalProject_xslt.mk libxslt/libxslt-vc10.patch libxslt/prj lingucomponent/prj lingucomponent/source lingucomponent/StaticLibrary_ulingu.mk linguistic/inc linguistic/prj linguistic/source logerrit lotuswordpro/prj lotuswordpro/source lo.xcent.in lpsolve/ExternalProject_lpsolve.mk lpsolve/prj m4/libo_check_extension.m4 m4/libo_externals.m4 Makefile.fetch Makefile.gbuild Makefile.in Makefile.post MathMLDTD/prj mdds/prj Mesa/prj Module_cross_tail_build.mk Module_tail_build.mk more_fonts/prj moz/CustomTarget_runtime.mk moz/ExternalPackage_moz_lib.mk moz/extractfiles.mk moz/Makefile moz/makefile.mk moz/Module_moz.mk moz/Package_runtime.mk moz/patches moz/prj moz/seamonkey-source-1.1.14.patch moz/UnpackedTarball_moz_inc.mk moz/UnpackedTarball_moz_lib.mk moz/zipped mysqlc/Extension_mysql-connector-ooo.mk mysqlc/Library_mysqlc.mk mysqlc/Module_mysqlc.mk mysqlcppconn/config.h mysqlcppconn/Library_mysqlcppconn.mk mysqlcppconn/ patches mysqlcppconn/prj mysqlcppconn/UnpackedTarball_mysqlcppconn.mk mysqlc/prj mysqlc/Rdb_mysqlc.mk mysqlc/README mysqlc/source mythes/ExternalProject_mythes.mk mythes/prj neon/configs neon/Library_neon.mk neon/prj nlpsolver/Extension_nlpsolver.mk nlpsolver/help nlpsolver/prj np_sdk/inc np_sdk/mozsrc np_sdk/prj np_sdk/StaticLibrary_nputils.mk nss/ExternalProject_nss.mk nss/nsinstall.py nss/nspr-4.9-build.patch nss/nspr-4.9-build.patch.3 nss/nss-3.13.3-build.patch nss/nss-3.13.3-build.patch.3 nss/nss.mingw.patch nss/nss.mingw.patch.3 nss/prj nss/UnpackedTarball_nss.mk o3tl/inc o3tl/prj odk/cfgWin.js odk/config odk/configure.pl odk/CustomTarget_autodoc.mk odk/CustomTarget_bin.mk odk/CustomTarget_check.mk odk/CustomTarget_classes.mk odk/CustomTarget_cli.mk odk/CustomTarget_doxygen.mk odk/CustomTarget_idl.mk odk/CustomTarget_javadoc.mk odk/CustomTarget_lib.mk odk/CustomTarget_odkcommon.mk odk/CustomTarget_settings.mk odk/CustomTarget_unowinreg.mk odk/examples odk/Executable_un oapploader.mk odk/inc odk/Library_unowinreg.mk odk/Makefile odk/Module_odk.mk odk/pack odk/prj odk/setsdkenv_unix odk/setsdkenv_unix.csh.in odk/setsdkenv_unix.sh.in odk/setsdkenv_windows.bat odk/setsdkenv_windows.template odk/setsdkname.bat odk/settings odk/source odk/util odk/Zip_odkcommon.mk odk/Zip_odkexamples.mk odk/Zip_uno_loader_classes.mk offapi/com offapi/prj offapi/type_reference offapi/UnoApi_offapi.mk officecfg/Configuration_officecfg.mk officecfg/prj officecfg/registry oovbaapi/ooo oovbaapi/prj oovbaapi/UnoApi_oovbaapi.mk oox/inc oox/prj oox/source openldap/ExternalProject_openldap.mk openldap/prj openssl/ExternalProject_openssl.mk openssl/prj package/inc package/prj package/source padmin/prj padmin/source postgresql/ExternalProject_postgresql.mk postgresql/prj postprocess/CustomTarget_config.mk postprocess/CustomTarget_images.mk postprocess/CustomTarget_registry.mk postprocess/CustomTarget_signing.mk postprocess/Module_postprocess.mk postprocess/packconfig postp rocess/prj postprocess/Rdb_services.mk psprint_config/prj python3/ExternalProject_python3.mk python3/prj python3/python-3.3.0-gcc-4.8.patch.1 python3/UnpackedTarball_python3.mk pyuno/CustomTarget_zipcore.mk pyuno/Library_pyuno_wrapper.mk pyuno/prj pyuno/source qadevOOo/prj qadevOOo/runner qadevOOo/testdocs qadevOOo/tests readlicense_oo/docs readlicense_oo/prj README.cross redland/ExternalProject_raptor.mk redland/ExternalProject_rasqal.mk redland/ExternalProject_redland.mk redland/prj registry/Executable_reg2bin.mk registry/inc registry/Library_reg.mk registry/Module_registry.mk registry/Package_inc.mk registry/prj registry/source registry/StaticLibrary_registry_helper.mk registry/tools registry/ZipPackage_registry_odk_headers.mk remotebridges/prj reportbuilder/Configuration_reportbuilder.mk reportbuilder/Extension_reportbuilder.mk reportbuilder/Jar_reportbuilder.mk reportbuilder/java reportbuilder/prj reportbuilder/registry reportbuilder/util reportdesign/inc reportdesign/L ibrary_rpt.mk reportdesign/Library_rptui.mk reportdesign/Library_rptxml.mk reportdesign/prj reportdesign/source RepositoryExternal.mk RepositoryFixes.mk Repository.mk RepositoryModule_build.mk RepositoryModule_host.mk RepositoryModule_ooo.mk rhino/ExternalProject_rhino.mk rhino/prj ridljar/com ridljar/Module_ridljar.mk ridljar/prj ridljar/Zip_ridl.mk ridljar/Zip_unoloader.mk rsc/inc rsc/Package_inc.mk rsc/prj rsc/source sal/android sal/CustomTarget_generated.mk sal/CustomTarget_sal_allheaders.mk salhelper/CustomTarget_salhelper_allheaders.mk salhelper/Library_salhelper.mk salhelper/Module_salhelper.mk salhelper/Package_inc.mk salhelper/prj salhelper/qa salhelper/source salhelper/ZipPackage_salhelper_odk_headers.mk sal/inc sal/Library_sal.mk sal/Module_sal.mk sal/osl sal/Package_generated.mk sal/Package_inc.mk sal/prj sal/qa sal/rtl sal/StaticLibrary_salcpprt.mk sal/textenc sal/workben sal/ZipPackage_sal_generated.mk sal/ZipPackage_sal_odk_headers.mk sane/prj sax/prj sax/qa s ax/source sax/StaticLibrary_sax_shared.mk sax/test scaddins/prj scaddins/source sc/AllLangResTarget_sc.mk sccomp/prj sccomp/source sc/CppunitTest_sc_annotationobj.mk sc/CppunitTest_sc_annotationsobj.mk sc/CppunitTest_sc_cellrangeobj.mk sc/CppunitTest_sc_databaserangeobj.mk sc/CppunitTest_sc_datapilotfieldobj.mk sc/CppunitTest_sc_datapilottableobj.mk sc/CppunitTest_sc_filters_test.mk sc/CppunitTest_sc_macros_test.mk sc/CppunitTest_sc_modelobj.mk sc/CppunitTest_sc_namedrangeobj.mk sc/CppunitTest_sc_namedrangesobj.mk sc/CppunitTest_sc_outlineobj.mk sc/CppunitTest_sc_subsequent_export_test.mk sc/CppunitTest_sc_tablesheetobj.mk sc/CppunitTest_sc_tablesheetsobj.mk sc/inc sc/Library_sc.mk scp2/AutoInstallLibs_ooo.mk scp2/inc scp2/InstallModule_javafilter.mk scp2/InstallModule_ooo.mk scp2/InstallModule_python.mk scp2/InstallModule_stdlibs.mk scp2/InstallScript_setup_osl.mk scp2/Module_scp2.mk scp2/prj scp2/source sc/prj sc/qa scripting/examples scripting/java scripting/Module_script ing.mk scripting/prj scripting/source sc/sdi sc/source sc/uiconfig sc/UI_scalc.mk sd/CppunitTest_sd_filters_test.mk sd/CppunitTest_sd_regression_test.mk sd/CppunitTest_sd_uimpress.mk sdext/Executable_xpdfimport.mk sdext/Extension_minimizer.mk sdext/Library_pdfimport.mk sdext/Package_pdfimport_xpdfimport.mk sdext/prj sdext/source sdext/StaticLibrary_pdfimport_s.mk sd/inc sd/Library_sd.mk sd/prj sd/sdi sd/source sd/uiconfig setup_native/CustomTarget_mac.mk setup_native/CustomTarget_scripts.mk setup_native/CustomTarget_spell.mk setup_native/CustomTarget_wintools.mk setup_native/Library_getuid.mk setup_native/Library_instooofiltmsi.mk setup_native/Library_qslnkmsi.mk setup_native/Library_reg4allmsdoc.mk setup_native/Library_regactivex.mk setup_native/Library_regpatchactivex.mk setup_native/Library_sdqsmsi.mk setup_native/Library_sellangmsi.mk setup_native/Library_shlxtmsi.mk setup_native/Library_sn_tools.mk setup_native/Makefile setup_native/Module_setup_native.mk setup_native/P ackage_misc.mk setup_native/Package_packinfo.mk setup_native/Package_scripts_generated.mk setup_native/Package_scripts.mk setup_native/Package_spell.mk setup_native/Package_ulf.mk setup_native/Package_wintools.mk setup_native/prj setup_native/scripts setup_native/source setup_native/StaticLibrary_quickstarter.mk setup_native/StaticLibrary_seterror.mk sfx2/AllLangResTarget_sfx2.mk sfx2/inc sfx2/Library_sfx.mk sfx2/prj sfx2/qa sfx2/source sfx2/uiconfig sfx2/UI_sfx.mk sfx2/workben shell/CustomTarget_shlxthdl_res.mk shell/inc shell/prj shell/source slideshow/prj slideshow/qa slideshow/source slideshow/test smoketest/data smoketest/Executable_libtest.mk smoketest/libtest.cxx smoketest/Module_smoketest.mk smoketest/prj smoketest/Zip_smoketestdoc.mk solenv/bin solenv/CustomTarget_concat-deps.mk solenv/CustomTarget_versionlist.mk solenv/Executable_concat-deps.mk solenv/gbuild solenv/gdb solenv/inc solenv/Module_solenv.mk solenv/Package_concat-deps.mk solenv/Package_minor.mk solenv/p rj solenv/README soltools/adjustvisibility soltools/Executable_adjustvisibility.mk soltools/Executable_javadep.mk soltools/Executable_ldump4.mk soltools/javadep soltools/ldump soltools/mkdepend soltools/Module_soltools.mk soltools/prj sot/prj sot/source starmath/inc starmath/Library_sm.mk starmath/prj starmath/qa starmath/source stoc/prj stoc/source stoc/test store/inc store/Library_store.mk store/Module_store.mk store/Package_inc.mk store/prj store/source store/workben store/ZipPackage_store_odk_headers.mk svgio/prj svgio/source svl/inc svl/Package_inc.mk svl/prj svl/source svtools/bmpmaker svtools/Executable_g2g.mk svtools/inc svtools/Library_svt.mk svtools/Package_inc.mk svtools/prj svtools/source svtools/uiconfig svx/AllLangResTarget_svx.mk svx/Executable_gengal.bin.mk svx/inc svx/prj svx/sdi svx/source svx/uiconfig svx/UI_svx.mk svx/workben sw/AllLangResTarget_sw.mk sw/CppunitTest_sw_filters_test.mk sw/CppunitTest_sw_subsequent_odfexport.mk sw/CppunitTest_sw_subsequent_ odfimport.mk sw/CppunitTest_sw_subsequent_ooxmlexport.mk sw/CppunitTest_sw_subsequent_ooxmlimport.mk sw/CppunitTest_sw_subsequent_rtfexport.mk sw/CppunitTest_sw_subsequent_ww8export.mk sw/CppunitTest_sw_uwriter.mk swext/Extension_wiki-publisher.mk swext/mediawiki swext/prj sw/inc sw/Library_sw.mk sw/prj sw/qa sw/sdi sw/source sw/uiconfig sw/UI_swriter.mk sysui/CustomTarget_deb.mk sysui/CustomTarget_infoplist.mk sysui/CustomTarget_rpm.mk sysui/CustomTarget_share.mk sysui/CustomTarget_slackware.mk sysui/CustomTarget_solaris.mk sysui/desktop sysui/Makefile sysui/Module_sysui.mk sysui/Package_desktop.mk sysui/Package_icons.mk sysui/Package_infoplist.mk sysui/Package_share.mk sysui/prj sysui/util sysui/Zip_osxicons.mk tail_build/Makefile tail_build/prj tail_build/README test/inc test/prj testtools/prj testtools/StaticLibrary_bridgetest.mk testtools/util tomcat/ExternalProject_tomcat.mk tomcat/makefile.mk tomcat/prj toolkit/inc toolkit/prj toolkit/source tools/bootstrp tools/Execu table_mkunroll.mk tools/Executable_rscdep.mk tools/Executable_so_checksum.mk tools/inc tools/Module_tools.mk tools/prj tools/source tools/StaticLibrary_ooopathutils.mk tools/unx touch/prj translations tubes/prj tubes/uiconfig twain/prj ucbhelper/inc ucbhelper/prj ucbhelper/source ucb/prj ucb/source ucb/workben ucpp/Module_ucpp.mk ucpp/prj udkapi/com udkapi/prj udkapi/UnoApi_udkapi.mk udm/prj udm/StaticLibrary_udm.mk unixODBC/inc unixODBC/prj UnoControls/prj UnoControls/source unodevtools/prj unodevtools/source unoidl/Executable_reg2unoidl.mk unoidl/inc unoidl/Library_unoidl.mk unoidl/Makefile unoidl/Module_unoidl.mk unoidl/Package_inc.mk unoidl/prj unoidl/source unoil/prj unotest/prj unotools/inc unotools/prj unotools/source unoxml/prj unoxml/source unusedcode.easy unusedcode.README ure/prj ure/source uui/AllLangResTarget_uui.mk uui/prj uui/source uui/uiconfig uui/UI_uui.mk vbahelper/prj vbahelper/source vcl/android vcl/aqua vcl/Executable_tdefilepicker.mk vcl/generic vcl/he adless vcl/inc vcl/ios vcl/Library_vcl.mk vcl/Library_vclplug_gen.mk vcl/Library_vclplug_gtk3.mk vcl/Library_vclplug_gtk.mk vcl/Package_inc.mk vcl/prj vcl/README vcl/source vcl/StaticLibrary_headless.mk vcl/StaticLibrary_vclmain.mk vcl/test vcl/uiconfig vcl/unx vcl/win vcl/workben vigra/prj wizards/com wizards/Jar_agenda.mk wizards/Module_wizards.mk wizards/prj wizards/Pyuno_agenda.mk wizards/Pyuno_commonwizards.mk wizards/source writerfilter/inc writerfilter/prj writerfilter/qa writerfilter/source writerperfect/Module_writerperfect.mk writerperfect/prj writerperfect/source writerperfect/StaticLibrary_writerperfect.mk x11_extensions/prj xmerge/inc xmerge/Jar_aportisdoc.mk xmerge/Jar_htmlsoff.mk xmerge/Jar_pexcel.mk xmerge/Jar_pocketword.mk xmerge/Module_xmerge.mk xmerge/Package_xmergesync.mk xmerge/prj xmerge/source xmlhelp/Package_xsl.mk xmlhelp/prj xmlhelp/source xmlhelp/util xmloff/dtd xmloff/inc xmloff/prj xmloff/README xmloff/source xmlreader/inc xmlreader/Library_xmlre ader.mk xmlreader/prj xmlscript/prj xmlscript/source xmlsecurity/inc xmlsecurity/prj xmlsecurity/source xmlsecurity/tools xmlsecurity/uiconfig xmlsecurity/UI_xmlsec.mk xmlsecurity/workben xpdf/ExternalPackage_xpdf.mk xpdf/ExternalProject_xpdf.mk xpdf/Makefile xpdf/makefile.mk xpdf/Module_xpdf.mk xpdf/prj xpdf/UnpackedTarball_xpdf.mk xpdf/xpdf-3.02.patch xpdf/xpdf-no-writable-literals.patch xsltml/prj zlib/prj

Kohei Yoshida kohei.yoshida at gmail.com
Tue Mar 12 12:00:52 PDT 2013


Rebased ref, commits from common ancestor:
commit a8260c045ff19915b19d2ca070031fb5939a8637
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 22:08:42 2012 -0500

    Add accessor methods for text widths using mdds::multi_type_vector.
    
    We only use unsigned short and empty types in this container.  Empty type
    represents empty cells whereas unsigned short type represents non-empty
    cells.
    
    Change-Id: Id9b6e0941fdfabc48fc8bb2aa6479f466270381c

diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index ce5823e..1226f9b 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -36,6 +36,8 @@
 
 #include <cstring>
 #include <map>
+#include <mdds/multi_type_vector.hpp>
+#include <mdds/multi_type_vector_trait.hpp>
 
 using ::editeng::SvxBorderLine;
 using namespace formula;
@@ -55,6 +57,11 @@ inline bool IsAmbiguousScriptNonZero( sal_uInt8 nScript )
 
 struct ScColumnImpl
 {
+    typedef mdds::multi_type_vector<mdds::mtv::element_block_func> TextWidthType;
+
+    TextWidthType maTextWidths;
+
+    ScColumnImpl() : maTextWidths(MAXROWCOUNT) {}
 };
 
 ScNeededSizeOptions::ScNeededSizeOptions() :
@@ -2287,5 +2294,22 @@ bool ScColumn::SearchStyleRange(
         return pAttrArray->SearchStyleRange( rRow, rEndRow, pSearchStyle, bUp, NULL );
 }
 
+sal_uInt16 ScColumn::GetTextWidth(SCROW nRow) const
+{
+    switch (mpImpl->maTextWidths.get_type(nRow))
+    {
+        case mdds::mtv::element_type_ushort:
+            return mpImpl->maTextWidths.get<unsigned short>(nRow);
+        default:
+            ;
+    }
+    return TEXTWIDTH_DIRTY;
+}
+
+void ScColumn::SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
+{
+    // We only use unsigned short type in this container.
+    mpImpl->maTextWidths.set(nRow, static_cast<unsigned short>(nWidth));
+}
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 71881b4..c43320a 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -1952,13 +1952,4 @@ xub_StrLen ScColumn::GetMaxNumberStringLen(
     return nStringLen;
 }
 
-sal_uInt16 ScColumn::GetTextWidth(SCROW nRow) const
-{
-    return 0;
-}
-
-void ScColumn::SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
-{
-}
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit f0696ddf0d71e19cffcba608533f050435153163
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 19:17:19 2012 -0500

    Re-order the header includes. Make sure column.hxx comes first.
    
    Change-Id: I9f93724c4e0b565a9148d0893feda9e82109bff7

diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 5ae9b8a..ce5823e 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -30,6 +30,13 @@
 #include "detfunc.hxx"          // for Notes in Sort/Swap
 #include "postit.hxx"
 
+#include <svl/poolcach.hxx>
+#include <svl/zforlist.hxx>
+#include <editeng/scripttypeitem.hxx>
+
+#include <cstring>
+#include <map>
+
 using ::editeng::SvxBorderLine;
 using namespace formula;
 
commit 3226de98affab9398c5b9e6ccceb47033c3365ba
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 19:15:11 2012 -0500

    Let's start using impl class for ScColumn.
    
    No need to migrate the existing data members to it for now, but let's
    define new members in the impl class from now on.
    
    Change-Id: Idee66dae87beb4bb6efc9c7d7ffd658148ed887c

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 8653bfd..39f9753 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -58,6 +58,7 @@ struct ScMergePatternState;
 class ScFlatBoolRowSegments;
 struct ScSetStringParam;
 struct ScColWidthParam;
+struct ScColumnImpl;
 
 struct ScNeededSizeOptions
 {
@@ -79,6 +80,8 @@ struct ColEntry
 class ScColumn
 {
 private:
+    ScColumnImpl* mpImpl;
+
     SCCOL           nCol;
     SCTAB           nTab;
 
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index d5d73c4..5ae9b8a 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -30,16 +30,11 @@
 #include "detfunc.hxx"          // for Notes in Sort/Swap
 #include "postit.hxx"
 
-#include <svl/poolcach.hxx>
-#include <svl/zforlist.hxx>
-#include <editeng/scripttypeitem.hxx>
-
-#include <cstring>
-#include <map>
-
 using ::editeng::SvxBorderLine;
 using namespace formula;
 
+namespace {
+
 inline bool IsAmbiguousScriptNonZero( sal_uInt8 nScript )
 {
     //! move to a header file
@@ -49,12 +44,19 @@ inline bool IsAmbiguousScriptNonZero( sal_uInt8 nScript )
              nScript != 0 );
 }
 
+}
+
+struct ScColumnImpl
+{
+};
+
 ScNeededSizeOptions::ScNeededSizeOptions() :
     pPattern(NULL), bFormula(false), bSkipMerged(true), bGetFont(true), bTotalSize(false)
 {
 }
 
 ScColumn::ScColumn() :
+    mpImpl(new ScColumnImpl),
     nCol( 0 ),
     pAttrArray( NULL ),
     pDocument( NULL )
commit d8c0904e404358cd793a20ad98060f5591a6812e
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 17:14:54 2012 -0500

    Add empty GetTextWidth() to ScColumn. Will be implemented later.
    
    Change-Id: I4df0719fee426ab5d54bfc2ac8fa4c37325906e2

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 257cb0e..8653bfd 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -371,6 +371,7 @@ public:
     xub_StrLen  GetMaxNumberStringLen( sal_uInt16& nPrecision,
                                        SCROW nRowStart, SCROW nRowEnd ) const;
 
+    sal_uInt16 GetTextWidth(SCROW nRow) const;
     void SetTextWidth(SCROW nRow, sal_uInt16 nWidth);
 
 private:
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 42472e0..71881b4 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -1952,6 +1952,11 @@ xub_StrLen ScColumn::GetMaxNumberStringLen(
     return nStringLen;
 }
 
+sal_uInt16 ScColumn::GetTextWidth(SCROW nRow) const
+{
+    return 0;
+}
+
 void ScColumn::SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
 {
 }
commit fe232164e62a50f42c66fe830e56c67c3a35931f
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 16:13:37 2012 -0500

    Identify all places that modify the cell array & call CellStorageModified().
    
    CellStorageModified() is empty at the moment.
    
    Change-Id: I9498b4d7819bba1778cbab644e7b46ce25d66ae4

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 6c8e0e0..257cb0e 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -371,6 +371,8 @@ public:
     xub_StrLen  GetMaxNumberStringLen( sal_uInt16& nPrecision,
                                        SCROW nRowStart, SCROW nRowEnd ) const;
 
+    void SetTextWidth(SCROW nRow, sal_uInt16 nWidth);
+
 private:
     ScBaseCell* CloneCell(SCSIZE nIndex, sal_uInt16 nFlags, ScDocument& rDestDoc, const ScAddress& rDestPos) const;
 
@@ -378,8 +380,10 @@ private:
     SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const;
 
     /**
-     * Called whenever the state of cell array gets modified i.e. a new cell
-     * is inserted, a cell is moved or removed, cells are swapped, and so on.
+     * Called whenever the state of cell array gets modified i.e. new cell
+     * insertion, cell removal or relocation, cell value update and so on.
+     *
+     * Call this only from those methods where maItems is modified directly.
      */
     void CellStorageModified();
 };
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index ac5f1d5..d5d73c4 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -793,14 +793,14 @@ void lclTakeBroadcaster( ScBaseCell*& rpCell, SvtBroadcaster* pBC )
 //  SwapRow for sorting
 void ScColumn::SwapRow(SCROW nRow1, SCROW nRow2)
 {
+    if (nRow1 == nRow2)
+        // Nothing to swap.
+        return;
+
     /*  Simple swap of cell pointers does not work if broadcasters exist (crash
         if cell broadcasts directly or indirectly to itself). While swapping
         the cells, broadcasters have to remain at old positions! */
 
-    /*  While cloning cells, do not clone notes, but move note pointers to new
-        cells. This prevents creation of new caption drawing objects for every
-        swap operation while sorting. */
-
     ScBaseCell* pCell1 = 0;
     SCSIZE nIndex1;
     if ( Search( nRow1, nIndex1 ) )
@@ -850,6 +850,8 @@ void ScColumn::SwapRow(SCROW nRow1, SCROW nRow2)
             SvtBroadcaster* pBC2 = pCell2->ReleaseBroadcaster();
             pCell1->TakeBroadcaster( pBC2 );
             pCell2->TakeBroadcaster( pBC1 );
+
+            CellStorageModified();
         }
         else
         {
@@ -858,11 +860,13 @@ void ScColumn::SwapRow(SCROW nRow1, SCROW nRow2)
             {
                 // insert dummy note cell (without note) containing old broadcaster
                 maItems[nIndex1].pCell = pDummyCell;
+                CellStorageModified();
             }
             else
             {
                 // remove ColEntry at old position
                 maItems.erase( maItems.begin() + nIndex1 );
+                CellStorageModified();
             }
 
             // insert ColEntry at new position
@@ -910,8 +914,7 @@ void ScColumn::SwapRow(SCROW nRow1, SCROW nRow2)
     }
 
     /*  Create clone of pCell1 at position of pCell2 (pCell1 exists always, see
-        variable swapping above). Do not clone the note, but move pointer of
-        old note to new cell. */
+        variable swapping above).*/
     ScBaseCell* pNew2 = pCell1->Clone( *pDocument, aPos2, SC_CLONECELL_ADJUST3DREL );
 
     /*  Create clone of pCell2 at position of pCell1. Do not clone the note,
@@ -971,7 +974,10 @@ void ScColumn::SwapCell( SCROW nRow, ScColumn& rCol)
     {
         // swap
         maItems[nIndex1].pCell = pCell2;
+        CellStorageModified();
         rCol.maItems[nIndex2].pCell = pCell1;
+        rCol.CellStorageModified();
+
         // update references
         SCsCOL dx = rCol.nCol - nCol;
         if ( pFmlaCell1 )
@@ -993,6 +999,8 @@ void ScColumn::SwapCell( SCROW nRow, ScColumn& rCol)
     {
         // remove
         maItems.erase(maItems.begin() + nIndex1);
+        CellStorageModified();
+
         // update references
         SCsCOL dx = rCol.nCol - nCol;
         if ( pFmlaCell1 )
@@ -1148,6 +1156,8 @@ void ScColumn::InsertRow( SCROW nStartRow, SCSIZE nSize )
     }
 
     pDocument->SetAutoCalc( bOldAutoCalc );
+
+    CellStorageModified();
 }
 
 
@@ -1545,6 +1555,8 @@ void ScColumn::MarkScenarioIn( ScMarkData& rDestMark ) const
 void ScColumn::SwapCol(ScColumn& rCol)
 {
     maItems.swap(rCol.maItems);
+    CellStorageModified();
+    rCol.CellStorageModified();
 
     ScAttrArray* pTempAttr = rCol.pAttrArray;
     rCol.pAttrArray = pAttrArray;
@@ -1637,9 +1649,11 @@ void ScColumn::MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn& rCol)
             }
             // Erase the slots containing pointers to the dummy cell instance.
             maItems.erase(maItems.begin() + nStartPos, maItems.begin() + nStopPos);
+            CellStorageModified();
         }
         pNoteCell->Delete(); // Delete the dummy cell instance.
     }
+
 }
 
 bool ScColumn::UpdateReference( UpdateRefMode eUpdateRefMode, SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
@@ -1780,6 +1794,7 @@ void ScColumn::UpdateInsertTabOnlyCells(SCTAB nInsPos, SCTAB nNewSheets)
             {
                 ScEditCell* p = static_cast<ScEditCell*>(maItems[i].pCell);
                 p->UpdateFields(nTab);
+                SetTextWidth(maItems[i].nRow, TEXTWIDTH_DIRTY);
             }
             break;
             default:
@@ -1810,6 +1825,7 @@ void ScColumn::UpdateInsertTabAbs(SCTAB nNewPos)
             {
                 ScEditCell* p = static_cast<ScEditCell*>(maItems[i].pCell);
                 p->UpdateFields(nTab);
+                SetTextWidth(maItems[i].nRow, TEXTWIDTH_DIRTY);
             }
             break;
             default:
@@ -1859,6 +1875,7 @@ void ScColumn::UpdateDeleteTab(SCTAB nDelPos, bool bIsMove, ScColumn* pRefUndo,
             {
                 ScEditCell* p = static_cast<ScEditCell*>(maItems[i].pCell);
                 p->UpdateFields(nTab);
+                SetTextWidth(maItems[i].nRow, TEXTWIDTH_DIRTY);
             }
             break;
             default:
@@ -1891,6 +1908,7 @@ void ScColumn::UpdateMoveTab( SCTAB nOldPos, SCTAB nNewPos, SCTAB nTabNo )
             {
                 ScEditCell* p = static_cast<ScEditCell*>(maItems[i].pCell);
                 p->UpdateFields(nTab);
+                SetTextWidth(maItems[i].nRow, TEXTWIDTH_DIRTY);
             }
             break;
             default:
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 6fb54e6..42472e0 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -87,12 +87,14 @@ void ScColumn::Insert( SCROW nRow, ScBaseCell* pNewCell )
             }
             pOldCell->Delete();
             maItems[nIndex].pCell = pNewCell;
+            CellStorageModified();
         }
         else
         {
             maItems.insert(maItems.begin() + nIndex, ColEntry());
             maItems[nIndex].pCell = pNewCell;
             maItems[nIndex].nRow  = nRow;
+            CellStorageModified();
         }
     }
     // When we insert from the Clipboard we still have wrong (old) References!
@@ -136,6 +138,8 @@ void ScColumn::Append( SCROW nRow, ScBaseCell* pCell )
     maItems.push_back(ColEntry());
     maItems.back().pCell = pCell;
     maItems.back().nRow  = nRow;
+
+    CellStorageModified();
 }
 
 
@@ -162,6 +166,8 @@ void ScColumn::Delete( SCROW nRow )
         }
         pCell->EndListeningTo( pDocument );
         pCell->Delete();
+
+        CellStorageModified();
     }
 }
 
@@ -177,6 +183,8 @@ void ScColumn::DeleteAtIndex( SCSIZE nIndex )
     maItems.erase(maItems.begin() + nIndex);
     pCell->EndListeningTo( pDocument );
     pCell->Delete();
+
+    CellStorageModified();
 }
 
 
@@ -185,6 +193,8 @@ void ScColumn::FreeAll()
     for (SCSIZE i = 0; i < maItems.size(); i++)
         maItems[i].pCell->Delete();
     maItems.clear();
+
+    CellStorageModified();
 }
 
 
@@ -480,6 +490,7 @@ void ScColumn::DeleteRange( SCSIZE nStartIndex, SCSIZE nEndIndex, sal_uInt16 nDe
         if (bRemoved)
             nShift += maItems.size() - nStartSegment;
         maItems.erase(maItems.end() - nShift, maItems.end());
+        CellStorageModified();
     }
 
     // *** delete all formula cells ***
@@ -1403,8 +1414,11 @@ bool ScColumn::SetString( SCROW nRow, SCTAB nTabP, const String& rString,
                     if ( i >= maItems.size() || maItems[i].nRow != nRow )
                         Search(nRow, i);
                 }
+
                 pOldCell->Delete();
                 maItems[i].pCell = pNewCell; // Replace
+                CellStorageModified();
+
                 if ( pNewCell->GetCellType() == CELLTYPE_FORMULA )
                 {
                     pNewCell->StartListeningTo( pDocument );
@@ -1626,6 +1640,8 @@ void ScColumn::RemoveProtected( SCROW nStartRow, SCROW nEndRow )
                         maItems[nIndex].pCell = new ScStringCell( aString );
                     }
                     delete pFormula;
+
+                    CellStorageModified();
                 }
                 ++nIndex;
             }
@@ -1936,4 +1952,8 @@ xub_StrLen ScColumn::GetMaxNumberStringLen(
     return nStringLen;
 }
 
+void ScColumn::SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
+{
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 8d4547370e411de026ce3f6ec995ca6ee7ce631a
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Nov 6 13:53:57 2012 -0500

    Redundant use of 'public' modifier.
    
    Plus added a new method that will get called whenever cell array
    state changes.  It's not used yet.
    
    Change-Id: I96719db0460bfb72d8dbe98a80a3880d8f279c33

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 35316cd..6c8e0e0 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -342,7 +342,6 @@ public:
         SCROW nStartRow, SCROW nEndRow, sal_uInt16* pHeight, OutputDevice* pDev,
         double nPPTX, double nPPTY, const Fraction& rZoomX, const Fraction& rZoomY,
         bool bShrink, sal_uInt16 nMinHeight, SCROW nMinStart) const;
-public:
 
                 /// Including current, may return -1
     SCsROW      GetNextUnprotected( SCROW nRow, bool bUp ) const;
@@ -377,6 +376,12 @@ private:
 
     SCROW FindNextVisibleRowWithContent(SCROW nRow, bool bForward) const;
     SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const;
+
+    /**
+     * Called whenever the state of cell array gets modified i.e. a new cell
+     * is inserted, a cell is moved or removed, cells are swapped, and so on.
+     */
+    void CellStorageModified();
 };
 
 
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 791ca24..91ddbb1 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1382,6 +1382,10 @@ SCROW ScColumn::FindNextVisibleRowWithContent(SCROW nRow, bool bForward) const
     }
 }
 
+void ScColumn::CellStorageModified()
+{
+}
+
 void ScColumn::FindDataAreaPos(SCROW& rRow, bool bDown) const
 {
     // check if we are in a data area
commit e75fba46b0080df4fb415bdefacf74a167b6cb6e
Author: Luboš Luňák <l.lunak at suse.cz>
Date:   Tue Mar 12 18:37:58 2013 +0100

    fix incorrectly applied patch
    
    Change-Id: Ia35a4dc3c199d94cdaaefe0c632e6f08050ae63a

diff --git a/vcl/aqua/source/gdi/atsui/salatsuifontutils.cxx b/vcl/aqua/source/gdi/atsui/salatsuifontutils.cxx
index 5703eac..93c487e 100644
--- a/vcl/aqua/source/gdi/atsui/salatsuifontutils.cxx
+++ b/vcl/aqua/source/gdi/atsui/salatsuifontutils.cxx
@@ -302,7 +302,7 @@ static bool GetDevFontAttributes( ATSUFontID nFontID, ImplDevFontAttributes& rDF
         else if( eEncoding == RTL_TEXTENCODING_UCS4 )
             aUtf16Name = OUString(); // TODO
         else // assume the non-unicode encoded names are byte encoded
-+            aUtf16Name = OUString( &aNameBuffer[0], nNameLength, eEncoding );
+            aUtf16Name = OUString( &aNameBuffer[0], nNameLength, eEncoding );
 
         // ignore empty strings
         if( aUtf16Name.getLength() <= 0 )
commit 08b9817b778a64b63a83744ac8b309bbed743f00
Author: Ricardo Montania <ricardo at linuxafundo.com.br>
Date:   Tue Mar 12 14:23:48 2013 -0300

    Removal finished of CreateFromAscii
    
    Change-Id: I7bb590fef530c64adbe473cffa9e09b2e4507daf
    Reviewed-on: https://gerrit.libreoffice.org/2685
    Reviewed-by: Luboš Luňák <l.lunak at suse.cz>
    Tested-by: Luboš Luňák <l.lunak at suse.cz>

diff --git a/vcl/unx/generic/app/salinst.cxx b/vcl/unx/generic/app/salinst.cxx
index b234b8b..af958fb 100644
--- a/vcl/unx/generic/app/salinst.cxx
+++ b/vcl/unx/generic/app/salinst.cxx
@@ -292,9 +292,9 @@ void X11SalInstance::FillFontPathList( std::list< OString >& o_rFontPaths )
     const char* lang = getenv("LANG");
     if ( lang != NULL )
     {
-        String aOpenWinDir( String::CreateFromAscii( "/usr/openwin/lib/locale/" ) );
-        aOpenWinDir.AppendAscii( lang );
-        aOpenWinDir.AppendAscii( "/OWfontpath" );
+        OUString aOpenWinDir( "/usr/openwin/lib/locale/" );
+        aOpenWinDir += OUString::createFromAscii( lang );
+        aOpenWinDir += "/OWfontpath";
 
         SvFileStream aStream( aOpenWinDir, STREAM_READ );
 
diff --git a/vcl/workben/outdevgrind.cxx b/vcl/workben/outdevgrind.cxx
index 3c0d375..bec832a 100644
--- a/vcl/workben/outdevgrind.cxx
+++ b/vcl/workben/outdevgrind.cxx
@@ -892,8 +892,7 @@ sal_uInt16 GrindApp::Exception( sal_uInt16 nError )
     switch( nError & EXC_MAJORTYPE )
     {
         case EXC_RSCNOTLOADED:
-            Abort( String::CreateFromAscii(
-                       "Error: could not load language resources.\nPlease check your installation.\n" ) );
+            Abort( "Error: could not load language resources.\nPlease check your installation.\n" );
             break;
     }
     return 0;
commit 8563f011ab4001a77ff1dfaeb74abb5900b1a73c
Author: Luboš Luňák <l.lunak at suse.cz>
Date:   Tue Mar 12 18:23:12 2013 +0100

    update pch headers
    
    Change-Id: Ibb368e6a806666a73bf6bf1a097d14bc6e75b24d

diff --git a/connectivity/inc/pch/precompiled_file.hxx b/connectivity/inc/pch/precompiled_file.hxx
index 83eb21a..18e25b4 100644
--- a/connectivity/inc/pch/precompiled_file.hxx
+++ b/connectivity/inc/pch/precompiled_file.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "sal/config.h"
 #include <algorithm>
 #include <cmath>
diff --git a/connectivity/inc/pch/precompiled_flat.hxx b/connectivity/inc/pch/precompiled_flat.hxx
index 1cde569..e83aa35 100644
--- a/connectivity/inc/pch/precompiled_flat.hxx
+++ b/connectivity/inc/pch/precompiled_flat.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include <com/sun/star/beans/XFastPropertySet.hpp>
 #include <com/sun/star/lang/DisposedException.hpp>
 #include <com/sun/star/lang/XUnoTunnel.hpp>
diff --git a/dbaccess/inc/pch/precompiled_dbu.hxx b/dbaccess/inc/pch/precompiled_dbu.hxx
index 1d358ef..b385a5c 100644
--- a/dbaccess/inc/pch/precompiled_dbu.hxx
+++ b/dbaccess/inc/pch/precompiled_dbu.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "com/sun/star/beans/NamedValue.hpp"
 #include "com/sun/star/beans/XMultiPropertySet.hpp"
 #include "com/sun/star/beans/XPropertiesChangeListener.hpp"
diff --git a/oox/inc/pch/precompiled_oox.hxx b/oox/inc/pch/precompiled_oox.hxx
index c1831b3..274a6d3 100644
--- a/oox/inc/pch/precompiled_oox.hxx
+++ b/oox/inc/pch/precompiled_oox.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "basegfx/numeric/ftools.hxx"
 #include "comphelper/anytostring.hxx"
 #include "cppuhelper/exc_hlp.hxx"
@@ -355,6 +362,7 @@
 #include <time.h>
 #include <tools/debug.hxx>
 #include <tools/globname.hxx>
+#include <tools/multisel.hxx>
 #include <tools/solar.h>
 #include <tools/stream.hxx>
 #include <tools/string.hxx>
diff --git a/sal/inc/pch/precompiled_sal.hxx b/sal/inc/pch/precompiled_sal.hxx
index 54ddb4e..24ff7af 100644
--- a/sal/inc/pch/precompiled_sal.hxx
+++ b/sal/inc/pch/precompiled_sal.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "boost/bind.hpp"
 #include "boost/noncopyable.hpp"
 #include <algorithm>
diff --git a/sc/inc/pch/precompiled_sc.hxx b/sc/inc/pch/precompiled_sc.hxx
index ebf64c1..2d8dd7c 100644
--- a/sc/inc/pch/precompiled_sc.hxx
+++ b/sc/inc/pch/precompiled_sc.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "basegfx/matrix/b2dhommatrix.hxx"
 #include "basegfx/polygon/b2dpolygon.hxx"
 #include "basegfx/polygon/b2dpolygontools.hxx"
diff --git a/sd/inc/pch/precompiled_sd.hxx b/sd/inc/pch/precompiled_sd.hxx
index cf28fa2..a03c43a 100644
--- a/sd/inc/pch/precompiled_sd.hxx
+++ b/sd/inc/pch/precompiled_sd.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "avmedia/mediawindow.hxx"
 #include "canvas/elapsedtime.hxx"
 #include "com/sun/star/office/XAnnotationEnumeration.hpp"
diff --git a/starmath/inc/pch/precompiled_sm.hxx b/starmath/inc/pch/precompiled_sm.hxx
index acb36c4..f9b64e5 100644
--- a/starmath/inc/pch/precompiled_sm.hxx
+++ b/starmath/inc/pch/precompiled_sm.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "svx/modctrl.hxx"
 #include "tools/rcid.h"
 #include <com/sun/star/accessibility/AccessibleEventId.hpp>
diff --git a/svtools/inc/pch/precompiled_svt.hxx b/svtools/inc/pch/precompiled_svt.hxx
index f1db95a..b2879eb 100644
--- a/svtools/inc/pch/precompiled_svt.hxx
+++ b/svtools/inc/pch/precompiled_svt.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "com/sun/star/beans/XPropertySet.hpp"
 #include "com/sun/star/document/XDocumentProperties.hpp"
 #include "com/sun/star/script/Converter.hpp"
diff --git a/svx/inc/pch/precompiled_svx.hxx b/svx/inc/pch/precompiled_svx.hxx
index 358e5c9..720b17e 100644
--- a/svx/inc/pch/precompiled_svx.hxx
+++ b/svx/inc/pch/precompiled_svx.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #ifdef WNT
 #define UNICODE
 #define _UNICODE
diff --git a/svx/inc/pch/precompiled_svxcore.hxx b/svx/inc/pch/precompiled_svxcore.hxx
index 7bb3f690..cebf95a 100644
--- a/svx/inc/pch/precompiled_svxcore.hxx
+++ b/svx/inc/pch/precompiled_svxcore.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "boost/scoped_ptr.hpp"
 #include "com/sun/star/document/XStorageBasedDocument.hpp"
 #include "com/sun/star/system/SystemShellExecute.hpp"
diff --git a/sw/inc/pch/precompiled_msword.hxx b/sw/inc/pch/precompiled_msword.hxx
index 05af0b7..8e28458 100644
--- a/sw/inc/pch/precompiled_msword.hxx
+++ b/sw/inc/pch/precompiled_msword.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "sal/config.h"
 #include "svl/urihelper.hxx"
 #include <algorithm>
diff --git a/sw/inc/pch/precompiled_sw.hxx b/sw/inc/pch/precompiled_sw.hxx
index 86c8a84..6277fb3 100644
--- a/sw/inc/pch/precompiled_sw.hxx
+++ b/sw/inc/pch/precompiled_sw.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "com/sun/star/mail/XSmtpService.hpp"
 #include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
 #include "cppuhelper/implementationentry.hxx"
diff --git a/vcl/inc/pch/precompiled_vcl.hxx b/vcl/inc/pch/precompiled_vcl.hxx
index 5821b16..b7f7a0c 100644
--- a/vcl/inc/pch/precompiled_vcl.hxx
+++ b/vcl/inc/pch/precompiled_vcl.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "basegfx/matrix/b2dhommatrix.hxx"
 #include "basegfx/polygon/b2dpolygon.hxx"
 #include "basegfx/polygon/b2dpolygontools.hxx"
diff --git a/writerfilter/inc/pch/precompiled_writerfilter.hxx b/writerfilter/inc/pch/precompiled_writerfilter.hxx
index c88e2af..addf20b 100644
--- a/writerfilter/inc/pch/precompiled_writerfilter.hxx
+++ b/writerfilter/inc/pch/precompiled_writerfilter.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "doctok/resources.hxx"
 #include "ooxml/OOXMLFastTokens.hxx"
 #include <algorithm>
diff --git a/xmloff/inc/pch/precompiled_xo.hxx b/xmloff/inc/pch/precompiled_xo.hxx
index fa92939..9472843 100644
--- a/xmloff/inc/pch/precompiled_xo.hxx
+++ b/xmloff/inc/pch/precompiled_xo.hxx
@@ -7,6 +7,13 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 #include "com/sun/star/beans/XPropertySet.hpp"
 #include "com/sun/star/beans/XPropertySetInfo.hpp"
 #include "com/sun/star/text/XLineNumberingProperties.hpp"
commit 404e5097a86325d36b17731fad568ca37839a67a
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Mar 12 18:06:31 2013 +0100

    janitorial: typo in comment
    
    Change-Id: Idd62c2768a03f7aab8ff11165425f8c383653f38

diff --git a/sal/inc/rtl/ustring.h b/sal/inc/rtl/ustring.h
index 23ea47a..ba19b83 100644
--- a/sal/inc/rtl/ustring.h
+++ b/sal/inc/rtl/ustring.h
@@ -1754,7 +1754,7 @@ SAL_DLLPUBLIC void SAL_CALL rtl_uString_newTrim(
     the number of the token to return, starting at index.
 
     @param cTok
-    the character that seperates the tokens.
+    the character that separates the tokens.
 
     @param idx
     the position at which searching for the token starts.  Must not be greater
commit 4178806bb010129f3b13b62825476666fe48ddcd
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Mar 12 17:57:57 2013 +0100

    reportbuilder: make "Group on" not-"Each Value" actually work
    
    Change-Id: Id5d73f9aac48ebfb6987e5bf0df37e62f1817bdc

diff --git a/reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java b/reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java
index a22be04..24e1fe1 100644
--- a/reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java
+++ b/reportbuilder/java/org/libreoffice/report/SDBCReportDataFactory.java
@@ -139,6 +139,7 @@ public class SDBCReportDataFactory implements DataSourceFactory
     private static final Log LOGGER = LogFactory.getLog(SDBCReportDataFactory.class);
     public static final String COMMAND_TYPE = "command-type";
     public static final String ESCAPE_PROCESSING = "escape-processing";
+    public static final String SORT_EXPRESSIONS = "sort-expressions";
     public static final String GROUP_EXPRESSIONS = "group-expressions";
     public static final String MASTER_VALUES = "master-values";
     public static final String MASTER_COLUMNS = "master-columns";
@@ -229,10 +230,10 @@ public class SDBCReportDataFactory implements DataSourceFactory
         }
     }
 
-    private String getOrderStatement(final int commandType, final String command, final List groupExpressions)
+    private String getOrderStatement(final int commandType, final String command, final List sortExpressions)
     {
         final StringBuffer order = new StringBuffer();
-        final int count = groupExpressions.size();
+        final int count = sortExpressions.size();
         if (count != 0)
         {
             try
@@ -244,7 +245,7 @@ public class SDBCReportDataFactory implements DataSourceFactory
                 {
                     for (int i = 0; i < count; i++)
                     {
-                        final Object[] pair = (Object[]) groupExpressions.get(i);
+                        final Object[] pair = (Object[]) sortExpressions.get(i);
                         String expression = (String) pair[0];
 
                         if (!expression.startsWith(quote) && columns.hasByName(expression))
@@ -533,7 +534,7 @@ public class SDBCReportDataFactory implements DataSourceFactory
             WrappedTargetException,
             NoSuchElementException
     {
-        final StringBuffer order = new StringBuffer(getOrderStatement(commandType, command, (ArrayList<?>) parameters.get(GROUP_EXPRESSIONS)));
+        final StringBuffer order = new StringBuffer(getOrderStatement(commandType, command, (ArrayList<?>) parameters.get(SORT_EXPRESSIONS)));
         if (order.length() > 0 && commandType != CommandType.TABLE)
         {
             String statement = command;
diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/PentahoReportJob.java b/reportbuilder/java/org/libreoffice/report/pentaho/PentahoReportJob.java
index e1cf4f3..fc8b4ff 100644
--- a/reportbuilder/java/org/libreoffice/report/pentaho/PentahoReportJob.java
+++ b/reportbuilder/java/org/libreoffice/report/pentaho/PentahoReportJob.java
@@ -311,6 +311,37 @@ public class PentahoReportJob implements ReportJob
         }
     }
 
+    private void collectSortExpressions(final Node[] nodes, final List<Object[]> expressions, final FormulaParser parser, final Expression reportFunctions[])
+    {
+        for (int i = 0; i < nodes.length; i++)
+        {
+            final Node node = nodes[i];
+            if (node instanceof OfficeGroup)
+            {
+                final OfficeGroup group = (OfficeGroup) node;
+                final String exp = group.getSortingExpression();
+                if (exp == null)
+                {
+                    continue;
+                }
+
+                final Object[] pair = new Object[2];
+                pair[0] = exp;
+                pair[1] = group.getAttribute(OfficeNamespaces.OOREPORT_NS, "sort-ascending");
+                expressions.add(pair);
+            }
+            else if (node instanceof OfficeDetailSection)
+            {
+                return;
+            }
+            if (node instanceof Section)
+            {
+                final Section section = (Section) node;
+                collectSortExpressions(section.getNodeArray(), expressions, parser, reportFunctions);
+            }
+        }
+    }
+
     private void setMetaDataProperties(DefaultReportJob job)
     {
         job.getConfiguration().setConfigProperty(ReportEngineParameterNames.AUTHOR, (String) jobProperties.getProperty(ReportEngineParameterNames.AUTHOR));
@@ -343,11 +374,14 @@ public class PentahoReportJob implements ReportJob
             final Node[] nodes = report.getNodeArray();
 
             final FormulaParser parser = new FormulaParser();
-            final ArrayList<Object[]> expressions = new ArrayList<Object[]>();
             final OfficeReport officeReport = (OfficeReport) ((Section) nodes[0]).getNode(0);
             final Section reportBody = (Section) officeReport.getBodySection();
-            collectGroupExpressions(reportBody.getNodeArray(), expressions, parser, officeReport.getExpressions());
-            parameters.put(SDBCReportDataFactory.GROUP_EXPRESSIONS, expressions);
+            final ArrayList<Object[]> sortExpressions = new ArrayList<Object[]>();
+            collectSortExpressions(reportBody.getNodeArray(), sortExpressions, parser, officeReport.getExpressions());
+            parameters.put(SDBCReportDataFactory.SORT_EXPRESSIONS, sortExpressions);
+            final ArrayList<Object[]> groupExpressions = new ArrayList<Object[]>();
+            collectGroupExpressions(reportBody.getNodeArray(), groupExpressions, parser, officeReport.getExpressions());
+            parameters.put(SDBCReportDataFactory.GROUP_EXPRESSIONS, groupExpressions);
             final String command = (String) officeReport.getAttribute(OfficeNamespaces.OOREPORT_NS, "command");
             final String commandType = (String) officeReport.getAttribute(OfficeNamespaces.OOREPORT_NS, SDBCReportDataFactory.COMMAND_TYPE);
             final String escapeProcessing = (String) officeReport.getAttribute(OfficeNamespaces.OOREPORT_NS, SDBCReportDataFactory.ESCAPE_PROCESSING);
diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/model/OfficeGroup.java b/reportbuilder/java/org/libreoffice/report/pentaho/model/OfficeGroup.java
index b10aab1..79ea585 100644
--- a/reportbuilder/java/org/libreoffice/report/pentaho/model/OfficeGroup.java
+++ b/reportbuilder/java/org/libreoffice/report/pentaho/model/OfficeGroup.java
@@ -81,4 +81,15 @@ public class OfficeGroup extends Section
         }
         return instanceSection.getGroupingExpression();
     }
+
+    public String getSortingExpression()
+    {
+        final OfficeGroupInstanceSection instanceSection =
+                (OfficeGroupInstanceSection) findFirstChild(JFreeReportInfo.REPORT_NAMESPACE, "group-instance");
+        if (instanceSection == null)
+        {
+            return null;
+        }
+        return instanceSection.getSortingExpression();
+    }
 }
diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/model/OfficeGroupInstanceSection.java b/reportbuilder/java/org/libreoffice/report/pentaho/model/OfficeGroupInstanceSection.java
index a9adad3..cd7ed7b 100644
--- a/reportbuilder/java/org/libreoffice/report/pentaho/model/OfficeGroupInstanceSection.java
+++ b/reportbuilder/java/org/libreoffice/report/pentaho/model/OfficeGroupInstanceSection.java
@@ -27,7 +27,20 @@ import org.jfree.report.structure.Group;
 public class OfficeGroupInstanceSection extends Group
 {
 
+    String sortingExpression;
+
     public OfficeGroupInstanceSection()
     {
     }
+
+    public void setSortingExpression(String s)
+    {
+        sortingExpression=s;
+    }
+
+    public String getSortingExpression()
+    {
+        return sortingExpression;
+    }
+
 }
diff --git a/reportbuilder/java/org/libreoffice/report/pentaho/parser/rpt/GroupReadHandler.java b/reportbuilder/java/org/libreoffice/report/pentaho/parser/rpt/GroupReadHandler.java
index 22def36..7843d8a 100644
--- a/reportbuilder/java/org/libreoffice/report/pentaho/parser/rpt/GroupReadHandler.java
+++ b/reportbuilder/java/org/libreoffice/report/pentaho/parser/rpt/GroupReadHandler.java
@@ -77,6 +77,11 @@ public class GroupReadHandler extends ElementReadHandler
             function.setFormula(groupExpr);
             groupInstanceSection.setGroupingExpression(function);
         }
+        final String sortExpr  = attrs.getValue(OfficeNamespaces.OOREPORT_NS, "sort-expression");
+        if (sortExpr != null && !"".equals(sortExpr))
+        {
+            groupInstanceSection.setSortingExpression(sortExpr);
+        }
     }
 
     /**
diff --git a/reportdesign/source/filter/xml/xmlEnums.hxx b/reportdesign/source/filter/xml/xmlEnums.hxx
index 53df992..1d98a4d 100644
--- a/reportdesign/source/filter/xml/xmlEnums.hxx
+++ b/reportdesign/source/filter/xml/xmlEnums.hxx
@@ -60,6 +60,7 @@ namespace rptxml
         XML_TOK_START_NEW_COLUMN            ,
         XML_TOK_RESET_PAGE_NUMBER           ,
         XML_TOK_PRINT_HEADER_ON_EACH_PAGE   ,
+        XML_TOK_SORT_EXPRESSION             ,
         XML_TOK_GROUP_EXPRESSION            ,
         XML_TOK_GROUP_HEADER                ,
         XML_TOK_GROUP_GROUP                 ,
diff --git a/reportdesign/source/filter/xml/xmlExport.cxx b/reportdesign/source/filter/xml/xmlExport.cxx
index ba25f5e..781c713 100644
--- a/reportdesign/source/filter/xml/xmlExport.cxx
+++ b/reportdesign/source/filter/xml/xmlExport.cxx
@@ -1078,7 +1078,8 @@ sal_Bool ORptExport::exportGroup(const Reference<XReportDefinition>& _xReportDef
                     if ( xGroup->getResetPageNumber() )
                         AddAttribute(XML_NAMESPACE_REPORT, XML_RESET_PAGE_NUMBER, XML_TRUE );
 
-                    ::rtl::OUString sExpression = xGroup->getExpression();
+                    const ::rtl::OUString sField = xGroup->getExpression();
+                    ::rtl::OUString sExpression  = sField;
                     if ( !sExpression.isEmpty() )
                     {
                         static ::rtl::OUString s_sQuote(RTL_CONSTASCII_USTRINGPARAM("\"\""));
@@ -1097,6 +1098,7 @@ sal_Bool ORptExport::exportGroup(const Reference<XReportDefinition>& _xReportDef
                         sFormula += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\")"));
                         sExpression = sFormula;
                     }
+                    AddAttribute(XML_NAMESPACE_REPORT, XML_SORT_EXPRESSION, sField);
                     AddAttribute(XML_NAMESPACE_REPORT, XML_GROUP_EXPRESSION,sExpression);
                     sal_Int16 nRet = xGroup->getKeepTogether();
                     ::rtl::OUStringBuffer sValue;
@@ -1525,6 +1527,7 @@ void ORptExport::exportGroupsExpressionAsFunction(const Reference< XGroups>& _xG
                 ::rtl::OUString sFunction,sPrefix,sPostfix;
                 ::rtl::OUString sExpression = xGroup->getExpression();
                 ::rtl::OUString sFunctionName;
+                ::rtl::OUString sInitialFormula;
                 switch(nGroupOn)
                 {
                     case report::GroupOn::PREFIX_CHARACTERS:
@@ -1558,14 +1561,18 @@ void ORptExport::exportGroupsExpressionAsFunction(const Reference< XGroups>& _xG
                         {
                             sFunction = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("INT"));
                             uno::Reference< XFunction> xCountFunction = xFunctions->createFunction();
-                            xCountFunction->setInitialFormula(beans::Optional< ::rtl::OUString>(sal_True,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:1"))));
+                            xCountFunction->setInitialFormula(beans::Optional< ::rtl::OUString>(sal_True,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:0"))));
                             ::rtl::OUString sCountName = sFunction + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_count_")) + sExpression;
                             xCountFunction->setName(sCountName);
                             xCountFunction->setFormula(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:[")) + sCountName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("] + 1")));
                             exportFunction(xCountFunction);
                             sExpression = sCountName;
-                            sPrefix = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" / ")) + ::rtl::OUString::valueOf(xGroup->getGroupInterval());
+                            // The reference to sCountName in the formula of sFunctionName refers to the *old* value
+                            // so we need to expand the the formula of sCountName
+                            sPrefix = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" + 1) / ")) + ::rtl::OUString::valueOf(xGroup->getGroupInterval());
                             sFunctionName = sFunction + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_")) + sExpression;
+                            sFunction = sFunction + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("("));
+                            sInitialFormula = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:0"));
                         }
                         break;
                     default:
@@ -1580,6 +1587,8 @@ void ORptExport::exportGroupsExpressionAsFunction(const Reference< XGroups>& _xG
                         sFunctionName = sFunctionName.replace(pReplaceChars[j],'_');
 
                     xFunction->setName(sFunctionName);
+                    if ( !sInitialFormula.isEmpty() )
+                        xFunction->setInitialFormula(beans::Optional< ::rtl::OUString>(sal_True, sInitialFormula));
                     sFunction = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("rpt:")) + sFunction;
                     sFunction += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("(["));
                     sFunction += sExpression;
diff --git a/reportdesign/source/filter/xml/xmlfilter.cxx b/reportdesign/source/filter/xml/xmlfilter.cxx
index 22fbd15..71c8e67 100644
--- a/reportdesign/source/filter/xml/xmlfilter.cxx
+++ b/reportdesign/source/filter/xml/xmlfilter.cxx
@@ -797,6 +797,7 @@ const SvXMLTokenMap& ORptFilter::GetGroupElemTokenMap() const
             { XML_NAMESPACE_REPORT, XML_RESET_PAGE_NUMBER           ,   XML_TOK_RESET_PAGE_NUMBER           },
             { XML_NAMESPACE_REPORT, XML_PRINT_HEADER_ON_EACH_PAGE   ,   XML_TOK_PRINT_HEADER_ON_EACH_PAGE   },
             { XML_NAMESPACE_REPORT, XML_RESET_PAGE_NUMBER           ,   XML_TOK_RESET_PAGE_NUMBER           },
+            { XML_NAMESPACE_REPORT, XML_SORT_EXPRESSION             ,   XML_TOK_SORT_EXPRESSION             },
             { XML_NAMESPACE_REPORT, XML_GROUP_EXPRESSION            ,   XML_TOK_GROUP_EXPRESSION            },
             { XML_NAMESPACE_REPORT, XML_GROUP_HEADER                ,   XML_TOK_GROUP_HEADER                },
             { XML_NAMESPACE_REPORT, XML_GROUP                       ,   XML_TOK_GROUP_GROUP                 },
diff --git a/xmloff/inc/xmloff/xmltoken.hxx b/xmloff/inc/xmloff/xmltoken.hxx
index e7e886e..605256f 100644
--- a/xmloff/inc/xmloff/xmltoken.hxx
+++ b/xmloff/inc/xmloff/xmltoken.hxx
@@ -2941,6 +2941,7 @@ namespace xmloff { namespace token {
         XML_START_NEW_COLUMN            ,
         XML_RESET_PAGE_NUMBER           ,
         XML_PRINT_HEADER_ON_EACH_PAGE   ,
+        XML_SORT_EXPRESSION             ,
         XML_GROUP_EXPRESSION            ,
         XML_GROUP_HEADER                ,
         XML_GROUP_FOOTER                ,
diff --git a/xmloff/source/core/xmltoken.cxx b/xmloff/source/core/xmltoken.cxx
index afd52ba..46e3a4f 100644
--- a/xmloff/source/core/xmltoken.cxx
+++ b/xmloff/source/core/xmltoken.cxx
@@ -2937,6 +2937,7 @@ namespace xmloff { namespace token {
         TOKEN( "start-new-column",       XML_START_NEW_COLUMN            ),
         TOKEN( "reset-page-number",       XML_RESET_PAGE_NUMBER          ),
         TOKEN( "print-header-on-each-page",       XML_PRINT_HEADER_ON_EACH_PAGE  ),
+        TOKEN( "sort-expression",        XML_SORT_EXPRESSION             ),
         TOKEN( "group-expression",       XML_GROUP_EXPRESSION            ),
         TOKEN( "group-header",       XML_GROUP_HEADER                ),
         TOKEN( "group-footer",       XML_GROUP_FOOTER                ),
commit 36caac0e029a3caf50cb27af339efd69008d414e
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Mar 12 17:48:27 2013 +0100

    There's no reason for these defaults in one constructor but not the other
    
    Change-Id: I62e9351a21b0519a3ef70c328f33e1b7f7427926

diff --git a/dbaccess/source/core/dataaccess/ModelImpl.cxx b/dbaccess/source/core/dataaccess/ModelImpl.cxx
index 2d77fc1..62c5713 100644
--- a/dbaccess/source/core/dataaccess/ModelImpl.cxx
+++ b/dbaccess/source/core/dataaccess/ModelImpl.cxx
@@ -427,11 +427,7 @@ ODatabaseModelImpl::ODatabaseModelImpl( const Reference< XMultiServiceFactory >&
             ,m_pSharedConnectionManager(NULL)
             ,m_nControllerLockCount(0)
 {
-    // some kind of default
     DBG_CTOR(ODatabaseModelImpl,NULL);
-    m_sConnectURL = "jdbc:";
-    m_aTableFilter.realloc(1);
-    m_aTableFilter[0] = "%";
     impl_construct_nothrow();
 }
 
commit b1beaf3f7a7d332890ea3877b657cd014562cf33
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Mar 12 16:33:01 2013 +0000

    Resolves: rhbz#920697, #i110881#, rhbz#623191 presentation not fullscreen
    
    Undecorated windows don't go full-screen correctly. Lets try and avoid using
    gtk_window_set_decorated and rely on gtk_window_set_role to get the WM to do
    the right thing.
    
    Change-Id: I0f9e9c26372ac50398fa69c404013e3035ed637b

diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx
index 07f6fb3..9433ae5 100644
--- a/vcl/unx/gtk/window/gtkframe.cxx
+++ b/vcl/unx/gtk/window/gtkframe.cxx
@@ -1091,7 +1091,6 @@ void GtkSalFrame::Init( SalFrame* pParent, sal_uLong nStyle )
 
     if( bDecoHandling )
     {
-        bool bNoDecor = ! (nStyle & (SAL_FRAME_STYLE_MOVEABLE | SAL_FRAME_STYLE_SIZEABLE | SAL_FRAME_STYLE_CLOSEABLE ) );
         GdkWindowTypeHint eType = GDK_WINDOW_TYPE_HINT_NORMAL;
         if( (nStyle & SAL_FRAME_STYLE_DIALOG) && m_pParent != 0 )
             eType = GDK_WINDOW_TYPE_HINT_DIALOG;
@@ -1109,7 +1108,6 @@ void GtkSalFrame::Init( SalFrame* pParent, sal_uLong nStyle )
         {
             eType = GDK_WINDOW_TYPE_HINT_TOOLBAR;
             lcl_set_accept_focus( GTK_WINDOW(m_pWindow), sal_False, true );
-            bNoDecor = true;
         }
         else if( (nStyle & SAL_FRAME_STYLE_FLOAT_FOCUSABLE) )
         {
@@ -1124,8 +1122,6 @@ void GtkSalFrame::Init( SalFrame* pParent, sal_uLong nStyle )
         }
 #endif
         gtk_window_set_type_hint( GTK_WINDOW(m_pWindow), eType );
-        if( bNoDecor )
-            gtk_window_set_decorated( GTK_WINDOW(m_pWindow), FALSE );
         gtk_window_set_gravity( GTK_WINDOW(m_pWindow), GDK_GRAVITY_STATIC );
         if( m_pParent && ! (m_pParent->m_nStyle & SAL_FRAME_STYLE_PLUG) )
             gtk_window_set_transient_for( GTK_WINDOW(m_pWindow), GTK_WINDOW(m_pParent->m_pWindow) );
@@ -3331,40 +3327,12 @@ gboolean GtkSalFrame::signalFocus( GtkWidget*, GdkEventFocus* pEvent, gpointer f
     return sal_False;
 }
 
-extern "C" {
-gboolean implDelayedFullScreenHdl (void *pWindow)
-{
-    SolarMutexGuard aGuard;
-
-    /* #i110881# workaround a gtk issue (see
-       https://bugzilla.redhat.com/show_bug.cgi?id=623191#c8)
-       gtk_window_fullscreen can fail due to a race condition,
-       request an additional status change to fullscreen to be
-       safe: if the window is now mapped ... and wasn't
-       previously, ie. the race; we'll end up doing a nice
-       gdk_wmspec_change_state here anyway.
-    */
-    if( pWindow )
-    {
-        gdk_window_fullscreen( GDK_WINDOW( pWindow ) );
-        g_object_unref( pWindow );
-    }
-
-    return FALSE;
-}
-}
-
 gboolean GtkSalFrame::signalMap( GtkWidget *pWidget, GdkEvent*, gpointer frame )
 {
     GtkSalFrame* pThis = (GtkSalFrame*)frame;
 
     GTK_YIELD_GRAB();
 
-    if( pThis->m_bFullscreen )
-        g_idle_add_full( G_PRIORITY_HIGH, implDelayedFullScreenHdl,
-                         g_object_ref( widget_get_window( pThis->m_pWindow ) ),
-                         NULL );
-
     bool bSetFocus = pThis->m_bSetFocusOnMap;
     pThis->m_bSetFocusOnMap = false;
 
commit 7ac75351f16358fd0f9d83162eda25cca6de2622
Author: Luboš Luňák <l.lunak at suse.cz>
Date:   Tue Mar 12 17:23:18 2013 +0100

    mention that temporary edits in autogenerated pch headers are ok
    
    Change-Id: Ifafa5c8847dec80a3b80afc5e10044f9c1c8d48a

diff --git a/solenv/bin/update_pch.sh b/solenv/bin/update_pch.sh
index 84ff445..39569f7 100755
--- a/solenv/bin/update_pch.sh
+++ b/solenv/bin/update_pch.sh
@@ -91,6 +91,13 @@ function list_file_includes()
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+/*
+ This file has been autogenerated by update_pch.sh . It is possible to edit it
+ manually (such as when an include file has been moved/renamed/removed. All such
+ manual changes will be rewritten by the next run of update_pch.sh (which presumably
+ also fixes all possible problems, so it's usually better to use it).
+*/
+
 EOF
 
     # Library_svx needs this (sendreportw32.cxx)
commit 2b26ac2efca151ce00af66db9a57eea351fbd947
Author: Luboš Luňák <l.lunak at suse.cz>
Date:   Tue Mar 12 17:22:32 2013 +0100

    do not require full path when passing a pch header file to update
    
    Change-Id: Ie1b0588cf6424e836f865cda9d4451aa0e1db32d

diff --git a/solenv/bin/update_pch.sh b/solenv/bin/update_pch.sh
index fdb17a7a..84ff445 100755
--- a/solenv/bin/update_pch.sh
+++ b/solenv/bin/update_pch.sh
@@ -7,6 +7,8 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 #
 
+# Usage: update_pch.sh [precompiled_xxx.hxx]
+
 root=`dirname $0`
 root=`cd $root/../.. && pwd`
 
@@ -19,7 +21,7 @@ fi
 for x in $headers; do
     header=$x
     echo updating `echo $header | sed -e s%$root/%%`
-    module=`echo $header | sed -e s%$root/%% -e s%/.*%%`
+    module=`readlink -f $header | sed -e s%$root/%% -e s%/.*%%`
     name=`echo $header | sed -e s/.*precompiled_// -e s/\.hxx//`
     makefile="Library_$name.mk"
 
commit 15366dbf24311734a8eae4fb7e7dadaeec12ee56
Author: Noel Power <noel.power at suse.com>
Date:   Tue Mar 12 16:05:39 2013 +0000

    re-enable testStarBasic() & testVba() in for Windows ( macosx later )
    
    Change-Id: I9f7621fdadbff1c7b1b3d0fbadf43715327e39d6

diff --git a/sc/qa/extras/macros-test.cxx b/sc/qa/extras/macros-test.cxx
index 972b009..da29b14 100644
--- a/sc/qa/extras/macros-test.cxx
+++ b/sc/qa/extras/macros-test.cxx
@@ -61,7 +61,7 @@ public:
     void testStarBasic();
     void testVba();
     CPPUNIT_TEST_SUITE(ScMacrosTest);
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX)
     //enable this test if you want to play with star basic macros in unit tests
     //works but does nothing useful yet
     CPPUNIT_TEST(testStarBasic);
commit ddaf31f183fe3f2fbf76c1b87eb5a943dc6d833f
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Tue Mar 5 22:21:57 2013 +0000

    liblibo: install test library by itself and install it.
    
    Also fix debugging with threads, find fundamentalrc correctly,
    make it headless, finally loads a document then exits.
    
    Change-Id: I2017075bf3b3c7198bde53b9fe85585089e5ab6c

diff --git a/Repository.mk b/Repository.mk
index e3ea69b..ffcf18c 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -45,6 +45,7 @@ $(eval $(call gb_Helper_register_executables,NONE, \
     gsicheck \
     helpex \
     idxdict \
+	libtest \
     lngconvex \
     localize \
     makedepend \
diff --git a/desktop/Library_libreoffice.mk b/desktop/Library_libreoffice.mk
index 96b18a1..dbe3e81 100644
--- a/desktop/Library_libreoffice.mk
+++ b/desktop/Library_libreoffice.mk
@@ -17,6 +17,7 @@ $(eval $(call gb_Library_set_include,libreoffice,\
 $(eval $(call gb_Library_add_libs,libreoffice,\
 	$(if $(filter $(OS),LINUX), \
 		-ldl \
+        -lpthread \
 	) \
 ))
 
diff --git a/desktop/Module_desktop.mk b/desktop/Module_desktop.mk
index d97bff3..a05cceb 100644
--- a/desktop/Module_desktop.mk
+++ b/desktop/Module_desktop.mk
@@ -33,7 +33,6 @@ $(eval $(call gb_Module_add_targets,desktop,\
     AllLangResTarget_dkt \
     Library_deployment \
     Library_deploymentmisc \
-	Library_libreoffice \
     Library_offacc \
     Library_sofficeapp \
     Library_spl \
@@ -43,6 +42,12 @@ $(eval $(call gb_Module_add_targets,desktop,\
     Zip_brand_dev \
 ))
 
+ifeq ($(OS),LINUX)
+$(eval $(call gb_Module_add_targets,desktop,\
+	Library_libreoffice \
+))
+endif
+
 ifneq (,$(filter DESKTOP,$(BUILD_TYPE)))
 $(eval $(call gb_Module_add_targets,desktop,\
     Executable_unopkg.bin \
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index de5788d..06f5eac 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -87,8 +87,20 @@ aBasicErrorFunc( const OUString &rErr, const OUString &rAction )
 }
 
 static void
-initialize_uno( const rtl::OUString &aUserProfileURL )
+initialize_uno( const rtl::OUString &aAppURL )
 {
+    rtl::Bootstrap::setIniFilename( aAppURL + "/fundamentalrc" );
+
+    OUString aValue;
+    rtl::Bootstrap::set( "CONFIGURATION_LAYERS",
+                         "xcsxcu:${BRAND_BASE_DIR}/share/registry "
+                         "res:${BRAND_BASE_DIR}/share/registry "
+//                       "bundledext:${${BRAND_BASE_DIR}/program/unorc:BUNDLED_EXTENSIONS_USER}/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/configmgr.ini " );
+//                       "sharedext:${${BRAND_BASE_DIR}/program/unorc:SHARED_EXTENSIONS_USER}/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/configmgr.ini "
+//                       "userext:${${BRAND_BASE_DIR}/program/unorc:UNO_USER_PACKAGES_CACHE}/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/configmgr.ini "
+//                         "user:${$BRAND_BASE_DIR/program/bootstraprc:UserInstallation}/user/registrymodifications.xcu"
+                         );
+
     xContext = cppu::defaultBootstrap_InitialComponentContext();
     fprintf( stderr, "Uno initialized %d\n", xContext.is() );
     xFactory = xContext->getServiceManager();
@@ -96,8 +108,9 @@ initialize_uno( const rtl::OUString &aUserProfileURL )
     comphelper::setProcessServiceFactory(xSFactory);
 
     // set UserInstallation to user profile dir in test/user-template
-    rtl::Bootstrap aDefaultVars;
-    aDefaultVars.set(rtl::OUString("UserInstallation"), aUserProfileURL );
+//    rtl::Bootstrap aDefaultVars;
+//    aDefaultVars.set(rtl::OUString("UserInstallation"), aAppURL + "../registry" );
+    // configmgr setup ?
 }
 
 bool
@@ -117,15 +130,17 @@ LibLibreOffice_Impl::initialize( const char *app_path )
         return false;
 
     try {
-        initialize_uno( aAppURL + "../registry" );
+        initialize_uno( aAppURL );
         force_c_locale();
+
+        // Force headless
+        rtl::Bootstrap::set( "SAL_USE_VCLPLUGIN", "svp" );
         InitVCL();
-        if (Application::IsHeadlessModeRequested())
-            Application::EnableHeadlessMode(true);
+        Application::EnableHeadlessMode(true);
 
         ErrorHandler::RegisterDisplay( aBasicErrorFunc );
 
-        fprintf (stderr, "do nothing yet");
+        fprintf( stderr, "initialized\n" );
         bInitialized = true;
     } catch (css::uno::Exception & e) {
         fprintf( stderr, "bootstrapping exception '%s'\n",
diff --git a/smoketest/CppunitTest_liblibreoffice.mk b/smoketest/CppunitTest_liblibreoffice.mk
deleted file mode 100644
index e784a3a..0000000
--- a/smoketest/CppunitTest_liblibreoffice.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-
-$(eval $(call gb_CppunitTest_CppunitTest,liblibreoffice))
-
-$(eval $(call gb_CppunitTest_abort_on_assertion,liblibreoffice))
-
-$(eval $(call gb_CppunitTest_add_exception_objects,liblibreoffice,\
-	smoketest/libtest \
-))
-
-$(eval $(call gb_CppunitTest_use_libraries,liblibreoffice,\
-	libreoffice \
-))
-
-ifeq ($(OS),MACOSX)
-liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS
-else
-liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/program
-endif
-
-$(eval $(call gb_CppunitTest_add_arguments,liblibreoffice,\
-	-env:arg-soffice=$(liblibreoffice_SOFFICE_INST) \
-	-env:arg-testarg.smoketest.doc=$(OUTDIR)/bin/smoketestdoc.sxw \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/smoketest/Executable_libtest.mk b/smoketest/Executable_libtest.mk
new file mode 100644
index 0000000..59ba80b
--- /dev/null
+++ b/smoketest/Executable_libtest.mk
@@ -0,0 +1,47 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Executable_Executable,libtest))
+
+$(eval $(call gb_Executable_set_include,libtest,\
+	$$(INCLUDE) \
+	-I$(SRCDIR)/desktop/inc \
+))
+
+$(eval $(call gb_Executable_use_libraries,libtest,\
+	libreoffice \
+	$(gb_UWINAPI) \
+))
+
+$(eval $(call gb_Executable_add_libs,libtest,\
+	-pthread \
+))
+
+$(eval $(call gb_Executable_add_exception_objects,libtest,\
+	smoketest/libtest \
+))
+
+ifeq ($(OS),MACOSX)
+liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS
+else
+liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/program
+endif
+liblibreoffice_OWN_LD_PATH_DIR := $(liblibreoffice_SOFFICE_INST)/libolib
+liblibreoffice_OWN_LD_SO := $(liblibreoffice_OWN_LD_PATH_DIR)/$(call gb_Library_get_linktargetname,libreoffice)
+
+$(liblibreoffice_OWN_LD_SO) : $(call gb_Library_get_target,libreoffice)
+	mkdir -p $(liblibreoffice_OWN_LD_PATH_DIR)/Library
+	cp -a $(call gb_Library_get_target,libreoffice) $(liblibreoffice_OWN_LD_SO)
+
+run_libtest: $(liblibreoffice_OWN_LD_SO)
+	$(gb_Helper_LIBRARY_PATH_VAR)=$${$(gb_Helper_LIBRARY_PATH_VAR):+$$$(gb_Helper_LIBRARY_PATH_VAR):}":$(liblibreoffice_OWN_LD_PATH_DIR)/Library" \
+	$(call gb_LinkTarget_get_target,Executable/libtest) \
+		$(liblibreoffice_SOFFICE_INST) $(OUTDIR)/bin/smoketestdoc.sxw \
+
+# vim: set noet sw=4 ts=4:
diff --git a/smoketest/Module_smoketest.mk b/smoketest/Module_smoketest.mk
index 9a2aa72..31efcce 100644
--- a/smoketest/Module_smoketest.mk
+++ b/smoketest/Module_smoketest.mk
@@ -42,9 +42,11 @@ $(eval $(call gb_Module_add_targets,smoketest,\
 ))
 endif
 
+ifeq ($(OS),LINUX)
 $(eval $(call gb_Module_add_check_targets,smoketest,\
-	CppunitTest_liblibreoffice \
+	Executable_libtest \
 ))
+endif
 
 $(eval $(call gb_Module_add_subsequentcheck_targets,smoketest,\
 	CppunitTest_smoketest \
diff --git a/smoketest/libtest.cxx b/smoketest/libtest.cxx
index 4e452a7..f3d207f 100644
--- a/smoketest/libtest.cxx
+++ b/smoketest/libtest.cxx
@@ -7,60 +7,32 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
-// yuck / FIXME ...
-#include "../desktop/inc/liblibreoffice.hxx"
-
+#include <stdio.h>
 #include <assert.h>
+#include <liblibreoffice.hxx>
 
-#include <sal/types.h>
-#include <rtl/ustring.hxx>
-#include <rtl/bootstrap.hxx>
-#include "cppunit/TestAssert.h"
-#include "cppunit/TestFixture.h"
-#include "cppunit/extensions/HelperMacros.h"
-#include "cppunit/plugin/TestPlugIn.h"
-
-class Test: public CppUnit::TestFixture {
-public:
-    virtual void setUp();
-    virtual void tearDown();
-
-private:
-    CPPUNIT_TEST_SUITE(Test);
-    CPPUNIT_TEST(test);
-    CPPUNIT_TEST_SUITE_END();
-
-    void test();
-};
-
-void Test::setUp()
-{
-}
-void Test::tearDown()
-{
-}
-
-void Test::test()
+int main (int argc, char **argv)
 {
-    rtl::OUString aArgSoffice;
-    rtl::Bootstrap::get( rtl::OUString( "arg-soffice" ), aArgSoffice );
-    OString aInstall = OUStringToOString( aArgSoffice, RTL_TEXTENCODING_UTF8 );
-    fprintf( stderr, "liblibreoffice test: '%s'\n", aInstall.getStr() );
-    LibLibreOffice *pOffice = lo_init( aInstall.getStr() );
-    CPPUNIT_ASSERT( pOffice != NULL );
-
-    bool bInited = pOffice->initialize( aInstall.getStr() );
-    CPPUNIT_ASSERT( bInited );
-
-    rtl::OUString aArgDoc;
-    rtl::Bootstrap::get( rtl::OUString( "arg-testarg.smoketest.doc" ), aArgDoc );
-    OString aDoc = OUStringToOString ( aArgDoc, RTL_TEXTENCODING_UTF8 );
-    fprintf ( stderr, "liblibreoffice doc arg: '%s'\n", aDoc.getStr() );
-    pOffice->documentLoad ( aDoc.getStr() );
+    if( argc < 2 )
+        return -1;
+    LibLibreOffice *pOffice = lo_init( argv[1] );
+    if( !pOffice )
+        return -1;
+    // This separate init is lame I think.
+    if( !pOffice->initialize( argv[1] ) )
+    {
+        fprintf( stderr, "failed to initialize\n" );
+        return -1;
+    }
+    fprintf( stderr, "start to load document '%s'\n", argv[2] );
+    LODocument *pDocument = pOffice->documentLoad( argv[2] );
+    if( !pDocument )
+    {
+        fprintf( stderr, "failed to load document '%s'\n", argv[2] );
+        return -1;
+    }
+    fprintf( stderr, "all tests passed." );
+    return 0;
 }
 
-CPPUNIT_TEST_SUITE_REGISTRATION(Test);
-
-CPPUNIT_PLUGIN_IMPLEMENT();
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/vcl/svapp.hxx b/vcl/inc/vcl/svapp.hxx
index 9b4510e..b2c52ec 100644
--- a/vcl/inc/vcl/svapp.hxx
+++ b/vcl/inc/vcl/svapp.hxx
@@ -330,9 +330,8 @@ public:
     static const Link&          GetFilterHdl();
 
     static void                 EnableHeadlessMode( bool dialogsAreFatal );
-    static sal_Bool                 IsHeadlessModeEnabled();
-
-    static bool IsHeadlessModeRequested();
+    static sal_Bool             IsHeadlessModeEnabled();
+    static bool                 IsHeadlessModeRequested();
         ///< check command line arguments for --headless
 
     static void                 ShowNativeErrorBox(const String& sTitle  ,
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index cba609d..14b33ea 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -1760,7 +1760,7 @@ bool Application::IsHeadlessModeRequested()
     for (sal_uInt32 i = 0; i < n; ++i) {
         rtl::OUString arg;
         rtl_getAppCommandArg(i, &arg.pData);
-        if ( arg == "--headless" ) {
+        if ( arg == "--headless" || arg == "-headless" ) {
             return true;
         }
     }
diff --git a/vcl/unx/generic/plugadapt/salplug.cxx b/vcl/unx/generic/plugadapt/salplug.cxx
index 3d87977..2dbd37f 100644
--- a/vcl/unx/generic/plugadapt/salplug.cxx
+++ b/vcl/unx/generic/plugadapt/salplug.cxx
@@ -21,6 +21,7 @@
 #include "osl/process.h"
 
 #include "rtl/ustrbuf.hxx"
+#include "rtl/bootstrap.hxx"
 
 #include "salinst.hxx"
 #include "generic/gensys.h"
@@ -198,31 +199,22 @@ static SalInstance* autodetect_plugin()
     return pInst;
 }
 
-static SalInstance* check_headless_plugin()
-{
-    int nParams = osl_getCommandArgCount();
-    OUString aParam;
-    for( int i = 0; i < nParams; i++ )
-    {
-        osl_getCommandArg( i, &aParam.pData );
-        if( aParam == "-headless" || aParam == "--headless" )
-        {
-            return tryInstance("svp");
-        }
-    }
-    return NULL;
-}
-
 SalInstance *CreateSalInstance()
 {
-    SalInstance*    pInst = NULL;
+    SalInstance *pInst = NULL;
 
+    OUString aUsePlugin;
     static const char* pUsePlugin = getenv( "SAL_USE_VCLPLUGIN" );
+    if( pUsePlugin )
+        aUsePlugin = OUString::createFromAscii( pUsePlugin );
+    else
+        rtl::Bootstrap::get( "SAL_USE_VCLPLUGIN", aUsePlugin );
 
-    pInst = check_headless_plugin();
+    if( Application::IsHeadlessModeRequested() )
+        aUsePlugin = "svp";
 
-    if( !pInst && pUsePlugin && *pUsePlugin )
-        pInst = tryInstance( OUString::createFromAscii( pUsePlugin ), true );
+    if( !aUsePlugin.isEmpty() )
+        pInst = tryInstance( aUsePlugin );
 
     if( ! pInst )
         pInst = autodetect_plugin();
commit 08b6643eda69c1d4fc8a0b1277ffdd65834d5f46
Author: Jack Leigh <leighman at gmx.se>
Date:   Tue Mar 5 16:47:03 2013 +0000

    liblibo: test documentLoad method
    
    Change-Id: I7827a9b96e5a18b7f0b8b374a49ab96625d22d0a

diff --git a/smoketest/CppunitTest_liblibreoffice.mk b/smoketest/CppunitTest_liblibreoffice.mk
index 8755fe8..e784a3a 100644
--- a/smoketest/CppunitTest_liblibreoffice.mk
+++ b/smoketest/CppunitTest_liblibreoffice.mk
@@ -27,6 +27,7 @@ endif
 
 $(eval $(call gb_CppunitTest_add_arguments,liblibreoffice,\
 	-env:arg-soffice=$(liblibreoffice_SOFFICE_INST) \
+	-env:arg-testarg.smoketest.doc=$(OUTDIR)/bin/smoketestdoc.sxw \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/smoketest/libtest.cxx b/smoketest/libtest.cxx
index cc71d08..4e452a7 100644
--- a/smoketest/libtest.cxx
+++ b/smoketest/libtest.cxx
@@ -51,6 +51,12 @@ void Test::test()
 
     bool bInited = pOffice->initialize( aInstall.getStr() );
     CPPUNIT_ASSERT( bInited );
+
+    rtl::OUString aArgDoc;
+    rtl::Bootstrap::get( rtl::OUString( "arg-testarg.smoketest.doc" ), aArgDoc );
+    OString aDoc = OUStringToOString ( aArgDoc, RTL_TEXTENCODING_UTF8 );
+    fprintf ( stderr, "liblibreoffice doc arg: '%s'\n", aDoc.getStr() );
+    pOffice->documentLoad ( aDoc.getStr() );
 }
 
 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
commit f751be6fa0c097ad51e28a79fa91141bf3313d8f
Author: Jack Leigh <leighman at gmx.se>
Date:   Tue Mar 5 14:29:26 2013 +0000

    liblibo: create XComponent for doc
    
    Change-Id: Ie07ac4a3e89a9a82a107612b81be18d3826c49e1

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 0628b7f..de5788d 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -13,11 +13,14 @@
 
 #include <tools/errinf.hxx>
 #include <osl/file.hxx>
+#include <osl/process.h>
 #include <rtl/strbuf.hxx>
 #include <rtl/bootstrap.hxx>
 #include <cppuhelper/bootstrap.hxx>
 #include <comphelper/processfactory.hxx>
 
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/frame/Desktop.hpp>
 #include <com/sun/star/lang/Locale.hpp>
 #include <com/sun/star/lang/XComponent.hpp>
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
@@ -39,6 +42,19 @@ static uno::Reference<css::lang::XMultiComponentFactory> xFactory;
 LODocument *
 LibLibreOffice_Impl::documentLoad( const char *docUrl )
 {
+    OUString sUrl = OUString::createFromAscii (docUrl);
+    OUString sAbsoluteDocUrl, sWorkingDir, sDocPathUrl;
+
+    uno::Reference < css::frame::XDesktop2 > xComponentLoader =
+            css::frame::Desktop::create(xContext);
+
+    osl_getProcessWorkingDir(&sWorkingDir.pData);
+    osl::FileBase::getFileURLFromSystemPath(sUrl, sDocPathUrl);
+    osl::FileBase::getAbsoluteFileURL(sWorkingDir, sDocPathUrl, sAbsoluteDocUrl);
+
+    uno::Reference < css::lang::XComponent > xComponent = xComponentLoader->loadComponentFromURL(
+            sAbsoluteDocUrl, OUString("_blank"), 0,
+            uno::Sequence < css::beans::PropertyValue >());
     return NULL;
 }
 
@@ -133,4 +149,3 @@ LibLibreOffice_Impl::~LibLibreOffice_Impl ()
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-
commit af969873cb01e44aacfa34623ce1f0d51a62c895
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Tue Mar 5 16:40:01 2013 +0000

    liblibo: better init code.
    
    Change-Id: I8757739960cb1c764a5a66bd67d34731e3dfbf31

diff --git a/desktop/inc/liblibreoffice.hxx b/desktop/inc/liblibreoffice.hxx
index 74f6769..48c0a24 100644
--- a/desktop/inc/liblibreoffice.hxx
+++ b/desktop/inc/liblibreoffice.hxx
@@ -10,16 +10,15 @@
 #ifndef _LIBLIBREOFFICE_HXX
 #define _LIBLIBREOFFICE_HXX
 
-typedef int loboolean;
 typedef struct _LODocument LODocument;
 
 class LibLibreOffice
 {
 public:
-    virtual loboolean initialize (const char *installPath) = 0;
+    virtual bool initialize (const char *installPath) = 0;
 
     virtual LODocument *documentLoad (const char *url) = 0;
-    virtual loboolean   documentSave (const char *url) = 0;
+    virtual bool   documentSave (const char *url) = 0;
 
     virtual ~LibLibreOffice () {};
 };
diff --git a/desktop/inc/liblibreoffice_impl.hxx b/desktop/inc/liblibreoffice_impl.hxx
index d7686eb..3f7783e 100644
--- a/desktop/inc/liblibreoffice_impl.hxx
+++ b/desktop/inc/liblibreoffice_impl.hxx
@@ -12,16 +12,13 @@
 
 #include "liblibreoffice.hxx"
 
-typedef int loboolean;
-typedef struct _LODocument LODocument;
-
 class LibLibreOffice_Impl : public LibLibreOffice
 {
 public:
-    virtual loboolean initialize (const char *installPath);
+    virtual bool        initialize (const char *installPath);
 
     virtual LODocument *documentLoad (const char *url);
-    virtual loboolean   documentSave (const char *url);
+    virtual bool        documentSave (const char *url);
 
     virtual ~LibLibreOffice_Impl ();
 };
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 4b47ac6..0628b7f 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -1,4 +1,4 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 /*
  * This file is part of the LibreOffice project.
  *
@@ -42,7 +42,7 @@ LibLibreOffice_Impl::documentLoad( const char *docUrl )
     return NULL;
 }
 
-loboolean
+bool
 LibLibreOffice_Impl::documentSave( const char * )
 {
     return 1;
@@ -73,16 +73,18 @@ aBasicErrorFunc( const OUString &rErr, const OUString &rAction )
 static void
 initialize_uno( const rtl::OUString &aUserProfileURL )
 {
+    xContext = cppu::defaultBootstrap_InitialComponentContext();
+    fprintf( stderr, "Uno initialized %d\n", xContext.is() );
+    xFactory = xContext->getServiceManager();
+    xSFactory = uno::Reference<lang::XMultiServiceFactory>(xFactory, uno::UNO_QUERY_THROW);
+    comphelper::setProcessServiceFactory(xSFactory);
+
     // set UserInstallation to user profile dir in test/user-template
     rtl::Bootstrap aDefaultVars;
     aDefaultVars.set(rtl::OUString("UserInstallation"), aUserProfileURL );
-
-    xContext = comphelper::getProcessComponentContext();
-    xFactory = xContext->getServiceManager();
-    xSFactory = uno::Reference<lang::XMultiServiceFactory>(xFactory, uno::UNO_QUERY_THROW);
 }
 
-loboolean
+bool
 LibLibreOffice_Impl::initialize( const char *app_path )
 {
     static bool bInitialized = false;
@@ -122,6 +124,7 @@ extern "C" {
 
 LibLibreOffice *liblibreoffice_hook(void)
 {
+    fprintf( stderr, "create libreoffice object\n" );
     return new LibLibreOffice_Impl();
 }
 
diff --git a/desktop/source/lib/shim.cxx b/desktop/source/lib/shim.cxx
index 4c8e61d..546d0da 100644
--- a/desktop/source/lib/shim.cxx
+++ b/desktop/source/lib/shim.cxx
@@ -41,13 +41,14 @@ SAL_DLLPUBLIC_EXPORT LibLibreOffice *lo_init( const char *install_path )
         fprintf( stderr, "failed to open library '%s'\n", imp_lib );
         return NULL;
     }
-    free( imp_lib );
 
     HookFunction *pSym = (HookFunction *) dlsym( dlhandle, "liblibreoffice_hook" );
     if( !pSym ) {
         fprintf( stderr, "failed to find hook in library '%s'\n", imp_lib );
         return NULL;
     }
+
+    free( imp_lib );
     return pSym();
 }
 
diff --git a/smoketest/CppunitTest_liblibreoffice.mk b/smoketest/CppunitTest_liblibreoffice.mk
index 2cd3456..8755fe8 100644
--- a/smoketest/CppunitTest_liblibreoffice.mk
+++ b/smoketest/CppunitTest_liblibreoffice.mk
@@ -15,29 +15,16 @@ $(eval $(call gb_CppunitTest_add_exception_objects,liblibreoffice,\
 	smoketest/libtest \
 ))
 
-$(eval $(call gb_CppunitTest_use_external,liblibreoffice,boost_headers))
-
-$(eval $(call gb_CppunitTest_use_api,liblibreoffice,\
-	offapi \
-	udkapi \
-))
-
 $(eval $(call gb_CppunitTest_use_libraries,liblibreoffice,\
-	cppu \
-	cppuhelper \
 	libreoffice \
-	sal \
-	unotest \
 ))
 
 ifeq ($(OS),MACOSX)
-liblibreoffice_SOFFICE_INST := path:$(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS
+liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS
 else
-liblibreoffice_SOFFICE_INST := path:$(DEVINSTALLDIR)/opt/program
+liblibreoffice_SOFFICE_INST := $(DEVINSTALLDIR)/opt/program
 endif
 
-$(eval $(call gb_CppunitTest_use_ure,liblibreoffice))
-
 $(eval $(call gb_CppunitTest_add_arguments,liblibreoffice,\
 	-env:arg-soffice=$(liblibreoffice_SOFFICE_INST) \
 ))
diff --git a/smoketest/libtest.cxx b/smoketest/libtest.cxx
index 36c3a0c..cc71d08 100644
--- a/smoketest/libtest.cxx
+++ b/smoketest/libtest.cxx
@@ -46,7 +46,11 @@ void Test::test()
     rtl::Bootstrap::get( rtl::OUString( "arg-soffice" ), aArgSoffice );
     OString aInstall = OUStringToOString( aArgSoffice, RTL_TEXTENCODING_UTF8 );
     fprintf( stderr, "liblibreoffice test: '%s'\n", aInstall.getStr() );
-    assert (lo_init( aInstall.getStr() ));
+    LibLibreOffice *pOffice = lo_init( aInstall.getStr() );
+    CPPUNIT_ASSERT( pOffice != NULL );
+
+    bool bInited = pOffice->initialize( aInstall.getStr() );
+    CPPUNIT_ASSERT( bInited );
 }
 
 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
commit 07352f07ce40ef40e9b73fd05aa4f9c5eac38290
Author: Jack Leigh <leighman at gmx.se>
Date:   Tue Mar 5 16:19:58 2013 +0000

    liblibo: move to C++ interface.
    
    Change-Id: Ie14a9446abd9524604feddf811d5373a26a30cbd

diff --git a/desktop/Library_libreoffice.mk b/desktop/Library_libreoffice.mk
index a40bbd7..96b18a1 100644
--- a/desktop/Library_libreoffice.mk
+++ b/desktop/Library_libreoffice.mk
@@ -14,6 +14,12 @@ $(eval $(call gb_Library_set_include,libreoffice,\
     -I$(SRCDIR)/desktop/inc \
 ))
 
+$(eval $(call gb_Library_add_libs,libreoffice,\
+	$(if $(filter $(OS),LINUX), \
+		-ldl \
+	) \
+))
+
 $(eval $(call gb_Library_use_libraries,libreoffice,\
 	$(gb_UWINAPI) \
 ))
diff --git a/desktop/inc/liblibreoffice.h b/desktop/inc/liblibreoffice.h
deleted file mode 100644
index dde50ce..0000000
--- a/desktop/inc/liblibreoffice.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-/*
- * A simple C API to setup and use libreoffice
- */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-  int   errno;
-  char *message;
-} LOError;
-
-typedef int loboolean;
-typedef struct _LODocument LODocument;
-
-loboolean lo_initialize (const char *install_path);
-
-void     lo_error_free (LOError *error);
-LOError *lo_error_new (int errno, const char *message);
-
-LODocument *lo_document_load (const char *url, LOError **opt_error);
-loboolean   lo_document_save (const char *url, LOError **opt_error);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-
diff --git a/desktop/inc/liblibreoffice.hxx b/desktop/inc/liblibreoffice.hxx
new file mode 100644
index 0000000..74f6769
--- /dev/null
+++ b/desktop/inc/liblibreoffice.hxx
@@ -0,0 +1,30 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef _LIBLIBREOFFICE_HXX
+#define _LIBLIBREOFFICE_HXX
+
+typedef int loboolean;
+typedef struct _LODocument LODocument;
+
+class LibLibreOffice
+{
+public:
+    virtual loboolean initialize (const char *installPath) = 0;
+
+    virtual LODocument *documentLoad (const char *url) = 0;
+    virtual loboolean   documentSave (const char *url) = 0;
+
+    virtual ~LibLibreOffice () {};
+};
+
+LibLibreOffice *lo_init (const char *install_path);
+
+#endif
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/inc/liblibreoffice_impl.hxx b/desktop/inc/liblibreoffice_impl.hxx
new file mode 100644
index 0000000..d7686eb
--- /dev/null
+++ b/desktop/inc/liblibreoffice_impl.hxx
@@ -0,0 +1,30 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef _LIBLIBREOFFICE_IMPL_HXX
+#define _LIBLIBREOFFICE_IMPL_HXX
+
+#include "liblibreoffice.hxx"
+
+typedef int loboolean;
+typedef struct _LODocument LODocument;
+
+class LibLibreOffice_Impl : public LibLibreOffice
+{
+public:
+    virtual loboolean initialize (const char *installPath);
+
+    virtual LODocument *documentLoad (const char *url);
+    virtual loboolean   documentSave (const char *url);
+
+    virtual ~LibLibreOffice_Impl ();
+};
+
+#endif
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 5aab66b..4b47ac6 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -7,9 +7,10 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
+#include <liblibreoffice_impl.hxx>
+
 #include <stdio.h>
 
-#include <liblibreoffice.h>
 #include <tools/errinf.hxx>
 #include <osl/file.hxx>
 #include <rtl/strbuf.hxx>
@@ -35,25 +36,14 @@ static uno::Reference<css::uno::XComponentContext> xContext;
 static uno::Reference<css::lang::XMultiServiceFactory> xSFactory;
 static uno::Reference<css::lang::XMultiComponentFactory> xFactory;
 
-SAL_DLLPUBLIC_EXPORT void
-lo_error_free( LOError * )
-{
-}
-
-SAL_DLLPUBLIC_EXPORT LOError *
-lo_error_new( int, const char * )
+LODocument *
+LibLibreOffice_Impl::documentLoad( const char *docUrl )
 {
     return NULL;
 }
 
-SAL_DLLPUBLIC_EXPORT LODocument *
-lo_document_load( const char *, LOError ** )
-{
-    return NULL;
-}
-
-SAL_DLLPUBLIC_EXPORT loboolean
-lo_document_save( const char *, LOError ** )
+loboolean
+LibLibreOffice_Impl::documentSave( const char * )
 {
     return 1;
 }
@@ -92,8 +82,8 @@ initialize_uno( const rtl::OUString &aUserProfileURL )
     xSFactory = uno::Reference<lang::XMultiServiceFactory>(xFactory, uno::UNO_QUERY_THROW);
 }
 
-SAL_DLLPUBLIC_EXPORT loboolean
-lo_initialize( const char *app_path )
+loboolean
+LibLibreOffice_Impl::initialize( const char *app_path )
 {
     static bool bInitialized = false;
     if( bInitialized )
@@ -132,7 +122,11 @@ extern "C" {
 
 LibLibreOffice *liblibreoffice_hook(void)
 {
-    return new LibLibreOffice();
+    return new LibLibreOffice_Impl();
+}
+
+LibLibreOffice_Impl::~LibLibreOffice_Impl ()
+{
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/lib/shim.cxx b/desktop/source/lib/shim.cxx
index c57803e..4c8e61d 100644
--- a/desktop/source/lib/shim.cxx
+++ b/desktop/source/lib/shim.cxx
@@ -9,8 +9,12 @@
 
 #ifdef LINUX
 
+#include <stdio.h>
+#include <string.h>
+
+#include <osl/module.h>
 #include <sal/types.h>
-#include <liblibreoffice.h>
+#include <liblibreoffice.hxx>
 
 #include <dlfcn.h>
 #ifdef AIX
@@ -23,11 +27,11 @@ extern "C" {
     typedef LibLibreOffice *(HookFunction)(void);
 };
 
-extern LibLibreOffice *lo_init( const char *install_path )
+SAL_DLLPUBLIC_EXPORT LibLibreOffice *lo_init( const char *install_path )
 {
     if( !install_path )
         return NULL;
-    char *impl_lib = malloc( strlen (install_path) + sizeof( TARGET_LIB ) + 2 );
+    char *imp_lib = (char *) malloc( strlen (install_path) + sizeof( TARGET_LIB ) + 2 );
     strcpy( imp_lib, install_path );
     strcat( imp_lib, "/" );
     strcat( imp_lib, TARGET_LIB );
@@ -39,7 +43,7 @@ extern LibLibreOffice *lo_init( const char *install_path )
     }
     free( imp_lib );
 
-    HookFunction *pSym = dlsym( dlhandle, "liblibreoffice_hook" );
+    HookFunction *pSym = (HookFunction *) dlsym( dlhandle, "liblibreoffice_hook" );
     if( !pSym ) {
         fprintf( stderr, "failed to find hook in library '%s'\n", imp_lib );
         return NULL;
diff --git a/smoketest/libtest.cxx b/smoketest/libtest.cxx
index 39ab01b..36c3a0c 100644
--- a/smoketest/libtest.cxx
+++ b/smoketest/libtest.cxx
@@ -8,7 +8,9 @@
  */
 
 // yuck / FIXME ...
-#include "../desktop/inc/liblibreoffice.h"
+#include "../desktop/inc/liblibreoffice.hxx"
+
+#include <assert.h>
 
 #include <sal/types.h>
 #include <rtl/ustring.hxx>
@@ -44,7 +46,7 @@ void Test::test()
     rtl::Bootstrap::get( rtl::OUString( "arg-soffice" ), aArgSoffice );
     OString aInstall = OUStringToOString( aArgSoffice, RTL_TEXTENCODING_UTF8 );
     fprintf( stderr, "liblibreoffice test: '%s'\n", aInstall.getStr() );
-    lo_initialize( aInstall.getStr() );
+    assert (lo_init( aInstall.getStr() ));
 }
 
 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
commit 8887de72c184bec6225a952ec90433ae1b7a5b26
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Tue Mar 5 13:16:36 2013 +0000

    liblibo: create initial liblibreoffice.
    
    bootstrap libreoffice, start a dummy test-harness: can't use CppUnit
    or link to any URE / LibreOffice libraries.
    Change-Id: I855b640557f93959749e966a2d8e5e577fd84574

diff --git a/Repository.mk b/Repository.mk
index a7b1706..e3ea69b 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -472,6 +472,7 @@ $(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \
     hsqldb \
     index_data \
     java_uno_accessbridge \
+    libreoffice \
     localedata_en \
     localedata_es \
     localedata_euro \
diff --git a/desktop/Library_libreoffice.mk b/desktop/Library_libreoffice.mk
new file mode 100644
index 0000000..a40bbd7
--- /dev/null
+++ b/desktop/Library_libreoffice.mk
@@ -0,0 +1,25 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_Library_Library,libreoffice))
+
+$(eval $(call gb_Library_set_include,libreoffice,\
+    $$(INCLUDE) \
+    -I$(SRCDIR)/desktop/inc \
+))
+
+$(eval $(call gb_Library_use_libraries,libreoffice,\
+	$(gb_UWINAPI) \
+))
+
+$(eval $(call gb_Library_add_exception_objects,libreoffice,\
+    desktop/source/lib/shim \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/desktop/Library_sofficeapp.mk b/desktop/Library_sofficeapp.mk
index 2a635b5..5ae66d2 100644
--- a/desktop/Library_sofficeapp.mk
+++ b/desktop/Library_sofficeapp.mk
@@ -90,6 +90,11 @@ $(eval $(call gb_Library_add_exception_objects,sofficeapp,\
     desktop/source/migration/migration \
 ))
 
+# liblibreoffice bits
+$(eval $(call gb_Library_add_exception_objects,sofficeapp,\
+	desktop/source/lib/init \
+))
+
 ifeq ($(ENABLE_TELEPATHY),TRUE)
 $(eval $(call gb_Library_use_libraries,sofficeapp,tubes))
 endif
diff --git a/desktop/Module_desktop.mk b/desktop/Module_desktop.mk
index 538553a..d97bff3 100644
--- a/desktop/Module_desktop.mk
+++ b/desktop/Module_desktop.mk
@@ -33,6 +33,7 @@ $(eval $(call gb_Module_add_targets,desktop,\
     AllLangResTarget_dkt \
     Library_deployment \
     Library_deploymentmisc \
+	Library_libreoffice \
     Library_offacc \
     Library_sofficeapp \
     Library_spl \
diff --git a/desktop/inc/liblibreoffice.h b/desktop/inc/liblibreoffice.h
new file mode 100644
index 0000000..dde50ce
--- /dev/null
+++ b/desktop/inc/liblibreoffice.h
@@ -0,0 +1,38 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+/*
+ * A simple C API to setup and use libreoffice
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct {
+  int   errno;
+  char *message;
+} LOError;
+
+typedef int loboolean;
+typedef struct _LODocument LODocument;
+
+loboolean lo_initialize (const char *install_path);
+
+void     lo_error_free (LOError *error);
+LOError *lo_error_new (int errno, const char *message);
+
+LODocument *lo_document_load (const char *url, LOError **opt_error);
+loboolean   lo_document_save (const char *url, LOError **opt_error);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
+
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
new file mode 100644
index 0000000..5aab66b
--- /dev/null
+++ b/desktop/source/lib/init.cxx
@@ -0,0 +1,139 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <stdio.h>
+
+#include <liblibreoffice.h>
+#include <tools/errinf.hxx>
+#include <osl/file.hxx>
+#include <rtl/strbuf.hxx>
+#include <rtl/bootstrap.hxx>
+#include <cppuhelper/bootstrap.hxx>
+#include <comphelper/processfactory.hxx>
+
+#include <com/sun/star/lang/Locale.hpp>
+#include <com/sun/star/lang/XComponent.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/ucb/XContentProvider.hpp>
+#include <com/sun/star/ucb/XUniversalContentBroker.hpp>
+
+#include <vcl/svapp.hxx>
+#include <tools/resmgr.hxx>
+#include <vcl/graphicfilter.hxx>
+#include <unotools/syslocaleoptions.hxx>
+
+using namespace ::com::sun::star;
+
+// Wonder global state ...
+static uno::Reference<css::uno::XComponentContext> xContext;
+static uno::Reference<css::lang::XMultiServiceFactory> xSFactory;
+static uno::Reference<css::lang::XMultiComponentFactory> xFactory;
+
+SAL_DLLPUBLIC_EXPORT void
+lo_error_free( LOError * )
+{
+}
+
+SAL_DLLPUBLIC_EXPORT LOError *
+lo_error_new( int, const char * )
+{
+    return NULL;
+}
+
+SAL_DLLPUBLIC_EXPORT LODocument *
+lo_document_load( const char *, LOError ** )
+{
+    return NULL;
+}
+
+SAL_DLLPUBLIC_EXPORT loboolean
+lo_document_save( const char *, LOError ** )
+{
+    return 1;
+}
+
+static void
+force_c_locale( void )
+{
+    // force locale (and resource files loaded) to en-US
+    css::lang::Locale aLocale( "en", "US", "");
+    ResMgr::SetDefaultLocale( aLocale );
+    SvtSysLocaleOptions aLocalOptions;
+    OUString aLangISO( "en-US" );
+    aLocalOptions.SetLocaleConfigString( aLangISO );
+    aLocalOptions.SetUILocaleConfigString( aLangISO );
+}
+
+static void
+aBasicErrorFunc( const OUString &rErr, const OUString &rAction )
+{
+    OStringBuffer aErr( "Unexpected dialog: " );
+    aErr.append( OUStringToOString( rAction, RTL_TEXTENCODING_ASCII_US ) );
+    aErr.append( " Error: " );
+    aErr.append( OUStringToOString( rErr, RTL_TEXTENCODING_ASCII_US ) );
+    fprintf( stderr, "Unexpected basic error dialog '%s'\n", aErr.getStr() );
+}
+
+static void
+initialize_uno( const rtl::OUString &aUserProfileURL )
+{
+    // set UserInstallation to user profile dir in test/user-template
+    rtl::Bootstrap aDefaultVars;
+    aDefaultVars.set(rtl::OUString("UserInstallation"), aUserProfileURL );
+
+    xContext = comphelper::getProcessComponentContext();
+    xFactory = xContext->getServiceManager();
+    xSFactory = uno::Reference<lang::XMultiServiceFactory>(xFactory, uno::UNO_QUERY_THROW);
+}
+
+SAL_DLLPUBLIC_EXPORT loboolean
+lo_initialize( const char *app_path )
+{
+    static bool bInitialized = false;
+    if( bInitialized )
+        return true;
+
+    if( !app_path )
+        return false;
+
+    OUString aAppPath( app_path, strlen( app_path ), RTL_TEXTENCODING_UTF8 );
+    OUString aAppURL;
+    if( osl::FileBase::getFileURLFromSystemPath( aAppPath, aAppURL ) !=
+        osl::FileBase::E_None )
+        return false;
+
+    try {
+        initialize_uno( aAppURL + "../registry" );
+        force_c_locale();
+        InitVCL();
+        if (Application::IsHeadlessModeRequested())
+            Application::EnableHeadlessMode(true);
+
+        ErrorHandler::RegisterDisplay( aBasicErrorFunc );
+
+        fprintf (stderr, "do nothing yet");
+        bInitialized = true;
+    } catch (css::uno::Exception & e) {
+        fprintf( stderr, "bootstrapping exception '%s'\n",
+                 OUStringToOString( e.Message, RTL_TEXTENCODING_UTF8 ).getStr() );
+    }
+    return bInitialized;
+}
+
+extern "C" {
+    SAL_DLLPUBLIC_EXPORT LibLibreOffice *liblibreoffice_hook(void);
+}
+
+LibLibreOffice *liblibreoffice_hook(void)
+{
+    return new LibLibreOffice();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
+
diff --git a/desktop/source/lib/shim.cxx b/desktop/source/lib/shim.cxx
new file mode 100644
index 0000000..c57803e
--- /dev/null
+++ b/desktop/source/lib/shim.cxx
@@ -0,0 +1,52 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifdef LINUX
+
+#include <sal/types.h>
+#include <liblibreoffice.h>
+
+#include <dlfcn.h>
+#ifdef AIX
+#  include <sys/ldr.h>
+#endif
+
+#define TARGET_LIB SAL_MODULENAME( "sofficeapp" )
+
+extern "C" {
+    typedef LibLibreOffice *(HookFunction)(void);
+};
+
+extern LibLibreOffice *lo_init( const char *install_path )
+{
+    if( !install_path )
+        return NULL;
+    char *impl_lib = malloc( strlen (install_path) + sizeof( TARGET_LIB ) + 2 );
+    strcpy( imp_lib, install_path );
+    strcat( imp_lib, "/" );
+    strcat( imp_lib, TARGET_LIB );
+    void *dlhandle = dlopen( imp_lib, RTLD_LAZY );
+    if( !dlhandle )
+    {
+        fprintf( stderr, "failed to open library '%s'\n", imp_lib );
+        return NULL;
+    }
+    free( imp_lib );
+
+    HookFunction *pSym = dlsym( dlhandle, "liblibreoffice_hook" );
+    if( !pSym ) {
+        fprintf( stderr, "failed to find hook in library '%s'\n", imp_lib );
+        return NULL;
+    }
+    return pSym();
+}
+
+#endif // LINUX - port me !
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/smoketest/CppunitTest_liblibreoffice.mk b/smoketest/CppunitTest_liblibreoffice.mk
new file mode 100644
index 0000000..2cd3456
--- /dev/null
+++ b/smoketest/CppunitTest_liblibreoffice.mk
@@ -0,0 +1,45 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_CppunitTest_CppunitTest,liblibreoffice))
+
+$(eval $(call gb_CppunitTest_abort_on_assertion,liblibreoffice))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,liblibreoffice,\
+	smoketest/libtest \
+))
+
+$(eval $(call gb_CppunitTest_use_external,liblibreoffice,boost_headers))
+
+$(eval $(call gb_CppunitTest_use_api,liblibreoffice,\
+	offapi \
+	udkapi \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,liblibreoffice,\
+	cppu \
+	cppuhelper \
+	libreoffice \
+	sal \
+	unotest \
+))
+
+ifeq ($(OS),MACOSX)
+liblibreoffice_SOFFICE_INST := path:$(DEVINSTALLDIR)/opt/LibreOffice.app/Contents/MacOS
+else
+liblibreoffice_SOFFICE_INST := path:$(DEVINSTALLDIR)/opt/program
+endif
+
+$(eval $(call gb_CppunitTest_use_ure,liblibreoffice))
+
+$(eval $(call gb_CppunitTest_add_arguments,liblibreoffice,\
+	-env:arg-soffice=$(liblibreoffice_SOFFICE_INST) \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/smoketest/Module_smoketest.mk b/smoketest/Module_smoketest.mk
index 9de8a44..9a2aa72 100644
--- a/smoketest/Module_smoketest.mk
+++ b/smoketest/Module_smoketest.mk
@@ -42,6 +42,10 @@ $(eval $(call gb_Module_add_targets,smoketest,\
 ))
 endif
 
+$(eval $(call gb_Module_add_check_targets,smoketest,\
+	CppunitTest_liblibreoffice \
+))
+
 $(eval $(call gb_Module_add_subsequentcheck_targets,smoketest,\
 	CppunitTest_smoketest \
 ))
diff --git a/smoketest/libtest.cxx b/smoketest/libtest.cxx
new file mode 100644
index 0000000..39ab01b
--- /dev/null
+++ b/smoketest/libtest.cxx
@@ -0,0 +1,54 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+// yuck / FIXME ...
+#include "../desktop/inc/liblibreoffice.h"
+
+#include <sal/types.h>
+#include <rtl/ustring.hxx>
+#include <rtl/bootstrap.hxx>
+#include "cppunit/TestAssert.h"
+#include "cppunit/TestFixture.h"
+#include "cppunit/extensions/HelperMacros.h"
+#include "cppunit/plugin/TestPlugIn.h"
+
+class Test: public CppUnit::TestFixture {
+public:
+    virtual void setUp();
+    virtual void tearDown();
+
+private:
+    CPPUNIT_TEST_SUITE(Test);
+    CPPUNIT_TEST(test);
+    CPPUNIT_TEST_SUITE_END();
+
+    void test();
+};
+
+void Test::setUp()
+{
+}
+void Test::tearDown()
+{
+}
+
+void Test::test()
+{
+    rtl::OUString aArgSoffice;
+    rtl::Bootstrap::get( rtl::OUString( "arg-soffice" ), aArgSoffice );
+    OString aInstall = OUStringToOString( aArgSoffice, RTL_TEXTENCODING_UTF8 );
+    fprintf( stderr, "liblibreoffice test: '%s'\n", aInstall.getStr() );
+    lo_initialize( aInstall.getStr() );
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(Test);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 6ea685090806a2a2f39b8d5ec6a749eaf9b1856e
Author: Lionel Elie Mamane <lionel at mamane.lu>
Date:   Tue Mar 12 16:26:15 2013 +0100

    janitorial: readability
    
    Change-Id: Iaab09826d79b0fbcd3104d33d1f159767a09921a

diff --git a/connectivity/source/commontools/AutoRetrievingBase.cxx b/connectivity/source/commontools/AutoRetrievingBase.cxx
index 6e39c85..c3a1366 100644
--- a/connectivity/source/commontools/AutoRetrievingBase.cxx
+++ b/connectivity/source/commontools/AutoRetrievingBase.cxx
@@ -23,9 +23,8 @@ namespace connectivity
 {
     ::rtl::OUString OAutoRetrievingBase::getTransformedGeneratedStatement(const ::rtl::OUString& _sInsertStatement) const
     {
-        ::rtl::OUString sStmt = _sInsertStatement;
         OSL_ENSURE( m_bAutoRetrievingEnabled,"Illegal call here. isAutoRetrievingEnabled is false!");

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list