summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobody <nobody@gnome.org>2006-06-01 15:12:32 +0000
committernobody <nobody@gnome.org>2006-06-01 15:12:32 +0000
commit29d71d6c36ee88acb5188e4bba74bc6f0ef7e336 (patch)
tree5e652e4287ecb407db4bb4e575e1773b42f51fcc
parentb3c82fb1afa5f919a04e62c282879afa231b2abf (diff)
This commit was manufactured by cvs2svn to create tagOOO_BUILD_2_0_2_12
'OOO_BUILD_2_0_2_12'.
-rw-r--r--AUTHORS2
-rwxr-xr-xbin/help-font-munge50
-rwxr-xr-xbin/package-ooo185
-rwxr-xr-xbin/patch-remove22
-rw-r--r--bin/potores88
-rwxr-xr-xbin/setup.in7
-rwxr-xr-xbin/stat-localizations92
-rwxr-xr-xbin/test-ooo5
-rw-r--r--configure.in30
-rw-r--r--desktop/calc.desktop.in1
-rw-r--r--desktop/web.desktop.in2
-rw-r--r--distro-configs/Frugalware.conf.in10
-rw-r--r--distro-configs/Gentoo.conf.in1
-rw-r--r--distro-configs/SUSE-10.1.conf.in19
-rw-r--r--distro-configs/SUSE-9.1.conf.in1
-rw-r--r--doc/local.txt8
-rwxr-xr-xdownload.in3
-rw-r--r--man/openoffice.1_SUSE.in25
-rw-r--r--patches/cairo/cairo-canvas-clip-more.diff24
-rw-r--r--patches/cairo/cairo-query-text-bounds.diff210
-rw-r--r--patches/evo2/dbaccess-evo-changes.diff29
-rw-r--r--patches/src680/automation-testtool-oobuildfix.diff29
-rw-r--r--patches/src680/buildfix-no-java-ppc.diff11
-rw-r--r--patches/src680/buildfix-testtool-skip-gij-ppc-hack.diff9
-rw-r--r--patches/src680/buildfix-tg-config-gij-ppc-hack.diff81
-rw-r--r--patches/src680/config_office-dbus-check.diff11
-rw-r--r--patches/src680/crash-menu-escape.diff13
-rw-r--r--patches/src680/cws-ab19.diff411
-rw-r--r--patches/src680/cws-atkbridge-20060425.diff (renamed from patches/src680/cws-atkbridge-20060306.diff)623
-rw-r--r--patches/src680/cws-jl34.diff838
-rw-r--r--patches/src680/dbase-utf8.diff98
-rw-r--r--patches/src680/disable-access.diff2
-rw-r--r--patches/src680/fix-fileview-search.diff20
-rw-r--r--patches/src680/fix_filedlghelper.diff31
-rw-r--r--patches/src680/framework-nofocussteal.diff1115
-rw-r--r--patches/src680/gui-gtk-contextmenu.diff16
-rw-r--r--patches/src680/hang-sw-layout.diff32
-rw-r--r--patches/src680/help-msg-add-package-info.diff (renamed from patches/src680/ubuntu-no-help-msg.diff)0
-rw-r--r--patches/src680/ms-interoperability-email-attachment-as-doc-xls-ppt-m99.diff42
-rw-r--r--patches/src680/office-cfg-vcl-greek-fonts.diff272
-rw-r--r--patches/src680/ooqstart-black-progress-bar.diff27
-rw-r--r--patches/src680/sc-csvfix-ui.diff10
-rw-r--r--patches/src680/sc-datapilot-autoformat.diff11
-rw-r--r--patches/src680/sc-datapilot-dynamic-range.diff17
-rw-r--r--patches/src680/sc-dp-hash-items.diff950
-rw-r--r--patches/src680/sc-get-pivot-data.diff65
-rw-r--r--patches/src680/sc-info-func.diff37
-rw-r--r--patches/src680/sc-paste-dialog.diff47
-rw-r--r--patches/src680/sc-r1c1.diff52
-rw-r--r--patches/src680/sc-source-ui-unobj-funcuno-cxx.diff15
-rw-r--r--patches/src680/sc-standard-filter-options-i18n.diff50
-rw-r--r--patches/src680/sc-standard-filter-options.diff2
-rw-r--r--patches/src680/sc-string-arg.diff19
-rw-r--r--patches/src680/sc-xl-errors.diff12
-rw-r--r--patches/src680/sd-toolbar-advanced-shapes.diff28
-rw-r--r--patches/src680/sdk-filenames-with-dollar.diff15
-rw-r--r--patches/src680/sfx2-fallback-to-en-help.diff124
-rw-r--r--patches/src680/sfx2-title-generic-url.diff13
-rw-r--r--patches/src680/speed-local-link-except.diff223
-rw-r--r--patches/src680/speed-ooqstart-options.diff18
-rw-r--r--patches/src680/speed-quickstart-i18n.diff97
-rw-r--r--patches/src680/styles-dash.diff273
-rw-r--r--patches/src680/system-neon-0.26.diff278
-rw-r--r--patches/src680/tools-smb-url.diff60
-rw-r--r--patches/src680/vcl-fontconfig-hints.diff618
-rw-r--r--patches/src680/vcl-glyphs-cjk-embolden.diff229
-rw-r--r--patches/src680/vcl-gnome-screensaver-poke.diff212
-rw-r--r--patches/src680/vcl-metacity-focus.diff51
-rw-r--r--patches/src680/win32-activex-disable.diff278
-rw-r--r--patches/src680/wizard-evo-local.diff11
-rw-r--r--patches/test/ooxml-sc-build.diff38
-rw-r--r--patches/test/sc-source-filter-ecma-parsebase-hxx.diff50
-rw-r--r--scratch/sc-vba/makefile.mk2
-rw-r--r--scratch/sc-vba/vbaapplication.hxx10
-rw-r--r--scratch/sc-vba/vbacharacters.cxx5
-rw-r--r--scratch/sc-vba/vbacharacters.hxx5
-rw-r--r--scratch/sc-vba/vbachartobjects.cxx4
-rw-r--r--scratch/sc-vba/vbacollectionimpl.hxx8
-rw-r--r--scratch/sc-vba/vbacomments.cxx2
-rw-r--r--scratch/sc-vba/vbafont.cxx251
-rw-r--r--scratch/sc-vba/vbaglobals.cxx13
-rw-r--r--scratch/sc-vba/vbahelper.cxx17
-rw-r--r--scratch/sc-vba/vbainterior.cxx67
-rw-r--r--scratch/sc-vba/vbapalette.cxx72
-rw-r--r--scratch/sc-vba/vbapalette.hxx20
-rw-r--r--scratch/sc-vba/vbaworkbook.cxx21
-rw-r--r--scratch/sc-vba/vbaworksheet.hxx8
-rw-r--r--scratch/sc-vba/vbaworksheets.cxx4
-rw-r--r--src/Novell.dic5
89 files changed, 7269 insertions, 1643 deletions
diff --git a/AUTHORS b/AUTHORS
index 5d2fed48b..fb1ff1d5a 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,4 +1,4 @@
-Michael Meeks <michael@ximian.com>
+Michael Meeks <michael.meeks@novell.com>
Chris Halls <halls@debian.org>
Federico Mena <federico@ximian.com>
Martin Kretzschmar <martink@ximian.com>
diff --git a/bin/help-font-munge b/bin/help-font-munge
index e688d1aa8..96da61323 100755
--- a/bin/help-font-munge
+++ b/bin/help-font-munge
@@ -5,25 +5,6 @@ BEGIN { $ENV{OOO_VENDOR} ||= "unknown"; $helpsans = 0; $helpfixed = 0; }
# This does a partial substitution of the really
# mechanical bits of our fonts in help content.
- # add URW fonts
- s/Arial,/Arial,\"Nimbus Sans L\",/g;
- s/\"Courier New\",/\"Courier New\",\"Nimbus Mono L\",/g;
- s/\"Times New Roman\",/\"Times New Roman\",\"Nimbus Roman No9 L\",/g;
-
- # make sure Albany, Cumberland, and Thorndale are there
- s/Arial,/Albany,Arial,/g;
- s/\"Courier New\",/Cumberland,\"Courier New\",/g;
- s/\"Times New Roman\",/Thorndale,\"Times New Roman\",/g;
-
- # make sure that Albany and Arial are preferred over Helvetica
- s/(Helvetica\,.*)Albany\,/Albany\,$1/;
- s/(Helvetica\,.*)Arial\,/Arial\,$1/;
-
- # add AMT fonts
- s/Albany,/\"Albany AMT\",Albany,/g;
- s/Cumberland,/\"Cumberland AMT\",Cumberland,/g;
- s/Thorndale,/\"Thorndale AMT\",Thorndale,/g;
-
# move Bitstream Vera fonts after better fonts
s/\"Bitstream Vera Sans\"\,(.*Albany\,)/$1\"Bitstream Vera Sans\"\,/;
s/\"Bitstream Vera Sans\"\,(.*\"Albany AMT\"\,)/$1\"Bitstream Vera Sans\"\,/;
@@ -40,6 +21,21 @@ BEGIN { $ENV{OOO_VENDOR} ||= "unknown"; $helpsans = 0; $helpfixed = 0; }
s/\"Bitstream Vera Serif\"\,(.*\"Times New Roman\"\,)/$1\"Bitstream Vera Serif\"\,/;
s/\"Bitstream Vera Serif\"\,(.*\"Nimbus Roman No9 L\"\,)/$1\"Bitstream Vera Serif\"\,/;
+ # make sure Albany, Cumberland, and Thorndale are there
+ (m/Albany,/) || s/Arial,/Albany,Arial,/g;
+ (m/Cumberland,/) || s/\"Courier New\",/Cumberland,\"Courier New\",/g;
+ (m/Thorndale,/) || s/\"Times New Roman\",/Thorndale,\"Times New Roman\",/g;
+
+ # add AMT fonts
+ (m/\"Albany AMT\",/) || s/Albany,/\"Albany AMT\",Albany,/g;
+ (m/\"Cumberland AMT\",/) || s/Cumberland,/\"Cumberland AMT\",Cumberland,/g;
+ (m/\"Thorndale AMT\",/) || s/Thorndale,/\"Thorndale AMT\",Thorndale,/g;
+
+ # add URW fonts
+ (m/\"Nimbus Sans L\",/) || s/Arial,/Arial,\"Nimbus Sans L\",/g;
+ (m/\"Nimbus Mono L\",/) || s/\"Courier New\",/\"Courier New\",\"Nimbus Mono L\",/g;
+ (m/\"Nimbus Roman No9 L\",/) || s/\"Times New Roman\",/\"Times New Roman\",\"Nimbus Roman No9 L\",/g;
+
# prune duplicates
s/Albany,(.*)Albany,/Albany,$1/;
s/Cumberland,(.*)Cumberland,/Cumberland,$1/;
@@ -53,6 +49,22 @@ BEGIN { $ENV{OOO_VENDOR} ||= "unknown"; $helpsans = 0; $helpfixed = 0; }
s/\"Nimbus Mono L\",(.*)\"Nimbus Mono L\",/\"Nimbus Mono L\",$1/;
s/\"Nimbus Roman No9 L\",(.*)\"Nimbus Roman No9 L\",/\"Nimbus Roman No9 L\",$1/;
+ # sort fonts AMT over Albany... over MS over Nimbus over bitmap
+ s/(Helvetica\,.*)\"Nimbus Sans L\"\,/\"Nimbus Sans L\"\,$1/;
+ s/(\"Nimbus Sans L\"\,.*)Arial\,/Arial\,$1/;
+ s/(Arial\,.*)Albany\,/Albany\,$1/;
+ s/(Albany\,.*)\"Albany AMT\"\,/\"Albany AMT\"\,$1/;
+
+ s/(Times\,.*)\"Nimbus Roman No9 L\"\,/\"Nimbus Roman No9 L\"\,$1/;
+ s/(\"Nimbus Roman No9 L\"\,.*)\"Times New Roman\"\,/\"Times New Roman\"\,$1/;
+ s/(\"Times New Roman\"\,.*)Thorndale\,/Thorndale\,$1/;
+ s/(Thorndale\,.*)\"Thorndale AMT\"\,/\"Thorndale AMT\"\,$1/;
+
+ s/(Courier\,.*)\"Nimbus Mono L\"\,/\"Nimbus Mono L\"\,$1/;
+ s/(\"Nimbus Mono L\"\,.*)\"Courier New\"\,/\"Courier New\"\,$1/;
+ s/(\"Courier New\"\,.*)Cumberland\,/Cumberland\,$1/;
+ s/(Cumberland\,.*)\"Cumberland AMT\"\,/\"Cumberland AMT\"\,$1/;
+
# push SansSerif to the end of the list, some Tamil fonts don't
# have all ISO-8859-1 characters defined
s/sans-serif,(.*);/$1,sans-serif;/;
diff --git a/bin/package-ooo b/bin/package-ooo
index 6fc872b17..aa1c960ac 100755
--- a/bin/package-ooo
+++ b/bin/package-ooo
@@ -90,6 +90,12 @@ else
done
create_qstart_wrapper "$PREFIX/bin/oofromtemplate${BINSUFFIX}" "" "slot:5500" || exit 1;
create_qstart_wrapper "$PREFIX/bin/ooffice${BINSUFFIX}" "" "" || exit 1;
+ if test "z$VENDORNAME" = "zNovell" -o "z$VENDORNAME" = "zPLD" \
+ -o "z$VENDORNAME" = "zDebian"; then
+ for app in calc draw impress math web writer base fromtemplate ffice ; do
+ echo ".so man1/openoffice$BINSUFFIX.1" >| $MANDIR/man1/oo${app}$BINSUFFIX.1;
+ done
+ fi
fi
# no man-page so ...
@@ -112,8 +118,8 @@ if test "z$VENDORNAME" != "zRedHat"; then
echo "Generating man page ...";
man_page_in=$TOOLSDIR/man/openoffice.1.in
# use the distro specific man page if available
- if test -f $TOOLSDIR/man/openoffice.1_$DISTRO.in ; then
- man_page_in=$TOOLSDIR/man/openoffice.1_$DISTRO.in
+ if test -f $TOOLSDIR/man/openoffice.1_${DISTRO%%-*}.in ; then
+ man_page_in=$TOOLSDIR/man/openoffice.1_${DISTRO%%-*}.in
fi
sed -e "s|@BINSUFFIX@|$BINSUFFIX|g" $man_page_in \
>| "$OOBUILDDIR/openoffice$BINSUFFIX.1" || exit 1;
@@ -276,43 +282,148 @@ rm -Rf $OOINSTDIR/share/uno_packages/cache/*
echo "Done";
+remove_help_localization()
+{
+ lang=$1
+
+ # nothing to be done if the localization is en-US if it does not exist
+ # or if it is already removed
+ test "$lang" = "en-US" -o \
+ ! -e $OOINSTDIR/help/$lang -o \
+ -L $OOINSTDIR/help/$lang && return;
+
+ echo "... remove \"$lang\""
+
+ rm -rf $OOINSTDIR/help/$lang
+ grep -v "$OOINSTBASE/help/$lang" $OODESTDIR/gid_Module_Root.$lang >$OODESTDIR/gid_Module_Root.$lang.new
+ mv -f $OODESTDIR/gid_Module_Root.$lang.new $OODESTDIR/gid_Module_Root.$lang
+ grep -v "$OOINSTBASE/help/$lang" $OODESTDIR/gid_Module_Langpack_Help.$lang >$OODESTDIR/gid_Module_Langpack_Help.$lang.new
+ mv -f $OODESTDIR/gid_Module_Langpack_Help.$lang.new $OODESTDIR/gid_Module_Langpack_Help.$lang
+
+ # Note: We created a compat symlink in the past. It is no longer necessary.
+ # We do not want it because RPM has problems with update when we remove
+ # poor localizations in never packages
+}
+
# Check if the English help is installed and is in the main package (is first on the list)
# Note that Java-disabled builds do not create help at all.
if test -f $OOINSTDIR/help/en/sbasic.cfg -a \
"`for lang in $OOO_LANGS_LIST ; do echo $lang ; break ; done`" = "en-US" ; then
+
echo "Removing duplicated English help..."
for lang in $OOO_LANGS_LIST ; do
- test "$lang" = "en-US" && continue || :;
test ! -f $OOINSTDIR/help/en/sbasic.cfg -o ! -f $OOINSTDIR/help/$lang/sbasic.cfg && continue;
if diff $OOINSTDIR/help/en/sbasic.cfg $OOINSTDIR/help/$lang/sbasic.cfg >/dev/null 2>&1 ; then
- echo "... remove \"$lang\""
- rm -rf $OOINSTDIR/help/$lang
- grep -v "$OOINSTBASE/help/$lang" $OODESTDIR/gid_Module_Root.$lang >$OODESTDIR/gid_Module_Root.$lang.new
- mv -f $OODESTDIR/gid_Module_Root.$lang.new $OODESTDIR/gid_Module_Root.$lang
- # FIXME: the following code could be used without the condition
- # and should replace the lines above after only the milestones
- # providing gid_Module_Langpack_Help and fixed gid_Module_Root.$lang
- # are supported
- # Note: The problem with gid_Module_Root.$lang is that it still includes
- # %dir */help/* entries.
- if test -f $OODESTDIR/gid_Module_Langpack_Help.$lang ; then
- grep -v "$OOINSTBASE/help/$lang" $OODESTDIR/gid_Module_Langpack_Help.$lang >$OODESTDIR/gid_Module_Langpack_Help.$lang.new
- mv -f $OODESTDIR/gid_Module_Langpack_Help.$lang.new $OODESTDIR/gid_Module_Langpack_Help.$lang
- fi
- echo "... link \"$lang\" to \"en\""
- ln -sf en $OOINSTDIR/help/$lang
- echo "$OOINSTBASE/help/$lang" >>$OODESTDIR/gid_Module_Root.$lang
- # FIXME: the following code could be used without the condition
- # and should replace the line above after only the milestones
- # providing gid_Module_Langpack_Help are supported
- if test -f $OODESTDIR/gid_Module_Langpack_Help.$lang ; then
- echo "$OOINSTBASE/help/$lang" >>$OODESTDIR/gid_Module_Langpack_Help.$lang
- fi
+ remove_help_localization $lang
fi
done
+
+ echo "Removing poor help localizations..."
+
+ # FIXME: Should be configurable via a configure switch
+ OOO_POOR_HELP_LOCALIZATIONS=
+ if test "$VENDORNAME" = "Novell" ; then
+ # These are the localizations with less than 50% of localized string
+ # The list is generated by bin/stat-localizations
+ # See also doc/stat-localizations.txt
+ OOO_POOR_HELP_LOCALIZATIONS="af be-BY ca cy fi hi-IN lt nb nn st ts xh zu sr-CS vi rw tr el hr mk sk sl bg"
+ fi
+ for lang in $OOO_POOR_HELP_LOCALIZATIONS ; do
+ remove_help_localization $lang
+ done
fi
+if test -d $OOINSTDIR/sdk ; then
+ # bin potential .orig files
+ find $OOINSTDIR/sdk -name "*.orig" -exec rm -f {} \;
+
+ # move some SDK directories to the right place according to FHS
+ # note that examples must stay in $OOINSTDIR/sdk because there are used
+ # relative paths to $OOINSTDIR/sdk/setting and it does not work via
+ # a symlink
+ mkdir -p $PREFIX/include
+ mkdir -p $DATADIR/idl
+ mkdir -p $DATADIR/xml
+ mkdir -p $DATADIR/$OOOINSTALLDIRNAME/sdk
+ mkdir -p $DOCDIR/sdk
+ mv $OOINSTDIR/sdk/include $PREFIX/include/$OOOINSTALLDIRNAME
+ mv $OOINSTDIR/sdk/classes $DATADIR/$OOOINSTALLDIRNAME/sdk/classes
+ mv $OOINSTDIR/sdk/idl $DATADIR/idl/$OOOINSTALLDIRNAME
+ mv $OOINSTDIR/sdk/xml $DATADIR/xml/$OOOINSTALLDIRNAME
+ mv $OOINSTDIR/sdk/docs $DOCDIR/sdk
+ mv $OOINSTDIR/sdk/share/readme $DOCDIR/sdk
+ mv $OOINSTDIR/sdk/LICENSE* $DOCDIR/sdk
+ mv $OOINSTDIR/sdk/README* $DOCDIR/sdk
+ mv $OOINSTDIR/sdk/index.html $DOCDIR/sdk
+
+ # bin empty directories
+ rmdir $OOINSTDIR/sdk/share/
+
+ # compat symlinks
+ ln -sf $PREFIXBASE/include/$OOOINSTALLDIRNAME $OOINSTDIR/sdk/include
+ ln -sf $DATADIRBASE/$OOOINSTALLDIRNAME/sdk/classes $OOINSTDIR/sdk/classes
+ ln -sf $DATADIRBASE/idl/$OOOINSTALLDIRNAME $OOINSTDIR/sdk/idl
+ ln -sf $DATADIRBASE/xml/$OOOINSTALLDIRNAME $OOINSTDIR/sdk/xml
+ ln -sf $DOCDIRBASE/sdk/docs $OOINSTDIR/sdk/
+ ln -sf $DOCDIRBASE/sdk/index.html $OOINSTDIR/sdk/index.html
+ ln -sf $OOINSTBASE/sdk/examples $DOCDIR/sdk/examples
+
+ # fix file list
+ sed -e "s|^\(%dir \)\?$OOINSTBASE/sdk/include|\1$PREFIXBASE/include/$OOOINSTALLDIRNAME|" \
+ -e "s|^\(%dir \)\?$OOINSTBASE/sdk/classes|\1$DATADIRBASE/$OOOINSTALLDIRNAME/sdk/classes|" \
+ -e "s|^\(%dir \)\?$OOINSTBASE/sdk/idl|\1$DATADIRBASE/idl/$OOOINSTALLDIRNAME|" \
+ -e "s|^\(%dir \)\?$OOINSTBASE/sdk/xml|\1$DATADIRBASE/xml/$OOOINSTALLDIRNAME|" \
+ -e "s|^\(%dir \)\?$OOINSTBASE/sdk/docs|\1$DOCDIRBASE/sdk/docs|" \
+ -e "s|^\(%dir \)\?$OOINSTBASE/sdk/share/readme|\1$DOCDIRBASE/sdk/readme|" \
+ -e "s|^$OOINSTBASE/sdk/LICENSE\(.*\)$|$DOCDIRBASE/sdk/LICENSE\1|" \
+ -e "s|^$OOINSTBASE/sdk/README\(.*\)$|$DOCDIRBASE/sdk/README\1|" \
+ -e "s|^$OOINSTBASE/sdk/index.html$|$DOCDIRBASE/sdk/index.html|" \
+ -e "s|^\(%dir \)\?$OOINSTBASE/sdk/share.*$||" \
+ -e "/\.orig$/D" \
+ -e "/^$/D" \
+ $OODESTDIR/gid_Module_Root_SDK \
+ >$OODESTDIR/gid_Module_Root_SDK.new
+ mv $OODESTDIR/gid_Module_Root_SDK.new $OODESTDIR/gid_Module_Root_SDK
+ #
+ echo "%dir $DATADIRBASE/$OOOINSTALLDIRNAME/sdk" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "%dir $DATADIRBASE/$OOOINSTALLDIRNAME" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "%dir $DATADIRBASE/idl" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "%dir $DATADIRBASE/xml" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "%dir $DOCDIRBASE/sdk/docs" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "%dir $DOCDIRBASE/sdk" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "%dir $DOCDIRBASE" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "$OOINSTBASE/sdk/include" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "$OOINSTBASE/sdk/classes" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "$OOINSTBASE/sdk/idl" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "$OOINSTBASE/sdk/xml" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "$OOINSTBASE/sdk/docs" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "$OOINSTBASE/sdk/index.html" >>$OODESTDIR/gid_Module_Root_SDK
+ echo "$DOCDIRBASE/sdk/examples" >>$OODESTDIR/gid_Module_Root_SDK
+
+ # generate default profiles
+ for file in setsdkenv_unix.csh setsdkenv_unix.sh ; do
+ sed -e "s,@OO_SDK_NAME@,OpenOffice.org2.0_SDK," \
+ -e "s,@OO_SDK_HOME@,$OOINSTBASE/sdk," \
+ -e "s,@OFFICE_HOME@,$OOINSTBASE," \
+ -e "s,@OO_SDK_URE_HOME@,," \
+ -e "s,@OO_SDK_MAKE_HOME@,/usr/bin," \
+ -e "s,@OO_SDK_ZIP_HOME@,/usr/bin," \
+ -e "s,@OO_SDK_CPP_HOME@,/usr/bin," \
+ -e "s,@OO_SDK_CC_55_OR_HIGHER@,," \
+ -e "s,@OO_SDK_JAVA_HOME@,$JAVA_HOME," \
+ -e "s,@OO_SDK_OUTPUT_DIR@,\$HOME," \
+ -e "s,@SDK_AUTO_DEPLOYMENT@,NO," \
+ $OOINSTDIR/sdk/$file.in \
+ > $OOINSTDIR/sdk/$file
+ chmod 755 $OOINSTDIR/sdk/$file
+ echo $OOINSTBASE/sdk/$file >>$OODESTDIR/gid_Module_Root_SDK
+ done
+
+ # FIXME: I rather set this file to be non-world-writttable for now, i#64812
+ chmod go-w $OOINSTDIR/sdk/settings/component.uno.map
+fi
+
# move one file from one list of files to a second one
# Params: target_file_list source_file_list file_to_move
mv_file_between_flists()
@@ -353,7 +464,7 @@ fi
cd $OODESTDIR
if test -f gid_Module_Root_Files_2; then
- GID_MODULE_ROOT_FILES_LISTS="gid_Module_Root_Files_*"
+ GID_MODULE_ROOT_FILES_LISTS="gid_Module_Root_Files_[0-9]"
else
GID_MODULE_ROOT_FILES_LISTS=""
fi
@@ -407,6 +518,10 @@ if test "z$VENDORNAME" != "zDebian" ; then
test -f gid_Module_Langpack_Resource.$lang && lang_lists="$lang_lists gid_Module_Langpack_Resource.$lang" || :
test -n "$lang_lists" && cat $lang_lists | sort -u >$BUILDDIR/lang_${lang}_list.txt || :
done
+
+ if test -f gid_Module_Root_SDK ; then
+ cp gid_Module_Root_SDK $BUILDDIR/sdk_list.txt
+ fi
# sort && uniq suck but eg. gid_Module_Optional_Draw & Impress have substantial overlap
@@ -459,6 +574,20 @@ if test "z$VENDORNAME" != "zDebian" ; then
add_used_directories officebean_list.txt common_list.txt
fi
+ if test -f sdk_list.txt ; then
+ rm -f sdk_doc_list.txt
+ # in this case we move all entries including directories
+ mv_file_between_flists sdk_doc_list.txt sdk_list.txt "%dir $DOCDIRBASE/sdk/docs.*"
+ mv_file_between_flists sdk_doc_list.txt sdk_list.txt "$DOCDIRBASE/sdk/docs.*"
+ mv_file_between_flists sdk_doc_list.txt sdk_list.txt "$DOCDIRBASE/sdk/examples"
+ mv_file_between_flists sdk_doc_list.txt sdk_list.txt "$DOCDIRBASE/sdk/index.html"
+ mv_file_between_flists sdk_doc_list.txt sdk_list.txt "%dir $OOINSTBASE/sdk/examples.*"
+ mv_file_between_flists sdk_doc_list.txt sdk_list.txt "$OOINSTBASE/sdk/docs"
+ mv_file_between_flists sdk_doc_list.txt sdk_list.txt "$OOINSTBASE/sdk/examples.*"
+ mv_file_between_flists sdk_doc_list.txt sdk_list.txt "$OOINSTBASE/sdk/index.html"
+ add_used_directories sdk_doc_list.txt sdk_list.txt
+ fi
+
# remove known duplicities to do not have files packaged in two packages
# the Bulgarian fixes can be removed after the issue #54110 is fixed
remove_duplicity_from_flists common_list.txt lang_bg_list.txt $OOINSTBASE/presets/config/arrowhd.soe
@@ -518,6 +647,8 @@ else
create_package_directory gid_Module_Optional_Testtool pkg/openoffice.org-common
fi
+ create_package_directory gid_Module_Root_SDK pkg/openoffice.org-dev
+
for l in `echo $OOO_LANGS_LIST | sed -e s/en-US//`; do \
create_package_directory gid_Module_Root.$l pkg/openoffice.org-l10n-$l; \
create_package_directory gid_Module_Langpack_Resource.$l pkg/openoffice.org-l10n-$l; \
diff --git a/bin/patch-remove b/bin/patch-remove
new file mode 100755
index 000000000..9deeb3e14
--- /dev/null
+++ b/bin/patch-remove
@@ -0,0 +1,22 @@
+#!/usr/bin/perl -w
+
+my $pattern = shift (@ARGV);
+$pattern = 'util/defs/wntmsci' if (!defined $pattern);
+
+# removes crud from diffs
+my $filter = 0;
+
+while (<>) {
+ my $line = $_;
+ if ($line =~ m/^--- ([^ \t]*)/) { # spaces in fname ?
+ my $path = $1;
+ if ($path =~ m/$pattern/) {
+ $filter = 1;
+ print STDERR "Prune $path section\n";
+ } else {
+ $filter = 0;
+# print STDERR "Preserve $path section\n";
+ }
+ }
+ print $line if (!$filter);
+}
diff --git a/bin/potores b/bin/potores
new file mode 100644
index 000000000..a24e6fa89
--- /dev/null
+++ b/bin/potores
@@ -0,0 +1,88 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+# there is prolly a much much better way to do this, but the docs
+# were not findable, and or that helpful & parsing .po is easy
+#
+# This tool expects a tree of .po files, 1 per ISO lang:
+# {prefix}/
+# de/
+# fr/
+# ...
+#
+# inside each dir this filename is used:
+my $pofilename = 'totranslate.po';
+my $path = shift @ARGV;
+
+sub insert($$$$)
+{
+ my ($lang_hash, $lang, $msgid, $msgstr) = @_;
+
+ if (!defined $lang_hash->{$msgid}) {
+ my %tmphash;
+ $lang_hash->{$msgid} = \%tmphash;
+ }
+ my $thismsg = $lang_hash->{$msgid};
+ $thismsg->{$lang} = $msgstr;
+# print "Insert '$msgid' [$lang] '" . $thismsg->{$lang} . "'\n";
+}
+
+sub slurp_pofile($$$)
+{
+ my ($lang_hash, $lang, $po_file) = @_;
+ my $fileh;
+ my $msgid = '<error>';
+
+ open ($fileh, "$po_file") || die "Can't open $po_file: $!";
+ while (<$fileh>) {
+ my $line = $_;
+ $line =~ /^\#/ && next;
+ $line =~ /^\s*$/ && next;
+ if ($line =~ m/^"(.*)"\s*$/) {
+ my $attr = $1;
+ if ($attr =~ m/Content-Type: .*charset=(.*)/) {
+ my $charset = $1;
+ $charset =~ m/utf-8/i || die "Invalid charset $charset";
+ }
+ next; # skip headers
+ }
+ if ($line =~ /^msg(id|str)\s*"([^\"]*)"/) {
+ $msgid = $2 if ($1 eq 'id');
+ insert ($lang_hash, $lang, $msgid, $2) if ($1 eq 'str');
+ } else {
+ print "Unpleasant .po file line '$line'\n";
+ }
+ }
+ close ($fileh);
+}
+
+print STDERR "Reading translations at $path\n";
+
+my $dirh;
+my %langs;
+opendir ($dirh, $path) || die "Can't open $path: $!";
+while (my $lang = readdir ($dirh)) {
+ $lang =~ /^\./ && next;
+ printf STDERR "$lang ";
+ slurp_pofile (\%langs, $lang, "$path/$lang/$pofilename");
+}
+printf STDERR "\n";
+closedir ($dirh);
+
+sub printstr($$)
+{
+ my ($lang, $str) = @_;
+ $lang =~ s/_/-/g;
+ print "+\t\tText[ $lang ] = \"$str\";\n";
+}
+
+for my $msgid ( sort keys %langs ) {
+ print "SID_\n";
+# print "msgid $msgid\n";
+ my $thismsg = $langs{$msgid};
+ printstr("en-US", $msgid);
+ for my $lang ( sort keys %{$thismsg} ) {
+ printstr($lang, $thismsg->{$lang});
+ }
+}
diff --git a/bin/setup.in b/bin/setup.in
index ea940bb84..4d2799a7e 100755
--- a/bin/setup.in
+++ b/bin/setup.in
@@ -10,6 +10,7 @@ SRCDIR=@SRCDIR@
VERSION='@OOO_VERSION@'
BINSUFFIX='@OOO_BINSUFFIX@'
OOO_LANGS='@OOO_LANGS@'
+OOO_POOR_HELP_LOCALIZATIONS='@OOO_POOR_HELP_LOCALIZATIONS@'
CVSTAG='@CVSTAG@'
APPLY_DIR='@APPLY_DIR@'
BUILD_NCPUS='@BUILD_NCPUS@'
@@ -39,8 +40,9 @@ AGFA_MONOTYPE_FONTS_SOURCE=@AGFA_MONOTYPE_FONTS_SOURCE@
if test "z$BUILD_WIN32" != "z"; then
CONFIGURE_OPTIONS="--with-lang=\"$OOO_LANGS\" --with-use-shell=tcsh \
+ --with-build-version=\"Build: `date +%Y-%m-%d`\" \
--without-gpc --enable-crashdump=no \
- --disable-directx --enable-build-mozilla \
+ --disable-directx --disable-activex --enable-build-mozilla \
--disable-binfilter \
--with-ant-home=$BUILDDIR/apache-ant-1.6.5"
else
@@ -104,6 +106,8 @@ DOCDIRBASE=@docdir@
PREFIX=$OODESTDIR$PREFIXBASE
MANDIR=$OODESTDIR$MANDIRBASE
DOCDIR=$OODESTDIR$DOCDIRBASE
+DATADIRBASE=@datadir@
+DATADIR=$OODESTDIR$DATADIRBASE
SYSCONFBASE=@sysconfdir@
SYSCONFDIR=$OODESTDIR$SYSCONFBASE
OOINSTBASE=@prefix@/lib/@OOOINSTALLDIRNAME@
@@ -213,6 +217,7 @@ export PREFIX PREFIXBASE SYSCONFDIR SYSCONFBASE
export MANDIR MANDIRBASE DOCDIR DOCDIRBASE
export OOINSTDIR OOINSTBASE OOOINSTALLDIRNAME
export OODESTDIR OOO_LANGS OOO_LANGS_LIST
+export OOO_POOR_HELP_LOCALIZATIONS
export CONFIGURE_OPTIONS
export DISTRO BINSUFFIX ARCHITECTURE BUILD_MAGIC
export BUILD_WIN32
diff --git a/bin/stat-localizations b/bin/stat-localizations
new file mode 100755
index 000000000..ddd9e842c
--- /dev/null
+++ b/bin/stat-localizations
@@ -0,0 +1,92 @@
+#! /bin/sh
+
+usage()
+{
+ echo "This script counts how many strings of the given localization differs from"
+ echo "the English(US) localization"
+ echo
+ echo "Usage:" ${0##*/} locale ...
+ echo
+ echo "Presumptions:"
+ echo " - the module transex3 is built"
+ echo " - the profile *Env.Set* is sourced"
+ echo
+ echo "Note that the script is quite slow. It takes some minutes to extract strings"
+ echo "for one localization..."
+}
+
+if test -z "$1" -o "$1" = "--help" ; then
+ usage && exit 1;
+fi
+
+if ! which localize >/dev/null 2>&1 ; then
+ echo "Error: Unable to find the script \"localize\". Please, build and deliver"
+ echo " the module transex3 and keep the \*Env.Set\* sourced."
+ exit 1;
+fi
+
+extract_gsi()
+{
+ echo "Extracting $1 strings..."
+ localize -e -f "$2" -l "$1" >/dev/null 2>&1
+}
+
+final_stat=`mktemp /tmp/ooo-stat-localizationse.XXXXXXXX`
+
+primary_lang="en-US"
+
+primary_gsi=`mktemp /tmp/ooo-stat-localizationse.XXXXXXXX`
+extract_gsi $primary_lang $primary_gsi
+primary_strings=`mktemp /tmp/ooo-stat-localizationse.XXXXXXXX`
+cat $primary_gsi | cut -f 1,11 >$primary_strings
+
+primary_single_num=`grep -v "^helpcontent2" $primary_strings | sort -u | wc -l`
+primary_single_num_help=`grep "^helpcontent2" $primary_strings | sort -u | wc -l`
+
+
+for secondary_lang in $* ; do
+
+ secondary_gsi=`mktemp /tmp/ooo-stat-localizationse.XXXXXXXX`
+ extract_gsi $secondary_lang $secondary_gsi
+ secondary_strings=`mktemp /tmp/ooo-stat-localizationse.XXXXXXXX`
+ cat $secondary_gsi | cut -f 1,11 >$secondary_strings
+
+ echo "Counting $secondary_lang strings..."
+
+ single_num=`grep -h -v "^helpcontent2" $primary_strings $secondary_strings | sort -u | wc -l`
+ secondary_single_num=`grep -v "^helpcontent2" $secondary_strings | sort -u | wc -l`
+ single_num_help=`grep -h "^helpcontent2" $primary_strings $secondary_strings | sort -u | wc -l`
+ secondary_single_num_help=`grep "^helpcontent2" $secondary_strings | sort -u | wc -l`
+
+ #echo single_num=$single_num
+ #echo primary_single_num=$primary_single_num
+ #echo secondary_single_num=$secondary_single_num
+
+ #echo single_num_help=$single_num_help
+ #echo primary_single_num_help=$primary_single_num_help
+ #echo secondary_single_num_help=$secondary_single_num_help
+
+ localized=$((($single_num-$primary_single_num) * 100 / $primary_single_num))
+ localized_help=$((($single_num_help-$primary_single_num_help) * 100 / $primary_single_num_help))
+
+ echo
+ echo "Locale:$secondary_lang ui:${localized}% help:${localized_help}%"
+ echo
+
+ #
+ echo "Locale:$secondary_lang ui:${localized}% help:${localized_help}%" >>$final_stat
+
+ rm $secondary_strings
+ rm $secondary_gsi
+done
+
+rm $primary_strings
+rm $primary_gsi
+
+echo
+echo "==============================================================="
+echo "Status of localizations"
+echo "==============================================================="
+sort -n -t':' --key=4 $final_stat
+
+rm $final_stat
diff --git a/bin/test-ooo b/bin/test-ooo
index f28039d7c..ba82ac77e 100755
--- a/bin/test-ooo
+++ b/bin/test-ooo
@@ -240,6 +240,11 @@ testList=("
echo "Switching to en_US.UTF-8 locales!!!"
export LANG=en_US.UTF-8
+echo "Exporting OOO_FORCE_SYSALLOC=1"
+export OOO_FORCE_SYSALLOC=1
+echo "Exporting MALLOC_CHECK_=2"
+export MALLOC_CHECK_=2
+
is_blacklisted()
{
for t in $testBlackList ; do
diff --git a/configure.in b/configure.in
index d60e1ab58..9f59d972f 100644
--- a/configure.in
+++ b/configure.in
@@ -1,4 +1,4 @@
-AC_INIT(ooo-build, 2.0.2.1)
+AC_INIT(ooo-build, 2.0.2.12)
AC_PREREQ(2.51)
AC_CONFIG_SRCDIR(bin/build-ooo)
AC_PREFIX_DEFAULT(/usr)
@@ -64,6 +64,16 @@ AC_ARG_WITH(lang,
--with-lang=ALL],
,)
+AC_ARG_WITH(poor-help-localizations,
+[
+ --with-poor-help-localizations
+ define the localizations with so incomplete help
+ that the English(US) one should be used instead.
+
+ Example: --with-poor-help-localizations="af ar ca"],
+,)
+
+
AC_ARG_ENABLE(dbgutil,
[ --enable-dbgutil: Include additional debugging utilities, such as
assertions, object counting, etc. Larger build.
@@ -747,6 +757,17 @@ OOO_LANGS="$with_lang"
AC_MSG_RESULT([$OOO_LANGS])
AC_SUBST(OOO_LANGS)
+AC_MSG_CHECKING([for insufficient help localizations])
+if test "$with_poor_help_localizations" = "yes" -o \
+ "$with_poor_help_localizations" = "no" ; then
+ # no default list defined for now, so it is empty for both "yes" and "no"
+ OOO_POOR_HELP_LOCALIZATIONS=
+else
+ OOO_POOR_HELP_LOCALIZATIONS="$with_poor_help_localizations"
+fi
+AC_MSG_RESULT([$OOO_POOR_HELP_LOCALIZATIONS])
+AC_SUBST(OOO_POOR_HELP_LOCALIZATIONS)
+
AC_MSG_CHECKING([whether to enable Mono bindings])
if test -n "$enable_mono" ; then
if test "$enable_mono" != "no" ; then
@@ -836,6 +857,7 @@ distro-configs/SUSE-9.1.conf
distro-configs/SUSE-9.2.conf
distro-configs/SUSE-9.3.conf
distro-configs/SUSE-10.0.conf
+distro-configs/SUSE-10.1.conf
distro-configs/Mandriva.conf
distro-configs/Mandriva64.conf
distro-configs/Gentoo.conf
@@ -903,8 +925,6 @@ To build run:
$warn_use_download make
bin/ooinstall <path-to-install>
- This is HEAD - the unstable branch for post-2.0.1 development.
- If you want to build the stable OOo, use:
- ooo-build-2-0 branch for 2.0
- ooo-build-2-0-1 branch for 2.0.1
+ This is ooo-build-2-0-2 - the stable branch for the 2.0.2 release.
+ If you want to build something cool, unstable, and risky, use HEAD.
"
diff --git a/desktop/calc.desktop.in b/desktop/calc.desktop.in
index 2c9506bdf..f1b5a3934 100644
--- a/desktop/calc.desktop.in
+++ b/desktop/calc.desktop.in
@@ -6,6 +6,7 @@ TryExec=oocalc@BINSUFFIX@
Exec=oocalc@BINSUFFIX@ %U
Icon=ooo-calc@BINSUFFIX@.png
Type=Application
+InitialPreference=6
Categories=Office;Spreadsheet
StartupNotify=@STARTUPNOTIFY@
MimeType=application/vnd.oasis.opendocument.spreadsheet;application/vnd.oasis.opendocument.spreadsheet-template;application/vnd.sun.xml.calc;application/vnd.sun.xml.calc.template;application/vnd.stardivision.calc;application/vnd.stardivision.chart;application/msexcel;application/vnd.ms-excel;text/x-comma-separated-values;text/x-csv;application/vnd.lotus-1-2-3;text/spreadsheet;application/excel;application/x-excel;application/x-ms-excel;application/x-msexcel;application/x-sylk;application/x-xls;application/xls
diff --git a/desktop/web.desktop.in b/desktop/web.desktop.in
index 6fb0dbb16..88ccddabe 100644
--- a/desktop/web.desktop.in
+++ b/desktop/web.desktop.in
@@ -6,7 +6,7 @@ TryExec=ooweb@BINSUFFIX@
Exec=ooweb@BINSUFFIX@ %U
Icon=ooo-web@BINSUFFIX@.png
Type=Application
-Categories=Office;WebDevelopment
+Categories=Network;WebDevelopment
StartupNotify=@STARTUPNOTIFY@
MimeType=application/vnd.oasis.opendocument.text-web
_Name=OpenOffice.org Writer/Web
diff --git a/distro-configs/Frugalware.conf.in b/distro-configs/Frugalware.conf.in
index 6ecb8dff7..2be804371 100644
--- a/distro-configs/Frugalware.conf.in
+++ b/distro-configs/Frugalware.conf.in
@@ -4,17 +4,19 @@
--with-system-curl
--with-system-expat
--with-system-neon
---with-system-gcc=yes
--with-system-sndfile
--with-system-cairo
--with-system-boost
--with-system-hunspell
--with-system-odbc-headers
--with-system-sane-headers
---with-java-home=$JAVA_HOME
+--with-system-gcc=yes
+--with-system-nas
--with-javac
--with-firefox
---without-java
+--with-java=gij
+--with-openclipart=/usr/share/openclipart
+--with-docdir=/usr/share/doc/openoffice.org
--enable-libart
--enable-libsn
--enable-fontconfig
@@ -27,5 +29,5 @@
--enable-cairo
--enable-xsltproc
--disable-rpath
---disable-mozilla
+--disable-mozilla
--disable-odk
diff --git a/distro-configs/Gentoo.conf.in b/distro-configs/Gentoo.conf.in
index 39cf885ad..8c3d0e91e 100644
--- a/distro-configs/Gentoo.conf.in
+++ b/distro-configs/Gentoo.conf.in
@@ -1,6 +1,7 @@
--disable-fontooo
--disable-odk
--enable-libsn
+--with-system-curl
--with-system-expat
--with-system-stdlibs
--with-system-xrender-headers
diff --git a/distro-configs/SUSE-10.1.conf.in b/distro-configs/SUSE-10.1.conf.in
new file mode 100644
index 000000000..94f152f07
--- /dev/null
+++ b/distro-configs/SUSE-10.1.conf.in
@@ -0,0 +1,19 @@
+--disable-access
+--disable-odk
+--enable-gnome-vfs
+--enable-libsn
+--enable-lockdown
+--enable-mono
+--enable-quickstart
+--with-ant-home=/usr
+--with-jdk-home=$JAVA_HOME
+--with-system-boost
+--with-system-cairo
+--with-system-curl
+--with-system-db
+--with-system-expat
+--with-system-neon
+--with-system-odbc-headers
+--with-system-sndfile
+--with-xulrunner
+--without-myspell-dicts
diff --git a/distro-configs/SUSE-9.1.conf.in b/distro-configs/SUSE-9.1.conf.in
index d733c87d3..2e9eb5084 100644
--- a/distro-configs/SUSE-9.1.conf.in
+++ b/distro-configs/SUSE-9.1.conf.in
@@ -1,4 +1,5 @@
--disable-access
+--disable-cairo
--disable-odk
--enable-gnome-vfs
--enable-libsn
diff --git a/doc/local.txt b/doc/local.txt
index 727cc40b0..9a1581494 100644
--- a/doc/local.txt
+++ b/doc/local.txt
@@ -1,6 +1,14 @@
Local linking notes ...
TODO:
+ + cppu::loadSharedLibComponentFactory
+ + this is what loads the libs ...
+
+** Resolved:
+ + trying to share stuff just doesn't work
+ + instead just throw/catch exceptions in a standalone lib.
+
+
+ Need different guards in .hpp & .hppi files
+ and no redundancy [!]
+ [ since .hppi files cascade include .hpp ]
diff --git a/download.in b/download.in
index 8e8f39713..0d8464a06 100755
--- a/download.in
+++ b/download.in
@@ -36,6 +36,7 @@ sub usage {
'cairo-.*' => '@MIRROR@/SRC680',
'glitz-.*' => '@MIRROR@/SRC680',
'hunspell.*' => '@MIRROR@/SRC680',
+ 'biblio.*' => '@MIRROR@/SRC680',
'xt-.*' => '@MIRROR@/xt',
# Graphite rendering bits
'silgraphite-.*' => '@MIRROR@/SRC680',
@@ -144,6 +145,8 @@ if ('@MDBTOOLS_SRC@' ne '') {
push @files, ( "$tag-core.tar.bz2" );
push @files, ( '@OOO_CUSTOM_IMAGES@', '@OOO_EXTRA_ARTWORK@' );
push @files, ( "xt-20051206-src-only.zip" );
+# Temporary utf-8ization of bibliograpy bits
+push @files, ( "biblio.tar.bz2" );
if ('@OOO_LANGS@' ne 'en-US' || '@BUILD_WIN32@' ne '' ) {
push @files, ( "$tag-lang.tar.bz2" );
diff --git a/man/openoffice.1_SUSE.in b/man/openoffice.1_SUSE.in
index b5849f662..bd11e0e91 100644
--- a/man/openoffice.1_SUSE.in
+++ b/man/openoffice.1_SUSE.in
@@ -1,9 +1,8 @@
-.TH ooffice "1" "2005-10-25" "OpenOffice.org 2.0.0" "User Commands"
+.TH ooffice "1" "2006-03-23" "OpenOffice.org 2.0" "User Commands"
.SH "Name"
ooffice@BINSUFFIX@ \- OpenOffice.org office suite
.SH SYNOPSIS
.B ooffice@BINSUFFIX@
-[\fB\-\-version\fR] [\fB\-\-widgets\-set\fI widgetsset\fR]
[\fB\-accept\=\fIaccept\-string\fR] [\fB\-calc\fR] [\fB\-display \fIdisplay\fR]
[\fB\-draw\fR] [\fB\-global\fR] [\fB\-headless\fR]
[\fB\-help\fR|\fB\-h\fR|\fB\-?\fR] [\fB\-impress\fR] [\fB\-invisible\fR]
@@ -40,18 +39,18 @@ Obsolete:
.br
.B OOo\-calc@BINSUFFIX@
.br
+.B OOo\-draw@BINSUFFIX@
+.br
.B OOo\-impress@BINSUFFIX@
.br
.B OOo\-math@BINSUFFIX@
.br
-.B OOo\-padmin@BINSUFFIX@
-.br
-.B OOo\-setup@BINSUFFIX@
-.br
.B OOo\-template@BINSUFFIX@
.br
.B OOo\-web@BINSUFFIX@
.br
+.B OOo\-writer@BINSUFFIX@
+.br
.SH DESCRIPTION
OpenOffice.org is a fully featured office suite for the daily use with all
features you would normally expect in a office suite.
@@ -65,20 +64,6 @@ Do not use the obsolete wrappers, please. They will be removed in a future relea
of the product.
.SH OPTIONS
-These arguments are processed by the wrapper itself.
-.TP
-\fB\-\-version\fR
-This option displays the version of this OpenOffice.org build.
-.TP
-\fB\-\-widgets\-set \fIwidgetsset\fR
-This option allows to start the application with an other widgets set.
-Note that the support for \fIgtk\fR resp. \fIkde\fR widgets set is
-included in the package \fIOpenOffice_org\-gnome\fR resp.
-\fIOpenOffice_org\-kde\fR.
-.TP
-
-These arguments are passed directly to the real start binary by the wrapper.
-.TP
\fIfilename\fR...
Files to operate on. Opening them is the default behavior, which can be
influenced by command line arguments. \fB\-p\fR will print the files instead.
diff --git a/patches/cairo/cairo-canvas-clip-more.diff b/patches/cairo/cairo-canvas-clip-more.diff
new file mode 100644
index 000000000..ad36a62d6
--- /dev/null
+++ b/patches/cairo/cairo-canvas-clip-more.diff
@@ -0,0 +1,24 @@
+Index: cairo_canvashelper.cxx
+===================================================================
+RCS file: /cvs/gsl/canvas/source/cairo/cairo_canvashelper.cxx,v
+retrieving revision 1.3
+diff -u -p -r1.3 cairo_canvashelper.cxx
+--- canvas/source/cairo/cairo_canvashelper.cxx 22 Mar 2006 10:59:35 -0000 1.3
++++ canvas/source/cairo/cairo_canvashelper.cxx 19 May 2006 13:58:47 -0000
+@@ -1118,8 +1118,14 @@ namespace cairocanvas
+ }
+
+ cairo_set_source_surface( mpCairo, pSurface->mpSurface, 0, 0 );
+-// if( !bHasAlpha )
+-// cairo_set_operator( mpCairo, CAIRO_OPERATOR_SOURCE );
++ if( !bHasAlpha &&
++ ::rtl::math::approxEqual( aMatrix.xx, 1 ) &&
++ ::rtl::math::approxEqual( aMatrix.yy, 1 ) &&
++ ::rtl::math::approxEqual( aMatrix.x0, 0 ) &&
++ ::rtl::math::approxEqual( aMatrix.y0, 0 ) )
++ cairo_set_operator( mpCairo, CAIRO_OPERATOR_SOURCE );
++ cairo_rectangle( mpCairo, 0, 0, rSize.Width, rSize.Height );
++ cairo_clip( mpCairo );
+ cairo_paint( mpCairo );
+ cairo_restore( mpCairo );
+ } else
diff --git a/patches/cairo/cairo-query-text-bounds.diff b/patches/cairo/cairo-query-text-bounds.diff
new file mode 100644
index 000000000..fb95ef412
--- /dev/null
+++ b/patches/cairo/cairo-query-text-bounds.diff
@@ -0,0 +1,210 @@
+diff -rup canvas/source/cairo-orig/cairo_canvascustomsprite.cxx canvas/source/cairo/cairo_canvascustomsprite.cxx
+--- canvas/source/cairo-orig/cairo_canvascustomsprite.cxx 2006-05-25 20:38:42.000000000 +0200
++++ canvas/source/cairo/cairo_canvascustomsprite.cxx 2006-05-25 20:40:44.000000000 +0200
+@@ -62,6 +62,10 @@ namespace cairocanvas
+ ENSURE_AND_THROW( rRefDevice.get(),
+ "CanvasCustomSprite::CanvasCustomSprite(): Invalid sprite canvas" );
+
++ OSL_TRACE("sprite size: %d, %d",
++ ::canvas::tools::roundUp( rSpriteSize.Width ),
++ ::canvas::tools::roundUp( rSpriteSize.Height ));
++
+ //mpBufferSurface = mpSpriteCanvas->getSurface( aSize, CAIRO_CONTENT_COLOR );
+ mpBufferSurface = mpSpriteCanvas->getSurface( maSize );
+
+diff -rup canvas/source/cairo-orig/cairo_canvasfont.cxx canvas/source/cairo/cairo_canvasfont.cxx
+--- canvas/source/cairo-orig/cairo_canvasfont.cxx 2006-05-25 20:38:42.000000000 +0200
++++ canvas/source/cairo/cairo_canvasfont.cxx 2006-05-25 21:52:45.000000000 +0200
+@@ -111,7 +111,8 @@ namespace cairocanvas
+ return new TextLayout( aText,
+ nDirection,
+ nRandomSeed,
+- Reference( this ) );
++ Reference( this ),
++ mpRefDevice );
+ }
+
+ rendering::FontRequest SAL_CALL CanvasFont::getFontRequest( ) throw (uno::RuntimeException)
+diff -rup canvas/source/cairo-orig/cairo_textlayout.cxx canvas/source/cairo/cairo_textlayout.cxx
+--- canvas/source/cairo-orig/cairo_textlayout.cxx 2006-05-25 20:38:42.000000000 +0200
++++ canvas/source/cairo/cairo_textlayout.cxx 2006-05-25 22:00:57.000000000 +0200
+@@ -36,6 +36,9 @@
+ #include <canvas/debug.hxx>
+ #include <canvas/verbosetrace.hxx>
+
++#include <vcl/metric.hxx>
++#include <vcl/virdev.hxx>
++
+ #include <basegfx/matrix/b2dhommatrix.hxx>
+ #include <basegfx/numeric/ftools.hxx>
+
+@@ -50,14 +53,48 @@ using namespace ::com::sun::star;
+
+ namespace cairocanvas
+ {
++ namespace
++ {
++ void setupLayoutMode( OutputDevice& rOutDev,
++ sal_Int8 nTextDirection )
++ {
++ // TODO(P3): avoid if already correctly set
++ ULONG nLayoutMode;
++ switch( nTextDirection )
++ {
++ default:
++ nLayoutMode = 0;
++ break;
++ case rendering::TextDirection::WEAK_LEFT_TO_RIGHT:
++ nLayoutMode = TEXT_LAYOUT_BIDI_LTR;
++ break;
++ case rendering::TextDirection::STRONG_LEFT_TO_RIGHT:
++ nLayoutMode = TEXT_LAYOUT_BIDI_LTR | TEXT_LAYOUT_BIDI_STRONG;
++ break;
++ case rendering::TextDirection::WEAK_RIGHT_TO_LEFT:
++ nLayoutMode = TEXT_LAYOUT_BIDI_RTL;
++ break;
++ case rendering::TextDirection::STRONG_RIGHT_TO_LEFT:
++ nLayoutMode = TEXT_LAYOUT_BIDI_RTL | TEXT_LAYOUT_BIDI_STRONG;
++ break;
++ }
++
++ // set calculated layout mode. Origin is always the left edge,
++ // as required at the API spec
++ rOutDev.SetLayoutMode( nLayoutMode | TEXT_LAYOUT_TEXTORIGIN_LEFT );
++ }
++ }
++
+ TextLayout::TextLayout( const rendering::StringContext& aText,
+ sal_Int8 nDirection,
+ sal_Int64 nRandomSeed,
+- const CanvasFont::Reference& rFont ) :
++ const CanvasFont::Reference& rFont,
++ const DeviceRef& rRefDevice ) :
+ TextLayout_Base( m_aMutex ),
+ maText( aText ),
+ maLogicalAdvancements(),
+ mpFont( rFont ),
++ mpRefDevice( rRefDevice ),
+ mnTextDirection( nDirection )
+ {
+ }
+@@ -68,7 +105,10 @@ namespace cairocanvas
+
+ void SAL_CALL TextLayout::disposing()
+ {
++ ::osl::MutexGuard aGuard( m_aMutex );
++
+ mpFont.reset();
++ mpRefDevice.clear();
+ }
+
+ // XTextLayout
+@@ -120,25 +160,36 @@ namespace cairocanvas
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+- ENSURE_AND_THROW( mpFont.get(),
+- "TextLayout::queryTextBounds(): invalid font" );
++ OutputDevice* pOutDev = mpRefDevice->getOutputWindow();
++ if( !pOutDev )
++ return geometry::RealRectangle2D();
++
++ VirtualDevice aVDev( *pOutDev );
++ aVDev.SetFont( mpFont->getVCLFont() );
++
++ // need metrics for Y offset, the XCanvas always renders
++ // relative to baseline
++ const ::FontMetric& aMetric( aVDev.GetFontMetric() );
++
++ setupLayoutMode( aVDev, mnTextDirection );
++
++ const sal_Int32 nAboveBaseline( -aMetric.GetIntLeading() - aMetric.GetAscent() );
++ const sal_Int32 nBelowBaseline( aMetric.GetDescent() );
+
+- // fake text bounds by either taking the advancement values,
+- // or assuming square glyph boxes (width similar to height)
+- const rendering::FontRequest& rFontRequest( mpFont->getFontRequest() );
+- const double nFontSize( ::std::max( rFontRequest.CellSize,
+- rFontRequest.ReferenceAdvancement ) );
+ if( maLogicalAdvancements.getLength() )
+ {
+- return geometry::RealRectangle2D( 0, -nFontSize/2,
++ return geometry::RealRectangle2D( 0, nAboveBaseline,
+ maLogicalAdvancements[ maLogicalAdvancements.getLength()-1 ],
+- nFontSize/2 );
++ nBelowBaseline );
+ }
+ else
+ {
+- return geometry::RealRectangle2D( 0, -nFontSize/2,
+- nFontSize * maText.Length,
+- nFontSize/2 );
++ return geometry::RealRectangle2D( 0, nAboveBaseline,
++ aVDev.GetTextWidth(
++ maText.Text,
++ ::canvas::tools::numeric_cast<USHORT>(maText.StartPosition),
++ ::canvas::tools::numeric_cast<USHORT>(maText.Length) ),
++ nBelowBaseline );
+ }
+ }
+
+@@ -256,38 +307,6 @@ namespace cairocanvas
+
+ namespace
+ {
+- void setupLayoutMode( OutputDevice& rOutDev,
+- sal_Int8 nTextDirection )
+- {
+- // TODO(P3): avoid if already correctly set
+- ULONG nLayoutMode;
+- switch( nTextDirection )
+- {
+- default:
+- nLayoutMode = 0;
+- break;
+- case rendering::TextDirection::WEAK_LEFT_TO_RIGHT:
+- nLayoutMode = TEXT_LAYOUT_BIDI_LTR;
+- break;
+- case rendering::TextDirection::STRONG_LEFT_TO_RIGHT:
+- nLayoutMode = TEXT_LAYOUT_BIDI_LTR | TEXT_LAYOUT_BIDI_STRONG;
+- break;
+- case rendering::TextDirection::WEAK_RIGHT_TO_LEFT:
+- nLayoutMode = TEXT_LAYOUT_BIDI_RTL;
+- break;
+- case rendering::TextDirection::STRONG_RIGHT_TO_LEFT:
+- nLayoutMode = TEXT_LAYOUT_BIDI_RTL | TEXT_LAYOUT_BIDI_STRONG;
+- break;
+- }
+-
+- // set calculated layout mode. Origin is always the left edge,
+- // as required at the API spec
+- rOutDev.SetLayoutMode( nLayoutMode | TEXT_LAYOUT_TEXTORIGIN_LEFT );
+- }
+- }
+-
+- namespace
+- {
+ class OffsetTransformer
+ {
+ public:
+diff -rup canvas/source/cairo-orig/cairo_textlayout.hxx canvas/source/cairo/cairo_textlayout.hxx
+--- canvas/source/cairo-orig/cairo_textlayout.hxx 2006-05-25 20:38:42.000000000 +0200
++++ canvas/source/cairo/cairo_textlayout.hxx 2006-05-25 21:54:24.000000000 +0200
+@@ -67,7 +67,8 @@ namespace cairocanvas
+ TextLayout( const ::com::sun::star::rendering::StringContext& aText,
+ sal_Int8 nDirection,
+ sal_Int64 nRandomSeed,
+- const CanvasFont::Reference& rFont );
++ const CanvasFont::Reference& rFont,
++ const DeviceRef& rRefDevice );
+
+ /// Dispose all internal references
+ virtual void SAL_CALL disposing();
+@@ -113,6 +114,7 @@ namespace cairocanvas
+ ::com::sun::star::rendering::StringContext maText;
+ ::com::sun::star::uno::Sequence< double > maLogicalAdvancements;
+ CanvasFont::Reference mpFont;
++ DeviceRef mpRefDevice;
+ sal_Int8 mnTextDirection;
+
+ void useFont( ::cairo::Cairo* pCairo );
diff --git a/patches/evo2/dbaccess-evo-changes.diff b/patches/evo2/dbaccess-evo-changes.diff
index 51ecc4f1c..e63b0ed5b 100644
--- a/patches/evo2/dbaccess-evo-changes.diff
+++ b/patches/evo2/dbaccess-evo-changes.diff
@@ -148,7 +148,7 @@
};
String STR_KAB
{
-@@ -221,11 +229,21 @@
+@@ -221,10 +229,41 @@
Text [ de ] = "Microsoft Windows Adressbuch";
Text[ en-US ] = "Microsoft Windows Address Book";
};
@@ -159,18 +159,39 @@
- };
+ String STR_EVOLUTION_LOCAL
+ {
-+ Text [ de ] = "Evolution Local Adressbuch";
+ Text[ en-US ] = "Evolution Local";
++ Text[ de ] = "Lokales Evolution-Adressbuch";
++ Text[ es ] = "Libreta de direcciones local de Evolution";
++ Text[ fr ] = "Carnet d'adresses Evolution local";
++ Text[ it ] = "Rubrica locale di Evolution";
++ Text[ ja ] = "EvolutionローカルAddressbook ";
++ Text[ pt-BR ] = "Bloco de Endereços Local do Evolution";
++ Text[ zh-CN ] = "Evolution 本地地å€ç°¿";
++ Text[ zh-TW ] = "Evolution Local 通訊錄";
+ };
+ String STR_EVOLUTION_LDAP
+ {
-+ Text [ de ] = "Evolution LDAP Adressbuch";
+ Text[ en-US ] = "Evolution LDAP";
++ Text[ de ] = "Evolution-LDAP-Adressbuch";
++ Text[ es ] = "Libreta de direcciones LDAP de Evolution";
++ Text[ fr ] = "Carnet d'adresses Evolution LDAP";
++ Text[ it ] = "Rubrica LDAP di Evolution";
++ Text[ ja ] = "Evolution LDAP Addressbook `";
++ Text[ pt-BR ] = "Bloco de Endereços LDAP do Evolution";
++ Text[ zh-CN ] = "Evolution LDAP 地å€ç°¿";
++ Text[ zh-TW ] = "Evolution LDAP 通訊錄";
+ };
+ String STR_EVOLUTION_GROUPWISE
+ {
-+ Text [ de ] = "Groupwise Adressbuch";
+ Text[ en-US ] = "Groupwise";
++ Text[ de ] = "Evolution-Groupwise-Adressbuch";
++ Text[ es ] = "Libreta de direcciones de GroupWise de Evolution";
++ Text[ fr ] = "Carnet d'adresses Evolution Groupwise";
++ Text[ it ] = "Rubrica Groupwise di Evolution";
++ Text[ ja ] = "Evolution Groupwise Addressbook ";
++ Text[ pt-BR ] = "Bloco de Endereços Groupwise do Evolution";
++ Text[ zh-CN ] = "Evolution Groupwise 地å€ç°¿";
++ Text[ zh-TW ] = "Evolution Groupwise 通訊錄";
+ };
String STR_KAB
{
diff --git a/patches/src680/automation-testtool-oobuildfix.diff b/patches/src680/automation-testtool-oobuildfix.diff
index bb73a8559..4a3505d52 100644
--- a/patches/src680/automation-testtool-oobuildfix.diff
+++ b/patches/src680/automation-testtool-oobuildfix.diff
@@ -1,21 +1,3 @@
-Index: automation/source/app/testbasi.cxx
-===================================================================
-RCS file: /cvs/util/automation/source/app/testbasi.cxx,v
-retrieving revision 1.5
-diff -u -p -r1.5 testbasi.cxx
---- automation/source/app/testbasi.cxx 7 Sep 2005 19:15:51 -0000 1.5
-+++ automation/source/app/testbasi.cxx 3 Feb 2006 17:40:28 -0000
-@@ -128,6 +128,10 @@ IMPL_LINK( TTBasic, CErrorImpl, ErrorEnt
- BOOL TTBasic::Compile( SbModule* p )
- {
- p->SetComment( ((TestToolObj*)pTestObject)->GetRevision(p->GetSource()) );
-+ // the default ooo-build compatibilty options stuff
-+ // up the testtool make sure they are false
-+ p->SetCompatibleMode( false );
-+
- SbModule* pOldModule = GetCompileModule();
- SetCompileModule( p );
- p->SetSource( ((TestToolObj*)pTestObject)->PreCompile(p->GetSource()) );
Index: automation/source/testtool/objtest.cxx
===================================================================
RCS file: /cvs/util/automation/source/testtool/objtest.cxx,v
@@ -23,17 +5,6 @@ retrieving revision 1.20
diff -u -p -r1.20 objtest.cxx
--- automation/source/testtool/objtest.cxx 6 Oct 2005 12:37:43 -0000 1.20
+++ automation/source/testtool/objtest.cxx 3 Feb 2006 17:40:30 -0000
-@@ -1849,6 +1849,10 @@ void TestToolObj::SFX_NOTIFY( SfxBroadca
- {
- SbModule *pMod;
- pMod = pBasic->MakeModule( CUniString("--"), String() );
-+ if ( pMod )
-+ // the default ooo-build compatibilty options stuff
-+ // up the testtool
-+ pMod->SetCompatibleMode( false );
- pMod->Clear();
- if ( Load( aFullPathname, pMod ) )
- {
@@ -2715,7 +2719,8 @@ void TestToolObj::DebugFindNoErrors( BOO
SbxVariable* TestToolObj::Find( const String& Str, SbxClassType Type)
diff --git a/patches/src680/buildfix-no-java-ppc.diff b/patches/src680/buildfix-no-java-ppc.diff
deleted file mode 100644
index d02e4a632..000000000
--- a/patches/src680/buildfix-no-java-ppc.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- solenv/inc/unxlngppc4.mk.old 2006-01-20 11:50:50.000000000 +0100
-+++ solenv/inc/unxlngppc4.mk 2006-02-28 15:06:48.000000000 +0100
-@@ -36,7 +36,7 @@
- ASM=
- AFLAGS=
-
--SOLAR_JAVA*=TRUE
-+SOLAR_JAVA*=
- JAVAFLAGSDEBUG=-g
-
- # filter for supressing verbose messages from linker
diff --git a/patches/src680/buildfix-testtool-skip-gij-ppc-hack.diff b/patches/src680/buildfix-testtool-skip-gij-ppc-hack.diff
deleted file mode 100644
index 022b23601..000000000
--- a/patches/src680/buildfix-testtool-skip-gij-ppc-hack.diff
+++ /dev/null
@@ -1,9 +0,0 @@
---- testtools/prj/build.lst.orig 2004-12-10 17:48:26.000000000 +0100
-+++ testtools/prj/build.lst 2006-02-22 12:00:54.000000000 +0100
-@@ -1,6 +1 @@
- tt testtools : cpputools io remotebridges stoc javaunohelper pyuno NULL
--tt testtools\source\bridgetest nmake - all tt_bridgetest tt_bridgetest_idl tt_javaTestObjs NULL
--tt testtools\source\bridgetest\cli nmake - w,vc7 tt_cli tt_bridgetest tt_bridgetest_idl NULL
--tt testtools\source\bridgetest\idl nmake - all tt_bridgetest_idl NULL
--tt testtools\com\sun\star\comp\bridge nmake - all tt_javaTestObjs tt_bridgetest_idl NULL
--tt testtools\source\bridgetest\pyuno nmake - all tt_pyuno tt_bridgetest NULL
diff --git a/patches/src680/buildfix-tg-config-gij-ppc-hack.diff b/patches/src680/buildfix-tg-config-gij-ppc-hack.diff
deleted file mode 100644
index 9ed22383e..000000000
--- a/patches/src680/buildfix-tg-config-gij-ppc-hack.diff
+++ /dev/null
@@ -1,81 +0,0 @@
---- solenv/inc/tg_config.mk.old 2006-03-06 18:36:14.000000000 +0100
-+++ solenv/inc/tg_config.mk 2006-03-08 13:48:35.000000000 +0100
-@@ -35,6 +35,13 @@
-
- PACKAGEDIR*:=$(subst,.,$/ $(PACKAGE))
-
-+XERCES_HELPER=-Djavax.xml.datatype.DatatypeFactory=org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl \
-+ -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl \
-+ -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl \
-+ -Djavax.xml.validation.SchemaFactory=org.apache.xerces.jaxp.validation.XMLSchemaFactory \
-+ -Dorg.w3c.dom.DOMImplementationSourceList=org.apache.xerces.dom.DOMXSImplementationSourceImpl \
-+ -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser
-+
- #
- # --- XCS ---
- #
-@@ -66,12 +73,12 @@
- -$(MKDIRHIER) $(@:d)
- .IF "$(XSLTPROC)"=="NO_XSLTPROC"
- .IF "$(NO_INSPECTION)"==""
-- $(JAVAI) $(JAVACPS) $(XML_APIS_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/cfgimport.jar -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl org.openoffice.configuration.Inspector $<
-+ $(JAVAI) $(JAVACPS) $(XML_APIS_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/cfgimport.jar -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl $(XERCES_HELPER) org.openoffice.configuration.Inspector $<
- .ENDIF # "$(NO_INSPECTION)"==""
-- $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR) -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser com.jclark.xsl.sax.Driver $< $(XSLDIR)$/schema_val.xsl $(@:d)$*.val componentName=$(PACKAGE).$*
-- $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR) -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser com.jclark.xsl.sax.Driver $< $(XSLDIR)$/sanity.xsl $(@:d)$*.san
-- $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR) -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser com.jclark.xsl.sax.Driver $< $(XSLDIR)$/schema_trim.xsl $(@:d)$*.tmp
-- $(JAVAI) $(JAVACPS) $(XML_APIS_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/schema.jar -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl org.openoffice.helper.PrettyPrinter $(@:d)$*.tmp $@
-+ $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR) -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser $(XERCES_HELPER) com.jclark.xsl.sax.Driver $< $(XSLDIR)$/schema_val.xsl $(@:d)$*.val componentName=$(PACKAGE).$*
-+ $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR) -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser $(XERCES_HELPER) com.jclark.xsl.sax.Driver $< $(XSLDIR)$/sanity.xsl $(@:d)$*.san
-+ $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR) -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser $(XERCES_HELPER) com.jclark.xsl.sax.Driver $< $(XSLDIR)$/schema_trim.xsl $(@:d)$*.tmp
-+ $(JAVAI) $(JAVACPS) $(XML_APIS_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/schema.jar -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl $(XERCES_HELPER) org.openoffice.helper.PrettyPrinter $(@:d)$*.tmp $@
- .ELSE
- # xsltproc already validates against the dtd. For additional validation,
- # org.openoffice.configuration.Inspector should be replaced and the
-@@ -105,7 +112,7 @@
- @+echo -------------+ creating locale dependent resource bundles
- -$(MKDIRHIER) $(@:d)
- .IF "$(XSLTPROC)"=="NO_XSLTPROC"
-- $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR) -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser com.jclark.xsl.sax.Driver $< $(XSLDIR)$/resource.xsl $@ locale={$(subst,$/$(PACKAGEDIR)$/$(@:f), $(subst,$(PROCESSOUT)$/registry$/res$/, $@))}
-+ $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR) -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser $(XERCES_HELPER) com.jclark.xsl.sax.Driver $< $(XSLDIR)$/resource.xsl $@ locale={$(subst,$/$(PACKAGEDIR)$/$(@:f), $(subst,$(PROCESSOUT)$/registry$/res$/, $@))}
- .ELSE
- $(XSLTPROC) -o $@ \
- --stringparam locale {$(subst,$/$(PACKAGEDIR)$/$(@:f), $(subst,$(PROCESSOUT)$/registry$/res$/, $@))} \
-@@ -133,11 +140,11 @@
- -$(MKDIRHIER) $(@:d)
- .IF "$(XSLTPROC)"=="NO_XSLTPROC"
- .IF "$(NO_INSPECTION)"==""
-- $(JAVAI) $(JAVACPS) $(XML_APIS_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/cfgimport.jar -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl org.openoffice.configuration.Inspector $<
-+ $(JAVAI) $(JAVACPS) $(XML_APIS_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/cfgimport.jar -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl $(XERCES_HELPER) org.openoffice.configuration.Inspector $<
- .ENDIF # "$(NO_INSPECTION)"==""
-- $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/cfgimport.jar -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser com.jclark.xsl.sax.Driver $< $(XSLDIR)$/data_val.xsl $(@:d)$*.val xcs=$(XCSROOT)$/registry$/schema$/$(PACKAGEDIR)$/$*.xcs schemaRoot=$(XCSROOT)$/registry$/schema
-- $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/cfgimport.jar -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser com.jclark.xsl.sax.Driver $< $(XSLDIR)$/alllang.xsl $(@:d)$*.tmp xcs=$(XCSROOT)$/registry$/schema$/$(PACKAGEDIR)$/$*.xcs schemaRoot=$(XCSROOT)$/registry$/schema
-- $(JAVAI) $(JAVACPS) $(XML_APIS_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/schema.jar -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl org.openoffice.helper.PrettyPrinter $(@:d)$*.tmp $@
-+ $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/cfgimport.jar -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser $(XERCES_HELPER) com.jclark.xsl.sax.Driver $< $(XSLDIR)$/data_val.xsl $(@:d)$*.val xcs=$(XCSROOT)$/registry$/schema$/$(PACKAGEDIR)$/$*.xcs schemaRoot=$(XCSROOT)$/registry$/schema
-+ $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/cfgimport.jar -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser $(XERCES_HELPER) com.jclark.xsl.sax.Driver $< $(XSLDIR)$/alllang.xsl $(@:d)$*.tmp xcs=$(XCSROOT)$/registry$/schema$/$(PACKAGEDIR)$/$*.xcs schemaRoot=$(XCSROOT)$/registry$/schema
-+ $(JAVAI) $(JAVACPS) $(XML_APIS_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/schema.jar -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl $(XERCES_HELPER) org.openoffice.helper.PrettyPrinter $(@:d)$*.tmp $@
- .ELSE
- # xsltproc already validates against the dtd. For additional validation,
- # org.openoffice.configuration.Inspector should be replaced and the
-@@ -174,8 +181,8 @@
- @+echo -------------+ creating locale dependent entries
- -$(MKDIRHIER) $(@:d)
- .IF "$(XSLTPROC)"=="NO_XSLTPROC"
-- $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/cfgimport.jar -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser com.jclark.xsl.sax.Driver $< $(XSLDIR)$/alllang.xsl $(@:d)$*.tmp xcs=$(XCSROOT)$/registry$/schema$/$(PACKAGEDIR)$/$*.xcs schemaRoot=$(XCSROOT)$/registry$/schema locale={$(subst,$/$(PACKAGEDIR)$/$(@:f), $(subst,$(PROCESSOUT)$/registry$/res$/, $@))}
-- $(JAVAI) $(JAVACPS) $(XML_APIS_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/schema.jar -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl org.openoffice.helper.PrettyPrinter $(@:d)$*.tmp $@
-+ $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/cfgimport.jar -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser $(XERCES_HELPER) com.jclark.xsl.sax.Driver $< $(XSLDIR)$/alllang.xsl $(@:d)$*.tmp xcs=$(XCSROOT)$/registry$/schema$/$(PACKAGEDIR)$/$*.xcs schemaRoot=$(XCSROOT)$/registry$/schema locale={$(subst,$/$(PACKAGEDIR)$/$(@:f), $(subst,$(PROCESSOUT)$/registry$/res$/, $@))}
-+ $(JAVAI) $(JAVACPS) $(XML_APIS_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/schema.jar -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl $(XERCES_HELPER) org.openoffice.helper.PrettyPrinter $(@:d)$*.tmp $@
- .ELSE
- $(XSLTPROC) -o $(@:d)$*.tmp \
- --stringparam xcs $(XCSROOT)$/registry$/schema$/$(PACKAGEDIR)$/$*.xcs \
-@@ -210,8 +217,8 @@
- @+echo -------------+ creating a module file
- -$(MKDIRHIER) $(@:d)
- .IF "$(XSLTPROC)"=="NO_XSLTPROC"
-- $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/cfgimport.jar -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser com.jclark.xsl.sax.Driver $< $(XSLDIR)$/alllang.xsl $(@:d)$(@:f:s/.xcu/.tmp/) xcs=$(XCSROOT)$/registry$/schema$/$(PACKAGEDIR)$/$(<:b).xcs schemaRoot=$(XCSROOT)$/registry$/schema module={$(subst,$(<:b)-, $(*))}
-- $(JAVAI) $(JAVACPS) $(XML_APIS_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/schema.jar -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl org.openoffice.helper.PrettyPrinter $(@:d)$(@:f:s/.xcu/.tmp/) $@
-+ $(JAVAI) $(JAVACPS) $(XT_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/cfgimport.jar -Dcom.jclark.xsl.sax.parser=org.apache.xerces.parsers.SAXParser $(XERCES_HELPER) com.jclark.xsl.sax.Driver $< $(XSLDIR)$/alllang.xsl $(@:d)$(@:f:s/.xcu/.tmp/) xcs=$(XCSROOT)$/registry$/schema$/$(PACKAGEDIR)$/$(<:b).xcs schemaRoot=$(XCSROOT)$/registry$/schema module={$(subst,$(<:b)-, $(*))}
-+ $(JAVAI) $(JAVACPS) $(XML_APIS_JAR)$(PATH_SEPERATOR)$(XERCES_JAR)$(PATH_SEPERATOR)$(PROCESSORDIR)$/schema.jar -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl $(XERCES_HELPER) org.openoffice.helper.PrettyPrinter $(@:d)$(@:f:s/.xcu/.tmp/) $@
- .ELSE
- $(XSLTPROC) -o $(@:d)$(@:f:s/.xcu/.tmp/) \
- --stringparam xcs $(XCSROOT)$/registry$/schema$/$(PACKAGEDIR)$/$(<:b).xcs \
diff --git a/patches/src680/config_office-dbus-check.diff b/patches/src680/config_office-dbus-check.diff
new file mode 100644
index 000000000..f73a6442a
--- /dev/null
+++ b/patches/src680/config_office-dbus-check.diff
@@ -0,0 +1,11 @@
+diff -rup ../src680-m165-orig/config_office/configure.in config_office/configure.in
+--- ../src680-m165-orig/config_office/configure.in 2006-05-25 10:56:39.000000000 +0200
++++ config_office/configure.in 2006-05-25 11:08:26.000000000 +0200
+@@ -4264,6 +4320,7 @@ if test "$test_gtk" = "yes"; then
+
+ if test "$ENABLE_GTK" = "TRUE" ; then
+ PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.4)
++ PKG_CHECK_MODULES(DBUSGLIB, dbus-glib-1 >= 0.60)
+ PKG_CHECK_MODULES(GDKPIXBUF, gdk-pixbuf-xlib-2.0 >= 2.2)
+ GTK_CFLAGS="$GTK_CFLAGS $GDKPIXBUF_CFLAGS"
+ GTK_LIBS="$GTK_LIBS $GDKPIXBUF_LIBS"
diff --git a/patches/src680/crash-menu-escape.diff b/patches/src680/crash-menu-escape.diff
new file mode 100644
index 000000000..37c28ba20
--- /dev/null
+++ b/patches/src680/crash-menu-escape.diff
@@ -0,0 +1,13 @@
+diff -u -p -u -r1.132 menu.cxx
+--- vcl/source/window/menu.cxx 26 Jan 2006 18:10:24 -0000 1.132
++++ vcl/source/window/menu.cxx 23 May 2006 13:45:40 -0000
+@@ -4406,7 +4466,8 @@ void MenuFloatingWindow::KeyInput( const
+ MenuFloatingWindow* pFloat = pPopupMenu->ImplGetFloatingWindow();
+ pFloat->GrabFocus();
+ pFloat->KillActivePopup();
+- pPopupMenu->pStartedFrom->ImplCallHighlight(pFloat->nHighlightedItem);
++ if (pPopupMenu->pStartedFrom)
++ pPopupMenu->pStartedFrom->ImplCallHighlight(pFloat->nHighlightedItem);
+ }
+ }
+ break;
diff --git a/patches/src680/cws-ab19.diff b/patches/src680/cws-ab19.diff
new file mode 100644
index 000000000..b78564b35
--- /dev/null
+++ b/patches/src680/cws-ab19.diff
@@ -0,0 +1,411 @@
+Index: basic/source/classes/sb.cxx
+===================================================================
+RCS file: /cvs/script/basic/source/classes/sb.cxx,v
+retrieving revision 1.26
+retrieving revision 1.23.40.3
+diff -u -p -r1.26 -r1.23.40.3
+--- basic/source/classes/sb.cxx 29 Sep 2005 16:10:50 -0000 1.26
++++ basic/source/classes/sb.cxx 21 Mar 2006 12:55:13 -0000 1.23.40.3
+@@ -1243,13 +1243,15 @@ void StarBASIC::MakeErrorText( SbError n
+ }
+ GetSbData()->aErrMsg = aMsg1;
+ }
+- else
++ else if( nOldID != 0 )
+ {
+ String aStdMsg( RTL_CONSTASCII_USTRINGPARAM("Fehler ") );
+ aStdMsg += String::CreateFromInt32( nOldID);
+ aStdMsg += String( RTL_CONSTASCII_USTRINGPARAM(": Kein Fehlertext verfuegbar!") );
+ GetSbData()->aErrMsg = aStdMsg;
+ }
++ else
++ GetSbData()->aErrMsg = String::EmptyString();
+ }
+
+ BOOL StarBASIC::CError
+Index: basic/source/classes/sbxmod.cxx
+===================================================================
+RCS file: /cvs/script/basic/source/classes/sbxmod.cxx,v
+retrieving revision 1.27
+retrieving revision 1.22.40.3
+diff -u -p -r1.27 -r1.22.40.3
+--- basic/source/classes/sbxmod.cxx 29 Sep 2005 18:38:55 -0000 1.27
++++ basic/source/classes/sbxmod.cxx 3 Mar 2006 10:37:39 -0000 1.22.40.3
+@@ -1441,6 +1441,8 @@ BOOL SimpleTokenizer_Impl::getNextToken(
+ // Zahl?
+ else if( testCharFlags( c, CHAR_START_NUMBER ) == TRUE )
+ {
++ reType = TT_NUMBER;
++
+ // Buffer-Position initialisieren
+ int nPos = 0;
+
+@@ -1448,22 +1450,21 @@ BOOL SimpleTokenizer_Impl::getNextToken(
+ int nRadix = 10;
+
+ // Ist es eine Hex- oder Oct-Zahl?
+- if( c == '0' )
++ if( c == '&' )
+ {
+ // Octal?
+- // Java-Script geht von einem Octal-Wert aus, wenn nach 0 eine
+- // Ziffer im oktalen Ziffernbereich folgt
+- if( testCharFlags( peekChar(), CHAR_IN_OCT_NUMBER ) )
++ if( peekChar() == 'o' || peekChar() == 'O' )
+ {
++ // o entfernen
++ getChar();
+ nRadix = 8; // Octal-Basis
+
+ // Alle Ziffern einlesen
+ while( testCharFlags( peekChar(), CHAR_IN_OCT_NUMBER ) )
+ c = getChar();
+ }
+-
+- // Dementsprechend wird bei 0x Hex geparsed
+- else if( peekChar() == 'x' || peekChar() == 'X' )
++ // Hex?
++ else if( peekChar() == 'h' || peekChar() == 'H' )
+ {
+ // x entfernen
+ getChar();
+@@ -1473,10 +1474,14 @@ BOOL SimpleTokenizer_Impl::getNextToken(
+ while( testCharFlags( peekChar(), CHAR_IN_HEX_NUMBER ) )
+ c = getChar();
+ }
++ else
++ {
++ reType = TT_OPERATOR;
++ }
+ }
+
+ // Wenn nicht Oct oder Hex als double ansehen
+- if( nRadix == 10 )
++ if( reType == TT_NUMBER && nRadix == 10 )
+ {
+ // Flag, ob das letzte Zeichen ein Exponent war
+ BOOL bAfterExpChar = FALSE;
+@@ -1492,7 +1497,7 @@ BOOL SimpleTokenizer_Impl::getNextToken(
+ }
+ }
+
+- reType = TT_NUMBER;
++ // reType = TT_NUMBER;
+ }
+
+ // String?
+@@ -1500,6 +1505,8 @@ BOOL SimpleTokenizer_Impl::getNextToken(
+ {
+ // Merken, welches Zeichen den String eroeffnet hat
+ sal_Unicode cEndString = c;
++ if( c == '[' )
++ cEndString = ']';
+
+ // Alle Ziffern einlesen und puffern
+ while( peekChar() != cEndString )
+@@ -1524,7 +1531,10 @@ BOOL SimpleTokenizer_Impl::getNextToken(
+ if( reType != TT_ERROR )
+ {
+ getChar();
+- reType = TT_STRING;
++ if( cEndString == ']' )
++ reType = TT_IDENTIFIER;
++ else
++ reType = TT_STRING;
+ }
+ }
+
+@@ -1610,9 +1620,10 @@ SimpleTokenizer_Impl::SimpleTokenizer_Im
+ aCharTypeTab[i] |= nHelpMask;
+
+ // e und E sowie . von Hand ergaenzen
+- aCharTypeTab['e'] |= CHAR_IN_NUMBER;
+- aCharTypeTab['E'] |= CHAR_IN_NUMBER;
+- aCharTypeTab['.'] |= (USHORT)( CHAR_IN_NUMBER | CHAR_START_NUMBER );
++ aCharTypeTab['e'] |= CHAR_IN_NUMBER;
++ aCharTypeTab['E'] |= CHAR_IN_NUMBER;
++ aCharTypeTab['.'] |= (USHORT)( CHAR_IN_NUMBER | CHAR_START_NUMBER );
++ aCharTypeTab['&'] |= CHAR_START_NUMBER;
+
+ // Hex-Ziffern
+ for( i = 'a' ; i <= 'f' ; i++ )
+@@ -1627,11 +1638,12 @@ SimpleTokenizer_Impl::SimpleTokenizer_Im
+ // String-Beginn/End-Zeichen
+ aCharTypeTab['\''] |= CHAR_START_STRING;
+ aCharTypeTab['\"'] |= CHAR_START_STRING;
++ aCharTypeTab['['] |= CHAR_START_STRING;
+
+ // Operator-Zeichen
+ aCharTypeTab['!'] |= CHAR_OPERATOR;
+ aCharTypeTab['%'] |= CHAR_OPERATOR;
+- aCharTypeTab['&'] |= CHAR_OPERATOR;
++ // aCharTypeTab['&'] |= CHAR_OPERATOR; Removed because of #i14140
+ aCharTypeTab['('] |= CHAR_OPERATOR;
+ aCharTypeTab[')'] |= CHAR_OPERATOR;
+ aCharTypeTab['*'] |= CHAR_OPERATOR;
+@@ -1649,7 +1661,7 @@ SimpleTokenizer_Impl::SimpleTokenizer_Im
+ aCharTypeTab['~'] |= CHAR_OPERATOR;
+ aCharTypeTab['{'] |= CHAR_OPERATOR;
+ aCharTypeTab['}'] |= CHAR_OPERATOR;
+- aCharTypeTab['['] |= CHAR_OPERATOR;
++ // aCharTypeTab['['] |= CHAR_OPERATOR; Removed because of #i17826
+ aCharTypeTab[']'] |= CHAR_OPERATOR;
+ aCharTypeTab[';'] |= CHAR_OPERATOR;
+
+cvs diff: Diffing basic/source/comp
+Index: basic/source/comp/exprtree.cxx
+===================================================================
+RCS file: /cvs/script/basic/source/comp/exprtree.cxx,v
+retrieving revision 1.12
+retrieving revision 1.7.40.2
+diff -u -p -r1.12 -r1.7.40.2
+--- basic/source/comp/exprtree.cxx 9 Feb 2006 12:47:18 -0000 1.12
++++ basic/source/comp/exprtree.cxx 3 Mar 2006 10:38:37 -0000 1.7.40.2
+@@ -284,8 +284,7 @@ SbiExprNode* SbiExpression::Term()
+ // (Wobei 0 Parameter () entsprechen)
+ if( pDef->GetDims() )
+ {
+- if( !pPar
+- || ( pPar->GetSize() && pPar->GetSize() != pDef->GetDims() ) )
++ if( pPar && pPar->GetSize() && pPar->GetSize() != pDef->GetDims() )
+ pParser->Error( SbERR_WRONG_DIMS );
+ }
+ if( pDef->IsDefinedAs() )
+Index: basic/source/comp/loops.cxx
+===================================================================
+RCS file: /cvs/script/basic/source/comp/loops.cxx,v
+retrieving revision 1.7
+retrieving revision 1.3.48.3
+diff -u -p -r1.7 -r1.3.48.3
+--- basic/source/comp/loops.cxx 29 Sep 2005 18:40:22 -0000 1.7
++++ basic/source/comp/loops.cxx 3 Mar 2006 10:38:53 -0000 1.3.48.3
+@@ -57,11 +57,11 @@ void SbiParser::If()
+
+ // multiline IF
+ nEndLbl = aGen.Gen( _JUMPF, 0 );
+- while( !bAbort && Parse() )
++ eTok = Peek();
++ while( !( eTok == ELSEIF || eTok == ELSE || eTok == ENDIF ) &&
++ !bAbort && Parse() )
+ {
+ eTok = Peek();
+- if( eTok == ELSEIF || eTok == ELSE || eTok == ENDIF )
+- break;
+ if( IsEof() )
+ {
+ Error( SbERR_BAD_BLOCK, IF ); bAbort = TRUE; return;
+@@ -79,16 +79,18 @@ void SbiParser::If()
+
+ Next();
+ aGen.BackChain( nEndLbl );
++
++ aGen.Statement();
+ SbiExpression* pCond = new SbiExpression( this );
+ pCond->Gen();
+ nEndLbl = aGen.Gen( _JUMPF, 0 );
+ delete pCond;
+ TestToken( THEN );
+- while( !bAbort && Parse() )
++ eTok = Peek();
++ while( !( eTok == ELSEIF || eTok == ELSE || eTok == ENDIF ) &&
++ !bAbort && Parse() )
+ {
+ eTok = Peek();
+- if( eTok == ELSEIF || eTok == ELSE || eTok == ENDIF )
+- break;
+ if( IsEof() )
+ {
+ Error( SbERR_BAD_BLOCK, ELSEIF ); bAbort = TRUE; return;
+@@ -101,6 +103,8 @@ void SbiParser::If()
+ USHORT nElseLbl = nEndLbl;
+ nEndLbl = aGen.Gen( _JUMP, 0 );
+ aGen.BackChain( nElseLbl );
++
++ aGen.Statement();
+ StmntBlock( ENDIF );
+ }
+ else if( eTok == ENDIF )
+Index: basic/source/comp/scanner.cxx
+===================================================================
+RCS file: /cvs/script/basic/source/comp/scanner.cxx,v
+retrieving revision 1.17
+retrieving revision 1.11.82.2
+diff -u -p -r1.17 -r1.11.82.2
+--- basic/source/comp/scanner.cxx 31 Jan 2006 18:30:17 -0000 1.17
++++ basic/source/comp/scanner.cxx 3 Mar 2006 10:39:30 -0000 1.11.82.2
+@@ -238,7 +238,10 @@ BOOL SbiScanner::NextSym()
+ // Abschliessendes '_' durch Space ersetzen, wenn Zeilenende folgt
+ // (sonst falsche Zeilenfortsetzung)
+ if( !bUsedForHilite && !*pLine && *(pLine-1) == '_' )
++ {
++ aSym.GetBufferAccess(); // #109693 force copy if necessary
+ *((sal_Unicode*)(pLine-1)) = ' '; // cast wegen const
++ }
+ // Typkennung?
+ // Das Ausrufezeichen bitte nicht testen, wenn
+ // danach noch ein Symbol anschliesst
+Index: basic/source/runtime/inputbox.cxx
+===================================================================
+RCS file: /cvs/script/basic/source/runtime/inputbox.cxx,v
+retrieving revision 1.6
+retrieving revision 1.5.40.2
+diff -u -p -r1.6 -r1.5.40.2
+--- basic/source/runtime/inputbox.cxx 7 Sep 2005 21:39:07 -0000 1.6
++++ basic/source/runtime/inputbox.cxx 3 Mar 2006 10:45:10 -0000 1.5.40.2
+@@ -179,9 +179,9 @@ RTLFUNC(InputBox)
+ String aDefault;
+ INT32 nX = -1, nY = -1; // zentrieren
+ const String& rPrompt = rPar.Get(1)->GetString();
+- if ( nArgCount > 2 )
++ if ( nArgCount > 2 && !rPar.Get(2)->IsErr() )
+ aTitle = rPar.Get(2)->GetString();
+- if ( nArgCount > 3 )
++ if ( nArgCount > 3 && !rPar.Get(3)->IsErr() )
+ aDefault = rPar.Get(3)->GetString();
+ if ( nArgCount > 4 )
+ {
+Index: basic/source/runtime/methods.cxx
+===================================================================
+RCS file: /cvs/script/basic/source/runtime/methods.cxx,v
+retrieving revision 1.64
+retrieving revision 1.61.38.2
+diff -u -p -r1.64 -r1.61.38.2
+--- basic/source/runtime/methods.cxx 14 Dec 2005 14:35:50 -0000 1.64
++++ basic/source/runtime/methods.cxx 3 Mar 2006 10:45:40 -0000 1.61.38.2
+@@ -3548,18 +3548,39 @@ RTLFUNC(RGB)
+
+ RTLFUNC(QBColor)
+ {
++ static const INT32 pRGB[] =
++ {
++ 0x000000,
++ 0x800000,
++ 0x008000,
++ 0x808000,
++ 0x000080,
++ 0x800080,
++ 0x008080,
++ 0xC0C0C0,
++ 0x808080,
++ 0xFF0000,
++ 0x00FF00,
++ 0xFFFF00,
++ 0x0000FF,
++ 0xFF00FF,
++ 0x00FFFF,
++ 0xFFFFFF,
++ };
++
+ if ( rPar.Count() != 2 )
+ {
+ StarBASIC::Error( SbERR_BAD_ARGUMENT );
+ return;
+ }
+-
+- Color aCol( (ColorData)rPar.Get(1)->GetInteger() );
+-
+- ULONG nRed = aCol.GetRed() >> 8;
+- ULONG nGreen = aCol.GetGreen() >> 8;
+- ULONG nBlue = aCol.GetBlue() >> 8;
+- ULONG nRGB = (nRed << 16) | (nGreen << 8) | nBlue;
++
++ INT16 nCol = rPar.Get(1)->GetInteger();
++ if( nCol < 0 || nCol > 15 )
++ {
++ StarBASIC::Error( SbERR_BAD_ARGUMENT );
++ return;
++ }
++ INT32 nRGB = pRGB[ nCol ];
+ rPar.Get(0)->PutLong( nRGB );
+ }
+
+Index: basic/source/runtime/methods1.cxx
+===================================================================
+RCS file: /cvs/script/basic/source/runtime/methods1.cxx,v
+retrieving revision 1.24
+retrieving revision 1.22.40.3
+diff -u -p -r1.24 -r1.22.40.3
+--- basic/source/runtime/methods1.cxx 14 Dec 2005 14:36:04 -0000 1.24
++++ basic/source/runtime/methods1.cxx 3 Mar 2006 10:45:48 -0000 1.22.40.3
+@@ -604,7 +604,12 @@ RTLFUNC(Array)
+
+ // Parameter ins Array uebernehmen
+ for( short i = 0 ; i < nArraySize ; i++ )
+- pArray->Put( rPar.Get(i+1), &i );
++ {
++ SbxVariable* pVar = rPar.Get(i+1);
++ SbxVariable* pNew = new SbxVariable( *pVar );
++ pNew->SetFlag( SBX_WRITE );
++ pArray->Put( pNew, &i );
++ }
+
+ // Array zurueckliefern
+ SbxVariableRef refVar = rPar.Get(0);
+@@ -1473,6 +1478,7 @@ RTLFUNC(Split)
+ else
+ {
+ vRet.push_back( aExpression );
++ nArraySize = 1;
+ }
+ }
+
+Index: basic/source/runtime/step2.cxx
+===================================================================
+RCS file: /cvs/script/basic/source/runtime/step2.cxx,v
+retrieving revision 1.18
+retrieving revision 1.17.40.2
+diff -u -p -r1.18 -r1.17.40.2
+--- basic/source/runtime/step2.cxx 7 Sep 2005 21:42:41 -0000 1.18
++++ basic/source/runtime/step2.cxx 3 Mar 2006 10:47:14 -0000 1.17.40.2
+@@ -579,17 +579,19 @@ void SbiRuntime::StepPARAM( USHORT nOp1,
+
+ // #57915 Missing sauberer loesen
+ USHORT nParamCount = refParams->Count();
+- // Wurden ueberhaupt genug Parameter uebergeben
+ if( i >= nParamCount )
+ {
+- p = new SbxVariable();
+- p->PutErr( 448 ); // Wie in VB: Error-Code 448 (SbERR_NAMED_NOT_FOUND)
+- refParams->Put( p, i );
+- }
+- else
+- {
+- p = refParams->Get( i );
++ INT16 iLoop = i;
++ while( iLoop >= nParamCount )
++ {
++ p = new SbxVariable();
++ p->PutErr( 448 ); // Wie in VB: Error-Code 448 (SbERR_NAMED_NOT_FOUND)
++ refParams->Put( p, iLoop );
++ iLoop--;
++ }
+ }
++ p = refParams->Get( i );
++
+ if( p->GetType() == SbxERROR && ( i ) )
+ //if( p->GetType() == SbxEMPTY && ( i ) )
+ {
+Index: basctl/source/basicide/baside2b.cxx
+===================================================================
+RCS file: /cvs/script/basctl/source/basicide/baside2b.cxx,v
+retrieving revision 1.51
+retrieving revision 1.48.30.2
+diff -u -p -r1.51 -r1.48.30.2
+--- basctl/source/basicide/baside2b.cxx 31 Jan 2006 18:32:49 -0000 1.51
++++ basctl/source/basicide/baside2b.cxx 3 Mar 2006 10:58:52 -0000 1.48.30.2
+@@ -1861,7 +1861,6 @@ void WatchTreeListBox::RequestingChilds(
+ WatchItem* pChildItem = new WatchItem();
+ pChildItem->maName = aName;
+ pChildEntry->SetUserData( pChildItem );
+- MakeVisible( pChildEntry );
+ }
+ if( nPropCount > 0 )
+ {
+@@ -1914,7 +1913,6 @@ void WatchTreeListBox::RequestingChilds(
+ SvLBoxEntry* pChildEntry = SvTreeListBox::InsertEntry( aDisplayName, pEntry );
+ nElementCount++;
+ pChildEntry->SetUserData( pChildItem );
+- MakeVisible( pChildEntry );
+ }
+ if( nElementCount > 0 )
+ {
diff --git a/patches/src680/cws-atkbridge-20060306.diff b/patches/src680/cws-atkbridge-20060425.diff
index e96af9674..ae7a6c534 100644
--- a/patches/src680/cws-atkbridge-20060306.diff
+++ b/patches/src680/cws-atkbridge-20060425.diff
@@ -209,6 +209,47 @@ diff -u -p -r1.17 -r1.16.72.2
rStateSet.AddState( AccessibleStateType::VISIBLE );
+Index: svtools/source/Accessibility/accessibletablistboxtable.cxx
+===================================================================
+RCS file: /cvs/util/svtools/source/Accessibility/accessibletablistboxtable.cxx,v
+retrieving revision 1.8
+retrieving revision 1.8.14.1
+diff -u -p -r1.8 -r1.8.14.1
+--- svtools/source/Accessibility/accessibletablistboxtable.cxx 6 Feb 2006 12:56:48 -0000 1.8
++++ svtools/source/Accessibility/accessibletablistboxtable.cxx 9 Mar 2006 12:01:53 -0000 1.8.14.1
+@@ -106,8 +106,9 @@ namespace svt
+ {
+ if ( isAlive() )
+ {
+- switch ( rVclWindowEvent.GetId() )
+- {
++ ULONG nEventId = rVclWindowEvent.GetId();
++ switch ( nEventId )
++ {
+ case VCLEVENT_OBJECT_DYING :
+ {
+ m_pTabListBox->RemoveEventListener( LINK( this, AccessibleTabListBoxTable, WindowEventListener ) );
+@@ -115,7 +116,19 @@ namespace svt
+ break;
+ }
+
+- case VCLEVENT_LISTBOX_SELECT :
++ case VCLEVENT_CONTROL_GETFOCUS :
++ case VCLEVENT_CONTROL_LOSEFOCUS :
++ {
++ uno::Any aOldValue, aNewValue;
++ if ( VCLEVENT_CONTROL_GETFOCUS == nEventId )
++ aNewValue <<= AccessibleStateType::FOCUSED;
++ else
++ aOldValue <<= AccessibleStateType::FOCUSED;
++ commitEvent( AccessibleEventId::STATE_CHANGED, aNewValue, aOldValue );
++ break;
++ }
++
++ case VCLEVENT_LISTBOX_SELECT :
+ {
+ // First send an event that tells the listeners of a
+ // modified selection. The active descendant event is
cvs diff: Diffing svtools/source/brwbox
Index: svtools/source/brwbox/brwbox3.cxx
===================================================================
@@ -334,12 +375,10 @@ cvs diff: Diffing svtools/unx/source
cvs diff: Diffing svtools/unx/source/svdde
cvs diff: Diffing svtools/util
cvs diff: Diffing svtools/util/defs
-Index: toolkit/source/awt/accessiblemenubasecomponent.cxx
+Index: svtools/util/defs/wntmsci7
===================================================================
-RCS file: /cvs/gsl/toolkit/source/awt/accessiblemenubasecomponent.cxx,v
-retrieving revision 1.21
-retrieving revision 1.21.30.1
-diff -u -p -r1.21 -r1.21.30.1
+RCS file: svtools/util/defs/wntmsci7
+diff -N svtools/util/defs/wntmsci7
--- toolkit/source/awt/accessiblemenubasecomponent.cxx 9 Sep 2005 13:01:15 -0000 1.21
+++ toolkit/source/awt/accessiblemenubasecomponent.cxx 5 Dec 2005 14:27:11 -0000 1.21.30.1
@@ -196,13 +196,20 @@ void OAccessibleMenuBaseComponent::SetEn
@@ -562,11 +601,11 @@ diff -u -p -r1.39 -r1.38.32.2
Index: toolkit/source/awt/vclxwindow.cxx
===================================================================
RCS file: /cvs/gsl/toolkit/source/awt/vclxwindow.cxx,v
-retrieving revision 1.57
-retrieving revision 1.57.10.1
-diff -u -p -r1.57 -r1.57.10.1
---- toolkit/source/awt/vclxwindow.cxx 6 Feb 2006 13:00:26 -0000 1.57
-+++ toolkit/source/awt/vclxwindow.cxx 17 Feb 2006 11:13:21 -0000 1.57.10.1
+retrieving revision 1.58
+retrieving revision 1.57.10.2
+diff -u -p -r1.58 -r1.57.10.2
+--- toolkit/source/awt/vclxwindow.cxx 14 Mar 2006 10:53:33 -0000 1.58
++++ toolkit/source/awt/vclxwindow.cxx 22 Mar 2006 09:36:46 -0000 1.57.10.2
@@ -88,6 +88,9 @@
#ifndef _TOOLKIT_AWT_VCLXACCESSIBLETABPAGEWINDOW_HXX_
#include <toolkit/awt/vclxaccessibletabpagewindow.hxx>
@@ -593,7 +632,7 @@ diff -u -p -r1.57 -r1.57.10.1
//#define SYNCHRON_NOTIFICATION
// define this for notifying mouse events synchronously when they happen
// disadvantage: potential of deadlocks, since this means that the
-@@ -876,47 +882,51 @@ void VCLXWindow::ProcessWindowEvent( con
+@@ -924,47 +930,51 @@ void VCLXWindow::ProcessWindowEvent( con
}
}
@@ -687,12 +726,64 @@ cvs diff: Diffing toolkit/test/accessibility/ov
cvs diff: Diffing toolkit/test/accessibility/tools
cvs diff: Diffing toolkit/util
cvs diff: Diffing toolkit/util/defs
-Index: svx/source/accessibility/AccessibleContextBase.cxx
+Index: toolkit/util/defs/wntmsci7
===================================================================
-RCS file: /cvs/graphics/svx/source/accessibility/AccessibleContextBase.cxx,v
-retrieving revision 1.21
-retrieving revision 1.21.172.1
-diff -u -p -r1.21 -r1.21.172.1
+RCS file: toolkit/util/defs/wntmsci7
+diff -N toolkit/util/defs/wntmsci7
+--- sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx 6 Apr 2006 16:26:52 -0000 1.22
++++ sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx 13 Apr 2006 09:51:26 -0000 1.21.14.2
+@@ -111,7 +111,7 @@ SlideSorterViewShell::SlideSorterViewShe
+ pWindow->SetUseDropScroll (false);
+ // Change the winbits so that the active window accepts the focus.
+ pWindow->SetStyle ((pWindow->GetStyle() & ~WB_DIALOGCONTROL) | WB_TABSTOP);
+- pWindow->Show();
++ pWindow->Hide();
+
+
+ SetPool( &GetDoc()->GetPool() );
+@@ -268,6 +268,8 @@ void SlideSorterViewShell::CreateModelVi
+ DBG_ASSERT (mpSlideSorterView.get()!=NULL,
+ "Can not create view for slide browser");
+
++ mpView = mpSlideSorterView.get();
++
+ mpSlideSorterController
+ = ::std::auto_ptr<controller::SlideSorterController>(
+ CreateController());
+cvs diff: Diffing sd/source/ui/slidesorter/view
+cvs diff: Diffing sd/source/ui/toolpanel
+cvs diff: Diffing sd/source/ui/toolpanel/controls
+cvs diff: Diffing sd/source/ui/tools
+cvs diff: Diffing sd/source/ui/unoidl
+cvs diff: Diffing sd/source/ui/view
+cvs diff: Diffing sd/source/unotypes
+cvs diff: Diffing sd/uiconfig
+cvs diff: Diffing sd/uiconfig/sdraw
+cvs diff: Diffing sd/uiconfig/sdraw/accelerator
+cvs diff: Diffing sd/uiconfig/sdraw/accelerator/de
+cvs diff: Diffing sd/uiconfig/sdraw/accelerator/en-GB
+cvs diff: Diffing sd/uiconfig/sdraw/accelerator/en-US
+cvs diff: Diffing sd/uiconfig/sdraw/accelerator/es
+cvs diff: Diffing sd/uiconfig/sdraw/accelerator/fr
+cvs diff: Diffing sd/uiconfig/sdraw/menubar
+cvs diff: Diffing sd/uiconfig/sdraw/statusbar
+cvs diff: Diffing sd/uiconfig/sdraw/toolbar
+cvs diff: Diffing sd/uiconfig/simpress
+cvs diff: Diffing sd/uiconfig/simpress/accelerator
+cvs diff: Diffing sd/uiconfig/simpress/accelerator/de
+cvs diff: Diffing sd/uiconfig/simpress/accelerator/en-GB
+cvs diff: Diffing sd/uiconfig/simpress/accelerator/en-US
+cvs diff: Diffing sd/uiconfig/simpress/accelerator/es
+cvs diff: Diffing sd/uiconfig/simpress/accelerator/fr
+cvs diff: Diffing sd/uiconfig/simpress/menubar
+cvs diff: Diffing sd/uiconfig/simpress/statusbar
+cvs diff: Diffing sd/uiconfig/simpress/toolbar
+cvs diff: Diffing sd/util
+cvs diff: Diffing sd/util/defs
+Index: sd/util/defs/wntmsci8
+===================================================================
+RCS file: sd/util/defs/wntmsci8
+diff -N sd/util/defs/wntmsci8
--- svx/source/accessibility/AccessibleContextBase.cxx 8 Sep 2005 20:13:15 -0000 1.21
+++ svx/source/accessibility/AccessibleContextBase.cxx 6 Dec 2005 11:51:38 -0000 1.21.172.1
@@ -108,6 +108,7 @@ AccessibleContextBase::AccessibleContext
@@ -770,6 +861,78 @@ diff -u -p -r1.17 -r1.17.172.1
}
catch( const uno::Exception& ) {}
}
+Index: svx/source/accessibility/ChildrenManagerImpl.cxx
+===================================================================
+RCS file: /cvs/graphics/svx/source/accessibility/ChildrenManagerImpl.cxx,v
+retrieving revision 1.33
+retrieving revision 1.33.172.1
+diff -u -p -r1.33 -r1.33.172.1
+--- svx/source/accessibility/ChildrenManagerImpl.cxx 8 Sep 2005 20:20:26 -0000 1.33
++++ svx/source/accessibility/ChildrenManagerImpl.cxx 30 Mar 2006 08:27:45 -0000 1.33.172.1
+@@ -537,34 +537,45 @@ void ChildrenManagerImpl::AddAccessibleS
+
+ void ChildrenManagerImpl::ClearAccessibleShapeList (void)
+ {
++ // Copy the list of (visible) shapes to local lists and clear the
++ // originals.
++ ChildDescriptorListType aLocalVisibleChildren;
++ aLocalVisibleChildren.swap(maVisibleChildren);
++ AccessibleShapeList aLocalAccessibleShapes;
++ aLocalAccessibleShapes.swap(maAccessibleShapes);
++
++ // Tell the listeners that all children are gone.
++ mrContext.CommitChange (
++ AccessibleEventId::INVALIDATE_ALL_CHILDREN,
++ uno::Any(),
++ uno::Any());
++
++ // There are no accessible shapes left so the index assigned to new
++ // accessible shapes can be reset.
++ mnNewNameIndex = 1;
++
++ // Now the objects in the local lists can be safely disposed without
++ // having problems with callers that want to update their child lists.
++
+ // Clear the list of visible accessible objects. Objects not created on
+ // demand for XShapes are treated below.
+- ChildDescriptorListType::iterator I,aEnd = maVisibleChildren.end();
+- for (I=maVisibleChildren.begin(); I != aEnd; ++I)
++ ChildDescriptorListType::iterator I,aEnd = aLocalVisibleChildren.end();
++ for (I=aLocalVisibleChildren.begin(); I != aEnd; ++I)
+ if ( I->mxAccessibleShape.is() && I->mxShape.is() )
+- I->disposeAccessibleObject(mrContext);
+-
+- maVisibleChildren.clear ();
+-
++ {
++ ::comphelper::disposeComponent(I->mxAccessibleShape);
++ I->mxAccessibleShape = NULL;
++ }
+
+ // Dispose all objects in the accessible shape list.
+- AccessibleShapeList::iterator J,aEnd2 = maAccessibleShapes.end();
+- for (J=maAccessibleShapes.begin(); J != aEnd2; ++J)
++ AccessibleShapeList::iterator J,aEnd2 = aLocalAccessibleShapes.end();
++ for (J=aLocalAccessibleShapes.begin(); J != aEnd2; ++J)
+ if (J->is())
+ {
+- mrContext.CommitChange (
+- AccessibleEventId::CHILD,
+- uno::Any(),
+- uno::makeAny (*J));
+-
+ // Dispose the object.
+ ::comphelper::disposeComponent(*J);
++ *J = NULL;
+ }
+- maAccessibleShapes.clear ();
+-
+- // Now that no accessible shapes remain we can reset the index assigned
+- // to new accessible shapes.
+- mnNewNameIndex = 1;
+ }
+
+
Index: svx/source/accessibility/GraphCtlAccessibleContext.cxx
===================================================================
RCS file: /cvs/graphics/svx/source/accessibility/GraphCtlAccessibleContext.cxx,v
@@ -885,12 +1048,10 @@ cvs diff: Diffing svx/uiconfig/accelerator/en-US
cvs diff: Diffing svx/uiconfig/accelerator/es
cvs diff: Diffing svx/util
cvs diff: Diffing svx/util/defs
-Index: comphelper/source/misc/accessiblewrapper.cxx
+Index: svx/util/defs/wntmsci7
===================================================================
-RCS file: /cvs/util/comphelper/source/misc/accessiblewrapper.cxx,v
-retrieving revision 1.9
-retrieving revision 1.8.156.3
-diff -u -p -r1.9 -r1.8.156.3
+RCS file: svx/util/defs/wntmsci7
+diff -N svx/util/defs/wntmsci7
--- comphelper/source/misc/accessiblewrapper.cxx 8 Sep 2005 02:48:04 -0000 1.9
+++ comphelper/source/misc/accessiblewrapper.cxx 1 Mar 2006 12:12:20 -0000 1.8.156.3
@@ -151,6 +151,12 @@ namespace comphelper
@@ -912,12 +1073,10 @@ cvs diff: Diffing comphelper/source/property
cvs diff: Diffing comphelper/source/streaming
cvs diff: Diffing comphelper/util
cvs diff: Diffing comphelper/util/defs
-Index: vcl/inc/menu.hxx
+Index: comphelper/util/defs/wntmsci7
===================================================================
-RCS file: /cvs/gsl/vcl/inc/menu.hxx,v
-retrieving revision 1.35
-retrieving revision 1.35.12.1
-diff -u -p -r1.35 -r1.35.12.1
+RCS file: comphelper/util/defs/wntmsci7
+diff -N comphelper/util/defs/wntmsci7
--- vcl/inc/menu.hxx 9 Sep 2005 11:09:19 -0000 1.35
+++ vcl/inc/menu.hxx 16 Nov 2005 15:57:55 -0000 1.35.12.1
@@ -379,6 +379,9 @@ public:
@@ -933,12 +1092,12 @@ diff -u -p -r1.35 -r1.35.12.1
Index: vcl/inc/svapp.hxx
===================================================================
RCS file: /cvs/gsl/vcl/inc/svapp.hxx,v
-retrieving revision 1.35
-retrieving revision 1.35.12.1
-diff -u -p -r1.35 -r1.35.12.1
---- vcl/inc/svapp.hxx 9 Sep 2005 11:29:11 -0000 1.35
-+++ vcl/inc/svapp.hxx 20 Oct 2005 07:07:01 -0000 1.35.12.1
-@@ -349,7 +349,7 @@ public:
+retrieving revision 1.36
+retrieving revision 1.35.12.2
+diff -u -p -r1.36 -r1.35.12.2
+--- vcl/inc/svapp.hxx 7 Apr 2006 15:28:31 -0000 1.36
++++ vcl/inc/svapp.hxx 13 Apr 2006 10:10:38 -0000 1.35.12.2
+@@ -348,7 +348,7 @@ public:
static void AddKeyListener( const Link& rKeyListener );
static void RemoveKeyListener( const Link& rKeyListener );
static void ImplCallEventListeners( ULONG nEvent, Window* pWin, void* pData );
@@ -981,12 +1140,12 @@ cvs diff: Diffing vcl/source/app
Index: vcl/source/app/svapp.cxx
===================================================================
RCS file: /cvs/gsl/vcl/source/app/svapp.cxx,v
-retrieving revision 1.61
-retrieving revision 1.58.10.7
-diff -u -p -r1.61 -r1.58.10.7
---- vcl/source/app/svapp.cxx 7 Feb 2006 10:21:10 -0000 1.61
-+++ vcl/source/app/svapp.cxx 16 Feb 2006 13:51:32 -0000 1.58.10.7
-@@ -867,7 +867,7 @@ void Application::ImplCallEventListeners
+retrieving revision 1.62
+retrieving revision 1.58.10.8
+diff -u -p -r1.62 -r1.58.10.8
+--- vcl/source/app/svapp.cxx 7 Apr 2006 15:29:41 -0000 1.62
++++ vcl/source/app/svapp.cxx 13 Apr 2006 10:11:31 -0000 1.58.10.8
+@@ -875,7 +875,7 @@ void Application::ImplCallEventListeners
// -----------------------------------------------------------------------
@@ -995,7 +1154,7 @@ diff -u -p -r1.61 -r1.58.10.7
{
ImplSVData* pSVData = ImplGetSVData();
-@@ -1227,7 +1227,7 @@ long Application::GetTopWindowCount()
+@@ -1235,7 +1235,7 @@ long Application::GetTopWindowCount()
{
long nRet = 0;
ImplSVData* pSVData = ImplGetSVData();
@@ -1004,7 +1163,7 @@ diff -u -p -r1.61 -r1.58.10.7
while( pWin )
{
if( pWin->ImplGetWindow()->IsTopWindow() )
-@@ -1243,7 +1243,7 @@ Window* Application::GetTopWindow( long
+@@ -1251,7 +1251,7 @@ Window* Application::GetTopWindow( long
{
long nIdx = 0;
ImplSVData* pSVData = ImplGetSVData();
@@ -1013,7 +1172,7 @@ diff -u -p -r1.61 -r1.58.10.7
while( pWin )
{
if( pWin->ImplGetWindow()->IsTopWindow() )
-@@ -1868,10 +1868,12 @@ BOOL Application::IsAccessibilityEnabled
+@@ -1876,10 +1876,12 @@ BOOL Application::IsAccessibilityEnabled
BOOL InitAccessBridge( BOOL bShowCancel, BOOL &rCancelled )
{
@@ -1028,7 +1187,7 @@ diff -u -p -r1.61 -r1.58.10.7
if( !bRet && bShowCancel && !rCancelled )
{
// disable accessibility if the user chooses to continue
-@@ -1881,7 +1883,7 @@ BOOL InitAccessBridge( BOOL bShowCancel,
+@@ -1889,7 +1891,7 @@ BOOL InitAccessBridge( BOOL bShowCancel,
aSettings.SetMiscSettings( aMisc );
Application::SetSettings( aSettings );
}
@@ -1048,12 +1207,12 @@ cvs diff: Diffing vcl/source/window
Index: vcl/source/window/menu.cxx
===================================================================
RCS file: /cvs/gsl/vcl/source/window/menu.cxx,v
-retrieving revision 1.132
-retrieving revision 1.127.12.6
-diff -u -p -r1.132 -r1.127.12.6
---- vcl/source/window/menu.cxx 26 Jan 2006 18:10:24 -0000 1.132
-+++ vcl/source/window/menu.cxx 30 Jan 2006 16:17:33 -0000 1.127.12.6
-@@ -577,7 +577,6 @@ public:
+retrieving revision 1.133
+retrieving revision 1.127.12.7
+diff -u -p -r1.133 -r1.127.12.7
+--- vcl/source/window/menu.cxx 7 Apr 2006 15:34:24 -0000 1.133
++++ vcl/source/window/menu.cxx 13 Apr 2006 10:14:51 -0000 1.127.12.7
+@@ -574,7 +574,6 @@ public:
USHORT GetPosInParent() const { return nPosInParent; }
virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
@@ -1061,7 +1220,7 @@ diff -u -p -r1.132 -r1.127.12.6
};
// To get the transparent mouse-over look, the closer is actually a toolbox
-@@ -1112,6 +1111,13 @@ void Menu::ImplCallEventListeners( ULONG
+@@ -1109,6 +1108,13 @@ void Menu::ImplCallEventListeners( ULONG
{
VclMenuEvent aEvent( this, nEvent, nPos );
@@ -1075,7 +1234,7 @@ diff -u -p -r1.132 -r1.127.12.6
if ( !maEventListeners.empty() )
maEventListeners.Call( &aEvent );
-@@ -2884,7 +2890,20 @@ BOOL Menu::GetSystemMenuData( SystemMenu
+@@ -2881,7 +2887,20 @@ BOOL Menu::GetSystemMenuData( SystemMenu
return FALSE;
}
@@ -1097,7 +1256,7 @@ diff -u -p -r1.132 -r1.127.12.6
// -----------
// - MenuBar -
-@@ -4406,9 +4425,11 @@ void MenuFloatingWindow::KeyInput( const
+@@ -4403,9 +4422,11 @@ void MenuFloatingWindow::KeyInput( const
else
{
StopExecute();
@@ -1110,7 +1269,7 @@ diff -u -p -r1.132 -r1.127.12.6
}
}
break;
-@@ -4622,18 +4643,12 @@ void MenuFloatingWindow::Command( const
+@@ -4619,18 +4640,12 @@ void MenuFloatingWindow::Command( const
{
::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > xAcc;
@@ -1196,8 +1355,8 @@ Index: vcl/unx/gtk/a11y/atkaction.cxx
RCS file: vcl/unx/gtk/a11y/atkaction.cxx
diff -N vcl/unx/gtk/a11y/atkaction.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atkaction.cxx 15 Feb 2006 10:59:20 -0000 1.1.2.7
-@@ -0,0 +1,287 @@
++++ vcl/unx/gtk/a11y/atkaction.cxx 31 Mar 2006 12:19:38 -0000 1.1.2.8
+@@ -0,0 +1,283 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
@@ -1315,8 +1474,7 @@ diff -N vcl/unx/gtk/a11y/atkaction.cxx
+}
+
+static G_CONST_RETURN gchar *
-+action_wrapper_get_description (AtkAction *action,
-+ gint i)
++action_wrapper_get_description (AtkAction *, gint)
+{
+ // GAIL implement this only for cells
+ g_warning( "Not implemented: get_description()" );
@@ -1324,8 +1482,7 @@ diff -N vcl/unx/gtk/a11y/atkaction.cxx
+}
+
+static G_CONST_RETURN gchar *
-+action_wrapper_get_localized_name (AtkAction *action,
-+ gint i)
++action_wrapper_get_localized_name (AtkAction *, gint)
+{
+ // GAIL doesn't implement this as well
+ g_warning( "Not implemented: get_localized_name()" );
@@ -1463,9 +1620,7 @@ diff -N vcl/unx/gtk/a11y/atkaction.cxx
+}
+
+static gboolean
-+action_wrapper_set_description (AtkAction *action,
-+ gint i,
-+ const gchar *desc)
++action_wrapper_set_description (AtkAction *, gint, const gchar *)
+{
+ return FALSE;
+}
@@ -1479,10 +1634,10 @@ diff -N vcl/unx/gtk/a11y/atkaction.cxx
+
+ iface->do_action = action_wrapper_do_action;
+ iface->get_n_actions = action_wrapper_get_n_actions;
-+// iface->get_description = action_wrapper_get_description;
++ iface->get_description = action_wrapper_get_description;
+ iface->get_keybinding = action_wrapper_get_keybinding;
+ iface->get_name = action_wrapper_get_name;
-+// iface->get_localized_name = action_wrapper_get_localized_name;
++ iface->get_localized_name = action_wrapper_get_localized_name;
+ iface->set_description = action_wrapper_set_description;
+}
Index: vcl/unx/gtk/a11y/atkbridge.cxx
@@ -1490,8 +1645,8 @@ Index: vcl/unx/gtk/a11y/atkbridge.cxx
RCS file: vcl/unx/gtk/a11y/atkbridge.cxx
diff -N vcl/unx/gtk/a11y/atkbridge.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atkbridge.cxx 15 Feb 2006 10:59:21 -0000 1.1.2.2
-@@ -0,0 +1,56 @@
++++ vcl/unx/gtk/a11y/atkbridge.cxx 11 Apr 2006 08:45:10 -0000 1.1.2.5
+@@ -0,0 +1,115 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
@@ -1534,8 +1689,67 @@ diff -N vcl/unx/gtk/a11y/atkbridge.cxx
+#include "atkutil.hxx"
+#include "atkwindow.hxx"
+
++#include <stdio.h>
++
++#if ! ( defined AIX || defined HPUX ) // these have no dl* functions
++#include <dlfcn.h>
++#endif
++
+void InitAtkBridge(void)
+{
++ unsigned int major, minor, micro;
++
++ /* check gail minimum version requirements */
++ if( sscanf( atk_get_toolkit_version(), "%u.%u.%u", &major, &minor, &micro) < 3 )
++ {
++ g_warning( "unable to parse gail version number" );
++ return;
++ }
++
++ if( ( (major << 16) | (minor << 8) | micro ) < ( (1 << 16) | 8 << 8 | 6 ) )
++ {
++ g_warning( "libgail >= 1.8.6 required for accessibility support" );
++ return;
++ }
++
++ /* get at-spi version by checking the libspi.so version number */
++#if ! ( defined AIX || defined HPUX ) // these have no dl* functions
++
++ /* libspi should be mapped by loading libatk-bridge.so already */
++ void * sym = dlsym( RTLD_DEFAULT, "spi_accessible_new" );
++ g_return_if_fail( sym != NULL );
++
++ Dl_info dl_info;
++ int ret = dladdr( sym, &dl_info );
++ g_return_if_fail( ret != 0 );
++
++ char path[PATH_MAX];
++ if( NULL == realpath(dl_info.dli_fname, path) )
++ {
++ perror( "unable to resolve libspi.so.0" );
++ return;
++ }
++
++ const char * cp = strrchr(path, '/');
++ if( cp != NULL )
++ ++cp;
++ else
++ cp = dl_info.dli_fname;
++
++ if( sscanf( cp, "libspi.so.%u.%u.%u", &major, &minor, &micro) < 3 )
++ {
++ g_warning( "unable to parse at-spi version number: %s", cp );
++ return;
++ }
++
++ if( ( (major << 16) | (minor << 8) | micro ) < ( 10 << 8 | 6 ) )
++ {
++ g_warning( "at-spi >= 1.7 required for accessibility support" );
++ return;
++ }
++
++#endif // ! ( defined AIX || defined HPUX )
++
+ /* Initialize the AtkUtilityWrapper class */
+ g_type_class_unref( g_type_class_ref( OOO_TYPE_ATK_UTIL ) );
+
@@ -1553,8 +1767,8 @@ Index: vcl/unx/gtk/a11y/atkcomponent.cxx
RCS file: vcl/unx/gtk/a11y/atkcomponent.cxx
diff -N vcl/unx/gtk/a11y/atkcomponent.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atkcomponent.cxx 15 Feb 2006 10:58:57 -0000 1.1.2.8
-@@ -0,0 +1,397 @@
++++ vcl/unx/gtk/a11y/atkcomponent.cxx 31 Mar 2006 12:19:39 -0000 1.1.2.9
+@@ -0,0 +1,387 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
@@ -1627,7 +1841,7 @@ diff -N vcl/unx/gtk/a11y/atkcomponent.cxx
+{
+ awt::Point aOrigin( 0, 0 );
+ if( t == ATK_XY_SCREEN )
-+ awt::Point aOrigin = pComponent->getLocationOnScreen();
++ aOrigin = pComponent->getLocationOnScreen();
+
+#ifdef ENABLE_TRACING
+ fprintf(stderr, "coordinates ( %u, %u ) translated to: ( %u, %u )\n",
@@ -1805,12 +2019,7 @@ diff -N vcl/unx/gtk/a11y/atkcomponent.cxx
+/*****************************************************************************/
+
+static gboolean
-+component_wrapper_set_extents (AtkComponent *component,
-+ gint x,
-+ gint y,
-+ gint width,
-+ gint height,
-+ AtkCoordType coord_type)
++component_wrapper_set_extents (AtkComponent *, gint, gint, gint, gint, AtkCoordType)
+{
+ g_warning( "AtkComponent::set_extents unimplementable" );
+ return FALSE;
@@ -1819,10 +2028,7 @@ diff -N vcl/unx/gtk/a11y/atkcomponent.cxx
+/*****************************************************************************/
+
+static gboolean
-+component_wrapper_set_position (AtkComponent *component,
-+ gint x,
-+ gint y,
-+ AtkCoordType coord_type)
++component_wrapper_set_position (AtkComponent *, gint, gint, AtkCoordType)
+{
+ g_warning( "AtkComponent::set_position unimplementable" );
+ return FALSE;
@@ -1831,9 +2037,7 @@ diff -N vcl/unx/gtk/a11y/atkcomponent.cxx
+/*****************************************************************************/
+
+static gboolean
-+component_wrapper_set_size (AtkComponent *component,
-+ gint width,
-+ gint height)
++component_wrapper_set_size (AtkComponent *, gint, gint)
+{
+ g_warning( "AtkComponent::set_size unimplementable" );
+ return FALSE;
@@ -1882,7 +2086,7 @@ diff -N vcl/unx/gtk/a11y/atkcomponent.cxx
+/*****************************************************************************/
+
+static gint
-+component_wrapper_get_mdi_zorder (AtkComponent *component)
++component_wrapper_get_mdi_zorder (AtkComponent *)
+{
+ // only needed for ATK_LAYER_MDI (not used) or ATK_LAYER_WINDOW (inherited from GAIL)
+ return G_MININT;
@@ -1904,7 +2108,7 @@ diff -N vcl/unx/gtk/a11y/atkcomponent.cxx
+ signal_id = g_signal_lookup( "focus-event", ATK_TYPE_OBJECT );
+
+ ret = g_signal_handler_find( component, match_type, signal_id, 0, NULL,
-+ (gpointer) handler, NULL);
++ (gpointer) &handler, NULL);
+ if (!ret)
+ {
+ return g_signal_connect_closure_by_id (component,
@@ -2171,8 +2375,8 @@ Index: vcl/unx/gtk/a11y/atkfactory.cxx
RCS file: vcl/unx/gtk/a11y/atkfactory.cxx
diff -N vcl/unx/gtk/a11y/atkfactory.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atkfactory.cxx 15 Feb 2006 10:59:22 -0000 1.1.2.9
-@@ -0,0 +1,166 @@
++++ vcl/unx/gtk/a11y/atkfactory.cxx 31 Mar 2006 12:19:39 -0000 1.1.2.12
+@@ -0,0 +1,174 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
@@ -2223,7 +2427,7 @@ diff -N vcl/unx/gtk/a11y/atkfactory.cxx
+ */
+
+static AtkStateSet *
-+noop_wrapper_ref_state_set( AtkObject *pObject )
++noop_wrapper_ref_state_set( AtkObject * )
+{
+ AtkStateSet *state_set = atk_state_set_new();
+ atk_state_set_add_state( state_set, ATK_STATE_DEFUNCT );
@@ -2255,6 +2459,7 @@ diff -N vcl/unx/gtk/a11y/atkfactory.cxx
+ sizeof (AtkObjectWrapper),
+ 0,
+ (GInstanceInitFunc) NULL,
++ NULL
+ } ;
+
+ type = g_type_register_static (ATK_TYPE_OBJECT, "OOoAtkNoOpObj", &typeInfo, (GTypeFlags)0) ;
@@ -2299,7 +2504,14 @@ diff -N vcl/unx/gtk/a11y/atkfactory.cxx
+ GtkSalFrame* pFrame = GtkSalFrame::getFromWindow( GTK_WINDOW( parent_widget ) );
+ g_return_val_if_fail( pFrame != NULL, NULL );
+
-+ AtkObject* parent_accessible = gtk_widget_get_accessible(parent_widget);
++ /* HACK: if the parent gtk window has an accessible already assigned, use
++ * this one to avoid endless recursion (see atkwindow.cxx).
++ */
++ AtkObject* parent_accessible = (AtkObject *) g_object_get_data(G_OBJECT( parent_widget ),
++ "ooo:tooltip-accessible");
++
++ if( ! parent_accessible )
++ parent_accessible = gtk_widget_get_accessible(parent_widget);
+
+ uno::Reference< accessibility::XAccessible > xAccessible(pFrame->getAccessible( true ));
+
@@ -2337,7 +2549,7 @@ diff -N vcl/unx/gtk/a11y/atkfactory.cxx
+ return t;
+}
+
-+}; // extern C
++} // extern C
+
Index: vcl/unx/gtk/a11y/atkfactory.hxx
===================================================================
@@ -2400,8 +2612,8 @@ Index: vcl/unx/gtk/a11y/atkhypertext.cxx
RCS file: vcl/unx/gtk/a11y/atkhypertext.cxx
diff -N vcl/unx/gtk/a11y/atkhypertext.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atkhypertext.cxx 15 Feb 2006 10:59:22 -0000 1.1.2.8
-@@ -0,0 +1,295 @@
++++ vcl/unx/gtk/a11y/atkhypertext.cxx 31 Mar 2006 12:19:39 -0000 1.1.2.10
+@@ -0,0 +1,296 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
@@ -2542,14 +2754,15 @@ diff -N vcl/unx/gtk/a11y/atkhypertext.cxx
+ }
+ return 0;
+}
++
+static guint
-+hyper_link_link_state( AtkHyperlink *pLink )
++hyper_link_link_state( AtkHyperlink * )
+{
+ g_warning( "FIXME: hyper_link_link_state unimplemented" );
+ return 0;
+}
+static gboolean
-+hyper_link_is_selected_link( AtkHyperlink *pLink )
++hyper_link_is_selected_link( AtkHyperlink * )
+{
+ g_warning( "FIXME: hyper_link_is_selected_link unimplemented" );
+ return FALSE;
@@ -2581,7 +2794,7 @@ diff -N vcl/unx/gtk/a11y/atkhypertext.cxx
+
+ if (!type) {
+ static const GTypeInfo tinfo = {
-+ sizeof (HyperLink),
++ sizeof (AtkHyperlinkClass),
+ NULL, /* base init */
+ NULL, /* base finalize */
+ (GClassInitFunc) hyper_link_class_init,
@@ -2702,8 +2915,8 @@ Index: vcl/unx/gtk/a11y/atkimage.cxx
RCS file: vcl/unx/gtk/a11y/atkimage.cxx
diff -N vcl/unx/gtk/a11y/atkimage.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atkimage.cxx 15 Feb 2006 10:59:23 -0000 1.1.2.4
-@@ -0,0 +1,144 @@
++++ vcl/unx/gtk/a11y/atkimage.cxx 31 Mar 2006 12:19:39 -0000 1.1.2.5
+@@ -0,0 +1,143 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
@@ -2829,8 +3042,7 @@ diff -N vcl/unx/gtk/a11y/atkimage.cxx
+}
+
+static gboolean
-+image_set_image_description( AtkImage *image,
-+ const gchar *description )
++image_set_image_description( AtkImage *, const gchar * )
+{
+ g_warning ("FIXME: no set image description");
+ return FALSE;
@@ -2853,7 +3065,7 @@ Index: vcl/unx/gtk/a11y/atklistener.cxx
RCS file: vcl/unx/gtk/a11y/atklistener.cxx
diff -N vcl/unx/gtk/a11y/atklistener.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atklistener.cxx 1 Mar 2006 12:00:16 -0000 1.1.2.17
++++ vcl/unx/gtk/a11y/atklistener.cxx 31 Mar 2006 14:09:17 -0000 1.1.2.20
@@ -0,0 +1,474 @@
+/*************************************************************************
+ *
@@ -2933,7 +3145,7 @@ diff -N vcl/unx/gtk/a11y/atklistener.cxx
+/*****************************************************************************/
+
+// XEventListener implementation
-+void AtkListener::disposing( const lang::EventObject& aEvent ) throw (uno::RuntimeException)
++void AtkListener::disposing( const lang::EventObject& ) throw (uno::RuntimeException)
+{
+ if( mpAccessible )
+ {
@@ -3098,8 +3310,6 @@ diff -N vcl/unx/gtk/a11y/atklistener.cxx
+// XAccessibleEventListener
+void AtkListener::notifyEvent( const accessibility::AccessibleEventObject& aEvent ) throw( uno::RuntimeException )
+{
-+ AtkPropertyValues aValues = { NULL };
-+
+ if( !mpAccessible )
+ return;
+
@@ -3153,9 +3363,10 @@ diff -N vcl/unx/gtk/a11y/atklistener.cxx
+ atk_object_notify_state_change( mpAccessible, eRealState, bState );
+ break;
+ }
-+
++
+ case accessibility::AccessibleEventId::BOUNDRECT_CHANGED:
+
++#ifdef HAS_ATKRECTANGLE
+ if( ATK_IS_COMPONENT( mpAccessible ) )
+ {
+ AtkRectangle rect;
@@ -3171,6 +3382,7 @@ diff -N vcl/unx/gtk/a11y/atklistener.cxx
+ }
+ else
+ g_warning( "bounds_changed event for object not implementing AtkComponent\n");
++#endif
+
+ break;
+
@@ -3325,7 +3537,7 @@ diff -N vcl/unx/gtk/a11y/atklistener.cxx
+ break;
+
+ default:
-+ g_warning( "Unknown event notification" );
++ g_warning( "Unknown event notification %d", aEvent.EventId );
+ break;
+ }
+}
@@ -3640,8 +3852,8 @@ Index: vcl/unx/gtk/a11y/atktable.cxx
RCS file: vcl/unx/gtk/a11y/atktable.cxx
diff -N vcl/unx/gtk/a11y/atktable.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atktable.cxx 15 Feb 2006 10:58:28 -0000 1.1.2.7
-@@ -0,0 +1,737 @@
++++ vcl/unx/gtk/a11y/atktable.cxx 31 Mar 2006 12:19:39 -0000 1.1.2.8
+@@ -0,0 +1,726 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
@@ -4096,7 +4308,7 @@ diff -N vcl/unx/gtk/a11y/atktable.cxx
+ if( pTable )
+ {
+ // FIXME: Summary ??
-+ AtkObject* summary;
++// AtkObject* summary;
+ return atk_object_wrapper_conditional_ref( pTable->getAccessibleSummary() );
+ }
+ }
@@ -4252,19 +4464,16 @@ diff -N vcl/unx/gtk/a11y/atktable.cxx
+/*****************************************************************************/
+
+static gboolean
-+table_wrapper_add_row_selection( AtkTable *table,
-+ gint row )
++table_wrapper_add_row_selection( AtkTable *, gint )
+{
+ g_warning( "FIXME: no simple analogue for add_row_selection" );
+ return 0;
+}
+
-+
+/*****************************************************************************/
+
+static gboolean
-+table_wrapper_remove_row_selection( AtkTable *table,
-+ gint row )
++table_wrapper_remove_row_selection( AtkTable *, gint )
+{
+ g_warning( "FIXME: no simple analogue for remove_row_selection" );
+ return 0;
@@ -4273,37 +4482,32 @@ diff -N vcl/unx/gtk/a11y/atktable.cxx
+/*****************************************************************************/
+
+static gboolean
-+table_wrapper_add_column_table( AtkTable *table,
-+ gint column )
++table_wrapper_add_column_selection( AtkTable *, gint )
+{
-+ g_warning( "FIXME: no simple analogue for add_column_table" );
++ g_warning( "FIXME: no simple analogue for add_column_selection" );
+ return 0;
+}
+
+/*****************************************************************************/
+
+static gboolean
-+table_wrapper_remove_column_table( AtkTable *table,
-+ gint column)
++table_wrapper_remove_column_selection( AtkTable *, gint )
+{
-+ g_warning( "FIXME: no simple analogue for remove_column_table" );
++ g_warning( "FIXME: no simple analogue for remove_column_selection" );
+ return 0;
+}
+
+/*****************************************************************************/
+
+static void
-+table_wrapper_set_caption( AtkTable *table,
-+ AtkObject *caption )
++table_wrapper_set_caption( AtkTable *, AtkObject * )
+{ // meaningless helper
+}
+
+/*****************************************************************************/
+
+static void
-+table_wrapper_set_column_description( AtkTable *table,
-+ gint column,
-+ const gchar *description )
++table_wrapper_set_column_description( AtkTable *, gint, const gchar * )
+{ // meaningless helper
+}
+
@@ -4311,9 +4515,7 @@ diff -N vcl/unx/gtk/a11y/atktable.cxx
+/*****************************************************************************/
+
+static void
-+table_wrapper_set_column_header( AtkTable *table,
-+ gint column,
-+ AtkObject *header )
++table_wrapper_set_column_header( AtkTable *, gint, AtkObject * )
+{ // meaningless helper
+}
+
@@ -4321,26 +4523,21 @@ diff -N vcl/unx/gtk/a11y/atktable.cxx
+/*****************************************************************************/
+
+static void
-+table_wrapper_set_row_description( AtkTable *table,
-+ gint row,
-+ const gchar *description )
++table_wrapper_set_row_description( AtkTable *, gint, const gchar * )
+{ // meaningless helper
+}
+
+/*****************************************************************************/
+
+static void
-+table_wrapper_set_row_header( AtkTable *table,
-+ gint row,
-+ AtkObject *header )
++table_wrapper_set_row_header( AtkTable *, gint, AtkObject * )
+{ // meaningless helper
+}
+
+/*****************************************************************************/
+
+static void
-+table_wrapper_set_summary( AtkTable *table,
-+ AtkObject *accessible )
++table_wrapper_set_summary( AtkTable *, AtkObject * )
+{ // meaningless helper
+}
+
@@ -4364,6 +4561,10 @@ diff -N vcl/unx/gtk/a11y/atktable.cxx
+ iface->get_selected_rows = table_wrapper_get_selected_rows;
+ iface->add_row_selection = table_wrapper_add_row_selection;
+ iface->remove_row_selection = table_wrapper_remove_row_selection;
++ iface->add_column_selection = table_wrapper_add_column_selection;
++ iface->remove_column_selection = table_wrapper_remove_column_selection;
++ iface->get_selected_columns = table_wrapper_get_selected_columns;
++ iface->is_column_selected = table_wrapper_is_column_selected;
+ iface->get_column_extent_at = table_wrapper_get_column_extent_at;
+ iface->get_row_extent_at = table_wrapper_get_row_extent_at;
+ iface->get_row_header = table_wrapper_get_row_header;
@@ -4384,8 +4585,8 @@ Index: vcl/unx/gtk/a11y/atktext.cxx
RCS file: vcl/unx/gtk/a11y/atktext.cxx
diff -N vcl/unx/gtk/a11y/atktext.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atktext.cxx 15 Feb 2006 10:59:25 -0000 1.1.2.12
-@@ -0,0 +1,547 @@
++++ vcl/unx/gtk/a11y/atktext.cxx 13 Apr 2006 12:48:16 -0000 1.1.2.14
+@@ -0,0 +1,549 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
@@ -4546,6 +4747,8 @@ diff -N vcl/unx/gtk/a11y/atktext.cxx
+ gint end_offset)
+{
+ gchar * ret = NULL;
++
++ g_return_val_if_fail( end_offset > start_offset, NULL );
+
+ try {
+ accessibility::XAccessibleText* pText = getText( text );
@@ -4720,7 +4923,7 @@ diff -N vcl/unx/gtk/a11y/atktext.cxx
+}
+
+static AtkAttributeSet *
-+text_wrapper_get_default_attributes( AtkText *text )
++text_wrapper_get_default_attributes( AtkText * )
+{
+ // currently there is no way to determine the default values. Maybe getCharacterAttributes
+ // should return default and direct values ??
@@ -4899,7 +5102,7 @@ diff -N vcl/unx/gtk/a11y/atktext.cxx
+ try {
+ accessibility::XAccessibleText* pText = getText( text );
+ if( pText )
-+ return pText->setSelection( 0, 0 ); // ?
++ return pText->setSelection( start_offset, end_offset );
+ }
+ catch(const uno::Exception& e) {
+ g_warning( "Exception in setSelection()" );
@@ -4938,7 +5141,7 @@ Index: vcl/unx/gtk/a11y/atktextattributes.cxx
RCS file: vcl/unx/gtk/a11y/atktextattributes.cxx
diff -N vcl/unx/gtk/a11y/atktextattributes.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atktextattributes.cxx 14 Feb 2006 12:42:40 -0000 1.1.2.2
++++ vcl/unx/gtk/a11y/atktextattributes.cxx 31 Mar 2006 12:19:40 -0000 1.1.2.3
@@ -0,0 +1,572 @@
+/*************************************************************************
+ *
@@ -4999,13 +5202,13 @@ diff -N vcl/unx/gtk/a11y/atktextattributes.cxx
+/*****************************************************************************/
+
+static gchar*
-+NullString(const uno::Any& rAny)
++NullString(const uno::Any&)
+{
+ return NULL;
+}
+
+static bool
-+InvalidValue( uno::Any& rAny, const gchar * value )
++InvalidValue( uno::Any&, const gchar * )
+{
+ return false;
+}
@@ -5035,7 +5238,7 @@ diff -N vcl/unx/gtk/a11y/atktextattributes.cxx
+static gchar*
+Long2String(const uno::Any& rAny)
+{
-+ return g_strdup_printf( "%d", rAny.get<sal_Int32>() );
++ return g_strdup_printf( "%ld", rAny.get<sal_Int32>() );
+}
+
+static bool
@@ -5043,7 +5246,7 @@ diff -N vcl/unx/gtk/a11y/atktextattributes.cxx
+{
+ sal_Int32 lval;
+
-+ if( 1 != sscanf( value, "%d", &lval ) )
++ if( 1 != sscanf( value, "%ld", &lval ) )
+ return false;
+
+ rAny = uno::makeAny( lval );
@@ -5057,7 +5260,7 @@ diff -N vcl/unx/gtk/a11y/atktextattributes.cxx
+{
+ sal_Int32 nColor = rAny.get<sal_Int32>();
+
-+ if( nColor != 0xFFFFFFFF ) // AUTOMATIC
++ if( nColor != -1 ) // AUTOMATIC
+ {
+ sal_uInt8 blue = nColor & 0xFF;
+ sal_uInt8 green = (nColor >> 8) & 0xFF;
@@ -5072,9 +5275,9 @@ diff -N vcl/unx/gtk/a11y/atktextattributes.cxx
+static bool
+String2Color( uno::Any& rAny, const gchar * value )
+{
-+ sal_uInt8 red, green, blue;
++ int red, green, blue;
+
-+ if( 3 != sscanf( value, "%u,%u,%u", &red, &green, &blue ) )
++ if( 3 != sscanf( value, "%d,%d,%d", &red, &green, &blue ) )
+ return false;
+
+ sal_Int32 nColor = (sal_Int32) blue | ( (sal_Int32) green << 8 ) | ( ( sal_Int32 ) red << 16 );
@@ -5318,7 +5521,7 @@ diff -N vcl/unx/gtk/a11y/atktextattributes.cxx
+MarginHeight2Pixel(const uno::Any& rAny)
+{
+ Size aMargin = LogicToPixel( 0, rAny.get<sal_Int32>() );
-+ return g_strdup_printf( "%d", aMargin.getHeight() );
++ return g_strdup_printf( "%ld", aMargin.getHeight() );
+}
+
+static bool
@@ -5326,7 +5529,7 @@ diff -N vcl/unx/gtk/a11y/atktextattributes.cxx
+{
+ sal_Int32 nHeight;
+
-+ if( 1 != sscanf( value, "%d", &nHeight ) )
++ if( 1 != sscanf( value, "%ld", &nHeight ) )
+ return false;
+
+ Size aMargin = PixelToLogic( 0, nHeight );
@@ -5338,7 +5541,7 @@ diff -N vcl/unx/gtk/a11y/atktextattributes.cxx
+MarginWidth2Pixel(const uno::Any& rAny)
+{
+ Size aMargin = LogicToPixel( rAny.get<sal_Int32>(), 0 );
-+ return g_strdup_printf( "%d", aMargin.getWidth() );
++ return g_strdup_printf( "%ld", aMargin.getWidth() );
+}
+
+static bool
@@ -5346,7 +5549,7 @@ diff -N vcl/unx/gtk/a11y/atktextattributes.cxx
+{
+ sal_Int32 nWidth;
+
-+ if( 1 != sscanf( value, "%d", &nWidth ) )
++ if( 1 != sscanf( value, "%ld", &nWidth ) )
+ return false;
+
+ Size aMargin = PixelToLogic( nWidth, 0 );
@@ -5584,8 +5787,8 @@ Index: vcl/unx/gtk/a11y/atkutil.cxx
RCS file: vcl/unx/gtk/a11y/atkutil.cxx
diff -N vcl/unx/gtk/a11y/atkutil.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atkutil.cxx 3 Mar 2006 11:07:09 -0000 1.1.2.14
-@@ -0,0 +1,625 @@
++++ vcl/unx/gtk/a11y/atkutil.cxx 31 Mar 2006 12:19:40 -0000 1.1.2.15
+@@ -0,0 +1,626 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
@@ -5933,7 +6136,7 @@ diff -N vcl/unx/gtk/a11y/atkutil.cxx
+/*****************************************************************************/
+
+void DocumentFocusListener::detachRecursive(
-+ const uno::Reference< accessibility::XAccessible >& xAccessible,
++ const uno::Reference< accessibility::XAccessible >&,
+ const uno::Reference< accessibility::XAccessibleContext >& xContext,
+ const uno::Reference< accessibility::XAccessibleStateSet >& xStateSet
+) throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
@@ -6062,7 +6265,7 @@ diff -N vcl/unx/gtk/a11y/atkutil.cxx
+
+/*****************************************************************************/
+
-+long WindowEventHandler(void * not_used, ::VclSimpleEvent const * pEvent)
++long WindowEventHandler(void *, ::VclSimpleEvent const * pEvent)
+{
+ switch (pEvent->GetId())
+ {
@@ -6156,7 +6359,7 @@ diff -N vcl/unx/gtk/a11y/atkutil.cxx
+ */
+
+static void
-+ooo_atk_util_class_init (AtkUtilClass *klass)
++ooo_atk_util_class_init (AtkUtilClass *)
+{
+ AtkUtilClass *atk_class;
+ gpointer data;
@@ -6203,6 +6406,7 @@ diff -N vcl/unx/gtk/a11y/atkutil.cxx
+ type_query.instance_size,
+ 0,
+ (GInstanceInitFunc) NULL,
++ NULL
+ } ;
+
+ type = g_type_register_static (parent_type, "OOoUtil", &typeInfo, (GTypeFlags)0) ;
@@ -6427,8 +6631,8 @@ Index: vcl/unx/gtk/a11y/atkwindow.cxx
RCS file: vcl/unx/gtk/a11y/atkwindow.cxx
diff -N vcl/unx/gtk/a11y/atkwindow.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atkwindow.cxx 17 Feb 2006 11:10:56 -0000 1.1.2.3
-@@ -0,0 +1,138 @@
++++ vcl/unx/gtk/a11y/atkwindow.cxx 31 Mar 2006 12:19:40 -0000 1.1.2.6
+@@ -0,0 +1,149 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
@@ -6480,6 +6684,16 @@ diff -N vcl/unx/gtk/a11y/atkwindow.cxx
+{
+ window_real_initialize(obj, data);
+ obj->role = GtkSalFrame::GetAtkRole( GTK_WINDOW( data ) );
++
++ if( obj->role == ATK_ROLE_TOOL_TIP )
++ {
++ /* HACK: Avoid endless loop when get_name is called from
++ * gail_window_new() context, which leads to the code path
++ * showing up in wrapper_factory_create_accessible with no
++ * accessible assigned to the GtkWindow yet.
++ */
++ g_object_set_data( G_OBJECT( data ), "ooo:tooltip-accessible", obj );
++ }
+}
+
+/*****************************************************************************/
@@ -6560,6 +6774,7 @@ diff -N vcl/unx/gtk/a11y/atkwindow.cxx
+ type_query.instance_size,
+ 0,
+ (GInstanceInitFunc) NULL,
++ NULL
+ } ;
+
+ type = g_type_register_static (parent_type, "OOoWindowAtkObject", &typeInfo, (GTypeFlags)0) ;
@@ -6624,8 +6839,8 @@ Index: vcl/unx/gtk/a11y/atkwrapper.cxx
RCS file: vcl/unx/gtk/a11y/atkwrapper.cxx
diff -N vcl/unx/gtk/a11y/atkwrapper.cxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atkwrapper.cxx 15 Feb 2006 10:58:57 -0000 1.1.2.21
-@@ -0,0 +1,819 @@
++++ vcl/unx/gtk/a11y/atkwrapper.cxx 31 Mar 2006 12:19:40 -0000 1.1.2.22
+@@ -0,0 +1,820 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
@@ -6773,14 +6988,17 @@ diff -N vcl/unx/gtk/a11y/atkwrapper.cxx
+ return type;
+}
+
++
+AtkStateType mapAtkState( sal_Int16 nState )
+{
++ AtkStateType type = ATK_STATE_INVALID;
++
+ // A perfect / complete mapping ...
+ switch( nState )
+ {
+#define MAP_DIRECT( a ) \
-+ case accessibility::AccessibleStateType::a: \
-+ return ATK_STATE_##a; break
++ case accessibility::AccessibleStateType::a: \
++ type = ATK_STATE_##a; break
+
+ MAP_DIRECT( INVALID );
+ MAP_DIRECT( ACTIVE );
@@ -6813,21 +7031,24 @@ diff -N vcl/unx/gtk/a11y/atkwrapper.cxx
+ MAP_DIRECT( VISIBLE );
+ // a spelling error ...
+ case accessibility::AccessibleStateType::DEFUNC:
-+ return ATK_STATE_DEFUNCT; break;
++ type = ATK_STATE_DEFUNCT; break;
+ case accessibility::AccessibleStateType::MULTI_SELECTABLE:
-+ return ATK_STATE_MULTISELECTABLE; break;
++ type = ATK_STATE_MULTISELECTABLE; break;
+ default:
-+ return ATK_STATE_INVALID;
+ break;
+ }
++
++ return type;
+}
+
+static AtkRole mapToAtkRole( sal_Int16 nRole )
+{
++ AtkRole role = ATK_ROLE_UNKNOWN;
++
+ switch( nRole )
+ {
+#define MAP(a,b) \
-+ case a: return b; break
++ case a: role = b; break
+
+ MAP( ::accessibility::AccessibleRole::UNKNOWN, ATK_ROLE_UNKNOWN );
+ MAP( ::accessibility::AccessibleRole::ALERT, ATK_ROLE_ALERT );
@@ -6898,6 +7119,8 @@ diff -N vcl/unx/gtk/a11y/atkwrapper.cxx
+ MAP( ::accessibility::AccessibleRole::VIEW_PORT, ATK_ROLE_VIEWPORT );
+ MAP( ::accessibility::AccessibleRole::WINDOW, ATK_ROLE_WINDOW );
+#undef MAP
++ default:
++ break;
+ }
+/* Roles unimplemented by OO.o / a11y:
+ ATK_ROLE_INVALID, ATK_ROLE_ACCEL_LABEL, ATK_ROLE_ANIMATION,
@@ -6907,15 +7130,9 @@ diff -N vcl/unx/gtk/a11y/atkwrapper.cxx
+ ATK_ROLE_TERMINAL, ATK_ROLE_TREE_TABLE, ATK_ROLE_RULER,
+ ATK_ROLE_APPLICATION, ATK_ROLE_AUTOCOMPLETE, ATK_ROLE_EDITBAR */
+
-+ return ATK_ROLE_UNKNOWN;
++ return role;
+}
+
-+static gchar *
-+mapToGChar( rtl::OUString aString )
-+{
-+ rtl::OString aUtf8 = rtl::OUStringToOString( aString, RTL_TEXTENCODING_UTF8 );
-+ return g_strdup( aUtf8 );
-+}
+
+static accessibility::XAccessibleContext*
+ getContext( AtkObject* obj ) throw (uno::RuntimeException)
@@ -7073,11 +7290,11 @@ diff -N vcl/unx/gtk/a11y/atkwrapper.cxx
+ sal_uInt32 nTargetCount = aRelation.TargetSet.getLength();
+ AtkObject **pTargets = (AtkObject **) alloca( nTargetCount * sizeof(AtkObject *) );
+
-+ for( sal_uInt32 n = 0; n < nTargetCount; n++ )
++ for( sal_uInt32 i = 0; i < nTargetCount; i++ )
+ {
+ uno::Reference< accessibility::XAccessible > xAccessible(
-+ aRelation.TargetSet[n], uno::UNO_QUERY );
-+ pTargets[n] = atk_object_wrapper_ref( xAccessible );
++ aRelation.TargetSet[i], uno::UNO_QUERY );
++ pTargets[i] = atk_object_wrapper_ref( xAccessible );
+ }
+
+ AtkRelation *pRel = atk_relation_new
@@ -7108,13 +7325,11 @@ diff -N vcl/unx/gtk/a11y/atkwrapper.cxx
+ uno::Reference< accessibility::XAccessibleStateSet > xStateSet =
+ pContext->getAccessibleStateSet();
+
-+ uno::Sequence< sal_Int16 > aStates;
-+
+ if( xStateSet.is() )
+ {
+ uno::Sequence< sal_Int16 > aStates = xStateSet->getStates();
+
-+ for( sal_uInt32 n = 0; n < aStates.getLength(); n++ )
++ for( sal_Int32 n = 0; n < aStates.getLength(); n++ )
+ atk_state_set_add_state( pSet, mapAtkState( aStates[n] ) );
+
+ // We need to emulate FOCUS state for menus, menu-items etc.
@@ -7179,7 +7394,7 @@ diff -N vcl/unx/gtk/a11y/atkwrapper.cxx
+
+static void
+atk_object_wrapper_init (AtkObjectWrapper *wrapper,
-+ AtkObjectWrapperClass *klass)
++ AtkObjectWrapperClass)
+{
+ wrapper->mpAction = NULL;
+ wrapper->mpComponent = NULL;
@@ -7212,6 +7427,7 @@ diff -N vcl/unx/gtk/a11y/atkwrapper.cxx
+ sizeof (AtkObjectWrapper),
+ 0,
+ (GInstanceInitFunc) atk_object_wrapper_init,
++ NULL
+ } ;
+ type = g_type_register_static (ATK_TYPE_OBJECT,
+ "OOoAtkObj",
@@ -7322,17 +7538,17 @@ diff -N vcl/unx/gtk/a11y/atkwrapper.cxx
+ sizeof( AtkObjectWrapperClass ),
+ NULL, NULL, NULL, NULL, NULL,
+ sizeof( AtkObjectWrapper ),
-+ 0, NULL
++ 0, NULL, NULL
+ } ;
+ nType = g_type_register_static( ATK_TYPE_OBJECT_WRAPPER,
+ aTypeName, &aTypeInfo, (GTypeFlags)0 ) ;
+
-+ for( int i = 0; i < aTypeTableSize; i++ )
-+ if( bTypes[i] )
++ for( int j = 0; j < aTypeTableSize; j++ )
++ if( bTypes[j] )
+ {
+ GInterfaceInfo aIfaceInfo = { NULL, NULL, NULL };
-+ aIfaceInfo.interface_init = aTypeTable[i].aInit;
-+ g_type_add_interface_static (nType, aTypeTable[i].aGetGIfaceType(),
++ aIfaceInfo.interface_init = aTypeTable[j].aInit;
++ g_type_add_interface_static (nType, aTypeTable[j].aGetGIfaceType(),
+ &aIfaceInfo);
+ }
+ }
@@ -7450,7 +7666,7 @@ Index: vcl/unx/gtk/a11y/atkwrapper.hxx
RCS file: vcl/unx/gtk/a11y/atkwrapper.hxx
diff -N vcl/unx/gtk/a11y/atkwrapper.hxx
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/atkwrapper.hxx 15 Feb 2006 10:59:26 -0000 1.1.2.8
++++ vcl/unx/gtk/a11y/atkwrapper.hxx 31 Mar 2006 12:19:40 -0000 1.1.2.9
@@ -0,0 +1,125 @@
+/*************************************************************************
+ *
@@ -7561,7 +7777,7 @@ diff -N vcl/unx/gtk/a11y/atkwrapper.hxx
+void textIfaceInit(AtkTextIface *iface);
+void valueIfaceInit(AtkValueIface *iface);
+
-+}; // extern "C"
++} // extern "C"
+
+#define ATK_TYPE_OBJECT_WRAPPER atk_object_wrapper_get_type()
+#define ATK_OBJECT_WRAPPER(obj) \
@@ -7582,8 +7798,8 @@ Index: vcl/unx/gtk/a11y/makefile.mk
RCS file: vcl/unx/gtk/a11y/makefile.mk
diff -N vcl/unx/gtk/a11y/makefile.mk
--- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/gtk/a11y/makefile.mk 17 Feb 2006 06:09:46 -0000 1.1.2.12
-@@ -0,0 +1,96 @@
++++ vcl/unx/gtk/a11y/makefile.mk 31 Mar 2006 14:09:18 -0000 1.1.2.13
+@@ -0,0 +1,102 @@
+#*************************************************************************
+#
+# OpenOffice.org - a multi-platform office productivity suite
@@ -7650,6 +7866,12 @@ diff -N vcl/unx/gtk/a11y/makefile.mk
+
+CFLAGS+=-DVERSION=\"$(UPD)$(LAST_MINOR)\"
+
++ATKVERSION:=$(shell $(PKGCONFIG) --modversion atk | $(AWK) -v num=true -f $(SOLARENV)$/bin$/getcompver.awk)
++
++.IF $(ATKVERSION) >= "000100070000"
++CFLAGS+=-DHAS_ATKRECTANGLE
++.ENDIF
++
+LIB1TARGET=$(SLB)$/$(TARGET).lib
+LIB1OBJFILES=\
+ $(SLO)$/atkaction.obj \
@@ -7764,11 +7986,11 @@ cvs diff: Diffing vcl/unx/gtk/window
Index: vcl/unx/gtk/window/gtkframe.cxx
===================================================================
RCS file: /cvs/gsl/vcl/unx/gtk/window/gtkframe.cxx,v
-retrieving revision 1.42
-retrieving revision 1.28.6.19
-diff -u -p -r1.42 -r1.28.6.19
---- vcl/unx/gtk/window/gtkframe.cxx 25 Jan 2006 11:40:22 -0000 1.42
-+++ vcl/unx/gtk/window/gtkframe.cxx 17 Feb 2006 11:10:57 -0000 1.28.6.19
+retrieving revision 1.45
+retrieving revision 1.28.6.21
+diff -u -p -r1.45 -r1.28.6.21
+--- vcl/unx/gtk/window/gtkframe.cxx 6 Apr 2006 15:40:19 -0000 1.45
++++ vcl/unx/gtk/window/gtkframe.cxx 13 Apr 2006 10:15:28 -0000 1.28.6.21
@@ -45,6 +45,7 @@
#include <floatwin.hxx>
#include <salprn.h>
@@ -8067,12 +8289,12 @@ cvs diff: Diffing vcl/util
Index: vcl/util/makefile.mk
===================================================================
RCS file: /cvs/gsl/vcl/util/makefile.mk,v
-retrieving revision 1.77
-retrieving revision 1.65.110.11
-diff -u -p -r1.77 -r1.65.110.11
---- vcl/util/makefile.mk 19 Dec 2005 17:21:56 -0000 1.77
-+++ vcl/util/makefile.mk 16 Feb 2006 11:08:19 -0000 1.65.110.11
-@@ -357,8 +357,10 @@ PKGCONFIG_MODULES=gtk+-2.0 gthread-2.0
+retrieving revision 1.78
+retrieving revision 1.65.110.12
+diff -u -p -r1.78 -r1.65.110.12
+--- vcl/util/makefile.mk 7 Apr 2006 15:36:14 -0000 1.78
++++ vcl/util/makefile.mk 13 Apr 2006 10:18:03 -0000 1.65.110.12
+@@ -358,8 +358,10 @@ PKGCONFIG_MODULES=gtk+-2.0 gthread-2.0
LIB4TARGET=$(SLB)$/igtk_plug_
LIB4FILES=\
$(SLB)$/gtkapp.lib\
@@ -8083,3 +8305,8 @@ diff -u -p -r1.77 -r1.65.110.11
SHL4TARGET=vclplug_gtk$(UPD)$(DLLPOSTFIX)
SHL4IMPLIB=igtk_plug_
SHL4LIBS=$(LIB4TARGET)
+cvs diff: Diffing vcl/util/defs
+Index: vcl/util/defs/wntmsci7
+===================================================================
+RCS file: vcl/util/defs/wntmsci7
+diff -N vcl/util/defs/wntmsci7
diff --git a/patches/src680/cws-jl34.diff b/patches/src680/cws-jl34.diff
new file mode 100644
index 000000000..f12227f20
--- /dev/null
+++ b/patches/src680/cws-jl34.diff
@@ -0,0 +1,838 @@
+Index: xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx
+===================================================================
+RCS file: /cvs/xml/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx,v
+retrieving revision 1.11
+retrieving revision 1.11.34.1
+diff -u -p -u -p -r1.11 -r1.11.34.1
+--- xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx 11 Nov 2005 09:19:51 -0000 1.11
++++ xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx 9 May 2006 13:59:36 -0000 1.11.34.1
+@@ -1090,77 +1090,6 @@ sal_Int32 SecurityEnvironment_MSCryptImp
+ characters &= ~ ::com::sun::star::security::CertificateCharacters::HAS_PRIVATE_KEY ;
+ }
+ }
+-
+- //Thirdly, make sentence whether or not the cert is trusted.
+- {
+- HCERTSTORE hCollectionStore ;
+- PCCERT_CONTEXT pTempCert ;
+-
+- hCollectionStore = CertOpenStore(
+- CERT_STORE_PROV_COLLECTION ,
+- 0 ,
+- NULL ,
+- 0 ,
+- NULL
+- ) ;
+-
+- if( hCollectionStore != NULL ) {
+- HCERTSTORE hSystemStore ;
+-
+- //Add system key store to the collection.
+- hSystemStore = CertOpenSystemStore( 0, "MY" ) ;
+- if( hSystemStore != NULL ) {
+- CertAddStoreToCollection (
+- hCollectionStore ,
+- hSystemStore ,
+- CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG ,
+- 1
+- ) ;
+- CertCloseStore( hSystemStore, CERT_CLOSE_STORE_CHECK_FLAG ) ;
+- }
+-
+- //Add system root store to the collection.
+- hSystemStore = CertOpenSystemStore( 0, "Root" ) ;
+- if( hSystemStore != NULL ) {
+- CertAddStoreToCollection (
+- hCollectionStore ,
+- hSystemStore ,
+- CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG ,
+- 2
+- ) ;
+- CertCloseStore( hSystemStore, CERT_CLOSE_STORE_CHECK_FLAG ) ;
+- }
+-
+- //Add system trust store to the collection.
+- hSystemStore = CertOpenSystemStore( 0, "Trust" ) ;
+- if( hSystemStore != NULL ) {
+- CertAddStoreToCollection (
+- hCollectionStore ,
+- hSystemStore ,
+- CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG ,
+- 3
+- ) ;
+- CertCloseStore( hSystemStore, CERT_CLOSE_STORE_CHECK_FLAG ) ;
+- }
+-
+- //Find the cert in the collection store.
+- pTempCert = CertFindCertificateInStore(
+- hCollectionStore ,
+- X509_ASN_ENCODING | PKCS_7_ASN_ENCODING ,
+- 0 ,
+- CERT_FIND_SUBJECT_NAME,
+- &( pCertContext->pCertInfo->Subject ) ,
+- NULL
+- ) ;
+-
+- if( pTempCert != NULL && CertCompareCertificate( X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, pCertContext->pCertInfo, pTempCert->pCertInfo ) ) {
+- characters |= ::com::sun::star::security::CertificateCharacters::TRUSTED ;
+- } else {
+- characters &= ~ ::com::sun::star::security::CertificateCharacters::TRUSTED ;
+- }
+- }
+- }
+-
+ return characters ;
+ }
+
+Index: xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx
+===================================================================
+RCS file: /cvs/xml/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx,v
+retrieving revision 1.14
+retrieving revision 1.14.34.5
+diff -u -p -u -p -r1.14 -r1.14.34.5
+--- xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx 11 Nov 2005 09:20:54 -0000 1.14
++++ xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.cxx 12 May 2006 13:22:21 -0000 1.14.34.5
+@@ -64,16 +64,19 @@
+ #include <xmlsec/strings.h>
+
+ #include <tools/string.hxx>
+-
++#include <rtl/ustrbuf.hxx>
+ #include <comphelper/processfactory.hxx>
+ #include <cppuhelper/servicefactory.hxx>
+ #include <svtools/docpasswdrequest.hxx>
+ #include <xmlsecurity/biginteger.hxx>
++#include <rtl/logfile.h>
+
+ #ifndef _COM_SUN_STAR_TASK_XINTERACTIONHANDLER_HPP_
+ #include <com/sun/star/task/XInteractionHandler.hpp>
+ #endif
+
++#include "boost/scoped_array.hpp"
++
+ // MM : added for password exception
+ #include <com/sun/star/security/NoPasswordException.hpp>
+ namespace csss = ::com::sun::star::security;
+@@ -121,7 +124,8 @@ char* GetPasswordFunction( PK11SlotInfo*
+ return NULL;
+ }
+
+-SecurityEnvironment_NssImpl :: SecurityEnvironment_NssImpl( const Reference< XMultiServiceFactory >& aFactory ) : m_pSlot( NULL ) , m_pHandler( NULL ) , m_tSymKeyList() , m_tPubKeyList() , m_tPriKeyList() {
++SecurityEnvironment_NssImpl :: SecurityEnvironment_NssImpl( const Reference< XMultiServiceFactory >& aFactory ) :
++m_pHandler( NULL ) , m_tSymKeyList() , m_tPubKeyList() , m_tPriKeyList() {
+
+ PK11_SetPasswordFunc( GetPasswordFunction ) ;
+ }
+@@ -130,9 +134,9 @@ SecurityEnvironment_NssImpl :: ~Security
+
+ PK11_SetPasswordFunc( NULL ) ;
+
+- if( m_pSlot != NULL ) {
+- PK11_FreeSlot( m_pSlot ) ;
+- m_pSlot = NULL ;
++ for (CIT_SLOTS i = m_Slots.begin(); i != m_Slots.end(); i++)
++ {
++ PK11_FreeSlot(*i);
+ }
+
+ if( !m_tSymKeyList.empty() ) {
+@@ -240,40 +244,30 @@ SecurityEnvironment_NssImpl* SecurityEnv
+ return NULL ;
+ }
+
+-/* Native methods */
+-PK11SlotInfo* SecurityEnvironment_NssImpl :: getCryptoSlot() throw( Exception , RuntimeException ) {
+- return m_pSlot ;
+-}
+
+ ::rtl::OUString SecurityEnvironment_NssImpl::getSecurityEnvironmentInformation() throw( ::com::sun::star::uno::RuntimeException )
+ {
+ rtl::OUString result;
+-
+- if( m_pSlot != NULL ) {
+- result = rtl::OUString::createFromAscii(PK11_GetTokenName(m_pSlot));
+- }
+- else{
+- result = rtl::OUString::createFromAscii( "Unknown Token" );
++ ::rtl::OUStringBuffer buff;
++ for (CIT_SLOTS is = m_Slots.begin(); is != m_Slots.end(); is++)
++ {
++ buff.append(rtl::OUString::createFromAscii(PK11_GetTokenName(*is)));
++ buff.appendAscii("\n");
+ }
+-
+- return result;
++ return buff.makeStringAndClear();
+ }
+
+-void SecurityEnvironment_NssImpl :: setCryptoSlot( PK11SlotInfo* aSlot) throw( Exception , RuntimeException ) {
+- if( m_pSlot != NULL ) {
+- PK11_FreeSlot( m_pSlot ) ;
+- m_pSlot = NULL ;
+- }
+-
+- if( aSlot != NULL ) {
+- m_pSlot = PK11_ReferenceSlot( aSlot ) ;
+- }
++void SecurityEnvironment_NssImpl::addCryptoSlot( PK11SlotInfo* aSlot) throw( Exception , RuntimeException )
++{
++ PK11_ReferenceSlot(aSlot);
++ m_Slots.push_back(aSlot);
+ }
+
+ CERTCertDBHandle* SecurityEnvironment_NssImpl :: getCertDb() throw( Exception , RuntimeException ) {
+ return m_pHandler ;
+ }
+
++//Could we have multiple cert dbs?
+ void SecurityEnvironment_NssImpl :: setCertDb( CERTCertDBHandle* aCertDb ) throw( Exception , RuntimeException ) {
+ m_pHandler = aCertDb ;
+ }
+@@ -440,27 +434,82 @@ SECKEYPrivateKey* SecurityEnvironment_Ns
+ return prikey ;
+ }
+
+-Sequence< Reference < XCertificate > > SecurityEnvironment_NssImpl :: getPersonalCertificates() throw( SecurityException , RuntimeException )
++void SecurityEnvironment_NssImpl::updateSlots()
++{
++ //In case new tokens are present then we can obtain the corresponding slot
++ PK11SlotList * soltList = NULL;
++ PK11SlotListElement * soltEle = NULL;
++ PK11SlotInfo * pSlot = NULL;
++ PK11SymKey * pSymKey = NULL;
++
++ osl::MutexGuard guard(m_mutex);
++
++ m_Slots.clear();
++ m_tSymKeyList.clear();
++
++ soltList = PK11_GetAllTokens( CKM_INVALID_MECHANISM, PR_FALSE, PR_FALSE, NULL ) ;
++ if( soltList != NULL )
++ {
++ for( soltEle = soltList->head ; soltEle != NULL; soltEle = soltEle->next )
++ {
++ pSlot = soltEle->slot ;
++
++ if(pSlot != NULL)
++ {
++ RTL_LOGFILE_TRACE2( "XMLSEC: Found a slot: SlotName=%s, TokenName=%s", PK11_GetSlotName(pSlot), PK11_GetTokenName(pSlot) );
++ pSymKey = PK11_KeyGen( pSlot , CKM_DES3_CBC, NULL, 128, NULL ) ;
++ if( pSymKey == NULL )
++ {
++ PK11_FreeSlot( pSlot ) ;
++ RTL_LOGFILE_TRACE( "XMLSEC: Error - pSymKey is NULL" );
++ continue;
++ }
++
++ addCryptoSlot(pSlot);
++ PK11_FreeSlot( pSlot ) ;
++ pSlot = NULL;
++
++ adoptSymKey( pSymKey ) ;
++ PK11_FreeSymKey( pSymKey ) ;
++ pSymKey = NULL;
++
++ }// end of if(pSlot != NULL)
++ }// end of for
++ }// end of if( soltList != NULL )
++
++}
++
++
++Sequence< Reference < XCertificate > >
++SecurityEnvironment_NssImpl::getPersonalCertificates() throw( SecurityException , RuntimeException )
+ {
+ sal_Int32 length ;
+ X509Certificate_NssImpl* xcert ;
+ std::list< X509Certificate_NssImpl* > certsList ;
+-
++
++ updateSlots();
+ //firstly, we try to find private keys in slot
+- if( m_pSlot != NULL ) {
++ for (CIT_SLOTS is = m_Slots.begin(); is != m_Slots.end(); is++)
++ {
++ PK11SlotInfo *slot = *is;
+ SECKEYPrivateKeyList* priKeyList ;
+ SECKEYPrivateKeyListNode* curPri ;
+
+- if( PK11_NeedLogin( m_pSlot ) ) {
+- SECStatus nRet = PK11_Authenticate( m_pSlot, PR_TRUE, NULL );
+- if( nRet != SECSuccess ) {
++ if( PK11_NeedLogin(slot ) ) {
++ SECStatus nRet = PK11_Authenticate(slot, PR_TRUE, NULL);
++ //PK11_Authenticate may fail in case the a slot has not been initialized.
++ //this is the case if the user has a new profile, so that they have never
++ //added a personal certificate.
++ if( nRet != SECSuccess && PORT_GetError() != SEC_ERROR_IO) {
+ throw NoPasswordException();
+ }
+ }
+
+- priKeyList = PK11_ListPrivateKeysInSlot( m_pSlot ) ;
++ priKeyList = PK11_ListPrivateKeysInSlot(slot) ;
+ if( priKeyList != NULL ) {
+- for( curPri = PRIVKEY_LIST_HEAD( priKeyList ); !PRIVKEY_LIST_END( curPri, priKeyList ) && curPri != NULL ; curPri = PRIVKEY_LIST_NEXT( curPri ) ) {
++ for( curPri = PRIVKEY_LIST_HEAD( priKeyList );
++ !PRIVKEY_LIST_END( curPri, priKeyList ) && curPri != NULL ;
++ curPri = PRIVKEY_LIST_NEXT( curPri ) ) {
+ xcert = NssPrivKeyToXCert( curPri->key ) ;
+ if( xcert != NULL )
+ certsList.push_back( xcert ) ;
+@@ -470,39 +519,6 @@ Sequence< Reference < XCertificate > > S
+ SECKEY_DestroyPrivateKeyList( priKeyList ) ;
+ }
+
+- //Deprecated
+- /*-------
+- {
+- PK11SlotList* soltList ;
+- PK11SlotListElement* soltEle ;
+-
+- SECKEYPrivateKeyList* priKeyList ;
+- SECKEYPrivateKeyListNode* curPri ;
+-
+- soltList = PK11_GetAllTokens( CKM_INVALID_MECHANISM, PR_FALSE, PR_FALSE, NULL ) ;
+- if( soltList != NULL ) {
+- for( soltEle = soltList->head; soltEle != NULL; soltEle = soltEle->next ) {
+- if( PK11_NeedLogin( soltEle->slot ) ) {
+- if( PK11_Authenticate( soltEle->slot, PR_TRUE, NULL ) != SECSuccess ) {
+- return NULL ;
+- }
+- }
+-
+- priKeyList = PK11_ListPrivateKeysInSlot( soltEle->slot ) ;
+- if( priKeyList != NULL ) {
+- for( curPri = PRIVKEY_LIST_HEAD( priKeyList ); !PRIVKEY_LIST_END( curPri, priKeyList ) && curPri != NULL ; curPri = PRIVKEY_LIST_NEXT( curPri ) ) {
+- xcert = NssPrivKeyToXCert( curPri->key ) ;
+- if( xcert != NULL )
+- certsList.push_back( xcert ) ;
+- }
+- }
+-
+- SECKEY_DestroyPrivateKeyList( priKeyList ) ;
+- }
+- }
+- }
+- ----------*/
+-
+ //secondly, we try to find certificate from registered private keys.
+ if( !m_tPriKeyList.empty() ) {
+ std::list< SECKEYPrivateKey* >::iterator priKeyIt ;
+@@ -794,7 +810,8 @@ sal_Int32 SecurityEnvironment_NssImpl ::
+ return validity ;
+ }
+
+-sal_Int32 SecurityEnvironment_NssImpl :: getCertificateCharacters( const ::com::sun::star::uno::Reference< ::com::sun::star::security::XCertificate >& aCert ) throw( ::com::sun::star::uno::SecurityException, ::com::sun::star::uno::RuntimeException ) {
++sal_Int32 SecurityEnvironment_NssImpl::getCertificateCharacters(
++ const ::com::sun::star::uno::Reference< ::com::sun::star::security::XCertificate >& aCert ) throw( ::com::sun::star::uno::SecurityException, ::com::sun::star::uno::RuntimeException ) {
+ sal_Int32 characters ;
+ const X509Certificate_NssImpl* xcert ;
+ const CERTCertificate* cert ;
+@@ -813,82 +830,41 @@ sal_Int32 SecurityEnvironment_NssImpl ::
+
+ characters = 0x00000000 ;
+
+- //Firstly, make sentence whether or not the cert is self-signed.
++ //Firstly, find out whether or not the cert is self-signed.
+ if( SECITEM_CompareItem( &(cert->derIssuer), &(cert->derSubject) ) == SECEqual ) {
+ characters |= ::com::sun::star::security::CertificateCharacters::SELF_SIGNED ;
+ } else {
+ characters &= ~ ::com::sun::star::security::CertificateCharacters::SELF_SIGNED ;
+ }
+
+- //Secondly, make sentence whether or not the cert has a private key.
++ //Secondly, find out whether or not the cert has a private key.
+
+ /*
+ * i40394
+ *
+ * mmi : need to check whether the cert's slot is valid first
+ */
+- {
+- SECKEYPrivateKey* priKey = NULL;
++ SECKEYPrivateKey* priKey = NULL;
+
+- if (cert->slot != NULL)
+- {
+- priKey = PK11_FindPrivateKeyFromCert( cert->slot, ( CERTCertificate* )cert, NULL ) ;
+- }
+-
+- if( priKey == NULL && m_pSlot != NULL && m_pSlot != cert->slot )
+- priKey = PK11_FindPrivateKeyFromCert( m_pSlot, ( CERTCertificate* )cert, NULL ) ;
+-
+- if( priKey != NULL ) {
+- characters |= ::com::sun::star::security::CertificateCharacters::HAS_PRIVATE_KEY ;
+-
+- SECKEY_DestroyPrivateKey( priKey ) ;
+- } else {
+- characters &= ~ ::com::sun::star::security::CertificateCharacters::HAS_PRIVATE_KEY ;
+- }
++ if (cert->slot != NULL)
++ {
++ priKey = PK11_FindPrivateKeyFromCert( cert->slot, ( CERTCertificate* )cert, NULL ) ;
+ }
+-
+- //Thirdly, make sentence whether or not the cert is trusted.
+- /*
++ if(priKey == NULL)
+ {
+- CERTCertificate* tempCert ;
+- CERTIssuerAndSN issuerAndSN ;
+-
+- memset( &issuerAndSN, 0, sizeof( issuerAndSN ) ) ;
+-
+- issuerAndSN.derIssuer.data = cert->derIssuer.data;
+- issuerAndSN.derIssuer.len = cert->derIssuer.len;
+-
+- issuerAndSN.serialNumber.data = cert->serialNumber.data;
+- issuerAndSN.serialNumber.len = cert->serialNumber.len;
+-
+- if( m_pSlot != NULL )
+- tempCert = PK11_FindCertByIssuerAndSN( NULL, &issuerAndSN, NULL ) ;
+- else
+- tempCert = NULL ;
+-
+- if( tempCert != NULL ) {
+- characters |= ::com::sun::star::security::CertificateCharacters::TRUSTED ;
+- CERT_DestroyCertificate( tempCert ) ;
+- } else {
+- characters &= ~ ::com::sun::star::security::CertificateCharacters::TRUSTED ;
++ for (CIT_SLOTS is = m_Slots.begin(); is != m_Slots.end(); is++)
++ {
++ priKey = PK11_FindPrivateKeyFromCert(*is, (CERTCertificate*)cert, NULL);
++ if (priKey)
++ break;
+ }
+ }
+- */
+-
+- {
+- CERTCertificate* tempCert ;
++ if( priKey != NULL ) {
++ characters |= ::com::sun::star::security::CertificateCharacters::HAS_PRIVATE_KEY ;
+
+- if( m_pSlot != NULL )
+- tempCert = PK11_FindCertFromDERCert( m_pSlot, ( CERTCertificate* )cert, NULL ) ;
+- else
+- tempCert = NULL ;
+-
+- if( tempCert != NULL ) {
+- characters |= ::com::sun::star::security::CertificateCharacters::TRUSTED ;
+- CERT_DestroyCertificate( tempCert ) ;
+- } else {
+- characters &= ~ ::com::sun::star::security::CertificateCharacters::TRUSTED ;
+- }
++ SECKEY_DestroyPrivateKey( priKey ) ;
++ } else {
++ characters &= ~ ::com::sun::star::security::CertificateCharacters::HAS_PRIVATE_KEY ;
+ }
+
+ return characters ;
+@@ -946,14 +922,20 @@ xmlSecKeysMngrPtr SecurityEnvironment_Ns
+ SECKEYPrivateKey* priKey = NULL ;
+ xmlSecKeysMngrPtr pKeysMngr = NULL ;
+
+- slot = this->getCryptoSlot() ;
+ handler = this->getCertDb() ;
+
+ /*-
+ * The following lines is based on the private version of xmlSec-NSS
+ * crypto engine
+ */
+- pKeysMngr = xmlSecNssAppliedKeysMngrCreate( slot , handler ) ;
++ int cSlots = m_Slots.size();
++ boost::scoped_array<PK11SlotInfo*> sarSlots(new PK11SlotInfo*[cSlots]);
++ PK11SlotInfo** slots = sarSlots.get();
++ int count = 0;
++ for (CIT_SLOTS islots = m_Slots.begin();islots != m_Slots.end(); islots++, count++)
++ slots[count] = *islots;
++
++ pKeysMngr = xmlSecNssAppliedKeysMngrCreate(slots, cSlots, handler ) ;
+ if( pKeysMngr == NULL )
+ throw RuntimeException() ;
+
+Index: xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.hxx
+===================================================================
+RCS file: /cvs/xml/xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.hxx,v
+retrieving revision 1.6
+retrieving revision 1.6.54.2
+diff -u -p -u -p -r1.6 -r1.6.54.2
+--- xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.hxx 9 Sep 2005 17:33:57 -0000 1.6
++++ xmlsecurity/source/xmlsec/nss/securityenvironment_nssimpl.hxx 12 May 2006 13:22:22 -0000 1.6.54.2
+@@ -92,6 +92,8 @@
+ #include <com/sun/star/lang/XUnoTunnel.hpp>
+ #endif
+
++#include "osl/mutex.hxx"
++
+ #include "pk11func.h"
+ #include "keyhi.h"
+ #include "certdb.h"
+@@ -105,9 +107,13 @@ class SecurityEnvironment_NssImpl : publ
+ ::com::sun::star::lang::XServiceInfo ,
+ ::com::sun::star::lang::XUnoTunnel >
+ {
+- private :
+-
+- PK11SlotInfo* m_pSlot ;
++private :
++
++ std::list< PK11SlotInfo* > m_Slots;
++ typedef std::list< PK11SlotInfo* >::const_iterator CIT_SLOTS;
++
++ osl::Mutex m_mutex;
++
+ CERTCertDBHandle* m_pHandler ;
+ std::list< PK11SymKey* > m_tSymKeyList ;
+ std::list< SECKEYPublicKey* > m_tPubKeyList ;
+@@ -158,10 +164,6 @@ class SecurityEnvironment_NssImpl : publ
+ static SecurityEnvironment_NssImpl* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xObj ) ;
+
+ //Native mehtods
+- virtual PK11SlotInfo* getCryptoSlot() throw( ::com::sun::star::uno::Exception , ::com::sun::star::uno::RuntimeException ) ;
+-
+- virtual void setCryptoSlot( PK11SlotInfo* aSlot ) throw( ::com::sun::star::uno::Exception , ::com::sun::star::uno::RuntimeException ) ;
+-
+ virtual CERTCertDBHandle* getCertDb() throw( ::com::sun::star::uno::Exception , ::com::sun::star::uno::RuntimeException ) ;
+
+ virtual void setCertDb( CERTCertDBHandle* aCertDb ) throw( ::com::sun::star::uno::Exception , ::com::sun::star::uno::RuntimeException ) ;
+@@ -200,6 +202,13 @@ class SecurityEnvironment_NssImpl : publ
+ //Native mehtods
+ virtual xmlSecKeysMngrPtr createKeysManager() throw( ::com::sun::star::uno::Exception , ::com::sun::star::uno::RuntimeException ) ;
+ virtual void destroyKeysManager(xmlSecKeysMngrPtr pKeysMngr) throw( ::com::sun::star::uno::Exception , ::com::sun::star::uno::RuntimeException ) ;
++
++private:
++ void updateSlots();
++
++ virtual void addCryptoSlot( PK11SlotInfo* aSlot ) throw( ::com::sun::star::uno::Exception , ::com::sun::star::uno::RuntimeException ) ;
++
++
+ } ;
+
+ #endif // _XSECURITYENVIRONMENT_NSSIMPL_HXX_
+Index: xmlsecurity/source/xmlsec/nss/seinitializer_nssimpl.cxx
+===================================================================
+RCS file: /cvs/xml/xmlsecurity/source/xmlsec/nss/seinitializer_nssimpl.cxx,v
+retrieving revision 1.15
+retrieving revision 1.15.54.3
+diff -u -p -u -p -r1.15 -r1.15.54.3
+--- xmlsecurity/source/xmlsec/nss/seinitializer_nssimpl.cxx 9 Sep 2005 17:34:13 -0000 1.15
++++ xmlsecurity/source/xmlsec/nss/seinitializer_nssimpl.cxx 12 May 2006 13:31:16 -0000 1.15.54.3
+@@ -182,9 +182,6 @@ cssu::Reference< cssxc::XXMLSecurityCont
+ throw (cssu::RuntimeException)
+ {
+ CERTCertDBHandle *pCertHandle = NULL ;
+- PK11SlotInfo *pSlot = NULL , *pInternalSlot = NULL ;
+- PK11SymKey *pSymKey = NULL ;
+- PRBool found;
+
+ rtl::OString sCertDir;
+ if( sCertDB.getLength() )
+@@ -244,144 +241,30 @@ cssu::Reference< cssxc::XXMLSecurityCont
+
+ pCertHandle = CERT_GetDefaultCertDB() ;
+
+- /*- i39448 - we will get all slots defined in the profile
+- * ---------- and alloc them in each SecurityEnviroment .
+- * ---------- By CP/20050105
+- --------------------------*/
+- pInternalSlot = PK11_GetInternalKeySlot() ;
+- if (pInternalSlot == NULL)
+- {
+- // PK11_LogoutAll();
+- // NSS_Shutdown();
+- RTL_LOGFILE_TRACE( "XMLSEC: Error - pInternalSlot is NULL!" );
+- return NULL;
+- }
+ try
+ {
+- PK11SlotList* soltList ;
+- PK11SlotListElement* soltEle ;
+-
+ /* Build XML Security Context */
+ const rtl::OUString sSecyrutyContext ( RTL_CONSTASCII_USTRINGPARAM( SECURITY_CONTEXT ) );
+ cssu::Reference< cssxc::XXMLSecurityContext > xSecCtx( mxMSF->createInstance ( sSecyrutyContext ), cssu::UNO_QUERY );
+ if( !xSecCtx.is() )
+- {
+- // PK11_LogoutAll();
+- // NSS_Shutdown();
+ return NULL;
+- }
+-
+- soltList = PK11_GetAllTokens( CKM_INVALID_MECHANISM, PR_FALSE, PR_FALSE, NULL ) ;
+- if( soltList != NULL ) {
+- for( soltEle = soltList->head ; soltEle != NULL; soltEle = soltEle->next )
+- {
+- RTL_LOGFILE_TRACE( "XMLSEC: Trying token..." );
+- found = PR_FALSE;
+-
+- pSlot = soltEle->slot ;
+-
+- if(pSlot != NULL){
+- RTL_LOGFILE_TRACE2( "XMLSEC: Found a slot: SlotName=%s, TokenName=%s", PK11_GetSlotName(pSlot), PK11_GetTokenName(pSlot) );
+- pSymKey = PK11_KeyGen( pSlot , CKM_DES3_CBC, NULL, 128, NULL ) ;
+- if( pSymKey == NULL )
+- {
+- PK11_FreeSlot( pSlot ) ;
+- // PK11_LogoutAll();
+- // NSS_Shutdown();
+- RTL_LOGFILE_TRACE( "XMLSEC: Error - pSymKey is NULL" );
+- return NULL;
+- }
+-
+- /* Build Security Environment */
+- const rtl::OUString sSecyrutyEnvironment ( RTL_CONSTASCII_USTRINGPARAM( SECURITY_ENVIRONMENT ) );
+- cssu::Reference< cssxc::XSecurityEnvironment > xSecEnv( mxMSF->createInstance ( sSecyrutyEnvironment ), cssu::UNO_QUERY );
+- if( !xSecEnv.is() )
+- {
+- PK11_FreeSymKey( pSymKey ) ;
+- PK11_FreeSlot( pSlot ) ;
+- // PK11_LogoutAll();
+- // NSS_Shutdown();
+- return NULL;
+- }
+-
+- /* Setup key slot and certDb */
+- cssu::Reference< cssl::XUnoTunnel > xEnvTunnel( xSecEnv , cssu::UNO_QUERY ) ;
+- if( !xEnvTunnel.is() )
+- {
+- PK11_FreeSymKey( pSymKey ) ;
+- PK11_FreeSlot( pSlot ) ;
+- // PK11_LogoutAll();
+- // NSS_Shutdown();
+- return NULL;
+- }
+-
+- SecurityEnvironment_NssImpl* pSecEnv = ( SecurityEnvironment_NssImpl* )xEnvTunnel->getSomething( SecurityEnvironment_NssImpl::getUnoTunnelId() ) ;
+- if( pSecEnv == NULL )
+- {
+- PK11_FreeSymKey( pSymKey ) ;
+- PK11_FreeSlot( pSlot ) ;
+- // PK11_LogoutAll();
+- // NSS_Shutdown();
+- return NULL;
+- }
+-
+- // search the internal slot.
+- //PR_fprintf(PR_STDOUT, "Token:%s\n",PK11_GetSlotName(pSlot));
+- //found = PK11_IsInternal(pSlot) ; //This method will return two true result.
+- if((!strcmp(PK11_GetSlotName(pInternalSlot),PK11_GetSlotName(pSlot))&&(!strcmp(PK11_GetTokenName(pInternalSlot),PK11_GetTokenName(pSlot)))))
+- {
+- found = PR_TRUE;
+- }
+-
+- pSecEnv->setCryptoSlot( pSlot ) ;
+- PK11_FreeSlot( pSlot ) ;
+- pSlot = NULL;
+-
+- pSecEnv->setCertDb( pCertHandle ) ;
+-
+- pSecEnv->adoptSymKey( pSymKey ) ;
+- PK11_FreeSymKey( pSymKey ) ;
+- pSymKey = NULL;
+-
+- sal_Int32 n = xSecCtx->addSecurityEnvironment( xSecEnv ) ;
+-
+- if(found != PR_FALSE)
+- {
+- RTL_LOGFILE_TRACE( "XMLSEC: Using this slot as the Default Security Environment." );
+- xSecCtx->setDefaultSecurityEnvironmentIndex( n ) ;
+- }
+-
+-
+- }// end of if(pSlot != NULL)
+- }// end of for
+- }// end of if( soltList != NULL )
+-
+- if(pInternalSlot != NULL)
+- {
+- PK11_FreeSlot(pInternalSlot) ;
+- pInternalSlot = NULL ;
+- }
+
++ const rtl::OUString sSecyrutyEnvironment ( RTL_CONSTASCII_USTRINGPARAM( SECURITY_ENVIRONMENT ) );
++ cssu::Reference< cssxc::XSecurityEnvironment > xSecEnv( mxMSF->createInstance ( sSecyrutyEnvironment ), cssu::UNO_QUERY );
++ cssu::Reference< cssl::XUnoTunnel > xEnvTunnel( xSecEnv , cssu::UNO_QUERY ) ;
++ if( !xEnvTunnel.is() )
++ return NULL;
++ SecurityEnvironment_NssImpl* pSecEnv = ( SecurityEnvironment_NssImpl* )xEnvTunnel->getSomething(
++ SecurityEnvironment_NssImpl::getUnoTunnelId() ) ;
++ pSecEnv->setCertDb(pCertHandle);
++
++ sal_Int32 n = xSecCtx->addSecurityEnvironment(xSecEnv);
++ //originally the SecurityEnvironment with the internal slot was set as default
++ xSecCtx->setDefaultSecurityEnvironmentIndex( n );
+ return xSecCtx;
+ }
+ catch( cssu::Exception& )
+ {
+- if (pSymKey != NULL)
+- {
+- PK11_FreeSymKey( pSymKey ) ;
+- }
+-
+- if (pSlot != NULL)
+- {
+- PK11_FreeSlot( pSlot ) ;
+- }
+-
+- if(pInternalSlot != NULL)
+- {
+- PK11_FreeSlot(pInternalSlot) ;
+- pInternalSlot = NULL ;
+- }
+-
+ //PK11_LogoutAll();
+ //NSS_Shutdown();
+ return NULL;
+@@ -403,6 +286,7 @@ void SAL_CALL SEInitializer_NssImpl::fre
+ rtl::OUString SEInitializer_NssImpl_getImplementationName ()
+ throw (cssu::RuntimeException)
+ {
++
+ return rtl::OUString ( RTL_CONSTASCII_USTRINGPARAM ( IMPLEMENTATION_NAME ) );
+ }
+
+Index: xmlsecurity/source/xmlsec/nss/xmlsecuritycontext_nssimpl.cxx
+===================================================================
+RCS file: /cvs/xml/xmlsecurity/source/xmlsec/nss/xmlsecuritycontext_nssimpl.cxx,v
+retrieving revision 1.3
+retrieving revision 1.3.54.1
+diff -u -p -u -p -r1.3 -r1.3.54.1
+--- xmlsecurity/source/xmlsec/nss/xmlsecuritycontext_nssimpl.cxx 9 Sep 2005 17:35:50 -0000 1.3
++++ xmlsecurity/source/xmlsec/nss/xmlsecuritycontext_nssimpl.cxx 5 May 2006 14:29:32 -0000 1.3.54.1
+@@ -189,14 +189,15 @@ void SAL_CALL XMLSecurityContext_NssImpl
+ //Create key manager
+ Reference< XUnoTunnel > xEnvTunnel( m_xSecurityEnvironment , UNO_QUERY ) ;
+ if( !xEnvTunnel.is() ) {
+- throw RuntimeException() ;
++ throw RuntimeException() ;^1
+ }
+
+ SecurityEnvironment_NssImpl* pSecEnv = ( SecurityEnvironment_NssImpl* )xEnvTunnel->getSomething( SecurityEnvironment_NssImpl::getUnoTunnelId() ) ;
+ if( pSecEnv == NULL )
+ throw RuntimeException() ;
+
+- slot = pSecEnv->getCryptoSlot() ;
++ //todo
++// slot = pSecEnv->getCryptoSlot() ;
+ handler = pSecEnv->getCertDb() ;
+
+ /*-
+Index: libxmlsec/xmlsec1-1.2.6.patch
+===================================================================
+RCS file: /cvs/external/libxmlsec/xmlsec1-1.2.6.patch,v
+retrieving revision 1.13
+retrieving revision 1.13.4.2
+diff -u -p -u -p -r1.13 -r1.13.4.2
+--- libxmlsec/xmlsec1-1.2.6.patch 9 Mar 2006 10:18:52 -0000 1.13
++++ libxmlsec/xmlsec1-1.2.6.patch 8 May 2006 10:27:01 -0000 1.13.4.2
+@@ -298,12 +298,12 @@
+
+ #endif /* XMLSEC_NO_X509 */
+
+-*** misc/xmlsec1-1.2.6/include/xmlsec/nss/akmngr.h 2005-10-25 16:18:25.229244000 +0200
+---- misc/build/xmlsec1-1.2.6/include/xmlsec/nss/akmngr.h 2005-10-25 16:17:20.875018000 +0200
++*** misc/xmlsec1-1.2.6/include/xmlsec/nss/akmngr.h 2006-05-08 12:20:35.464923000 +0200
++--- misc/build/xmlsec1-1.2.6/include/xmlsec/nss/akmngr.h 2006-05-08 12:19:38.888548000 +0200
+ ***************
+ *** 1 ****
+ ! dummy
+---- 1,55 ----
++--- 1,56 ----
+ ! /**
+ ! * XMLSec library
+ ! *
+@@ -330,7 +330,8 @@
+ !
+ ! XMLSEC_CRYPTO_EXPORT xmlSecKeysMngrPtr
+ ! xmlSecNssAppliedKeysMngrCreate(
+-! PK11SlotInfo* slot ,
++! PK11SlotInfo** slots,
++! int cSlots,
+ ! CERTCertDBHandle* handler
+ ! ) ;
+ !
+@@ -3282,12 +3283,12 @@
+ }
+ }
+ xmlFree(cName);
+-*** misc/xmlsec1-1.2.6/src/nss/akmngr.c 2005-10-25 16:18:25.389481000 +0200
+---- misc/build/xmlsec1-1.2.6/src/nss/akmngr.c 2005-10-25 16:17:21.304210000 +0200
++*** misc/xmlsec1-1.2.6/src/nss/akmngr.c 2006-05-08 12:20:35.581067000 +0200
++--- misc/build/xmlsec1-1.2.6/src/nss/akmngr.c 2006-05-08 12:20:20.572545000 +0200
+ ***************
+ *** 1 ****
+ ! dummy
+---- 1,381 ----
++--- 1,384 ----
+ ! /**
+ ! * XMLSec library
+ ! *
+@@ -3318,7 +3319,8 @@
+ !
+ ! /**
+ ! * xmlSecNssAppliedKeysMngrCreate:
+-! * @slot: the pointer to NSS PKCS#11 slot infomation.
++! * @slot: array of pointers to NSS PKCS#11 slot infomation.
++! * @cSlots: number of slots in the array
+ ! * @handler: the pointer to NSS certificate database.
+ ! *
+ ! * Create and load NSS crypto slot and certificate database into keys manager
+@@ -3327,13 +3329,14 @@
+ ! */
+ ! xmlSecKeysMngrPtr
+ ! xmlSecNssAppliedKeysMngrCreate(
+-! PK11SlotInfo* slot ,
++! PK11SlotInfo** slots,
++! int cSlots,
+ ! CERTCertDBHandle* handler
+ ! ) {
+ ! xmlSecKeyDataStorePtr certStore = NULL ;
+ ! xmlSecKeysMngrPtr keyMngr = NULL ;
+ ! xmlSecKeyStorePtr keyStore = NULL ;
+-!
++! int islot = 0;
+ ! keyStore = xmlSecKeyStoreCreate( xmlSecNssKeysStoreId ) ;
+ ! if( keyStore == NULL ) {
+ ! xmlSecError( XMLSEC_ERRORS_HERE ,
+@@ -3344,7 +3347,8 @@
+ ! return NULL ;
+ ! }
+ !
+-! if( slot != NULL ) {
++! for (islot = 0; islot < cSlots; islot++)
++! {
+ ! xmlSecNssKeySlotPtr keySlot ;
+ !
+ ! /* Create a key slot */
+@@ -3361,7 +3365,7 @@
+ ! }
+ !
+ ! /* Set slot */
+-! if( xmlSecNssKeySlotSetSlot( keySlot , slot ) < 0 ) {
++! if( xmlSecNssKeySlotSetSlot( keySlot , slots[islot] ) < 0 ) {
+ ! xmlSecError( XMLSEC_ERRORS_HERE ,
+ ! xmlSecErrorsSafeString( xmlSecKeyStoreGetName( keyStore ) ) ,
+ ! "xmlSecNssKeySlotSetSlot" ,
+Index: offapi/com/sun/star/security/CertificateCharacters.idl
+===================================================================
+RCS file: /cvs/api/offapi/com/sun/star/security/CertificateCharacters.idl,v
+retrieving revision 1.4
+retrieving revision 1.4.110.1
+diff -u -p -u -p -r1.4 -r1.4.110.1
+--- offapi/com/sun/star/security/CertificateCharacters.idl 8 Sep 2005 04:09:19 -0000 1.4
++++ offapi/com/sun/star/security/CertificateCharacters.idl 9 May 2006 14:15:53 -0000 1.4.110.1
+@@ -58,11 +58,6 @@ constants CertificateCharacters
+ const long SELF_SIGNED = 0x00000001 ;
+
+ /**
+- * It is a trusted certificate.
+- */
+- const long TRUSTED = 0x00000002 ;
+-
+- /**
+ * A private key binding with the certificate is in user's profile.
+ */
+ const long HAS_PRIVATE_KEY = 0x00000004 ;
diff --git a/patches/src680/dbase-utf8.diff b/patches/src680/dbase-utf8.diff
new file mode 100644
index 000000000..c45743a2e
--- /dev/null
+++ b/patches/src680/dbase-utf8.diff
@@ -0,0 +1,98 @@
+Index: connectivity/source/drivers/dbase/DTable.cxx
+===================================================================
+RCS file: /cvs/dba/connectivity/source/drivers/dbase/DTable.cxx,v
+retrieving revision 1.91
+diff -u -p -u -r1.91 DTable.cxx
+--- connectivity/source/drivers/dbase/DTable.cxx 16 Jan 2006 15:03:59 -0000 1.91
++++ connectivity/source/drivers/dbase/DTable.cxx 22 May 2006 11:17:42 -0000
+@@ -1650,8 +1650,8 @@ BOOL ODbaseTable::UpdateBuffer(OValueRef
+
+ // convert the string, using the connection's encoding
+ ::rtl::OString sEncoded;
+- DBTypeConversion::convertUnicodeString( sStringToWrite, sEncoded, getConnection()->getTextEncoding() );
+- memcpy( pData, sEncoded.getStr(), ::std::min( nLen, sEncoded.getLength() ) );
++ DBTypeConversion::convertUnicodeStringToLength( sStringToWrite, sEncoded, nLen, getConnection()->getTextEncoding() );
++ memcpy( pData, sEncoded.getStr(), sEncoded.getLength() );
+
+ }
+ break;
+Index: connectivity/source/commontools/dbtools2.cxx
+===================================================================
+RCS file: /cvs/dba/connectivity/source/commontools/dbtools2.cxx,v
+retrieving revision 1.14
+diff -u -p -u -r1.14 dbtools2.cxx
+--- connectivity/source/commontools/dbtools2.cxx 8 Sep 2005 05:15:04 -0000 1.14
++++ connectivity/source/commontools/dbtools2.cxx 22 May 2006 11:17:42 -0000
+@@ -877,6 +877,32 @@ sal_Int32 DBTypeConversion::convertUnico
+
+ return _rDest.getLength();
+ }
++
++#include <stdio.h>
++
++sal_Int32 DBTypeConversion::convertUnicodeStringToLength(
++ const ::rtl::OUString& _rSource,
++ ::rtl::OString& _rDest,
++ sal_Int32 _nToLength,
++ rtl_TextEncoding _eEncoding
++)
++{
++ /* this could clearly be optimized several ways */
++ sal_Int32 nLen = 0, nSize;
++ for (nSize = _rSource.getLength(); nSize > 0; nSize--) {
++ if ((nLen = convertUnicodeString (_rSource.copy(0, nSize),
++ _rDest, _eEncoding)) > _nToLength)
++ _rDest = rtl::OString();
++ else
++ break;
++ }
++ if (nSize != _rSource.getLength())
++ fprintf (stderr, "Truncated string '%s' to '%s' %d %d\n",
++ rtl::OUStringToOString(_rSource, RTL_TEXTENCODING_UTF8).getStr(),
++ _rDest.getStr(), nLen, _nToLength);
++
++ return ::std::min (nLen, _nToLength);
++}
+ //.........................................................................
+ } // namespace dbtools
+ //.........................................................................
+Index: dbaccess/source/ui/dlg/detailpages.cxx
+===================================================================
+RCS file: /cvs/dba/dbaccess/source/ui/dlg/detailpages.cxx,v
+retrieving revision 1.38
+diff -u -p -u -r1.38 detailpages.cxx
+--- dbaccess/source/ui/dlg/detailpages.cxx 23 Sep 2005 12:29:50 -0000 1.38
++++ dbaccess/source/ui/dlg/detailpages.cxx 22 May 2006 11:31:08 -0000
+@@ -359,8 +359,8 @@ DBG_NAME(OCommonBehaviourTabPage)
+ if (pTypeCollection && pConnectUrl && pConnectUrl->GetValue().Len())
+ eDSType = pTypeCollection->getType(pConnectUrl->GetValue());
+
+- // the only types we're interested in is TEXT and DBASE
+- if ( ( DST_DBASE == eDSType ) || ( DST_FLAT == eDSType ) )
++ // the only type we're interested in is TEXT
++ if ( DST_FLAT == eDSType )
+ {
+ // for these types, we need to exclude all encodings which do not have a fixed character
+ // length (such as UTF-8)
+Index: connectivity/inc/connectivity/dbconversion.hxx
+===================================================================
+RCS file: /cvs/dba/connectivity/inc/connectivity/dbconversion.hxx,v
+retrieving revision 1.13
+diff -u -p -u -r1.13 dbconversion.hxx
+--- connectivity/inc/connectivity/dbconversion.hxx 8 Sep 2005 05:00:55 -0000 1.13
++++ connectivity/inc/connectivity/dbconversion.hxx 22 May 2006 18:47:39 -0000
+@@ -197,6 +197,14 @@ namespace dbtools
+ rtl_TextEncoding _eEncoding
+ )
+ SAL_THROW((::com::sun::star::sdbc::SQLException));
++
++ static sal_Int32 convertUnicodeStringToLength(
++ const ::rtl::OUString& _rSource,
++ ::rtl::OString& _rDest,
++ sal_Int32 _nToLength,
++ rtl_TextEncoding _eEncoding
++ )
++ SAL_THROW((::com::sun::star::sdbc::SQLException));
+ };
+
+ //.........................................................................
diff --git a/patches/src680/disable-access.diff b/patches/src680/disable-access.diff
index 3174d9862..afb4a9966 100644
--- a/patches/src680/disable-access.diff
+++ b/patches/src680/disable-access.diff
@@ -27,7 +27,7 @@
+ AC_MSG_RESULT([yes])
+ ENABLE_ACCESS="YES"
+ AC_MSG_CHECKING([which mdbtools to use])
-+ if test "$with_system_mdbtools" == "yes"; then
++ if test "$with_system_mdbtools" = "yes"; then
+ AC_MSG_RESULT([external])
+ SYSTEM_MDBTOOLS=YES
+ else
diff --git a/patches/src680/fix-fileview-search.diff b/patches/src680/fix-fileview-search.diff
new file mode 100644
index 000000000..2af3018b9
--- /dev/null
+++ b/patches/src680/fix-fileview-search.diff
@@ -0,0 +1,20 @@
+--- svtools/source/contnr/fileview.cxx.m163 2006-04-21 00:53:00.000000000 +0800
++++ svtools/source/contnr/fileview.cxx 2006-04-21 15:08:15.000000000 +0800
+@@ -1105,10 +1105,13 @@
+ if ( bFound )
+ {
+ SvLBoxEntry* pEntry = GetEntry( mnSearchIndex );
+- SelectAll( FALSE );
+- Select( pEntry );
+- SetCurEntry( pEntry );
+- MakeVisible( pEntry );
++ if( pEntry != NULL )
++ {
++ SelectAll( FALSE );
++ Select( pEntry );
++ SetCurEntry( pEntry );
++ MakeVisible( pEntry );
++ }
+ }
+ else
+ Sound::Beep();
diff --git a/patches/src680/fix_filedlghelper.diff b/patches/src680/fix_filedlghelper.diff
new file mode 100644
index 000000000..186112ecc
--- /dev/null
+++ b/patches/src680/fix_filedlghelper.diff
@@ -0,0 +1,31 @@
+--- sfx2/source/dialog/filedlghelper.cxx.old 2006-04-14 19:21:26.000000000 +0200
++++ sfx2/source/dialog/filedlghelper.cxx 2006-04-14 19:21:43.000000000 +0200
+@@ -102,6 +102,12 @@
+ #ifndef _COM_SUN_STAR_UCB_INTERACTIVEAUGMENTEDIOEXCEPTION_HPP_
+ #include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
+ #endif
++#ifndef _COM_SUN_STAR_UCB_INTERACTIVENETWORKGENERALEXCEPTION_HPP_
++#include <com/sun/star/ucb/InteractiveNetworkGeneralException.hpp>
++#endif
++#ifndef _COM_SUN_STAR_IO_IOEXCEPTION_HPP_
++#include <com/sun/star/io/IOException.hpp>
++#endif
+
+ #ifndef _COMPHELPER_PROCESSFACTORY_HXX_
+ #include <comphelper/processfactory.hxx>
+@@ -2404,6 +2410,15 @@ int impl_isFolder( const OUString& rPath
+ catch ( star::ucb::InteractiveAugmentedIOException const & )
+ {
+ }
++ catch ( star::uno::RuntimeException const & )
++ {
++ }
++ catch ( star::ucb::InteractiveNetworkGeneralException const & )
++ {
++ }
++ catch ( star::io::IOException const & )
++ {
++ }
+
+ return -1;
+ }
diff --git a/patches/src680/framework-nofocussteal.diff b/patches/src680/framework-nofocussteal.diff
index 0adb7b449..bd09d1ad9 100644
--- a/patches/src680/framework-nofocussteal.diff
+++ b/patches/src680/framework-nofocussteal.diff
@@ -1,1080 +1,61 @@
-diff -ru vcl.preconfig/inc/outdev.h vcl/inc/outdev.h
---- openoffice.org.orig/vcl/inc/outdev.h 2005-09-12 13:37:38.000000000 +0100
-+++ vcl/inc/outdev.h 2005-09-12 14:10:15.000000000 +0100
-@@ -239,7 +239,8 @@
- const Font& rFont, const Size& rSize, ImplFontSubstEntry* pDevSpecific );
- ImplFontEntry* GetFallback( ImplDevFontList* pFontList,
- const Font& rFont, const Size& rSize,
-- int nFallbackLevel );
-+ int nFallbackLevel, sal_Unicode *pMissingUnicodes,
-+ int nMissingUnicodes );
- void Release( ImplFontEntry* );
- void Invalidate();
- };
-diff -ru vcl.preconfig/inc/outfont.hxx vcl/inc/outfont.hxx
---- openoffice.org.orig/vcl/inc/outfont.hxx 2005-09-12 13:37:38.000000000 +0100
-+++ vcl/inc/outfont.hxx 2005-09-12 14:48:01.000000000 +0100
-@@ -252,6 +252,7 @@
- ImplDevFontListData* FindFontFamily( const String& rFontName ) const;
- ImplDevFontListData* ImplFindByFont( ImplFontSelectData&, bool bPrinter, ImplFontSubstEntry* pDevSpecificSubst ) const;
- ImplDevFontListData* ImplFindBySearchName( const String& ) const;
-+ ImplDevFontListData* ImplGetFontconfigSubstitute( ImplFontSelectData &rFontSelData, ImplFontSubstEntry* pDevSpecific );
-
- bool HasFallbacks() const;
- void SetFallbacks( ImplDevFontListData**, int nCount );
-@@ -354,6 +355,10 @@
- ImplFontEntry( const ImplFontSelectData& );
- virtual ~ImplFontEntry() {}
-
-+ // cache of Unicode characters and replacement font names
-+ typedef ::std::hash_map<sal_Unicode,String> UnicodeFallbackList;
-+ UnicodeFallbackList maUnicodeFallbackList;
-+
- public: // TODO: make data members private
- ImplFontSelectData maFontSelData; // FontSelectionData
- ImplFontMetricData maMetric; // Font Metric
-@@ -364,6 +369,16 @@
- short mnOwnOrientation; // text angle if lower layers don't rotate text themselves
- short mnOrientation; // text angle in 3600 system
- bool mbInit; // true if maMetric member is valid
-+
-+ void AddFallbackForUnicode( sal_Unicode ch, String fallback )
-+ { maUnicodeFallbackList[ch] = fallback; }
-+ String GetFallbackForUnicode( sal_Unicode ch )
-+ {
-+ UnicodeFallbackList::const_iterator it = maUnicodeFallbackList.find( ch );
-+ if ( it != maUnicodeFallbackList.end() )
-+ return (*it).second;
-+ return String();
-+ }
- };
-
-
-diff -ru vcl.preconfig/source/gdi/outdev3.cxx vcl/source/gdi/outdev3.cxx
---- openoffice.org.orig/vcl/source/gdi/outdev3.cxx 2005-09-12 13:37:04.000000000 +0100
-+++ vcl/source/gdi/outdev3.cxx 2005-09-12 15:26:08.000000000 +0100
-@@ -168,6 +168,9 @@
- #include <memory>
- #include <algorithm>
-
-+#include <psprint/fontmanager.hxx>
-+#include <tools/isolang.hxx>
-+
- // =======================================================================
-
- DBG_NAMEEX( OutputDevice );
-@@ -2656,6 +2659,124 @@ ImplFontCache::~ImplFontCache()
- }
- }
-
-+
-+// -----------------------------------------------------------------------
-+
-+String GetFcSubstitute(const ImplFontSelectData &rFontSelData, sal_Unicode *pMissingGlyphs=0, int nMissingGlyphs=0)
-+{
-+ std::vector<String> aNames;
-+ if( rFontSelData.GetFamilyName().Len() )
-+ {
-+ sal_uInt16 nIndex = 0;
-+ String aTempName;
-+ do
-+ {
-+ aTempName = GetNextFontToken(rFontSelData.GetFamilyName(), nIndex);
-+ aNames.push_back(aTempName);
-+ }
-+ while (nIndex != STRING_NOTFOUND);
-+ }
-+
-+ std::vector<sal_Unicode> aGlyphs;
-+ for (int i=0; i < nMissingGlyphs; ++i)
-+ aGlyphs.push_back(pMissingGlyphs[i]);
-+
-+ ByteString aLangAttrib = ConvertLanguageToIsoByteString( rFontSelData.meLanguage );
-+
-+ psp::italic::type eItalic = psp::italic::Unknown;
-+ if( rFontSelData.GetSlant() != ITALIC_DONTKNOW )
-+ {
-+ switch( rFontSelData.GetSlant() )
-+ {
-+ case ITALIC_NORMAL: eItalic = psp::italic::Italic; break;
-+ case ITALIC_OBLIQUE: eItalic = psp::italic::Oblique; break;
-+ default:
-+ break;
-+ }
-+ }
-+
-+ psp::weight::type eWeight = psp::weight::Unknown;
-+ if( rFontSelData.GetWeight() != WEIGHT_DONTKNOW )
-+ {
-+ switch( rFontSelData.GetWeight() )
-+ {
-+ case WEIGHT_THIN: eWeight = psp::weight::Thin; break;
-+ case WEIGHT_ULTRALIGHT: eWeight = psp::weight::UltraLight; break;
-+ case WEIGHT_LIGHT: eWeight = psp::weight::Light; break;
-+ case WEIGHT_SEMILIGHT: eWeight = psp::weight::SemiLight; break;
-+ case WEIGHT_NORMAL: eWeight = psp::weight::Normal; break;
-+ case WEIGHT_MEDIUM: eWeight = psp::weight::Medium; break;
-+ case WEIGHT_SEMIBOLD: eWeight = psp::weight::SemiBold; break;
-+ case WEIGHT_BOLD: eWeight = psp::weight::Bold; break;
-+ case WEIGHT_ULTRABOLD: eWeight = psp::weight::UltraBold; break;
-+ case WEIGHT_BLACK: eWeight = psp::weight::Black; break;
-+ default:
-+ break;
-+ }
-+ }
-+
-+ psp::width::type eWidth = psp::width::Unknown;
-+ if( rFontSelData.GetWidthType() != WIDTH_DONTKNOW )
-+ {
-+ switch( rFontSelData.GetWidthType() )
-+ {
-+ case WIDTH_ULTRA_CONDENSED: eWidth = psp::width::UltraCondensed; break;
-+ case WIDTH_EXTRA_CONDENSED: eWidth = psp::width::ExtraCondensed; break;
-+ case WIDTH_CONDENSED: eWidth = psp::width::Condensed; break;
-+ case WIDTH_SEMI_CONDENSED: eWidth = psp::width::SemiCondensed; break;
-+ case WIDTH_NORMAL: eWidth = psp::width::Normal; break;
-+ case WIDTH_SEMI_EXPANDED: eWidth = psp::width::SemiExpanded; break;
-+ case WIDTH_EXPANDED: eWidth = psp::width::Expanded; break;
-+ case WIDTH_EXTRA_EXPANDED: eWidth = psp::width::ExtraExpanded; break;
-+ case WIDTH_ULTRA_EXPANDED: eWidth = psp::width::UltraExpanded; break;
-+ default:
-+ break;
-+ }
-+ }
-+
-+ psp::pitch::type ePitch = psp::pitch::Unknown;
-+ if( rFontSelData.GetPitch() != PITCH_DONTKNOW )
-+ {
-+ switch( rFontSelData.GetPitch() )
-+ {
-+ case PITCH_FIXED: ePitch=psp::pitch::Fixed; break;
-+ case PITCH_VARIABLE: ePitch=psp::pitch::Variable; break;
-+ default:
-+ break;
-+ }
-+ }
-+
-+ const psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
-+ return rMgr.Substitute(aNames, aGlyphs, aLangAttrib, eItalic, eWeight, eWidth, ePitch);
-+}
-+
-+// -----------------------------------------------------------------------
-+
-+ImplDevFontListData *ImplDevFontList::ImplGetFontconfigSubstitute( ImplFontSelectData &rFontSelData, ImplFontSubstEntry* pDevSpecific )
-+{
-+ // We dont' actually want to talk to Fontconfig at all for symbol fonts
-+ if (rFontSelData.IsSymbolFont())
-+ return 0;
-+ // StarSymbol is a unicode font, but it still deserves the symbol flag
-+ if( 0 == rFontSelData.maSearchName.CompareIgnoreCaseToAscii( "starsymbol", 10)
-+ || 0 == rFontSelData.maSearchName.CompareIgnoreCaseToAscii( "opensymbol", 10) )
-+ return 0;
-+
-+ String aName(GetFcSubstitute(rFontSelData));
-+ if (!aName.Len())
-+ return 0;
-+
-+ String aUserName(aName);
-+ ImplGetEnglishSearchFontName( aName );
-+ ImplFontSubstitute( aName, FONT_SUBSTITUTE_ALWAYS, pDevSpecific );
-+ ImplDevFontListData *pFontFamily = ImplFindBySearchName( aName );
-+ if (pFontFamily)
-+ rFontSelData.maTargetName = aUserName;
-+
-+ return pFontFamily;
-+}
-+
-+
- // -----------------------------------------------------------------------
-
- ImplFontEntry* ImplFontCache::Get( ImplDevFontList* pFontList,
-@@ -2693,8 +2814,12 @@ ImplFontEntry* ImplFontCache::Get( ImplD
-
- if( !pEntry ) // no direct cache hit
- {
-- // find the best matching logical font family and update font selector accordingly
-- pFontFamily = pFontList->ImplFindByFont( aFontSelData, mbPrinter, pDevSpecific );
-+ pFontFamily = pFontList->ImplGetFontconfigSubstitute( aFontSelData, pDevSpecific );
-+ if (!pFontFamily)
-+ {
-+ // find the best matching logical font family and update font selector accordingly
-+ pFontFamily = pFontList->ImplFindByFont( aFontSelData, mbPrinter, pDevSpecific );
-+ }
- DBG_ASSERT( (pFontFamily != NULL), "ImplFontCache::Get() No logical font found!" );
- aFontSelData.maSearchName = pFontFamily->GetSearchName();
-
-@@ -3014,116 +3139,101 @@ ImplDevFontListData* ImplDevFontList::Im
- // -----------------------------------------------------------------------
-
- ImplFontEntry* ImplFontCache::GetFallback( ImplDevFontList* pFontList,
-- const Font& rOrigFont, const Size& rSize, int nFallbackLevel )
-+ const Font& rOrigFont, const Size& rSize, int nFallbackLevel,
-+ sal_Unicode *pMissingUnicodes, int nMissingUnicodes )
- {
-- // make sure the fontlist knows it's fallbacks
-- if( !pFontList->HasFallbacks() )
-+ ImplFontEntry* pFallbackFont = NULL;
-+ bool cached = false;
-+ bool new_entry = false;
-+ bool symbolFont = false;
-+ ImplFontEntry* pOrigFontEntry = Get( pFontList, rOrigFont, rSize, NULL );
-+ ImplFontSelectData aSelData( rOrigFont, rOrigFont.GetName(), rSize );
-+ sal_uInt16 nToken = 0;
-+ String aOrigFontName( GetNextFontToken(rOrigFont.GetName(), nToken) );
-+
-+ const FontSubstConfigItem& rFontSubst = *FontSubstConfigItem::get();
-+ const FontNameAttr* fontAttr = rFontSubst.getSubstInfo( aOrigFontName );
-+
-+ // We dont' actually want to talk to Fontconfig at all for symbol fonts
-+ if ( pFontList && fontAttr && (fontAttr->Type & IMPL_FONT_ATTR_SYMBOL) )
- {
-- // normalized family names of fonts suited for glyph fallback
-- // if a font is available related fonts can be ignored
-- // TODO: implement dynamic lists
-- static const char* aGlyphFallbackList[] = {
-- // empty strings separate the names of unrelated fonts
-- "eudc", "",
-- "arialunicodems", "cyberbit", "code2000", "",
-- "andalesansui", "",
-- "starsymbol", "opensymbol", "",
-- "msmincho", "fzmingti", "fzheiti", "ipamincho", "sazanamimincho", "kochimincho", "",
-- "sunbatang", "sundotum", "baekmukdotum", "gulim", "batang", "dotum", "",
-- "hgmincholightj", "msunglightsc", "msunglighttc", "hymyeongjolightk", "",
-- "tahoma", "timesnewroman", "lucidatypewriter", "lucidasans", "nimbussansl", "",
-- "shree", "mangal", "raavi", "shruti", "tunga", "latha", "",
-- "shayyalmt", "naskmt", "",
-- "david", "nachlieli", "lucidagrande", "",
-- "norasi", "angsanaupc", "",
-- "khmerossystem", "",
-- "phetsarathot", "",
-- 0
-- };
--
-- bool bHasEudc = false;
-- int nMaxLevel = 0;
-- int nBestQuality = 0;
-- ImplDevFontListData** pFallbackList = NULL;
-- for( const char** ppNames = &aGlyphFallbackList[0];; ++ppNames )
-+ if ( fontAttr->Substitutions.size() )
- {
-- // advance to next sub-list when end-of-sublist marker
-- if( !**ppNames ) // #i46456# check for empty string, i.e., deref string itself not only ptr to it
-+ ::std::vector< String >::const_iterator it = fontAttr->Substitutions.begin();
-+ while ( it != fontAttr->Substitutions.end() )
- {
-- if( nBestQuality > 0 )
-- if( ++nMaxLevel >= MAX_FALLBACK )
-- break;
-- if( !ppNames[1] )
-+ // Since *it is the "search name" like "standardsymbolsl"
-+ // we have to find the Family Name (Standard Symbols L) for Fontconfig
-+ ImplDevFontListData* pFontFamily = pFontList->FindFontFamily( *it );
-+ if (pFontFamily)
-+ {
-+ aSelData.maSearchName = pFontFamily->GetFamilyName();
- break;
-- nBestQuality = 0;
-- continue;
-+ }
-+ ++it;
- }
-+ }
-+ symbolFont = true;
-+ cached = true;
-+ }
-
-- // test if the glyph fallback candidate font is available and scalable
-- String aTokenName( *ppNames, RTL_TEXTENCODING_UTF8 );
-- ImplDevFontListData* pFallbackFont = pFontList->FindFontFamily( aTokenName );
-- if( !pFallbackFont )
-- continue;
-- if( !pFallbackFont->IsScalable() )
-- continue;
-+ // Try cached fallbacks first
-+ if ( !symbolFont && (nMissingUnicodes > 0) )
-+ {
-+ aSelData.maSearchName = pOrigFontEntry->GetFallbackForUnicode( pMissingUnicodes[0] );
-+ if ( aSelData.maSearchName.Len() )
-+ cached = true;
-+ }
-
-- // keep the best font of the glyph fallback sub-list
-- if( nBestQuality < pFallbackFont->GetMinQuality() )
-- {
-- nBestQuality = pFallbackFont->GetMinQuality();
-- // store available glyph fallback fonts
-- if( !pFallbackList )
-- pFallbackList = new ImplDevFontListData*[ MAX_FALLBACK ];
-- pFallbackList[ nMaxLevel ] = pFallbackFont;
-- if( !bHasEudc && !nMaxLevel )
-- bHasEudc = (0 == strncmp( *ppNames, "eudc", 5 ));
-- }
-- }
-+ if ( !cached )
-+ {
-+ String aName(GetFcSubstitute( aSelData, pMissingUnicodes, nMissingUnicodes ));
-+ if (aName.Len())
-+ aSelData.maSearchName = aName;
-+ }
-
-- // sort the list of fonts for glyph fallback by quality (highest first)
-- // #i33947# keep the EUDC font at the front of the list
-- // an insertion sort is good enough for this short list
-- const int nSortStart = bHasEudc ? 1 : 0;
-- for( int i = nSortStart+1, j; i < nMaxLevel; ++i )
-- {
-- ImplDevFontListData* pTestFont = pFallbackList[ i ];
-- int nTestQuality = pTestFont->GetMinQuality();
-- for( j = i; --j >= nSortStart; )
-- if( nTestQuality > pFallbackList[j]->GetMinQuality() )
-- pFallbackList[ j+1 ] = pFallbackList[ j ];
-- else
-- break;
-- pFallbackList[ j+1 ] = pTestFont;
-- }
-+ // Check our font instance cache first, if not found then
-+ // add this ImplFontSelectData to the cache along with its ImplFontEntry
-+ FontInstanceList::const_iterator it = maFontInstanceList.find( aSelData );
-+ if (it != maFontInstanceList.end())
-+ pFallbackFont = (*it).second;
-+ else
-+ {
-+ // find the best matching physical font face
-+ ImplDevFontListData* pFontFamily = pFontList->FindFontFamily( aSelData.maSearchName );
-+ if (pFontFamily)
-+ {
-+ ImplFontData* pFontData = pFontFamily->FindBestFontFace( aSelData );
-
--#if defined(HDU_DEBUG)
-- for( int i = 0; i < nMaxLevel; ++i )
-+ // create a new logical font instance from this physical font face
-+ aSelData.mpFontData = pFontData;
-+ pFallbackFont = pFontData->CreateFontInstance( aSelData );
-+
-+ // if we found a different symbol font we need a symbol conversion table
-+ if( pFontData->IsSymbolFont() )
-+ if( aSelData.maTargetName != aSelData.maSearchName )
-+ pFallbackFont->mpConversion = ImplGetRecodeData( aSelData.maTargetName, aSelData.maSearchName );
-+ // add the new entry to the cache
-+ maFontInstanceList[ aSelData ] = pFallbackFont;
-+ new_entry = true;
-+ }
-+ else
- {
-- ImplDevFontListData* pFont = pFallbackList[ i ];
-- ByteString aFontName( pFont->GetFamilyName(), RTL_TEXTENCODING_UTF8 );
-- fprintf( stderr, "GlyphFallbackFont[%d] (quality=%05d): \"%s\"\n",
-- i, pFont->GetMinQuality(), aFontName.GetBuffer() );
-+ ByteString l( aSelData.maSearchName, RTL_TEXTENCODING_UTF8 );
-+ //fprintf (stderr, "--- Couldn't get FontFamily for '%s'\n", l.GetBuffer());
- }
--#endif
--
-- pFontList->SetFallbacks( pFallbackList, nMaxLevel );
- }
-
-- Font aFallbackFont = rOrigFont;
--
-- // nFallbackLevel==0 => original font without device specific substitution
-- // nFallbackLevel>=1 => use a font from the glyph fallback font list
-- if( nFallbackLevel>=1 )
-+ // Cache the fallback font for each of the missing Unicode chars
-+ if ( !symbolFont && aSelData.maSearchName.Len() )
- {
-- ImplDevFontListData* pFallbackData = pFontList->GetFallback( nFallbackLevel-1 );
-- if( !pFallbackData )
-- return NULL;
--
-- aFallbackFont.SetName( pFallbackData->GetSearchName() );
-+ for ( int i = 0; i < nMissingUnicodes; i++ )
-+ {
-+ if ( ! pOrigFontEntry->GetFallbackForUnicode(pMissingUnicodes[i]).Len() )
-+ pOrigFontEntry->AddFallbackForUnicode( pMissingUnicodes[i], aSelData.maSearchName );
-+ }
- }
-
-- ImplFontEntry* pFallbackFont = Get( pFontList, aFallbackFont, rSize, NULL );
--
- if( pFallbackFont && !pFallbackFont->mbInit )
- {
- // HACK: maMetrics are irrelevant for fallback fonts, but
-@@ -3131,6 +3242,27 @@ ImplFontEntry* ImplFontCache::GetFallbac
- pFallbackFont->maMetric.maStyleName = String();
- }
-
-+ if ( pFallbackFont && !new_entry )
-+ {
-+ // increase the font instance's reference count
-+ if( !pFallbackFont->mnRefCount++ )
-+ --mnRef0Count;
-+ }
-+
+Index: source/helper/statusindicatorfactory.cxx
+===================================================================
+RCS file: /cvs/framework/framework/source/helper/statusindicatorfactory.cxx,v
+retrieving revision 1.21
+diff -u -p -u -r1.21 statusindicatorfactory.cxx
+--- framework/source/helper/statusindicatorfactory.cxx 23 Sep 2005 15:41:23 -0000 1.21
++++ framework/source/helper/statusindicatorfactory.cxx 4 Jan 2006 21:41:06 -0000
+@@ -496,9 +496,11 @@ void StatusIndicatorFactory::implts_make
+
+ if (xParentWindow.is())
+ xParentWindow->setVisible(sal_True);
+#if 0
-+ sal_uInt16 nTok = 0;
-+ ByteString n( GetNextFontToken(rOrigFont.GetName(), nTok), RTL_TEXTENCODING_UTF8);
-+ ByteString m;
-+ if (pFallbackFont)
-+ {
-+ nTok = 0;
-+ ByteString tS( GetNextFontToken(pFallbackFont->maFontSelData.mpFontData->GetFamilyName(), nTok), RTL_TEXTENCODING_UTF8 );
-+ m.Assign( tS );
-+ }
-+ fprintf (stderr, "Glyph fallback '%s'->'%s' %s\n", n.GetBuffer(), pFallbackFont ? m.GetBuffer() : "none",
-+ new_entry ? "(new)" : "(cached)");
+ css::uno::Reference< css::awt::XTopWindow > xParentWindowTop(xParentWindow, css::uno::UNO_QUERY);
+ if (xParentWindowTop.is())
+ xParentWindowTop->toFront();
+#endif
-+
- return pFallbackFont;
}
-@@ -6097,7 +6229,7 @@ SalLayout* OutputDevice::ImplLayout( con
- // do glyph fallback if needed
- // #105768# avoid fallback for very small font sizes
- if( aLayoutArgs.NeedFallback() )
-- if( mpFontEntry && (mpFontEntry->maFontSelData.mnHeight >= 6) )
-+ if( mpFontEntry && (mpFontEntry->maFontSelData.mnHeight >= 3) )
- pSalLayout = ImplGlyphFallbackLayout( pSalLayout, aLayoutArgs );
-
- // position, justify, etc. the layout
-@@ -6141,6 +6273,17 @@ SalLayout* OutputDevice::ImplGlyphFallba
- rLayoutArgs.ResetPos();
- }
- #endif
-+ int nCharPos = -1;
-+ bool bRTL = false;
-+ sal_Unicode *pMissingUnicodes = new sal_Unicode[8];
-+ int nMissingUnicodes = 0;
-+
-+ for( int i=0; i<8 && rLayoutArgs.GetNextPos( &nCharPos, &bRTL); ++i )
-+ {
-+ pMissingUnicodes[i] = rLayoutArgs.mpStr[ nCharPos ];
-+ nMissingUnicodes++;
-+ }
-+ rLayoutArgs.ResetPos();
-
- ImplFontSelectData aFontSelData = mpFontEntry->maFontSelData;
- Size aFontSize( aFontSelData.mnWidth, aFontSelData.mnHeight );
-@@ -6157,7 +6300,8 @@ SalLayout* OutputDevice::ImplGlyphFallba
- {
- // find a font family suited for glyph fallback
- ImplFontEntry* pFallbackFont = mpFontCache->GetFallback( mpFontList,
-- maFont, aFontSize, nFallbackLevel-nDevSpecificFallback );
-+ maFont, aFontSize, nFallbackLevel-nDevSpecificFallback,
-+ (nMissingUnicodes ? pMissingUnicodes : NULL), nMissingUnicodes );
- if( !pFallbackFont )
- break;
-
-@@ -6208,6 +6352,8 @@ SalLayout* OutputDevice::ImplGlyphFallba
- if( !rLayoutArgs.PrepareFallback() )
- break;
- }
-+
-+ delete[] pMissingUnicodes;
-
- if( pMultiSalLayout && pMultiSalLayout->LayoutText( rLayoutArgs ) )
- pSalLayout = pMultiSalLayout;
-diff -ru vcl.preconfig/source/window/window.cxx vcl/source/window/window.cxx
---- openoffice.org.orig/vcl/source/window/window.cxx 2005-09-12 13:37:04.000000000 +0100
-+++ vcl/source/window/window.cxx 2005-09-12 16:18:20.000000000 +0100
-@@ -212,6 +212,7 @@
- #endif
-
- #include <pdfextoutdevdata.hxx>
-+#include <psprint/fontmanager.hxx>
-
- using namespace rtl;
- using namespace ::com::sun::star::uno;
-@@ -350,6 +351,10 @@
- {
- ImplInitFontList();
-
-+ const psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
-+ if (rMgr.hasFontconfig())
-+ return true;
-+
- String aTestText;
- aTestText.Append( Button::GetStandardText( BUTTON_OK ) );
- aTestText.Append( Button::GetStandardText( BUTTON_CANCEL ) );
-diff -ru vcl.preconfig/util/makefile.mk vcl/util/makefile.mk
---- openoffice.org.orig/vcl/util/makefile.mk 2005-09-12 13:37:38.000000000 +0100
-+++ vcl/util/makefile.mk 2005-09-12 14:55:10.000000000 +0100
-@@ -265,7 +265,7 @@
- .ENDIF
-
-
--SHL1STDLIBS += -lX11
-+SHL1STDLIBS += -lX11 -lpsp$(VERSION)$(DLLPOSTFIX)
-
- .ENDIF # "$(GUI)"=="UNX"
-
-Index: inc/psprint/fontmanager.hxx
-===================================================================
-RCS file: /cvs/gsl/psprint/inc/psprint/fontmanager.hxx,v
-retrieving revision 1.24
-diff -u -r1.24 fontmanager.hxx
---- openoffice.org.orig/psprint/uinc/psprint/fontmanager.hxx 5 Aug 2005 13:21:02 -0000 1.24
-+++ psprint/inc/psprint/fontmanager.hxx 12 Sep 2005 16:21:13 -0000
-@@ -75,6 +75,9 @@
- #ifndef _PSPRINT_HELPER_HXX_
- #include <psprint/helper.hxx>
- #endif
-+#ifndef _STRING_HXX
-+#include <tools/string.hxx>
-+#endif
-
- #ifndef _COM_SUN_STAR_LANG_LOCALE_HPP_
- #include <com/sun/star/lang/Locale.hpp>
-@@ -419,6 +422,7 @@
- std::hash_multimap< sal_uInt8, sal_Unicode > m_aAdobecodeToUnicode;
-
- mutable FontCache* m_pFontCache;
-+ bool m_bFontconfigSuccess;
-
- rtl::OString getAfmFile( PrintFont* pFont ) const;
- rtl::OString getFontFile( PrintFont* pFont ) const;
-@@ -729,6 +733,11 @@
- false else
- */
- bool matchFont( FastPrintFontInfo& rInfo, const com::sun::star::lang::Locale& rLocale );
-+
-+ String Substitute(const std::vector<String> &rNames, const std::vector<sal_Unicode> &rGlyphs,
-+ const ByteString &rLangAttrib, italic::type eItalic, weight::type eWeight,
-+ width::type eWidth, pitch::type ePitch) const;
-+ bool hasFontconfig() const { return m_bFontconfigSuccess; }
- };
-
- } // namespace
-Index: source/fontmanager/fontcache.cxx
+ //-----------------------------------------------
+Index: source/loadenv/loadenv.cxx
===================================================================
-RCS file: /cvs/gsl/psprint/source/fontmanager/fontcache.cxx,v
-retrieving revision 1.14
-diff -u -r1.14 fontcache.cxx
---- openoffice.org.orig/psprint/usource/fontmanager/fontcache.cxx 9 Aug 2005 10:59:38 -0000 1.14
-+++ psprint/source/fontmanager/fontcache.cxx 12 Sep 2005 16:21:13 -0000
-@@ -688,9 +688,9 @@
- FontDirMap::const_iterator entry = dir->second.m_aEntries.find( rFile );
- if( entry != dir->second.m_aEntries.end() )
- {
-- bSuccess = true;
- for( FontCacheEntry::const_iterator font = entry->second.m_aEntry.begin(); font != entry->second.m_aEntry.end(); ++font )
- {
-+ bSuccess = true;
- PrintFontManager::PrintFont* pFont = clonePrintFont( *font );
- rNewFonts.push_back( pFont );
- }
-Index: source/fontmanager/fontmanager.cxx
-===================================================================
-RCS file: /cvs/gsl/psprint/source/fontmanager/fontmanager.cxx,v
-retrieving revision 1.59
-diff -u -r1.59 fontmanager.cxx
---- openoffice.org.orig/psprint/usource/fontmanager/fontmanager.cxx 5 Aug 2005 12:53:31 -0000 1.59
-+++ psprint/source/fontmanager/fontmanager.cxx 12 Sep 2005 16:21:14 -0000
-@@ -1155,7 +1155,8 @@ PrintFontManager::PrintFontManager() :
- m_nNextFontID( 1 ),
- m_pAtoms( new MultiAtomProvider() ),
- m_nNextDirAtom( 1 ),
-- m_pFontCache( NULL )
-+ m_pFontCache( NULL ),
-+ m_bFontconfigSuccess(false)
- {
- for( unsigned int i = 0; i < sizeof( aAdobeCodes )/sizeof( aAdobeCodes[0] ); i++ )
- {
-@@ -2109,7 +2110,7 @@ void PrintFontManager::initialize( void*
- #endif
-
- // first try fontconfig
-- bool bFontconfigSuccess = initFontconfig();
-+ m_bFontconfigSuccess = initFontconfig();
+RCS file: /cvs/framework/framework/source/loadenv/loadenv.cxx,v
+retrieving revision 1.21
+diff -u -p -u -r1.21 loadenv.cxx
+--- framework/source/loadenv/loadenv.cxx 11 Nov 2005 12:06:12 -0000 1.21
++++ framework/source/loadenv/loadenv.cxx 4 Jan 2006 21:41:08 -0000
+@@ -1774,9 +1774,10 @@ void LoadEnv::impl_makeFrameWindowVisibl
- // part one - look for downloadable fonts
- rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
-@@ -2131,7 +2132,7 @@ void PrintFontManager::initialize( void*
- }
-
- // don't search through many directories fontconfig already told us about
-- if( ! bFontconfigSuccess )
-+ if( ! m_bFontconfigSuccess )
- {
- Display *pDisplay = (Display*)pInitDisplay;
-
-@@ -2209,7 +2210,7 @@ void PrintFontManager::initialize( void*
- }
- }
- #endif /* SOLARIS */
-- } // ! bFontconfigSuccess
-+ } // ! m_bFontconfigSuccess
+ if (xWindow.is())
+ xWindow->setVisible(sal_True);
+-
++#if 0
+ if (xTopWindow.is())
+ xTopWindow->toFront();
++#endif
- // fill XLFD aliases from fonts.alias files
- initFontsAlias();
-Index: source/fontmanager/fontconfig.cxx
+ /* #i19976#
+ We tried to prevent a toFront() call in case the user putted the
+Index: source/services/frame.cxx
===================================================================
-RCS file: /cvs/gsl/psprint/source/fontmanager/fontconfig.cxx,v
-retrieving revision 1.14
-diff -u -p -u -r1.14 fontconfig.cxx
---- openoffice.org.orig/psprint/source/fontmanager/fontconfig.cxx 27 Oct 2005 07:55:13 -0000 1.14
-+++ psprint/source/fontmanager/fontconfig.cxx 5 Nov 2005 11:22:58 -0000
-@@ -44,10 +44,12 @@ typedef void FcConfig;
- typedef void FcObjectSet;
- typedef void FcPattern;
- typedef void FcFontSet;
-+typedef void FcCharSet;
- typedef int FcResult;
- typedef int FcBool;
- typedef int FcMatchKind;
- typedef char FcChar8;
-+typedef sal_Int32 FcChar32;
- #endif
-
- #include <cstdio>
-@@ -80,6 +82,7 @@ class FontCfgWrapper
- {
- void* m_pLib;
- FcConfig* m_pDefConfig;
-+ FcFontSet* m_pOutlineSet;
-
- FcBool (*m_pFcInit)();
- FcConfig* (*m_pFcConfigGetCurrent)();
-@@ -88,17 +91,23 @@ class FontCfgWrapper
- FcPattern* (*m_pFcPatternCreate)();
- void (*m_pFcPatternDestroy)(FcPattern*);
- FcFontSet* (*m_pFcFontList)(FcConfig*,FcPattern*,FcObjectSet*);
-+ FcFontSet* (*m_pFcConfigGetFonts)(FcConfig*,FcSetName);
- FcFontSet* (*m_pFcFontSetCreate)();
-+ FcCharSet* (*m_pFcCharSetCreate)();
-+ FcBool (*m_pFcCharSetAddChar)(FcCharSet *, FcChar32);
- void (*m_pFcFontSetDestroy)(FcFontSet*);
- FcBool (*m_pFcFontSetAdd)(FcFontSet*,FcPattern*);
-+ void (*m_pFcPatternReference)(FcPattern*);
- FcResult (*m_pFcPatternGetString)(const FcPattern*,const char*,int,FcChar8**);
- FcResult (*m_pFcPatternGetInteger)(const FcPattern*,const char*,int,int*);
- FcResult (*m_pFcPatternGetDouble)(const FcPattern*,const char*,int,double*);
- FcResult (*m_pFcPatternGetBool)(const FcPattern*,const char*,int,FcBool*);
- void (*m_pFcDefaultSubstitute)(FcPattern *);
-- FcPattern* (*m_pFcFontMatch)(FcConfig*,FcPattern*,FcResult*);
-+ FcPattern* (*m_pFcFontSetMatch)(FcConfig*,FcFontSet**, int, FcPattern*,FcResult*);
- FcBool (*m_pFcConfigSubstitute)(FcConfig*,FcPattern*,FcMatchKind);
- FcBool (*m_pFcPatternAddInteger)(FcPattern*,const char*,int);
-+ FcBool (*m_pFcPatternAddBool)(FcPattern*,const char*,FcBool);
-+ FcBool (*m_pFcPatternAddCharSet)(FcPattern*,const char*,const FcCharSet*);
- FcBool (*m_pFcPatternAddString)(FcPattern*,const char*,const FcChar8*);
-
- void* loadSymbol( const char* );
-@@ -114,6 +123,7 @@ public:
- { return m_pLib != NULL;}
-
- FcConfig* getDefConfig() { return m_pDefConfig; }
-+ FcFontSet* getFontSet() { return m_pOutlineSet; }
-
- FcBool FcInit()
- { return m_pFcInit(); }
-@@ -143,14 +153,28 @@ public:
-
- FcFontSet* FcFontList( FcConfig* pConfig, FcPattern* pPattern, FcObjectSet* pSet )
- { return m_pFcFontList( pConfig, pPattern, pSet ); }
--
-+
-+ FcFontSet* FcConfigGetFonts( FcConfig* pConfig, FcSetName eSet)
-+ { return m_pFcConfigGetFonts( pConfig, eSet ); }
-+
- FcFontSet* FcFontSetCreate()
- { return m_pFcFontSetCreate(); }
-+
-+ FcCharSet* FcCharSetCreate()
-+ { return m_pFcCharSetCreate(); }
-+
-+ FcBool FcCharSetAddChar(FcCharSet *fcs, FcChar32 ucs4)
-+ { return m_pFcCharSetAddChar(fcs, ucs4); }
-+
- void FcFontSetDestroy( FcFontSet* pSet )
- { m_pFcFontSetDestroy( pSet );}
-+
- FcBool FcFontSetAdd( FcFontSet* pSet, FcPattern* pPattern )
- { return m_pFcFontSetAdd( pSet, pPattern ); }
-
-+ void FcPatternReference( FcPattern* pPattern )
-+ { m_pFcPatternReference( pPattern ); }
-+
- FcResult FcPatternGetString( const FcPattern* pPattern, const char* object, int n, FcChar8** s )
- { return m_pFcPatternGetString( pPattern, object, n, s ); }
-
-@@ -164,12 +188,16 @@ public:
- { return m_pFcPatternGetBool( pPattern, object, n, s ); }
- void FcDefaultSubstitute( FcPattern* pPattern )
- { m_pFcDefaultSubstitute( pPattern ); }
-- FcPattern* FcFontMatch( FcConfig* pConfig, FcPattern* pPattern, FcResult* pResult )
-- { return m_pFcFontMatch( pConfig, pPattern, pResult ); }
-+ FcPattern* FcFontSetMatch(FcConfig* pConfig, FcFontSet** ppFontSet, int nset, FcPattern *pPattern, FcResult *pResult)
-+ { return m_pFcFontSetMatch( pConfig, ppFontSet, nset, pPattern, pResult ); }
- FcBool FcConfigSubstitute( FcConfig* pConfig, FcPattern* pPattern, FcMatchKind eKind )
- { return m_pFcConfigSubstitute( pConfig, pPattern, eKind ); }
- FcBool FcPatternAddInteger( FcPattern* pPattern, const char* pObject, int nValue )
- { return m_pFcPatternAddInteger( pPattern, pObject, nValue ); }
-+ FcBool FcPatternAddBool( FcPattern* pPattern, const char* pObject, FcBool b )
-+ { return m_pFcPatternAddBool( pPattern, pObject, b ); }
-+ FcBool FcPatternAddCharSet( FcPattern* pPattern, const char* pObject, const FcCharSet *c)
-+ { return m_pFcPatternAddCharSet( pPattern, pObject, c ); }
- FcBool FcPatternAddString( FcPattern* pPattern, const char* pObject, const FcChar8* pString )
- { return m_pFcPatternAddString( pPattern, pObject, pString ); }
- };
-@@ -186,7 +214,8 @@ void* FontCfgWrapper::loadSymbol( const
-
- FontCfgWrapper::FontCfgWrapper()
- : m_pLib( NULL ),
-- m_pDefConfig( NULL )
-+ m_pDefConfig( NULL ),
-+ m_pOutlineSet( NULL )
- {
- #ifdef ENABLE_FONTCONFIG
- OUString aLib( RTL_CONSTASCII_USTRINGPARAM( "libfontconfig.so.1" ) );
-@@ -220,12 +249,20 @@ FontCfgWrapper::FontCfgWrapper()
- loadSymbol( "FcPatternDestroy" );
- m_pFcFontList = (FcFontSet*(*)(FcConfig*,FcPattern*,FcObjectSet*))
- loadSymbol( "FcFontList" );
-+ m_pFcConfigGetFonts = (FcFontSet*(*)(FcConfig*,FcSetName))
-+ loadSymbol( "FcConfigGetFonts" );
- m_pFcFontSetCreate = (FcFontSet*(*)())
- loadSymbol( "FcFontSetCreate" );
-+ m_pFcCharSetCreate = (FcCharSet*(*)())
-+ loadSymbol( "FcCharSetCreate" );
-+ m_pFcCharSetAddChar = (FcBool(*)(FcCharSet*, FcChar32))
-+ loadSymbol( "FcCharSetAddChar" );
- m_pFcFontSetDestroy = (void(*)(FcFontSet*))
- loadSymbol( "FcFontSetDestroy" );
- m_pFcFontSetAdd = (FcBool(*)(FcFontSet*,FcPattern*))
- loadSymbol( "FcFontSetAdd" );
-+ m_pFcPatternReference = (void(*)(FcPattern*))
-+ loadSymbol( "FcPatternReference" );
- m_pFcPatternGetString = (FcResult(*)(const FcPattern*,const char*,int,FcChar8**))
- loadSymbol( "FcPatternGetString" );
- m_pFcPatternGetInteger = (FcResult(*)(const FcPattern*,const char*,int,int*))
-@@ -236,12 +273,16 @@ FontCfgWrapper::FontCfgWrapper()
- loadSymbol( "FcPatternGetBool" );
- m_pFcDefaultSubstitute = (void(*)(FcPattern *))
- loadSymbol( "FcDefaultSubstitute" );
-- m_pFcFontMatch = (FcPattern*(*)(FcConfig*,FcPattern*,FcResult*))
-- loadSymbol( "FcFontMatch" );
-+ m_pFcFontSetMatch = (FcPattern*(*)(FcConfig*,FcFontSet**, int, FcPattern*,FcResult*))
-+ loadSymbol( "FcFontSetMatch" );
- m_pFcConfigSubstitute = (FcBool(*)(FcConfig*,FcPattern*,FcMatchKind))
- loadSymbol( "FcConfigSubstitute" );
- m_pFcPatternAddInteger = (FcBool(*)(FcPattern*,const char*,int))
- loadSymbol( "FcPatternAddInteger" );
-+ m_pFcPatternAddBool = (FcBool(*)(FcPattern*,const char*,FcBool))
-+ loadSymbol( "FcPatternAddBool" );
-+ m_pFcPatternAddCharSet = (FcBool(*)(FcPattern*,const char*,const FcCharSet *))
-+ loadSymbol( "FcPatternAddCharSet" );
- m_pFcPatternAddString = (FcBool(*)(FcPattern*,const char*,const FcChar8*))
- loadSymbol( "FcPatternAddString" );
-
-@@ -253,17 +294,23 @@ FontCfgWrapper::FontCfgWrapper()
- m_pFcPatternCreate &&
- m_pFcPatternDestroy &&
- m_pFcFontList &&
-+ m_pFcConfigGetFonts &&
- m_pFcFontSetCreate &&
-+ m_pFcCharSetCreate &&
-+ m_pFcCharSetAddChar &&
- m_pFcFontSetDestroy &&
- m_pFcFontSetAdd &&
-+ m_pFcPatternReference &&
- m_pFcPatternGetString &&
- m_pFcPatternGetInteger &&
- m_pFcPatternGetDouble &&
- m_pFcPatternGetBool &&
- m_pFcDefaultSubstitute &&
-- m_pFcFontMatch &&
-+ m_pFcFontSetMatch &&
- m_pFcConfigSubstitute &&
- m_pFcPatternAddInteger &&
-+ m_pFcPatternAddCharSet &&
-+ m_pFcPatternAddBool &&
- m_pFcPatternAddString
- ) )
- {
-@@ -281,10 +328,35 @@ FontCfgWrapper::FontCfgWrapper()
- osl_unloadModule( (oslModule)m_pLib );
- m_pLib = NULL;
- }
-+
-+ m_pOutlineSet = FcFontSetCreate();
-+
-+ /*
-+ add only acceptable outlined fonts to our config,
-+ for future fontconfig use
-+ */
-+ FcFontSet *pOrig = FcConfigGetFonts(NULL, FcSetSystem);
-+
-+ if (!pOrig)
-+ return;
-+
-+ for( int i = 0; i < pOrig->nfont; ++i )
-+ {
-+ FcBool outline = false;
-+ FcPattern *pOutlinePattern = pOrig->fonts[i];
-+ FcResult eOutRes =
-+ FcPatternGetBool( pOutlinePattern, FC_OUTLINE, 0, &outline );
-+ if (eOutRes == FcResultMatch && !outline)
-+ continue;
-+ FcPatternReference(pOutlinePattern);
-+ FcFontSetAdd(m_pOutlineSet, pOutlinePattern);
-+ }
- }
-
- FontCfgWrapper::~FontCfgWrapper()
- {
-+ if( m_pOutlineSet )
-+ FcFontSetDestroy( m_pOutlineSet );
- if( m_pLib )
- osl_unloadModule( (oslModule)m_pLib );
- }
-@@ -319,18 +391,7 @@ bool PrintFontManager::initFontconfig()
- if( ! rWrapper.isValid() )
- return false;
-
-- FcConfig* pConfig = rWrapper.getDefConfig();
-- FcObjectSet* pOSet = rWrapper.FcObjectSetBuild( FC_FAMILY,
-- FC_STYLE,
-- FC_SLANT,
-- FC_WEIGHT,
-- FC_SPACING,
-- FC_FILE,
-- FC_OUTLINE,
-- FC_INDEX,
-- (void *) NULL );
-- FcPattern* pPattern = rWrapper.FcPatternCreate();
-- FcFontSet* pFSet = rWrapper.FcFontList( pConfig, pPattern, pOSet );
-+ FcFontSet* pFSet = rWrapper.getFontSet();
+RCS file: /cvs/framework/framework/source/services/frame.cxx,v
+retrieving revision 1.88
+diff -u -p -u -r1.88 frame.cxx
+--- framework/source/services/frame.cxx 11 Nov 2005 12:06:59 -0000 1.88
++++ framework/source/services/frame.cxx 4 Jan 2006 21:41:09 -0000
+@@ -1563,6 +1563,7 @@ sal_Bool SAL_CALL Frame::setComponent(
+ if (bIsConnected && !bWasConnected)
+ implts_sendFrameActionEvent( css::frame::FrameAction_COMPONENT_ATTACHED );
- if( pFSet )
- {
-@@ -373,6 +434,8 @@ bool PrintFontManager::initFontconfig()
- );
- #endif
-
-+ OSL_ASSERT(eOutRes != FcResultMatch || outline);
-+
- // only outline fonts are usable to psprint anyway
- if( eOutRes == FcResultMatch && ! outline )
- continue;
-@@ -515,14 +578,6 @@ bool PrintFontManager::initFontconfig()
- }
- }
-
-- // cleanup
-- if( pPattern )
-- rWrapper.FcPatternDestroy( pPattern );
-- if( pFSet )
-- rWrapper.FcFontSetDestroy( pFSet );
-- if( pOSet )
-- rWrapper.FcObjectSetDestroy( pOSet );
--
- // how does one get rid of the config ?
- #if OSL_DEBUG_LEVEL > 1
- fprintf( stderr, "inserted %d fonts from fontconfig\n", nFonts );
-@@ -536,39 +591,14 @@ void PrintFontManager::deinitFontconfig(
- FontCfgWrapper::release();
- }
-
--bool PrintFontManager::matchFont( FastPrintFontInfo& rInfo, const com::sun::star::lang::Locale& rLocale )
-+static void addtopattern(FontCfgWrapper& rWrapper, FcPattern *pPattern,
-+ italic::type eItalic, weight::type eWeight, width::type eWidth, pitch::type ePitch)
- {
- #ifdef ENABLE_FONTCONFIG
-- FontCfgWrapper& rWrapper = FontCfgWrapper::get();
-- if( ! rWrapper.isValid() )
-- return false;
--
-- FcConfig* pConfig = rWrapper.getDefConfig();
-- FcPattern* pPattern = rWrapper.FcPatternCreate();
--
-- OString aLangAttrib;
-- // populate pattern with font characteristics
-- if( rLocale.Language.getLength() )
-- {
-- OUStringBuffer aLang(6);
-- aLang.append( rLocale.Language );
-- if( rLocale.Country.getLength() )
-- {
-- aLang.append( sal_Unicode('-') );
-- aLang.append( rLocale.Country );
-- }
-- aLangAttrib = OUStringToOString( aLang.makeStringAndClear(), RTL_TEXTENCODING_UTF8 );
-- }
-- if( aLangAttrib.getLength() )
-- rWrapper.FcPatternAddString( pPattern, FC_LANG, (FcChar8*)aLangAttrib.getStr() );
--
-- OString aFamily = OUStringToOString( rInfo.m_aFamilyName, RTL_TEXTENCODING_UTF8 );
-- if( aFamily.getLength() )
-- rWrapper.FcPatternAddString( pPattern, FC_FAMILY, (FcChar8*)aFamily.getStr() );
-- if( rInfo.m_eItalic != italic::Unknown )
-+ if( eItalic != italic::Unknown )
- {
- int nSlant = FC_SLANT_ROMAN;
-- switch( rInfo.m_eItalic )
-+ switch( eItalic )
- {
- case italic::Italic: nSlant = FC_SLANT_ITALIC;break;
- case italic::Oblique: nSlant = FC_SLANT_OBLIQUE;break;
-@@ -577,10 +607,10 @@ bool PrintFontManager::matchFont( FastPr
- }
- rWrapper.FcPatternAddInteger( pPattern, FC_SLANT, nSlant );
- }
-- if( rInfo.m_eWeight != weight::Unknown )
-+ if( eWeight != weight::Unknown )
- {
- int nWeight = FC_WEIGHT_NORMAL;
-- switch( rInfo.m_eWeight )
-+ switch( eWeight )
- {
- case weight::Thin: nWeight = FC_WEIGHT_THIN;break;
- case weight::UltraLight: nWeight = FC_WEIGHT_ULTRALIGHT;break;
-@@ -597,10 +627,10 @@ bool PrintFontManager::matchFont( FastPr
- }
- rWrapper.FcPatternAddInteger( pPattern, FC_WEIGHT, nWeight );
- }
-- if( rInfo.m_eWidth != width::Unknown )
-+ if( eWidth != width::Unknown )
++#if 0
+ //_____________________________________________________________________________________________________
+ // A new component window doesn't know anything about current active/focus states.
+ // Set this information on it!
+@@ -1573,6 +1574,7 @@ sal_Bool SAL_CALL Frame::setComponent(
{
- int nWidth = FC_WIDTH_NORMAL;
-- switch( rInfo.m_eWidth )
-+ switch( eWidth )
- {
- case width::UltraCondensed: nWidth = FC_WIDTH_ULTRACONDENSED;break;
- case width::ExtraCondensed: nWidth = FC_WIDTH_EXTRACONDENSED;break;
-@@ -616,10 +646,10 @@ bool PrintFontManager::matchFont( FastPr
- }
- rWrapper.FcPatternAddInteger( pPattern, FC_WIDTH, nWidth );
+ xComponentWindow->setFocus();
}
-- if( rInfo.m_ePitch != pitch::Unknown )
-+ if( ePitch != pitch::Unknown )
- {
- int nSpacing = FC_PROPORTIONAL;
-- switch( rInfo.m_ePitch )
-+ switch( ePitch )
- {
- case pitch::Fixed: nSpacing = FC_MONO;break;
- case pitch::Variable: nSpacing = FC_PROPORTIONAL;break;
-@@ -627,12 +657,123 @@ bool PrintFontManager::matchFont( FastPr
- break;
- }
- rWrapper.FcPatternAddInteger( pPattern, FC_SPACING, nSpacing );
-+ if (nSpacing == FC_MONO)
-+ rWrapper.FcPatternAddString( pPattern, FC_FAMILY, (FcChar8*)"monospace");
-+ }
+#endif
-+}
-+
-+String PrintFontManager::Substitute(const std::vector<String> &rNames, const std::vector<sal_Unicode> &rGlyphs,
-+ const ByteString &rLangAttrib, italic::type eItalic, weight::type eWeight,
-+ width::type eWidth, pitch::type ePitch) const
-+{
-+ String aName;
-+#ifdef ENABLE_FONTCONFIG
-+ FontCfgWrapper& rWrapper = FontCfgWrapper::get();
-+ if( ! rWrapper.isValid() )
-+ return aName;
-+
-+ FcFontSet* pSet = NULL;
-+ FcPattern* pPattern = rWrapper.FcPatternCreate();
-+
-+ // Prefer scalable fonts
-+ rWrapper.FcPatternAddBool( pPattern, FC_SCALABLE, 1 );
-+
-+ std::vector<String>::const_iterator aEnd = rNames.end();
-+ for (std::vector<String>::const_iterator aIter = rNames.begin(); aIter != aEnd; ++aIter)
-+ {
-+ OString maTargetName = OUStringToOString(*aIter, RTL_TEXTENCODING_UTF8);
-+ rWrapper.FcPatternAddString(pPattern, FC_FAMILY, (FcChar8*)maTargetName.getStr());
-+ break;
-+ }
-+
-+ if( rLangAttrib.Len() )
-+ rWrapper.FcPatternAddString(pPattern, FC_LANG, (FcChar8*)rLangAttrib.GetBuffer());
-+
-+ // Add required Unicode characters, if any
-+ FcCharSet *unicodes = NULL;
-+ if (! rGlyphs.empty() )
-+ {
-+ unicodes = rWrapper.FcCharSetCreate();
-+ std::vector<sal_Unicode>::const_iterator aGlyphEnd = rGlyphs.end();
-+ for (std::vector<sal_Unicode>::const_iterator aGlyphIter = rGlyphs.begin();
-+ aGlyphIter != aGlyphEnd; ++aGlyphIter)
-+ {
-+ rWrapper.FcCharSetAddChar( unicodes, (FcChar32)*aGlyphIter );
-+ }
-+ rWrapper.FcPatternAddCharSet( pPattern, FC_CHARSET, unicodes);
-+ }
-+
-+ addtopattern(rWrapper, pPattern, eItalic, eWeight, eWidth, ePitch);
-+
-+ rWrapper.FcConfigSubstitute( NULL, pPattern, FcMatchPattern );
-+ rWrapper.FcDefaultSubstitute( pPattern );
-+ FcResult eResult = FcResultNoMatch;
-+ FcFontSet *pFontSet = rWrapper.getFontSet();
-+ FcPattern* pResult = rWrapper.FcFontSetMatch( NULL, &pFontSet, 1, pPattern, &eResult );
-+ rWrapper.FcPatternDestroy( pPattern );
-+
-+ if( pResult )
-+ {
-+ pSet = rWrapper.FcFontSetCreate();
-+ // info: destroying the pSet destroys pResult implicitly
-+ // since pResult was "added" to pSet
-+ rWrapper.FcFontSetAdd( pSet, pResult );
- }
-+ if( pSet )
-+ {
-+ if( pSet->nfont > 0 )
-+ {
-+ //extract the closest match
-+ FcChar8* family = NULL;
-+ FcResult eFileRes = rWrapper.FcPatternGetString( pSet->fonts[0], FC_FAMILY, 0, &family );
-+ if( eFileRes == FcResultMatch )
-+ aName = String( (sal_Char*)family, RTL_TEXTENCODING_UTF8 );
-+ }
-+ }
-+ rWrapper.FcFontSetDestroy( pSet );
-+#endif
-+ return aName;
-+}
-+
-+bool PrintFontManager::matchFont( FastPrintFontInfo& rInfo, const com::sun::star::lang::Locale& rLocale )
-+{
-+#ifdef ENABLE_FONTCONFIG
-+ FontCfgWrapper& rWrapper = FontCfgWrapper::get();
-+ if( ! rWrapper.isValid() )
-+ return false;
-+
-+ FcConfig* pConfig = rWrapper.getDefConfig();
-+ FcPattern* pPattern = rWrapper.FcPatternCreate();
-+
-+ OString aLangAttrib;
-+ // populate pattern with font characteristics
-+ if( rLocale.Language.getLength() )
-+ {
-+ OUStringBuffer aLang(6);
-+ aLang.append( rLocale.Language );
-+ if( rLocale.Country.getLength() )
-+ {
-+ aLang.append( sal_Unicode('-') );
-+ aLang.append( rLocale.Country );
-+ }
-+ aLangAttrib = OUStringToOString( aLang.makeStringAndClear(), RTL_TEXTENCODING_UTF8 );
-+ }
-+ if( aLangAttrib.getLength() )
-+ rWrapper.FcPatternAddString( pPattern, FC_LANG, (FcChar8*)aLangAttrib.getStr() );
-+
-+ OString aFamily = OUStringToOString( rInfo.m_aFamilyName, RTL_TEXTENCODING_UTF8 );
-+ if( aFamily.getLength() )
-+ rWrapper.FcPatternAddString( pPattern, FC_FAMILY, (FcChar8*)aFamily.getStr() );
-+
-+ addtopattern(rWrapper, pPattern, rInfo.m_eItalic, rInfo.m_eWeight, rInfo.m_eWidth, rInfo.m_ePitch);
-+
- rWrapper.FcConfigSubstitute( pConfig, pPattern, FcMatchPattern );
- rWrapper.FcDefaultSubstitute( pPattern );
- FcResult eResult = FcResultNoMatch;
-- FcPattern* pResult = rWrapper.FcFontMatch( pConfig, pPattern, &eResult );
-+ FcFontSet *pFontSet = rWrapper.getFontSet();
-+ FcPattern* pResult = rWrapper.FcFontSetMatch( pConfig, &pFontSet, 1, pPattern, &eResult );
- bool bSuccess = false;
- if( pResult )
- {
+ // If it was a new component window - we must resize it to fill out
+ // our container window.
diff --git a/patches/src680/gui-gtk-contextmenu.diff b/patches/src680/gui-gtk-contextmenu.diff
new file mode 100644
index 000000000..afd77366a
--- /dev/null
+++ b/patches/src680/gui-gtk-contextmenu.diff
@@ -0,0 +1,16 @@
+Index: vcl/unx/gtk/window/gtkframe.cxx
+===================================================================
+RCS file: /cvs/gsl/vcl/unx/gtk/window/gtkframe.cxx,v
+retrieving revision 1.47
+diff -u -p -u -r1.47 gtkframe.cxx
+--- vcl/unx/gtk/window/gtkframe.cxx 5 May 2006 11:01:02 -0000 1.47
++++ vcl/unx/gtk/window/gtkframe.cxx 19 May 2006 09:03:56 -0000
+@@ -190,7 +190,7 @@ static USHORT GetKeyCode( guint keyval )
+ case GDK_KP_Equal:
+ case GDK_equal: nCode = KEY_EQUAL; break;
+ case GDK_Find: nCode = KEY_FIND; break;
+- case GDK_Menu: nCode = KEY_MENU; break;
++ case GDK_Menu: nCode = KEY_CONTEXTMENU;break;
+ case GDK_Help: nCode = KEY_HELP; break;
+ case GDK_Undo: nCode = KEY_UNDO; break;
+ case GDK_Redo: nCode = KEY_REPEAT; break;
diff --git a/patches/src680/hang-sw-layout.diff b/patches/src680/hang-sw-layout.diff
new file mode 100644
index 000000000..6d7e858a2
--- /dev/null
+++ b/patches/src680/hang-sw-layout.diff
@@ -0,0 +1,32 @@
+--- sw/source/core/layout/layact.cxx
++++ sw/source/core/layout/layact.cxx
+@@ -2266,6 +2266,7 @@
+ ( !bBrowse && pPage->IsInvalidLayout() ) ||
+ // OD 07.05.2003 #109435# - consider interrupt formatting
+ ( IS_FLYS && IS_INVAFLY && !mbFormatCntntOnInterrupt )
++ && pCntnt->GetNextCntntFrm()
+ )
+ return FALSE;
+ }
+
+--- sw/source/core/layout/wsfrm.cxx
++++ sw/source/core/layout/wsfrm.cxx
+@@ -517,6 +517,18 @@
+ return;
+
+ SwRootFrm *pRoot = (SwRootFrm*)pPage->GetUpper();
++ const SwFrm* pFrm = FindFooterOrHeader();
++ if ( IsHeaderFrm() || IsFooterFrm() )
++ {
++ if ( pFrm->GetDrawObjs() )
++ pPage->InvalidateCntnt();
++ if ( this == pFrm )
++ {
++ pRoot->SetIdleFlags();
++ return;
++ }
++ }
++
+ const SwFlyFrm *pFly = FindFlyFrm();
+ if ( IsCntntFrm() )
+ {
diff --git a/patches/src680/ubuntu-no-help-msg.diff b/patches/src680/help-msg-add-package-info.diff
index 510cf0054..510cf0054 100644
--- a/patches/src680/ubuntu-no-help-msg.diff
+++ b/patches/src680/help-msg-add-package-info.diff
diff --git a/patches/src680/ms-interoperability-email-attachment-as-doc-xls-ppt-m99.diff b/patches/src680/ms-interoperability-email-attachment-as-doc-xls-ppt-m99.diff
index 8f426b39b..478909f15 100644
--- a/patches/src680/ms-interoperability-email-attachment-as-doc-xls-ppt-m99.diff
+++ b/patches/src680/ms-interoperability-email-attachment-as-doc-xls-ppt-m99.diff
@@ -239,7 +239,7 @@
<menu:menuitem menu:id=".uno:NewHtmlDoc" menu:helpid="20040" menu:label="" />
--- sd/uiconfig/simpress/menubar/menubar.xml.bakj 2005-02-18 16:44:27.103479847 +0530
+++ sd/uiconfig/simpress/menubar/menubar.xml 2005-02-18 16:47:02.584344135 +0530
-@@ -22,6 +22,7 @@
+@@ -22,7 +22,8 @@
<menu:menupopup>
<menu:menuitem menu:id=".uno:SendMail" menu:helpid="5331" menu:label="" />
<menu:menuitem menu:id=".uno:SendMailDocAsPDF" menu:helpid="6672" menu:label="" />
@@ -247,34 +247,54 @@
</menu:menupopup>
</menu:menu>
<menu:menuseparator/>
---- officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu.bakj 2005-02-18 16:55:18.659537625 +0530
-+++ officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu 2005-02-18 17:00:20.837598320 +0530
-@@ -809,6 +809,11 @@
+
+--- officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
++++ officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
+@@ -809,6 +809,19 @@
<value>1</value>
</prop>
</node>
+ <node oor:name=".uno:SendMailDocAsMSDoc" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Document as MS-~Doc Attachment...</value>
++ <value xml:lang="de">Dokument als Microsoft Word-Anlage</value>
++ <value xml:lang="es">Documento como archivo adjunto de Microsoft Word</value>
++ <value xml:lang="fr">Document en tant que pièce jointe Microsoft Word</value>
++ <value xml:lang="it">Documento come allegato di Microsoft Word</value>
++ <value xml:lang="ja">Microsoft WordãŒæ·»ä»˜ã•ã‚Œã¦ã„るドキュメント</value>
++ <value xml:lang="pt-BR">Documentar como Anexo do Microsoft Word</value>
++ <value xml:lang="zh-CN">作为 Microsoft Word 附件的文档</value>
++ <value xml:lang="zh-TW">當作 Microsoft Word 附件文件處ç†</value>
+ </prop>
+ </node>
<node oor:name=".uno:SendOutlineToClipboard" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="de">Gliederung zur Zwis~chenablage</value>
+
--- officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu.bakj 2005-02-18 16:58:17.271973105 +0530
+++ officecfg/registry/data/org/openoffice/Office/UI/DrawImpressCommands.xcu 2005-02-18 16:59:43.010223193 +0530
-@@ -1731,6 +1731,11 @@
+@@ -1731,6 +1731,19 @@
<value xml:lang="en-US">Sen~d</value>
</prop>
</node>
+ <node oor:name=".uno:SendMailDocAsMSPowerPoint" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Document as MS-~PPT Attachment...</value>
++ <value xml:lang="de">Dokument als Microsoft PowerPoint-Anlage</value>
++ <value xml:lang="es">Documento como archivo adjunto de Microsoft PowerPoint</value>
++ <value xml:lang="fr">Document en tant que pièce jointe Microsoft PowerPoint</value>
++ <value xml:lang="it">Documento come allegato di Microsoft PowerPoint</value>
++ <value xml:lang="ja">Microsoft PowerPointãŒæ·»ä»˜ã•ã‚Œã¦ã„るドキュメント</value>
++ <value xml:lang="pt-BR">Documentar como Anexo do Microsoft PowerPoint</value>
++ <value xml:lang="zh-CN">作为 Microsoft PowerPoint 附件的文档</value>
++ <value xml:lang="zh-TW">當作 Microsoft PowerPoint 附件文件處ç†</value>
+ </prop>
+ </node>
<node oor:name=".uno:TemplatesMenu" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="de">~Vorlagen</value>
+
+
--- svx/inc/globlmn_tmpl.hrc.bakj 2005-02-18 18:05:06.196343865 +0530
+++ svx/inc/globlmn_tmpl.hrc 2005-02-18 18:07:51.216700899 +0530
@@ -588,6 +588,24 @@
@@ -398,15 +418,25 @@
{
--- officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu.bakj 2005-05-10 13:59:29.000000000 +0530
+++ officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu 2005-05-10 14:00:12.000000000 +0530
-@@ -1498,6 +1498,11 @@
+@@ -1498,6 +1498,19 @@
<value xml:lang="en-US">Sen~d</value>
</prop>
</node>
+ <node oor:name=".uno:SendMailDocAsMSExcel" oor:op="replace">
+ <prop oor:name="Label" oor:type="xs:string">
+ <value xml:lang="en-US">Document as MS-E~xcel Attachment...</value>
++ <value xml:lang="de">Dokument als Microsoft Excel-Anlage</value>
++ <value xml:lang="es">Documento como archivo adjunto de Microsoft Excel</value>
++ <value xml:lang="fr">Document en tant que pièce jointe Microsoft Excel</value>
++ <value xml:lang="it">Documento come allegato di Microsoft Excel</value>
++ <value xml:lang="ja">Microsoft ExcelãŒæ·»ä»˜ã•ã‚Œã¦ã„るドキュメント</value>
++ <value xml:lang="pt-BR">Documentar como Anexo do Microsoft Excel</value>
++ <value xml:lang="zh-CN">作为 Microsoft Excel 附件的文档</value>
++ <value xml:lang="zh-TW">當作 Microsoft Excel 附件文件處ç†</value>
+ </prop>
+ </node>
<node oor:name=".uno:ProtectMenu" oor:op="replace">
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="de">Dokument sch~ützen</value>
+
+
diff --git a/patches/src680/office-cfg-vcl-greek-fonts.diff b/patches/src680/office-cfg-vcl-greek-fonts.diff
new file mode 100644
index 000000000..ddc8f1134
--- /dev/null
+++ b/patches/src680/office-cfg-vcl-greek-fonts.diff
@@ -0,0 +1,272 @@
+--- officecfg/registry/data/org/openoffice/VCL.xcu.old 2006-02-03 18:13:21.000000000 +0100
++++ officecfg/registry/data/org/openoffice/VCL.xcu 2006-04-20 16:04:09.000000000 +0200
+@@ -160,6 +160,41 @@
+ <value>Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma;Luxi Sans;Interface User;WarpSans;Geneva;Tahoma;MS Sans Serif;Helv;Dialog;Albany;Lucida;Helvetica;Charcoal;Chicago;Arial;Helmet;Interface System;Sans Serif</value>
+ </prop>
+ </node>
++ <node oor:name="el" oor:op="replace">
++ <prop oor:name="LATIN_DISPLAY" oor:type="xs:string" oor:op="replace">
++ <value>Albany AMT;Albany;Arial;DejaVu Sans;CMU Sans Serif;FreeSans;Nimbus Sans L;Helvetica;Lucida;Geneva;Helmet;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma</value>
++ </prop>
++ <prop oor:name="LATIN_HEADING" oor:type="xs:string" oor:op="replace">
++ <value>Albany AMT;Albany;Arial;DejaVu Sans;CMU Sans Serif;FreeSans;Nimbus Sans L;Helvetica;Lucida;Geneva;Helmet;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma</value>
++ </prop>
++ <prop oor:name="LATIN_FIXED" oor:type="xs:string" oor:op="replace">
++ <value>Cumberland AMT;Cumberland;Courier New;DejaVu Sans Mono;CMU Typewriter Text;FreeMono;Nimbus Mono L;Courier;Lucida Sans Typewriter;Lucida Typewriter;Monaco;Monospaced</value>
++ </prop>
++ <prop oor:name="LATIN_PRESENTATION" oor:type="xs:string" oor:op="replace">
++ <value>Albany AMT;Albany;Arial;DejaVu Sans;CMU Sans Serif;FreeSans;Nimbus Sans L;Helvetica;Lucida;Geneva;Helmet;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma</value>
++ </prop>
++ <prop oor:name="LATIN_SPREADSHEET" oor:type="xs:string" oor:op="replace">
++ <value>Albany AMT;Albany;Arial;DejaVu Sans;CMU Sans Serif;FreeSans;Nimbus Sans L;Helvetica;Lucida;Geneva;Helmet;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma</value>
++ </prop>
++ <prop oor:name="LATIN_TEXT" oor:type="xs:string" oor:op="replace">
++ <value>Thorndale AMT;Thorndale;Times New Roman;DejaVu Serif;CMU Serif;FreeSerif;Nimbus Roman No9 L;Luxi Serif;Times;Lucida Serif;Lucida Bright;Timmons;New York;Serif</value>
++ </prop>
++ <prop oor:name="SANS" oor:type="xs:string" oor:op="replace">
++ <value>Albany AMT;Albany;Arial;DejaVu Sans;CMU Sans Serif;FreeSans;Nimbus Sans L;Helvetica;Lucida;Geneva;Helmet;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma</value>
++ </prop>
++ <prop oor:name="SERIF" oor:type="xs:string" oor:op="replace">
++ <value>Thorndale AMT;Thorndale;Times New Roman;DejaVu Serif;CMU Serif;FreeSerif;Nimbus Roman No9 L;Luxi Serif;Times;Lucida Serif;Lucida Bright;Timmons;New York;Serif</value>
++ </prop>
++ <prop oor:name="UI_FIXED" oor:type="xs:string" oor:op="replace">
++ <value>Cumberland AMT;Cumberland;Courier New;DejaVu Sans Mono;CMU Typewriter Text;FreeMono;Nimbus Mono L;Courier;Lucida Sans Typewriter;Lucida Typewriter;Monaco;Monospaced</value>
++ </prop>
++ <prop oor:name="FIXED" oor:type="xs:string" oor:op="replace">
++ <value>Cumberland AMT;Cumberland;Courier New;DejaVu Sans Mono;CMU Typewriter Text;FreeMono;Nimbus Mono L;Courier;Lucida Sans Typewriter;Lucida Typewriter;Monaco;Monospaced</value>
++ </prop>
++ <prop oor:name="UI_SANS" oor:type="xs:string" oor:op="replace">
++ <value>Albany AMT;Albany;Arial;DejaVu Sans;CMU Sans Serif;FreeSans;Nimbus Sans L;Helvetica;Lucida;Geneva;Helmet;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma</value>
++ </prop>
++ </node>
+ <node oor:name="hr-HR" oor:op="replace">
+ <prop oor:name="LATIN_DISPLAY" oor:type="xs:string" oor:op="replace">
+ <value>Albany;Arial;Luxi Serif;Helvetica;Lucida;Geneva;Helmet;SansSerif;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma</value>
+@@ -1749,6 +1784,75 @@
+ <value>Special,Italic,Script</value>
+ </prop>
+ </node>
++ <node oor:name="cmusansserif" oor:op="replace">
++ <prop oor:name="SubstFonts">
++ <value>albanyamt;albany;arial;dejavusans;cmusansserif;freesans;nimbussansl;helvetica;lucida;geneva;helmet;andalesansui;arialunicodems;lucidasansunicode;tahoma</value>
++ </prop>
++ <prop oor:name="SubstFontsMS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsPS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsHTML">
++ <value></value>
++ </prop>
++ <prop oor:name="FontWeight">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontWidth">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontType">
++ <value>Standard,Normal,SansSerif</value>
++ </prop>
++ </node>
++ <node oor:name="cmuserif" oor:op="replace">
++ <prop oor:name="SubstFonts">
++ <value>thorndaleamt;thorndale;timesnewroman;dejavuserif;cmuserif;freeserif;nimbusromanno9l;luxiserif;times;lucidaserif;lucidabright;timmons;newyork;serif</value>
++ </prop>
++ <prop oor:name="SubstFontsMS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsPS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsHTML">
++ <value></value>
++ </prop>
++ <prop oor:name="FontWeight">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontWidth">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontType">
++ <value>Standard,Normal,Serif</value>
++ </prop>
++ </node>
++ <node oor:name="cmutypewritertext" oor:op="replace">
++ <prop oor:name="SubstFonts">
++ <value>cumberlandamt;cumberland;couriernew;dejavusansmono;cmutypewritertext;freemono;nimbusmonol;courier;lucidasanstypewriter;lucidatypewriter;monaco;monospaced</value>
++ </prop>
++ <prop oor:name="SubstFontsMS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsPS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsHTML">
++ <value></value>
++ </prop>
++ <prop oor:name="FontWeight">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontWidth">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontType">
++ <value>Standard,Normal,Fixed,Typewriter</value>
++ </prop>
++ </node>
+ <node oor:name="colonna" oor:op="replace">
+ <prop oor:name="SubstFonts">
+ <value>monotypeoldstyleboldoutline;monotypeoldstyleoutline;chevaraoutline;imprintmtshadow;imprintshadow;imprint;colonnamt;castellar;imprintmtshadow;imprintshadow;imprint;chevaraoutline;chevara;gallia;colonnamt;algerian;castellar;imprintmtshadow;imprintshadow;imprint;chevara;gallia;algerian</value>
+@@ -1978,6 +2082,75 @@
+ <value>Italic,Script</value>
+ </prop>
+ </node>
++ <node oor:name="dejavusans" oor:op="replace">
++ <prop oor:name="SubstFonts">
++ <value>albanyamt;albany;arial;dejavusans;cmusansserif;freesans;nimbussansl;helvetica;lucida;geneva;helmet;andalesansui;arialunicodems;lucidasansunicode;tahoma</value>
++ </prop>
++ <prop oor:name="SubstFontsMS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsPS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsHTML">
++ <value></value>
++ </prop>
++ <prop oor:name="FontWeight">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontWidth">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontType">
++ <value>Standard,Normal,SansSerif</value>
++ </prop>
++ </node>
++ <node oor:name="dejavusansmono" oor:op="replace">
++ <prop oor:name="SubstFonts">
++ <value>cumberlandamt;cumberland;couriernew;dejavusansmono;cmutypewritertext;freemono;nimbusmonol;courier;lucidasanstypewriter;lucidatypewriter;monaco;monospaced</value>
++ </prop>
++ <prop oor:name="SubstFontsMS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsPS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsHTML">
++ <value></value>
++ </prop>
++ <prop oor:name="FontWeight">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontWidth">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontType">
++ <value>Standard,Normal,Fixed,Typewriter</value>
++ </prop>
++ </node>
++ <node oor:name="dejavuserif" oor:op="replace">
++ <prop oor:name="SubstFonts">
++ <value>thorndaleamt;thorndale;timesnewroman;dejavuserif;cmuserif;freeserif;nimbusromanno9l;luxiserif;times;lucidaserif;lucidabright;timmons;newyork;serif</value>
++ </prop>
++ <prop oor:name="SubstFontsMS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsPS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsHTML">
++ <value></value>
++ </prop>
++ <prop oor:name="FontWeight">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontWidth">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontType">
++ <value>Standard,Normal,Serif</value>
++ </prop>
++ </node>
+ <node oor:name="din" oor:op="replace">
+ <prop oor:name="SubstFonts">
+ <value>albany;arial;helvetica;lucidasans;lucida;geneva;helmet;sansserif;nimbussansl;nimbussans;andalesansui;arialunicodems;lucidaunicode</value>
+@@ -2392,6 +2565,75 @@
+ <value>Decorative,Italic,Script,Comic</value>
+ </prop>
+ </node>
++ <node oor:name="freemono" oor:op="replace">
++ <prop oor:name="SubstFonts">
++ <value>cumberlandamt;cumberland;couriernew;dejavusansmono;cmutypewritertext;freemono;nimbusmonol;courier;lucidasanstypewriter;lucidatypewriter;monaco;monospaced</value>
++ </prop>
++ <prop oor:name="SubstFontsMS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsPS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsHTML">
++ <value></value>
++ </prop>
++ <prop oor:name="FontWeight">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontWidth">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontType">
++ <value>Standard,Normal,Fixed,Typewriter</value>
++ </prop>
++ </node>
++ <node oor:name="freesans" oor:op="replace">
++ <prop oor:name="SubstFonts">
++ <value>albanyamt;albany;arial;dejavusans;cmusansserif;freesans;nimbussansl;helvetica;lucida;geneva;helmet;andalesansui;arialunicodems;lucidasansunicode;tahoma</value>
++ </prop>
++ <prop oor:name="SubstFontsMS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsPS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsHTML">
++ <value></value>
++ </prop>
++ <prop oor:name="FontWeight">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontWidth">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontType">
++ <value>Standard,Normal,SansSerif</value>
++ </prop>
++ </node>
++ <node oor:name="freeserif" oor:op="replace">
++ <prop oor:name="SubstFonts">
++ <value>thorndaleamt;thorndale;timesnewroman;dejavuserif;cmuserif;freeserif;nimbusromanno9l;luxiserif;times;lucidaserif;lucidabright;timmons;newyork;serif</value>
++ </prop>
++ <prop oor:name="SubstFontsMS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsPS">
++ <value></value>
++ </prop>
++ <prop oor:name="SubstFontsHTML">
++ <value></value>
++ </prop>
++ <prop oor:name="FontWeight">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontWidth">
++ <value>Normal</value>
++ </prop>
++ <prop oor:name="FontType">
++ <value>Standard,Normal,Serif</value>
++ </prop>
++ </node>
+ <node oor:name="frenchscript" oor:op="replace">
+ <prop oor:name="SubstFonts">
+ <value>palacescript;palacescriptmt;arioso;shelley;zapfchancery;itczapfchancery;monotypecorsiva;corsiva;chancery;chanceryl;lucidacalligraphy;lucidahandwriting;comicsansms;kidprint;</value>
diff --git a/patches/src680/ooqstart-black-progress-bar.diff b/patches/src680/ooqstart-black-progress-bar.diff
new file mode 100644
index 000000000..03c634795
--- /dev/null
+++ b/patches/src680/ooqstart-black-progress-bar.diff
@@ -0,0 +1,27 @@
+--- desktop/unx/source/splashx.c-old 2006-05-31 15:44:59.000000000 +0200
++++ desktop/unx/source/splashx.c 2006-05-31 15:45:16.000000000 +0200
+@@ -332,7 +332,7 @@
+ }
+ else
+ {
+- XSetForeground( display, pixmap_gc, WhitePixel( display, screen ) );
++ XSetForeground( display, pixmap_gc, BlackPixel( display, screen ) );
+ delta = luminance - 255000;
+ }
+
+@@ -503,13 +503,13 @@
+ length = 0;
+
+ // border
+- XSetForeground( display, gc, WhitePixel( display, screen ) );
++ XSetForeground( display, gc, BlackPixel( display, screen ) );
+ XDrawRectangle( display, win, gc,
+ tlx, tly,
+ barwidth, barheight );
+
+ // progress bar
+- XSetForeground( display, gc, WhitePixel( display, screen ) );
++ XSetForeground( display, gc, BlackPixel( display, screen ) );
+ XFillRectangle( display, win, gc,
+ tlx + barspace, tly + barspace,
+ length + 1, barheight - 2*barspace + 1 );
diff --git a/patches/src680/sc-csvfix-ui.diff b/patches/src680/sc-csvfix-ui.diff
index 39a739602..7a9429466 100644
--- a/patches/src680/sc-csvfix-ui.diff
+++ b/patches/src680/sc-csvfix-ui.diff
@@ -177,7 +177,7 @@
ScDelimiterTable* pTextSepTab;
--- sc/source/ui/dbgui/imoptdlg.src 2005-08-09 20:17:17.000000000 +0530
+++ sc/source/ui/dbgui/imoptdlg.src 2005-08-31 07:48:22.000000000 +0530
-@@ -134,12 +134,22 @@ ModalDialog RID_SCDLG_IMPORTOPT
+@@ -134,12 +134,30 @@ ModalDialog RID_SCDLG_IMPORTOPT
};
CheckBox CB_FIXEDWIDTH
{
@@ -197,6 +197,14 @@
+ Text [ de ] = " ";
+ Text [ en-US ] = "Save as ~Rendered";
+ Text [ x-comment ] = " ";
++ Text[ de ] = "Als ~gerendert speichern";
++ Text[ es ] = "Guardar como ~procesado";
++ Text[ fr ] = "Enregistrer en tant que ~rendu";
++ Text[ it ] = "Salva come documento renderizzato";
++ Text[ ja ] = "åå‰ã‚’付ã‘ã¦ä¿å­˜~表示";
++ Text[ pt-BR ] = "Gravar como ~Renderizado";
++ Text[ zh-CN ] = "å¦å­˜ä¸ºå·²æ˜¾ç¤º(~R)";
++ Text[ zh-TW ] = "隨機儲存(~R)";
+ };
OKButton BTN_OK
{
diff --git a/patches/src680/sc-datapilot-autoformat.diff b/patches/src680/sc-datapilot-autoformat.diff
index 6b5ca6a64..83cb6c22f 100644
--- a/patches/src680/sc-datapilot-autoformat.diff
+++ b/patches/src680/sc-datapilot-autoformat.diff
@@ -189,15 +189,22 @@ diff -u -r ../../../sc.bak/source/ui/miscdlgs/makefile.mk sc/source/ui/miscdlgs/
diff -u -r ../../../sc.bak/source/ui/src/popup.src sc/source/ui/src/popup.src
--- ../../../sc.bak/source/ui/src/popup.src 2004-12-22 14:05:07.000000000 +0530
+++ sc/source/ui/src/popup.src 2005-01-11 13:25:54.836894216 +0530
-@@ -262,6 +262,13 @@
+@@ -262,6 +262,20 @@
Text [ x-comment ] = " ";
};
MenuItem
+ {
+ Identifier = SID_PIVOT_AFMT ;
+ HelpId = SID_PIVOT_AFMT ;
-+ Text = "A~ktualisieren" ;
+ Text [ en-US ] = "~AutoFormat..." ;
++ Text [ de ] = "A~ktualisieren" ;
++ Text[ es ] = "~Autoformato";
++ Text[ fr ] = "Format ~automatique";
++ Text[ it ] = "Formattazione automatica";
++ Text[ ja ] = "~Autoformat";
++ Text[ pt-BR ] = "~Autoformatar";
++ Text[ zh-CN ] = "自动格å¼(~A)";
++ Text[ zh-TW ] = "自動格å¼åŒ–(~A)";
+ };
+ MenuItem
{
diff --git a/patches/src680/sc-datapilot-dynamic-range.diff b/patches/src680/sc-datapilot-dynamic-range.diff
index cc912b7b4..cc7d3e853 100644
--- a/patches/src680/sc-datapilot-dynamic-range.diff
+++ b/patches/src680/sc-datapilot-dynamic-range.diff
@@ -21,7 +21,7 @@ diff -u -r ../../../sc.bak/source/ui/dbgui/pivot.src sc/source/ui/dbgui/pivot.sr
Hide = TRUE ;
SVLook = TRUE ;
Moveable = TRUE ;
-@@ -161,6 +161,32 @@
+@@ -161,6 +161,47 @@
Text [ de ] = "Layout" ;
Text [ en-US ] = "Layout";
};
@@ -32,6 +32,14 @@ diff -u -r ../../../sc.bak/source/ui/dbgui/pivot.src sc/source/ui/dbgui/pivot.sr
+ Size = MAP_APPFONT ( 59 , 8 ) ;
+ Hide = FALSE ;
+ Text [ en-US ] = "Selection from" ;
++ Text[ de ] = "Auswahl aus";
++ Text[ es ] = "Selección de";
++ Text[ fr ] = "Sélection à partir de";
++ Text[ it ] = "Seleziona da";
++ Text[ ja ] = "é¸æŠžå…ƒ";
++ Text[ pt-BR ] = "Seleção de ";
++ Text[ zh-CN ] = "选择范围";
++ Text[ zh-TW ] = "é¸é …來æº";
+ };
+
+ Edit ED_INAREA
@@ -50,6 +58,13 @@ diff -u -r ../../../sc.bak/source/ui/dbgui/pivot.src sc/source/ui/dbgui/pivot.sr
+ Hide = FALSE ;
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ en-US ] = "Shrink" ;
++ QuickHelpText[ es ] = "Reducir";
++ QuickHelpText[ fr ] = "Comprimer";
++ QuickHelpText[ it ] = "Comprimi";
++ QuickHelpText[ ja ] = "縮å°";
++ QuickHelpText[ pt-BR ] = "Diminuir";
++ QuickHelpText[ zh-CN ] = "收缩";
++ QuickHelpText[ zh-TW ] = "縮å°";
+ };
OKButton BTN_OK
{
diff --git a/patches/src680/sc-dp-hash-items.diff b/patches/src680/sc-dp-hash-items.diff
new file mode 100644
index 000000000..8988bf35f
--- /dev/null
+++ b/patches/src680/sc-dp-hash-items.diff
@@ -0,0 +1,950 @@
+Index: sc/inc/dptabdat.hxx
+===================================================================
+RCS file: /cvs/sc/sc/inc/dptabdat.hxx,v
+retrieving revision 1.5
+diff -u -w -p -r1.5 dptabdat.hxx
+--- sc/inc/dptabdat.hxx 8 Sep 2005 17:36:18 -0000 1.5
++++ sc/inc/dptabdat.hxx 19 May 2006 14:50:21 -0000
+@@ -82,8 +82,14 @@ struct ScDPItemData
+ aString(rS), fValue(fV), bHasValue( bHV ) {}
+
+ void SetString( const String& rS ) { aString = rS; bHasValue = FALSE; }
+-
+ BOOL IsCaseInsEqual( const ScDPItemData& r ) const;
++
++ size_t Hash() const;
++
++ // exact equality
++ BOOL operator==( const ScDPItemData& r ) const;
++ // case insensitive equality
++ static sal_Int32 Compare( const ScDPItemData& rA, const ScDPItemData& rB );
+ };
+
+ #define SC_VALTYPE_EMPTY 0
+Index: sc/inc/dptabres.hxx
+===================================================================
+RCS file: /cvs/sc/sc/inc/dptabres.hxx,v
+retrieving revision 1.5
+diff -u -w -p -r1.5 dptabres.hxx
+--- sc/inc/dptabres.hxx 8 Sep 2005 17:36:34 -0000 1.5
++++ sc/inc/dptabres.hxx 19 May 2006 14:50:22 -0000
+@@ -59,6 +59,8 @@
+ #ifndef SC_SCGLOB_HXX
+ #include "global.hxx" // enum ScSubTotalFunc
+ #endif
++#include <hash_map>
++#include <vector>
+
+ namespace com { namespace sun { namespace star { namespace sheet {
+ struct DataPilotFieldReference;
+@@ -309,7 +311,7 @@ private:
+ ScDPResultData* pResultData;
+ ScDPDimension* pParentDim; //! Ref
+ ScDPLevel* pParentLevel; //! Ref
+- ScDPMember* pMemberDesc; //! Ref
++ const ScDPMember* pMemberDesc; //! Ref
+ ScDPResultDimension* pChildDimension;
+ ScDPDataMember* pDataRoot;
+ BOOL bHasElements;
+@@ -341,6 +343,7 @@ public:
+ long GetSubTotalCount( long* pUserSubStart = NULL ) const;
+
+ BOOL IsNamedItem( const ScDPItemData& r ) const;
++ BOOL IsValidEntry( const ScDPItemData* pMembers ) const;
+
+ void SetHasElements() { bHasElements = TRUE; }
+ void SetAutoHidden() { bAutoHidden = TRUE; }
+@@ -379,8 +382,8 @@ public:
+
+ ScDPDataMember* GetDataRoot() const { return pDataRoot; }
+
+- ScDPDimension* GetParentDim() { return pParentDim; } //! Ref
+- ScDPLevel* GetParentLevel() { return pParentLevel; } //! Ref
++ const ScDPDimension* GetParentDim() const { return pParentDim; } //! Ref
++ const ScDPLevel* GetParentLevel() const { return pParentLevel; } //! Ref
+
+ ScDPAggData* GetColTotal( long nMeasure ) const;
+ };
+@@ -389,17 +392,17 @@ class ScDPDataMember
+ {
+ private:
+ ScDPResultData* pResultData;
+- ScDPResultMember* pResultMember; //! Ref?
++ const ScDPResultMember* pResultMember; //! Ref?
+ ScDPDataDimension* pChildDimension;
+ ScDPAggData aAggregate;
+
+ void UpdateValues( const ScDPValueData* pValues, const ScDPSubTotalState& rSubState );
+
+ public:
+- ScDPDataMember( ScDPResultData* pData, ScDPResultMember* pRes );
++ ScDPDataMember( ScDPResultData* pData, const ScDPResultMember* pRes );
+ ~ScDPDataMember();
+
+- void InitFrom( ScDPResultDimension* pDim );
++ void InitFrom( const ScDPResultDimension* pDim );
+
+ String GetName() const;
+ BOOL IsVisible() const;
+@@ -453,9 +456,18 @@ SV_DECL_PTRARR_DEL(ScDPDataMembers, ScDP
+
+ class ScDPResultDimension
+ {
++public :
++ struct MemberHashFunc : public std::unary_function< const ScDPItemData &, size_t >
++ {
++ size_t operator() (const ScDPItemData &rData) const { return rData.Hash(); }
++ };
++ typedef std::vector <ScDPResultMember *> MemberArray;
++ typedef std::hash_map <ScDPItemData, ScDPResultMember *, MemberHashFunc> MemberHash;
++
+ private:
+ ScDPResultData* pResultData;
+- ScDPResultMembers aMembers;
++ MemberArray maMemberArray;
++ MemberHash maMemberHash;
+ BOOL bInitialized;
+ String aDimensionName; //! or ptr to IntDimension?
+ BOOL bIsDataLayout; //! or ptr to IntDimension?
+@@ -468,6 +480,7 @@ private:
+ long nAutoMeasure;
+ long nAutoCount;
+
++ ScDPResultMember* FindMember( const ScDPItemData& rData ) const;
+ public:
+ ScDPResultDimension( ScDPResultData* pData );
+ ~ScDPResultDimension();
+@@ -520,7 +533,8 @@ public:
+
+ // for ScDPDataDimension::InitFrom
+ long GetMemberCount() const;
+- ScDPResultMember* GetMember(long n) const;
++ const ScDPResultMember* GetMember(long n) const;
++ ScDPResultMember* GetMember(long n);
+
+ const ScMemberSortOrder& GetMemberOrder() const { return aMemberOrder; }
+ ScMemberSortOrder& GetMemberOrder() { return aMemberOrder; }
+@@ -544,7 +558,7 @@ class ScDPDataDimension
+ {
+ private:
+ ScDPResultData* pResultData;
+- ScDPResultDimension* pResultDimension; // column
++ const ScDPResultDimension* pResultDimension; // column
+ ScDPDataMembers aMembers;
+ BOOL bIsDataLayout; //! or ptr to IntDimension?
+
+@@ -552,7 +566,7 @@ public:
+ ScDPDataDimension( ScDPResultData* pData );
+ ~ScDPDataDimension();
+
+- void InitFrom( ScDPResultDimension* pDim ); // recursive
++ void InitFrom( const ScDPResultDimension* pDim ); // recursive
+ void ProcessData( const ScDPItemData* pDataMembers, const ScDPValueData* pValues,
+ const ScDPSubTotalState& rSubState );
+
+Index: sc/inc/dptabsrc.hxx
+===================================================================
+RCS file: /cvs/sc/sc/inc/dptabsrc.hxx,v
+retrieving revision 1.7
+diff -u -w -p -r1.7 dptabsrc.hxx
+--- sc/inc/dptabsrc.hxx 8 Sep 2005 17:36:50 -0000 1.7
++++ sc/inc/dptabsrc.hxx 19 May 2006 14:50:22 -0000
+@@ -116,6 +116,9 @@
+ #include <cppuhelper/implbase5.hxx>
+ #endif
+
++#ifndef SC_DPTABDAT_HXX
++#include "dptabdat.hxx"
++#endif
+
+ class ScDPResultMember;
+ class ScDPResultData;
+@@ -762,10 +765,8 @@ private:
+ long nHier;
+ long nLev;
+
+- String aName; // name for api etc.
++ ScDPItemData maData;
+ // String aCaption; // visible name (changeable by user)
+- double fValue; // used internally for matching
+- BOOL bHasValue; // TRUE if this is a value
+
+ BOOL bVisible;
+ BOOL bShowDet;
+Index: sc/source/core/data/dptabdat.cxx
+===================================================================
+RCS file: /cvs/sc/sc/source/core/data/dptabdat.cxx,v
+retrieving revision 1.9
+diff -u -w -p -r1.9 dptabdat.cxx
+--- sc/source/core/data/dptabdat.cxx 8 Sep 2005 18:24:11 -0000 1.9
++++ sc/source/core/data/dptabdat.cxx 19 May 2006 14:50:23 -0000
+@@ -47,6 +47,9 @@
+ #ifndef _UNOTOOLS_TRANSLITERATIONWRAPPER_HXX
+ #include <unotools/transliterationwrapper.hxx>
+ #endif
++#ifndef _UNOTOOLS_COLLATORWRAPPER_HXX
++#include <unotools/collatorwrapper.hxx>
++#endif
+
+ #include "dptabdat.hxx"
+ #include "global.hxx"
+@@ -60,6 +63,55 @@ BOOL ScDPItemData::IsCaseInsEqual( const
+ return bHasValue ? ( r.bHasValue && rtl::math::approxEqual( fValue, r.fValue ) ) :
+ ( !r.bHasValue &&
+ ScGlobal::pTransliteration->isEqual( aString, r.aString ) );
++}
++
++size_t ScDPItemData::Hash() const
++{
++ if ( bHasValue )
++ return (size_t) rtl::math::approxFloor( fValue );
++ else
++ // If we do unicode safe case insensitive hash we can drop
++ // ScDPItemData::operator== and use ::IsCasInsEqual
++ return rtl_ustr_hashCode_WithLength( aString.GetBuffer(), aString.Len() );
++}
++
++BOOL ScDPItemData::operator==( const ScDPItemData& r ) const
++{
++ if ( bHasValue )
++ {
++ if ( r.bHasValue )
++ return rtl::math::approxEqual( fValue, r.fValue );
++ else
++ return FALSE;
++ }
++ else if ( bHasValue )
++ return FALSE;
++ else
++ // need exact equality until we have a safe case insensitive string hash
++ return aString == r.aString;
++}
++
++sal_Int32 ScDPItemData::Compare( const ScDPItemData& rA,
++ const ScDPItemData& rB )
++{
++ if ( rA.bHasValue )
++ {
++ if ( rB.bHasValue )
++ {
++ if ( rtl::math::approxEqual( rA.fValue, rB.fValue ) )
++ return 0;
++ else if ( rA.fValue < rB.fValue )
++ return -1;
++ else
++ return 1;
++ }
++ else
++ return -1; // values first
++ }
++ else if ( rB.bHasValue )
++ return 1; // values first
++ else
++ return ScGlobal::pCollator->compareString( rA.aString, rB.aString );
+ }
+
+ // -----------------------------------------------------------------------
+Index: sc/source/core/data/dptabres.cxx
+===================================================================
+RCS file: /cvs/sc/sc/source/core/data/dptabres.cxx,v
+retrieving revision 1.7
+diff -u -w -p -r1.7 dptabres.cxx
+--- sc/source/core/data/dptabres.cxx 8 Sep 2005 18:24:27 -0000 1.7
++++ sc/source/core/data/dptabres.cxx 19 May 2006 14:50:23 -0000
+@@ -48,9 +48,9 @@
+
+ #include <algorithm>
+
++#include "dptabdat.hxx"
+ #include "dptabres.hxx"
+ #include "dptabsrc.hxx"
+-#include "dptabdat.hxx"
+ #include "global.hxx"
+ #include "subtotal.hxx"
+ #include "globstr.hrc"
+@@ -131,7 +131,7 @@ public:
+ BOOL operator()( sal_Int32 nIndex1, sal_Int32 nIndex2 ) const;
+ };
+
+-BOOL lcl_IsLess( ScDPDataMember* pDataMember1, ScDPDataMember* pDataMember2, long nMeasure, BOOL bAscending )
++static BOOL lcl_IsLess( const ScDPDataMember* pDataMember1, const ScDPDataMember* pDataMember2, long nMeasure, BOOL bAscending )
+ {
+ // members can be NULL if used for rows
+
+@@ -162,7 +162,7 @@ BOOL lcl_IsLess( ScDPDataMember* pDataMe
+ }
+ }
+
+-BOOL lcl_IsEqual( ScDPDataMember* pDataMember1, ScDPDataMember* pDataMember2, long nMeasure )
++static BOOL lcl_IsEqual( const ScDPDataMember* pDataMember1, const ScDPDataMember* pDataMember2, long nMeasure )
+ {
+ // members can be NULL if used for rows
+
+@@ -195,13 +195,13 @@ BOOL lcl_IsEqual( ScDPDataMember* pDataM
+
+ BOOL ScDPRowMembersOrder::operator()( sal_Int32 nIndex1, sal_Int32 nIndex2 ) const
+ {
+- ScDPResultMember* pMember1 = rDimension.GetMember(nIndex1);
+- ScDPResultMember* pMember2 = rDimension.GetMember(nIndex2);
++ const ScDPResultMember* pMember1 = rDimension.GetMember(nIndex1);
++ const ScDPResultMember* pMember2 = rDimension.GetMember(nIndex2);
+
+ // GetDataRoot can be NULL if there was no data.
+ // IsVisible == FALSE can happen after AutoShow.
+- ScDPDataMember* pDataMember1 = pMember1->IsVisible() ? pMember1->GetDataRoot() : NULL;
+- ScDPDataMember* pDataMember2 = pMember2->IsVisible() ? pMember2->GetDataRoot() : NULL;
++ const ScDPDataMember* pDataMember1 = pMember1->IsVisible() ? pMember1->GetDataRoot() : NULL;
++ const ScDPDataMember* pDataMember2 = pMember2->IsVisible() ? pMember2->GetDataRoot() : NULL;
+
+ return lcl_IsLess( pDataMember1, pDataMember2, nMeasure, bAscending );
+ }
+@@ -692,7 +692,7 @@ ScDPAggData* ScDPRowTotals::GetGrandTota
+
+ // -----------------------------------------------------------------------
+
+-ScSubTotalFunc lcl_GetForceFunc( ScDPLevel* pLevel, long nFuncNo )
++static ScSubTotalFunc lcl_GetForceFunc( const ScDPLevel* pLevel, long nFuncNo )
+ {
+ ScSubTotalFunc eRet = SUBTOTAL_FUNC_NONE;
+ if ( pLevel )
+@@ -943,6 +943,17 @@ BOOL ScDPResultMember::IsNamedItem( cons
+ return ((ScDPMember*)pMemberDesc)->IsNamedItem( r );
+ return FALSE;
+ }
++BOOL ScDPResultMember::IsValidEntry( const ScDPItemData* pMembers ) const
++{
++ if ( !IsValid() )
++ return FALSE;
++
++ const ScDPResultDimension* pChildDim = GetChildDimension();
++ if (pChildDim)
++ return pChildDim->IsValidEntry( pMembers + 1 );
++ else
++ return TRUE;
++}
+
+ void ScDPResultMember::InitFrom( ScDPDimension** ppDim, ScDPLevel** ppLev, ScDPInitState& rInitState )
+ {
+@@ -1561,7 +1572,7 @@ ScDPAggData* ScDPResultMember::GetColTot
+
+ // -----------------------------------------------------------------------
+
+-ScDPDataMember::ScDPDataMember( ScDPResultData* pData, ScDPResultMember* pRes ) :
++ScDPDataMember::ScDPDataMember( ScDPResultData* pData, const ScDPResultMember* pRes ) :
+ pResultData( pData ),
+ pResultMember( pRes ),
+ pChildDimension( NULL )
+@@ -1606,7 +1617,7 @@ BOOL ScDPDataMember::HasHiddenDetails()
+ return FALSE;
+ }
+
+-void ScDPDataMember::InitFrom( ScDPResultDimension* pDim )
++void ScDPDataMember::InitFrom( const ScDPResultDimension* pDim )
+ {
+ if ( !pChildDimension )
+ pChildDimension = new ScDPDataDimension(pResultData);
+@@ -1671,7 +1682,7 @@ void ScDPDataMember::ProcessData( const
+ {
+ if ( pChildDimension )
+ {
+- ScDPLevel* pForceLevel = pResultMember ? pResultMember->GetParentLevel() : NULL;
++ const ScDPLevel* pForceLevel = pResultMember ? pResultMember->GetParentLevel() : NULL;
+ aLocalSubState.nColSubTotalFunc = nUserPos;
+ aLocalSubState.eColForce = lcl_GetForceFunc( pForceLevel, nUserPos );
+ }
+@@ -1828,7 +1839,7 @@ void ScDPDataMember::FillDataRow( const
+ {
+ if ( pChildDimension )
+ {
+- ScDPLevel* pForceLevel = pResultMember ? pResultMember->GetParentLevel() : NULL;
++ const ScDPLevel* pForceLevel = pResultMember ? pResultMember->GetParentLevel() : NULL;
+ aLocalSubState.nColSubTotalFunc = nUserPos;
+ aLocalSubState.eColForce = lcl_GetForceFunc( pForceLevel, nUserPos );
+ }
+@@ -1904,7 +1915,7 @@ void ScDPDataMember::UpdateDataRow( cons
+ {
+ if ( pChildDimension )
+ {
+- ScDPLevel* pForceLevel = pResultMember ? pResultMember->GetParentLevel() : NULL;
++ const ScDPLevel* pForceLevel = pResultMember ? pResultMember->GetParentLevel() : NULL;
+ aLocalSubState.nColSubTotalFunc = nUserPos;
+ aLocalSubState.eColForce = lcl_GetForceFunc( pForceLevel, nUserPos );
+ }
+@@ -2016,7 +2027,7 @@ void ScDPDataMember::UpdateRunningTotals
+ {
+ if ( pChildDimension )
+ {
+- ScDPLevel* pForceLevel = pResultMember ? pResultMember->GetParentLevel() : NULL;
++ const ScDPLevel* pForceLevel = pResultMember ? pResultMember->GetParentLevel() : NULL;
+ aLocalSubState.nColSubTotalFunc = nUserPos;
+ aLocalSubState.eColForce = lcl_GetForceFunc( pForceLevel, nUserPos );
+ }
+@@ -2057,7 +2068,7 @@ void ScDPDataMember::UpdateRunningTotals
+ BOOL bRefDimInCol = ( nRefOrient == sheet::DataPilotFieldOrientation_COLUMN );
+ BOOL bRefDimInRow = ( nRefOrient == sheet::DataPilotFieldOrientation_ROW );
+
+- ScDPResultDimension* pSelectDim = NULL;
++ const ScDPResultDimension* pSelectDim = NULL;
+ long nRowPos = 0;
+ long nColPos = 0;
+
+@@ -2110,7 +2121,7 @@ void ScDPDataMember::UpdateRunningTotals
+ long nMyIndex = bRefDimInCol ? pColIndexes[nColPos] : pRowIndexes[nRowPos];
+ if ( nMyIndex >= 0 && nMyIndex < pSelectDim->GetMemberCount() )
+ {
+- ScDPResultMember* pMyRefMember = pSelectDim->GetMember(nMyIndex);
++ const ScDPResultMember* pMyRefMember = pSelectDim->GetMember(nMyIndex);
+ if ( pMyRefMember && pMyRefMember->HasHiddenDetails() )
+ {
+ pSelectDim = NULL; // don't calculate
+@@ -2485,6 +2496,28 @@ ScDPResultDimension::ScDPResultDimension
+
+ ScDPResultDimension::~ScDPResultDimension()
+ {
++ for( int i = maMemberArray.size () ; i-- > 0 ; )
++ delete maMemberArray[i];
++}
++
++ScDPResultMember *ScDPResultDimension::FindMember( const ScDPItemData& rData ) const
++{
++ if( bIsDataLayout )
++ return maMemberArray[0];
++ MemberHash::const_iterator aRes = maMemberHash.find( rData );
++ if( aRes != maMemberHash.end() )
++ return aRes->second;
++
++ unsigned int i;
++ unsigned int nCount = maMemberArray.size();
++ ScDPResultMember* pResultMember;
++ for( i = 0; i < nCount ; i++ )
++ {
++ pResultMember = maMemberArray[i];
++ if ( pResultMember->IsNamedItem( rData ) )
++ return pResultMember;
++ }
++ return NULL;
+ }
+
+ void ScDPResultDimension::InitFrom( ScDPDimension** ppDim, ScDPLevel** ppLev, ScDPInitState& rInitState )
+@@ -2531,14 +2564,20 @@ void ScDPResultDimension::InitFrom( ScDP
+ ScDPMember* pMember = pMembers->getByIndex(nSorted);
+ if ( aCompare.IsIncluded( *pMember ) )
+ {
+- ScDPResultMember* pNew = new ScDPResultMember( pResultData, pThisDim,
++ std::pair< ScDPItemData, ScDPResultMember *> key;
++
++ key.second = new ScDPResultMember( pResultData, pThisDim,
+ pThisLevel, pMember, FALSE );
+- aMembers.Insert( pNew, aMembers.Count() );
++ maMemberArray.push_back( key.second );
+
+- ScDPItemData aMemberData;
+- pMember->FillItemData( aMemberData );
+- rInitState.AddMember( nDimSource, ScDPItemData( aMemberData ) );
+- pNew->InitFrom( ppChildDim, ppChildLev, rInitState );
++ // honour order of maMemberArray and only insert if it does not
++ // already exist
++ pMember->FillItemData( key.first );
++ if ( maMemberHash.end() == maMemberHash.find( key.first ) )
++ maMemberHash.insert ( key );
++
++ rInitState.AddMember( nDimSource, key.first );
++ key.second->InitFrom( ppChildDim, ppChildLev, rInitState );
+ rInitState.RemoveMember();
+ }
+ }
+@@ -2598,9 +2637,17 @@ void ScDPResultDimension::LateInitFrom(
+ ScDPMember* pMember = pMembers->getByIndex(nSorted);
+ if ( aCompare.IsIncluded( *pMember ) )
+ {
+- ScDPResultMember* pNew = new ScDPResultMember( pResultData, pThisDim,
++ std::pair< ScDPItemData, ScDPResultMember *> key;
++
++ key.second = new ScDPResultMember( pResultData, pThisDim,
+ pThisLevel, pMember, FALSE );
+- aMembers.Insert( pNew, aMembers.Count() );
++ maMemberArray.push_back( key.second );
++
++ // honour order of maMemberArray and only insert if it does not
++ // already exist
++ pMember->FillItemData( key.first );
++ if ( maMemberHash.end() == maMemberHash.find( key.first ) )
++ maMemberHash.insert ( key );
+ }
+ }
+ bInitialized = TRUE; // don't call again, even if no members were included
+@@ -2609,20 +2656,29 @@ void ScDPResultDimension::LateInitFrom(
+ // initialize only specific member (or all if "show empty" flag is set)
+
+ BOOL bShowEmpty = pThisLevel->getShowEmpty();
+- long nCount = aMembers.Count();
++ if ( bIsDataLayout || bShowEmpty )
++ {
++ long nCount = maMemberArray.size();
+ for (long i=0; i<nCount; i++)
+ {
+- ScDPResultMember* pResultMember = aMembers[(USHORT)i];
+- if ( bIsDataLayout || bShowEmpty || pResultMember->IsNamedItem( rThisData ) )
++ ScDPResultMember* pResultMember = maMemberArray[i];
++ ScDPItemData aMemberData;
++ pResultMember->FillItemData( aMemberData );
++ rInitState.AddMember( nDimSource, aMemberData );
++ pResultMember->LateInitFrom( ppChildDim, ppChildLev, pChildData, rInitState );
++ rInitState.RemoveMember();
++ }
++ }
++ else
++ {
++ ScDPResultMember* pResultMember = FindMember( rThisData );
++ if( NULL != pResultMember )
+ {
+ ScDPItemData aMemberData;
+ pResultMember->FillItemData( aMemberData );
+ rInitState.AddMember( nDimSource, aMemberData );
+ pResultMember->LateInitFrom( ppChildDim, ppChildLev, pChildData, rInitState );
+ rInitState.RemoveMember();
+-
+- if ( !bIsDataLayout && !bShowEmpty )
+- break;
+ }
+ }
+ }
+@@ -2631,19 +2687,19 @@ void ScDPResultDimension::LateInitFrom(
+ long ScDPResultDimension::GetSize(long nMeasure) const
+ {
+ long nTotal = 0;
+- long nMemberCount = aMembers.Count();
++ long nMemberCount = maMemberArray.size();
+ if (bIsDataLayout)
+ {
+ DBG_ASSERT(nMeasure == SC_DPMEASURE_ALL || pResultData->GetMeasureCount() == 1,
+ "DataLayout dimension twice?");
+ // repeat first member...
+- nTotal = nMemberCount * aMembers[0]->GetSize(0); // all measures have equal size
++ nTotal = nMemberCount * maMemberArray[0]->GetSize(0); // all measures have equal size
+ }
+ else
+ {
+ // add all members
+ for (long nMem=0; nMem<nMemberCount; nMem++)
+- nTotal += aMembers[(USHORT)nMem]->GetSize(nMeasure);
++ nTotal += maMemberArray[nMem]->GetSize(nMeasure);
+ }
+ return nTotal;
+ }
+@@ -2651,23 +2707,9 @@ long ScDPResultDimension::GetSize(long n
+ BOOL ScDPResultDimension::IsValidEntry( const ScDPItemData* pMembers ) const
+ {
+ // the ScDPItemData array must contain enough entries for all dimensions - this isn't checked
+-
+- long nCount = aMembers.Count();
+- for (long i=0; i<nCount; i++)
+- {
+- ScDPResultMember* pMember = aMembers[(USHORT)i];
+- if ( bIsDataLayout || pMember->IsNamedItem( *pMembers ) )
+- {
+- if ( !pMember->IsValid() )
+- return FALSE;
+-
+- ScDPResultDimension* pChildDim = pMember->GetChildDimension();
+- if (pChildDim)
+- return pChildDim->IsValidEntry( pMembers + 1 );
+- else
+- return TRUE;
+- }
+- }
++ const ScDPResultMember* pMember = FindMember( *pMembers );
++ if( NULL != pMember )
++ return pMember->IsValidEntry( pMembers );
+
+ DBG_ERROR("IsValidEntry: Member not found");
+ return FALSE;
+@@ -2678,19 +2720,12 @@ void ScDPResultDimension::ProcessData( c
+ const ScDPValueData* pValues )
+ {
+ // the ScDPItemData array must contain enough entries for all dimensions - this isn't checked
+-
+- long nCount = aMembers.Count();
+- for (long i=0; i<nCount; i++)
+- {
+- ScDPResultMember* pMember = aMembers[(USHORT)i];
+-
+- // always first member for data layout dim
+- if ( bIsDataLayout || pMember->IsNamedItem( *pMembers ) )
++ ScDPResultMember* pMember = FindMember( *pMembers );
++ if( NULL != pMember )
+ {
+ pMember->ProcessData( pMembers + 1, pDataDim, pDataMembers, pValues );
+ return;
+ }
+- }
+
+ DBG_ERROR("ProcessData: Member not found");
+ }
+@@ -2699,19 +2734,19 @@ void ScDPResultDimension::FillMemberResu
+ long nStart, long nMeasure )
+ {
+ long nPos = nStart;
+- long nCount = aMembers.Count();
++ long nCount = maMemberArray.size();
+
+ for (long i=0; i<nCount; i++)
+ {
+ long nSorted = aMemberOrder.empty() ? i : aMemberOrder[i];
+
+- ScDPResultMember* pMember = aMembers[(USHORT)nSorted];
++ ScDPResultMember* pMember = maMemberArray[nSorted];
+ // in data layout dimension, use first member with different measures/names
+ if ( bIsDataLayout )
+ {
+ String aMbrName = pResultData->GetMeasureDimensionName( nSorted );
+ String aMbrCapt = pResultData->GetMeasureString( nSorted, FALSE, SUBTOTAL_FUNC_NONE );
+- aMembers[0]->FillMemberResults( pSequences, nPos, nSorted, FALSE, &aMbrName, &aMbrCapt );
++ maMemberArray[0]->FillMemberResults( pSequences, nPos, nSorted, FALSE, &aMbrName, &aMbrCapt );
+ }
+ else if ( pMember->IsVisible() )
+ pMember->FillMemberResults( pSequences, nPos, nMeasure, FALSE, NULL, NULL );
+@@ -2725,7 +2760,7 @@ void ScDPResultDimension::FillDataResult
+ {
+ long nMemberRow = nRow;
+ long nMemberMeasure = nMeasure;
+- long nCount = aMembers.Count();
++ long nCount = maMemberArray.size();
+ for (long i=0; i<nCount; i++)
+ {
+ long nSorted = aMemberOrder.empty() ? i : aMemberOrder[i];
+@@ -2735,11 +2770,11 @@ void ScDPResultDimension::FillDataResult
+ {
+ DBG_ASSERT(nMeasure == SC_DPMEASURE_ALL || pResultData->GetMeasureCount() == 1,
+ "DataLayout dimension twice?");
+- pMember = aMembers[0];
++ pMember = maMemberArray[0];
+ nMemberMeasure = nSorted;
+ }
+ else
+- pMember = aMembers[(USHORT)nSorted];
++ pMember = maMemberArray[nSorted];
+
+ if ( pMember->IsVisible() )
+ pMember->FillDataResults( pRefMember, rSequence, nMemberRow, nMemberMeasure );
+@@ -2750,7 +2785,7 @@ void ScDPResultDimension::FillDataResult
+ void ScDPResultDimension::UpdateDataResults( const ScDPResultMember* pRefMember, long nMeasure ) const
+ {
+ long nMemberMeasure = nMeasure;
+- long nCount = aMembers.Count();
++ long nCount = maMemberArray.size();
+ for (long i=0; i<nCount; i++)
+ {
+ const ScDPResultMember* pMember;
+@@ -2758,11 +2793,11 @@ void ScDPResultDimension::UpdateDataResu
+ {
+ DBG_ASSERT(nMeasure == SC_DPMEASURE_ALL || pResultData->GetMeasureCount() == 1,
+ "DataLayout dimension twice?");
+- pMember = aMembers[0];
++ pMember = maMemberArray[0];
+ nMemberMeasure = i;
+ }
+ else
+- pMember = aMembers[(USHORT)i];
++ pMember = maMemberArray[i];
+
+ if ( pMember->IsVisible() )
+ pMember->UpdateDataResults( pRefMember, nMemberMeasure );
+@@ -2771,7 +2806,7 @@ void ScDPResultDimension::UpdateDataResu
+
+ void ScDPResultDimension::SortMembers( ScDPResultMember* pRefMember )
+ {
+- long nCount = aMembers.Count();
++ long nCount = maMemberArray.size();
+
+ if ( bSortByData )
+ {
+@@ -2792,7 +2827,7 @@ void ScDPResultDimension::SortMembers( S
+ long nLoopCount = bIsDataLayout ? 1 : nCount;
+ for (long i=0; i<nLoopCount; i++)
+ {
+- ScDPResultMember* pMember = aMembers[(USHORT)i];
++ ScDPResultMember* pMember = maMemberArray[i];
+ if ( pMember->IsVisible() )
+ pMember->SortMembers( pRefMember );
+ }
+@@ -2800,7 +2835,7 @@ void ScDPResultDimension::SortMembers( S
+
+ void ScDPResultDimension::DoAutoShow( ScDPResultMember* pRefMember )
+ {
+- long nCount = aMembers.Count();
++ long nCount = maMemberArray.size();
+
+ // handle children first, before changing the visible state
+
+@@ -2808,7 +2843,7 @@ void ScDPResultDimension::DoAutoShow( Sc
+ long nLoopCount = bIsDataLayout ? 1 : nCount;
+ for (long i=0; i<nLoopCount; i++)
+ {
+- ScDPResultMember* pMember = aMembers[(USHORT)i];
++ ScDPResultMember* pMember = maMemberArray[i];
+ if ( pMember->IsVisible() )
+ pMember->DoAutoShow( pRefMember );
+ }
+@@ -2829,16 +2864,16 @@ void ScDPResultDimension::DoAutoShow( Sc
+ // look for equal values to the last included one
+
+ long nIncluded = nAutoCount;
+- ScDPResultMember* pMember1 = aMembers[(USHORT)aAutoOrder[nIncluded - 1]];
+- ScDPDataMember* pDataMember1 = pMember1->IsVisible() ? pMember1->GetDataRoot() : NULL;
++ const ScDPResultMember* pMember1 = maMemberArray[aAutoOrder[nIncluded - 1]];
++ const ScDPDataMember* pDataMember1 = pMember1->IsVisible() ? pMember1->GetDataRoot() : NULL;
+ BOOL bContinue = TRUE;
+ while ( bContinue )
+ {
+ bContinue = FALSE;
+ if ( nIncluded < nCount )
+ {
+- ScDPResultMember* pMember2 = aMembers[(USHORT)aAutoOrder[nIncluded]];
+- ScDPDataMember* pDataMember2 = pMember2->IsVisible() ? pMember2->GetDataRoot() : NULL;
++ const ScDPResultMember* pMember2 = maMemberArray[aAutoOrder[nIncluded]];
++ const ScDPDataMember* pDataMember2 = pMember2->IsVisible() ? pMember2->GetDataRoot() : NULL;
+
+ if ( lcl_IsEqual( pDataMember1, pDataMember2, nAutoMeasure ) )
+ {
+@@ -2852,7 +2887,7 @@ void ScDPResultDimension::DoAutoShow( Sc
+
+ for (nPos = nIncluded; nPos < nCount; nPos++)
+ {
+- ScDPResultMember* pMember = aMembers[(USHORT)aAutoOrder[nPos]];
++ ScDPResultMember* pMember = maMemberArray[aAutoOrder[nPos]];
+ pMember->SetAutoHidden();
+ }
+ }
+@@ -2860,11 +2895,11 @@ void ScDPResultDimension::DoAutoShow( Sc
+
+ void ScDPResultDimension::ResetResults()
+ {
+- long nCount = aMembers.Count();
++ long nCount = maMemberArray.size();
+ for (long i=0; i<nCount; i++)
+ {
+ // sort order doesn't matter
+- ScDPResultMember* pMember = aMembers[(USHORT)( bIsDataLayout ? 0 : i )];
++ ScDPResultMember* pMember = maMemberArray[bIsDataLayout ? 0 : i];
+ pMember->ResetResults( FALSE );
+ }
+ }
+@@ -2877,22 +2912,22 @@ long ScDPResultDimension::GetSortedIndex
+ void ScDPResultDimension::UpdateRunningTotals( const ScDPResultMember* pRefMember, long nMeasure,
+ ScDPRunningTotalState& rRunning, ScDPRowTotals& rTotals ) const
+ {
++ const ScDPResultMember* pMember;
+ long nMemberMeasure = nMeasure;
+- long nCount = aMembers.Count();
++ long nCount = maMemberArray.size();
+ for (long i=0; i<nCount; i++)
+ {
+ long nSorted = aMemberOrder.empty() ? i : aMemberOrder[i];
+
+- const ScDPResultMember* pMember;
+ if (bIsDataLayout)
+ {
+ DBG_ASSERT(nMeasure == SC_DPMEASURE_ALL || pResultData->GetMeasureCount() == 1,
+ "DataLayout dimension twice?");
+- pMember = aMembers[0];
++ pMember = maMemberArray[0];
+ nMemberMeasure = nSorted;
+ }
+ else
+- pMember = aMembers[(USHORT)nSorted];
++ pMember = maMemberArray[nSorted];
+
+ if ( pMember->IsVisible() )
+ {
+@@ -2916,7 +2951,7 @@ ScDPDataMember* ScDPResultDimension::Get
+ ScDPDataMember* pColMember = NULL;
+
+ BOOL bFirstExisting = ( pRelativePos == NULL && pName == NULL );
+- long nMemberCount = aMembers.Count();
++ long nMemberCount = maMemberArray.size();
+ long nMemberIndex = 0; // unsorted
+ long nDirection = 1; // forward if no relative position is used
+ if ( pRelativePos )
+@@ -2930,14 +2965,14 @@ ScDPDataMember* ScDPResultDimension::Get
+ {
+ // search for named member
+
+- ScDPResultMember* pRowMember = aMembers[(USHORT)GetSortedIndex(nMemberIndex)];
++ const ScDPResultMember* pRowMember = maMemberArray[GetSortedIndex(nMemberIndex)];
+
+ //! use ScDPItemData, as in ScDPDimension::IsValidPage?
+ while ( pRowMember && pRowMember->GetName() != *pName )
+ {
+ ++nMemberIndex;
+ if ( nMemberIndex < nMemberCount )
+- pRowMember = aMembers[(USHORT)GetSortedIndex(nMemberIndex)];
++ pRowMember = maMemberArray[GetSortedIndex(nMemberIndex)];
+ else
+ pRowMember = NULL;
+ }
+@@ -2946,7 +2981,7 @@ ScDPDataMember* ScDPResultDimension::Get
+ BOOL bContinue = TRUE;
+ while ( bContinue && nMemberIndex >= 0 && nMemberIndex < nMemberCount )
+ {
+- ScDPResultMember* pRowMember = aMembers[(USHORT)GetSortedIndex(nMemberIndex)];
++ const ScDPResultMember* pRowMember = maMemberArray[GetSortedIndex(nMemberIndex)];
+
+ // get child members by given indexes
+
+@@ -3006,7 +3041,7 @@ ScDPDataMember* ScDPResultDimension::Get
+
+ // get own row member using all indexes
+
+- ScDPResultMember* pRowMember = rRunning.GetRowResRoot();
++ const ScDPResultMember* pRowMember = rRunning.GetRowResRoot();
+ ScDPDataMember* pColMember = NULL;
+
+ const long* pNextRowIndex = pRowIndexes;
+@@ -3123,10 +3158,10 @@ void ScDPResultDimension::DumpState( con
+
+ SCROW nStartRow = rPos.Row();
+
+- long nCount = bIsDataLayout ? 1 : aMembers.Count();
++ long nCount = bIsDataLayout ? 1 : maMemberArray.size();
+ for (long i=0; i<nCount; i++)
+ {
+- const ScDPResultMember* pMember = aMembers[(USHORT)i];
++ const ScDPResultMember* pMember = maMemberArray[i];
+ pMember->DumpState( pRefMember, pDoc, rPos );
+ }
+
+@@ -3135,18 +3170,22 @@ void ScDPResultDimension::DumpState( con
+
+ long ScDPResultDimension::GetMemberCount() const
+ {
+- return aMembers.Count();
++ return maMemberArray.size();
+ }
+
+-ScDPResultMember* ScDPResultDimension::GetMember(long n) const
++const ScDPResultMember* ScDPResultDimension::GetMember(long n) const
++{
++ return maMemberArray[n];
++}
++ScDPResultMember* ScDPResultDimension::GetMember(long n)
+ {
+- return aMembers[(USHORT)n];
++ return maMemberArray[n];
+ }
+
+ ScDPResultDimension* ScDPResultDimension::GetFirstChildDimension() const
+ {
+- if ( aMembers.Count() > 0 )
+- return aMembers[0]->GetChildDimension();
++ if ( maMemberArray.size() > 0 )
++ return maMemberArray[0]->GetChildDimension();
+ else
+ return NULL;
+ }
+@@ -3164,7 +3203,7 @@ ScDPDataDimension::~ScDPDataDimension()
+ {
+ }
+
+-void ScDPDataDimension::InitFrom( ScDPResultDimension* pDim )
++void ScDPDataDimension::InitFrom( const ScDPResultDimension* pDim )
+ {
+ if (!pDim)
+ return;
+@@ -3175,7 +3214,7 @@ void ScDPDataDimension::InitFrom( ScDPRe
+ long nCount = pDim->GetMemberCount();
+ for (long i=0; i<nCount; i++)
+ {
+- ScDPResultMember* pResMem = pDim->GetMember(i);
++ const ScDPResultMember* pResMem = pDim->GetMember(i);
+
+ ScDPDataMember* pNew = new ScDPDataMember( pResultData, pResMem );
+ aMembers.Insert( pNew, aMembers.Count() );
+@@ -3185,7 +3224,7 @@ void ScDPDataDimension::InitFrom( ScDPRe
+ // with LateInit, pResMem hasn't necessarily been initialized yet,
+ // so InitFrom for the new result member is called from its ProcessData method
+
+- ScDPResultDimension* pChildDim = pResMem->GetChildDimension();
++ const ScDPResultDimension* pChildDim = pResMem->GetChildDimension();
+ if ( pChildDim )
+ pNew->InitFrom( pChildDim );
+ }
+Index: sc/source/core/data/dptabsrc.cxx
+===================================================================
+RCS file: /cvs/sc/sc/source/core/data/dptabsrc.cxx,v
+retrieving revision 1.14
+diff -u -w -p -r1.14 dptabsrc.cxx
+--- sc/source/core/data/dptabsrc.cxx 7 Nov 2005 14:41:01 -0000 1.14
++++ sc/source/core/data/dptabsrc.cxx 19 May 2006 14:50:24 -0000
+@@ -2399,9 +2399,7 @@ ScDPMember::ScDPMember( ScDPSource* pSrc
+ nDim( nD ),
+ nHier( nH ),
+ nLev( nL ),
+- aName( rN ),
+- fValue( fV ),
+- bHasValue( bHV ),
++ maData( rN, fV, bHV ),
+ bVisible( TRUE ),
+ bShowDet( TRUE )
+ {
+@@ -2423,54 +2421,32 @@ BOOL ScDPMember::IsNamedItem( const ScDP
+ nHier, nLev );
+
+ // fValue is converted from integer, so simple comparison works
+- return nComp == fValue;
++ return nComp == maData.fValue;
+ }
+
+- return r.IsCaseInsEqual( ScDPItemData( aName, fValue, bHasValue ) );
++ return r.IsCaseInsEqual( maData );
+ }
+
+ sal_Int32 ScDPMember::Compare( const ScDPMember& rOther ) const
+ {
+- sal_Int32 nResult;
+- if ( bHasValue )
+- {
+- if ( rOther.bHasValue )
+- {
+- if ( rtl::math::approxEqual( fValue, rOther.fValue ) )
+- nResult = 0;
+- else if ( fValue < rOther.fValue )
+- nResult = -1;
+- else
+- nResult = 1;
+- }
+- else
+- nResult = -1; // values first
+- }
+- else if ( rOther.bHasValue )
+- nResult = 1; // values first
+- else
+- nResult = ScGlobal::pCollator->compareString( aName, rOther.aName );
+-
+- return nResult;
++ return ScDPItemData::Compare( maData, rOther.maData );
+ }
+
+ void ScDPMember::FillItemData( ScDPItemData& rData ) const
+ {
+ //! handle date hierarchy...
+
+- rData.aString = aName;
+- rData.fValue = fValue;
+- rData.bHasValue = bHasValue;
++ rData = maData;
+ }
+
+ String ScDPMember::GetNameStr() const
+ {
+- return aName;
++ return maData.aString;
+ }
+
+ ::rtl::OUString SAL_CALL ScDPMember::getName() throw(uno::RuntimeException)
+ {
+- return aName;
++ return maData.aString;
+ }
+
+ void SAL_CALL ScDPMember::setName( const ::rtl::OUString& rNewName ) throw(uno::RuntimeException)
diff --git a/patches/src680/sc-get-pivot-data.diff b/patches/src680/sc-get-pivot-data.diff
index 74e49dd95..786062bfa 100644
--- a/patches/src680/sc-get-pivot-data.diff
+++ b/patches/src680/sc-get-pivot-data.diff
@@ -625,7 +625,7 @@ retrieving revision 1.84.22.2
diff -u -w -p -r1.84.22.2 scfuncs.src
--- sc/source/ui/src/scfuncs.src 28 Nov 2005 16:06:41 -0000 1.84.22.2
+++ sc/source/ui/src/scfuncs.src 16 Feb 2006 20:05:13 -0000
-@@ -9957,6 +9957,51 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
+@@ -9957,6 +9957,100 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
Text [ x-comment ] = " ";
};
};
@@ -633,8 +633,15 @@ diff -u -w -p -r1.84.22.2 scfuncs.src
+ {
+ String 1 // Description
+ {
-+ Text [ de ] = "" ;
+ Text [ en-US ] = "Extracts value(s) from a DataPilot.";
++ Text[ de ] = "Werte aus DataPilot extrahieren.";
++ Text[ es ] = "Extrae valores de un piloto de datos.";
++ Text[ fr ] = "Extrait les valeurs d'un pilote de données.";
++ Text[ it ] = "Estrai valore/i da un DataPilot.";
++ Text[ ja ] = "データパイロットã‹ã‚‰å€¤ã‚’抽出ã—ã¾ã™ã€‚";
++ Text[ pt-BR ] = "Extrai valor(es) de um DataPilot.";
++ Text[ zh-CN ] = "从 DataPilot 中抽å–值。";
++ Text[ zh-TW ] = "æ“·å– DataPilot 的值。";
+ };
+ ExtraData =
+ {
@@ -644,33 +651,75 @@ diff -u -w -p -r1.84.22.2 scfuncs.src
+ };
+ String 2 // Name of Parameter 1
+ {
-+ Text [ de ] = "" ;
+ Text [ en-US ] = "Target Field";
++ Text[ de ] = "Zielfeld";
++ Text[ es ] = "Campo de destino";
++ Text[ fr ] = "Champ cible";
++ Text[ it ] = "Campo di destinazione";
++ Text[ ja ] = "ターゲットフィールド";
++ Text[ pt-BR ] = "Campo de Destino";
++ Text[ zh-CN ] = "目标字段";
++ Text[ zh-TW ] = "目標欄ä½";
+ };
+ String 3 // Description of Parameter 1
+ {
-+ Text [ de ] = "" ;
+ Text [ en-US ] = "The name of the data pilot field to extract.";
++ Text[ de ] = "Der Name des zu extrahierenden DataPilot-Felds.";
++ Text[ es ] = "Nombre del campo del piloto de datos que se debe extraer.";
++ Text[ fr ] = "Nom du champ de pilote de données à extraire.";
++ Text[ it ] = "Nome del campo data pilot da estrarre.";
++ Text[ ja ] = "抽出ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ‘イロットフィールドã®åå‰ã€‚";
++ Text[ pt-BR ] = "Nome do campo do data pilot a extrair.";
++ Text[ zh-CN ] = "è¦æŠ½å–çš„ Data Pilot 字段的å称";
++ Text[ zh-TW ] = "進行擷å–çš„ Data Pilot 欄ä½å稱。";
+ };
+ String 4 // Name of Parameter 2
+ {
-+ Text [ de ] = "" ;
+ Text [ en-US ] = "Data Pilot";
++ Text[ de ] = "DataPilot";
++ Text[ es ] = "Piloto de datos";
++ Text[ fr ] = "Pilote de données";
++ Text[ it ] = "Data Pilot";
++ Text[ ja ] = "データパイロット";
++ Text[ pt-BR ] = "Data Pilot";
++ Text[ zh-CN ] = "Data Pilot";
++ Text[ zh-TW ] = "Data Pilot";
+ };
+ String 5 // Description of Parameter 2
+ {
-+ Text [ de ] = "" ;
+ Text [ en-US ] = "a reference to a cell or range in Data Pilot with the source data.";
++ Text[ de ] = "eine Referenz auf eine Zelle oder einen Bereich in DataPilot mit den Quelldaten.";
++ Text[ es ] = "referencia a una celda o rango en el piloto de datos con los datos de origen.";
++ Text[ fr ] = "référence à une cellule ou à une plage du pilote contenant les données sources.";
++ Text[ it ] = "Riferiento a una cella o a un intervallo di celle in Data Pilot con i dati di origine.";
++ Text[ ja ] = "ソースデータãŒè¨˜æˆ´ã•ã‚Œã¦ã„るデータパイロットã®ã‚»ãƒ«ã¾ãŸã¯ç¯„囲ã¸ã®å‚ç…§";
++ Text[ pt-BR ] = "uma referência a uma célula ou faixa do Data Pilot com os dados de origem.";
++ Text[ zh-CN ] = "用æºæ•°æ®å¼•ç”¨ Data Pilot 中的å•å…ƒæˆ–范围。";
++ Text[ zh-TW ] = "包å«ä¾†æºè³‡æ–™ä¹‹ Data Pilot 儲存格或範åœçš„åƒè€ƒã€‚";
+ };
+ String 6 // Name of Parameter 3
+ {
-+ Text [ de ] = "" ;
+ Text [ en-US ] = "Field Name / Item";
++ Text[ de ] = "Feldname/Element";
++ Text[ es ] = "Nombre de campo / elemento";
++ Text[ fr ] = "Nom du champ/élément";
++ Text[ it ] = "Nome/elemento campo";
++ Text[ ja ] = "フィールドå/é …ç›®";
++ Text[ pt-BR ] = "Item/Nome do Campo";
++ Text[ zh-CN ] = "字段å称/项 ";
++ Text[ zh-TW ] = "欄ä½å稱 / é …ç›®";
+ };
+ String 7 // Description of Parameter 3
+ {
-+ Text [ de ] = "" ;
+ Text [ en-US ] = "Field name/value pair to filter the target data.";
++ Text[ de ] = "Feldname-/Werte-Paar zur Filterung der Zieldaten.";
++ Text[ es ] = "Par de nombre de campo y valor para filtrar los datos de destino.";
++ Text[ fr ] = "Nom du champ/paire de valeurs pour filtrer les données cibles.";
++ Text[ it ] = "Coppia nome/valore campo da utilizzare come filtro per i dati di destinazione.";
++ Text[ ja ] = "ターゲットデータをフィルタリングã™ã‚‹ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰å/値ã®ãƒšã‚¢ã€‚";
++ Text[ pt-BR ] = "Par de valores/nome do campo para filtrar os dados de destino.";
++ Text[ zh-CN ] = "过滤目标数æ®çš„字段å/值对。";
++ Text[ zh-TW ] = "éŽæ¿¾ç›®æ¨™è³‡æ–™çš„欄ä½å稱/值æˆå°è³‡æ–™ã€‚";
+ };
+ };
+
diff --git a/patches/src680/sc-info-func.diff b/patches/src680/sc-info-func.diff
index 41fb15c07..fe32c6bdf 100644
--- a/patches/src680/sc-info-func.diff
+++ b/patches/src680/sc-info-func.diff
@@ -43,8 +43,9 @@
#endif
---- sc/source/ui/src/globstr.src 2005-04-19 09:07:50.000000000 +0530
-+++ sc/source/ui/src/globstr.src 2005-04-22 11:54:35.034247769 +0530
+
+--- sc/source/ui/src/globstr.src
++++ sc/source/ui/src/globstr.src
@@ -2065,8 +2065,8 @@ Resource RID_GLOBSTR
};
String STR_SCATTR_PAGE_SCALE_AUTO
@@ -56,18 +57,26 @@
};
String STR_DOC_STAT
{
-@@ -2611,5 +2611,11 @@ Resource RID_GLOBSTR
+@@ -2611,5 +2611,18 @@ Resource RID_GLOBSTR
Text [ en-US ] = "#NULL!" ;
Text [ x-comment ] = " ";
};
+ String STR_MANUAL
+ {
-+ Text [ de ] = " Manual ";
+ Text [ en-US ] = " Manual ";
++ Text[ de ] = "Manuell";
++ Text[ es ] = "Manual";
++ Text[ fr ] = "Manuel";
++ Text[ it ] = "Manuale";
++ Text[ ja ] = "手動";
++ Text[ pt-BR ] = "Manual";
++ Text[ zh-CN ] = "手册";
++ Text[ zh-TW ] = "手動";
+ Text [ x-comment ] = " ";
+ };
};
+
--- sc/util/hidother.src 2005-04-14 09:49:51.000000000 +0530
+++ sc/util/hidother.src 2005-04-19 10:55:06.808990934 +0530
@@ -410,6 +410,7 @@
@@ -159,7 +168,7 @@
ocArcTan2 = SC_OPCODE_ARC_TAN_2,
--- sc/source/ui/src/scfuncs.src 2005-04-14 09:49:55.000000000 +0530
+++ sc/source/ui/src/scfuncs.src 2005-04-22 11:54:44.487950093 +0530
-@@ -11027,6 +11027,31 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
+@@ -11027,6 +11027,45 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
Text [ en-US ] = "The text that represents a Roman numeral.";
};
};
@@ -169,6 +178,14 @@
+ {
+ Text [ de ] = " ";
+ Text [ en-US ] = "Gives some information about the environment";
++ Text[ de ] = "Einige Informationen zur Umgebung";
++ Text[ es ] = "Proporciona información sobre el entorno";
++ Text[ fr ] = "Donne quelques informations sur l'environnement";
++ Text[ it ] = "Include alcune informazioni sull'ambiente";
++ Text[ ja ] = "環境ã«ã¤ã„ã¦èª¬æ˜Žã—ã¾ã™";
++ Text[ pt-BR ] = "Fornece algumas informações sobre o ambiente";
++ Text[ zh-CN ] = "æ供一些关于环境的信æ¯";
++ Text[ zh-TW ] = "æ供一些有關環境的資訊。";
+ };
+ ExtraData =
+ {
@@ -183,14 +200,22 @@
+ };
+ String 3
+ {
-+ Text [ de ] = " ";
+ Text [ en-US ] = "Can be 'osversion', 'system', 'release', 'arch', 'gui', 'numfile' and 'recalc'.";
++ Text[ de ] = "Kann 'osversion', 'system', 'release', 'arch', 'gui', 'numfile' und 'recalc' sein.";
++ Text[ fr ] = "Peut être 'osversion', 'system', 'release', 'arch', 'gui', 'numfile' et 'recalc'.";
++ Text[ it ] = "Può corrispondere a 'osversion', 'system', 'release', 'arch', 'gui', 'numfile' e 'recalc'.";
++ Text[ ja ] = "「osversionã€ã€ã€Œsystemã€ã€ã€Œreleaseã€ã€ã€Œarchã€ã€ã€Œguiã€ã€ã€Œnumfileã€ã€ã€Œrecalcã€ã«ãªã‚Šã¾ã™ã€‚";
++ Text[ pt-BR ] = "Pode ser 'osversion', 'system', 'release', 'arch', 'gui', 'numfile' e 'recalc'.";
++ Text[ zh-CN ] = "å¯ä»¥æ˜¯ 'osversion'ã€'system'ã€'release'ã€'arch', 'gui'ã€'numfile' å’Œ 'recalc'。";
++ Text[ zh-TW ] = "å¯ä»¥æ˜¯ 'osversion'ã€'system'ã€'release'ã€'arch', 'gui'ã€'numfile' å’Œ 'recalc'。";
+ Text [ x-comment ] = " Donot translate quoted text. ";
+ };
+ };
};
#if defined(U2S)
+
+
--- solenv/inc/settings.mk 2005-04-14 10:17:33.000000000 +0530
+++ solenv/inc/settings.mk 2005-04-21 12:27:59.783874767 +0530
@@ -1393,6 +1393,12 @@
diff --git a/patches/src680/sc-paste-dialog.diff b/patches/src680/sc-paste-dialog.diff
index 669e3b29e..03a6ee021 100644
--- a/patches/src680/sc-paste-dialog.diff
+++ b/patches/src680/sc-paste-dialog.diff
@@ -5,13 +5,14 @@ retrieving revision 1.29
diff -u -r1.29 viewfun5.cxx
--- sc/source/ui/view/viewfun5.cxx 8 Sep 2004 15:56:29 -0000 1.29
+++ sc/source/ui/view/viewfun5.cxx 12 Oct 2004 13:51:30 -0000
-@@ -119,6 +119,10 @@
+@@ -119,6 +119,11 @@
#include "tabvwsh.hxx" // wegen GetViewFrame
#include "compiler.hxx"
+#include "asciiopt.hxx"
+#include "scabstdlg.hxx"
+#include "vcl/msgbox.hxx"
++#include "scresid.hxx"
+
#ifndef _SFXVIEWFRM_HXX //autogen
#include <sfx2/viewfrm.hxx>
@@ -47,7 +48,7 @@ diff -u -r1.29 viewfun5.cxx
+
+ ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
+ AbstractScImportAsciiDlg *pDlg = pFact->CreateScImportAsciiDlg
-+ ( NULL, String::CreateFromAscii("Pasted Data"), &aStrm,
++ ( NULL, String( ScResId( SCSTR_PASTED_DATA ) ), &aStrm,
+ ResId(RID_SCDLG_ASCII) );
+
+ if (pDlg->Execute() == RET_OK) {
@@ -64,3 +65,45 @@ diff -u -r1.29 viewfun5.cxx
InvalidateAttribs();
GetViewData()->UpdateInputHandler();
+Index: sc/inc/sc.hrc
+===================================================================
+RCS file: /cvs/sc/sc/inc/sc.hrc,v
+retrieving revision 1.49
+diff -u -p -u -r1.49 sc.hrc
+--- sc/inc/sc.hrc 8 Sep 2005 17:52:24 -0000 1.49
++++ sc/inc/sc.hrc 29 Mar 2006 14:33:50 -0000
+@@ -1344,6 +1346,7 @@
+ #define SCSTR_FORMULA_AUTOCORRECTION (STR_START + 214)
+
+ #define SCSTR_RENAMEOBJECT (STR_START + 215)
++#define SCSTR_PASTED_DATA (STR_START + 216)
+
+ // Navigator - in der Reihenfolge wie SC_CONTENT_...
+ #define SCSTR_CONTENT_ROOT (STR_START + 250)
+
+Index: sc/source/ui/src/scstring.src
+===================================================================
+RCS file: /cvs/sc/sc/source/ui/src/scstring.src,v
+retrieving revision 1.84
+diff -u -p -u -r1.84 scstring.src
+--- sc/source/ui/src/scstring.src 23 Sep 2005 15:09:41 -0000 1.84
++++ sc/source/ui/src/scstring.src 29 Mar 2006 14:33:51 -0000
+@@ -407,6 +407,18 @@ String SCSTR_RENAMEOBJECT
+ Text [ de ] = "Objekt benennen" ;
+ Text [ en-US ] = "Name object";
+ };
++String SCSTR_PASTED_DATA
++{
++ Text [ en-US ] = "Pasted Data";
++ Text[ de ] = "Eingefügte Daten";
++ Text[ es ] = "Datos pegados";
++ Text[ fr ] = "Données collées";
++ Text[ it ] = "Dati incollati";
++ Text[ ja ] = "貼り付ã‘られãŸãƒ‡ãƒ¼ã‚¿";
++ Text[ pt-BR ] = "Dados Colados";
++ Text[ zh-CN ] = "粘贴的数æ®";
++ Text[ zh-TW ] = "貼上的資料";
++};
+ String STR_INSERTGRAPHIC
+ {
+ Text [ de ] = "Bild einfügen" ;
diff --git a/patches/src680/sc-r1c1.diff b/patches/src680/sc-r1c1.diff
index e8e8e13e9..b6e850a85 100644
--- a/patches/src680/sc-r1c1.diff
+++ b/patches/src680/sc-r1c1.diff
@@ -3667,7 +3667,7 @@ retrieving revision 1.63.24.1
diff -u -w -p -r1.63 -r1.63.24.1
--- sc/source/ui/src/globstr.src 23 Sep 2005 15:06:42 -0000 1.63
+++ sc/source/ui/src/globstr.src 18 Nov 2005 15:50:47 -0000 1.63.24.1
-@@ -1798,6 +1798,10 @@ Resource RID_GLOBSTR
+@@ -1798,6 +1798,18 @@ Resource RID_GLOBSTR
{
Text [ de ] = "Tabelle wenden" ;
Text [ en-US ] = "Flip sheet" ;
@@ -3675,6 +3675,14 @@ diff -u -w -p -r1.63 -r1.63.24.1
+ String STR_UNDO_TAB_R1C1
+ {
+ Text [ en-US ] = "Toggle the use of R1C1 notation" ;
++ Text[ de ] = "Verwendung der R1C1-Notation umschalten";
++ Text[ es ] = "Alternar el uso de la notación R1C1";
++ Text[ fr ] = "Activer/Désactiver l'usage de la notation R1C1";
++ Text[ it ] = "Alterna l'utilizzo della notazione R1C1";
++ Text[ ja ] = "R1C1表記ã®ä½¿ç”¨ã‚’トグルã™ã‚‹";
++ Text[ pt-BR ] = "Alterna o uso da notação R1C1";
++ Text[ zh-CN ] = "切æ¢ä½¿ç”¨ R1C1 表示法";
++ Text[ zh-TW ] = "切æ›ä½¿ç”¨ R1C1 標記";
};
String STR_CHART_MAINTITLE
{
@@ -3686,7 +3694,7 @@ retrieving revision 1.115.24.2
diff -u -w -p -r1.115 -r1.115.24.2
--- sc/source/ui/src/menue.src 23 Sep 2005 15:07:14 -0000 1.115
+++ sc/source/ui/src/menue.src 25 Nov 2005 04:44:54 -0000 1.115.24.2
-@@ -409,6 +409,14 @@ Menu RID_OBJECTMENU_CELLS
+@@ -409,6 +409,21 @@ Menu RID_OBJECTMENU_CELLS
Text [ de ] = "~Rechts-nach-links" ;
Text [ en-US ] = "R~ight-To-Left" ;
};
@@ -3694,8 +3702,15 @@ diff -u -w -p -r1.115 -r1.115.24.2
+ {
+ Identifier = FID_TAB_USE_R1C1 ;
+ HelpId = FID_TAB_USE_R1C1 ;
-+ Text [ de ] = "R1C1" ;
+ Text [ en-US ] = "Use R1~C1" ;
++ Text[ de ] = "R1~C1 verwenden";
++ Text[ es ] = "Usar R1~C1";
++ Text[ fr ] = "Utiliser R1~C1";
++ Text[ it ] = "Utilizza R1~C1";
++ Text[ ja ] = "R1~C1を使用ã™ã‚‹";
++ Text[ pt-BR ] = "Usar R1~C1 ";
++ Text[ zh-CN ] = "使用 R1C1(~C)";
++ Text[ zh-TW ] = "使用 R1C1(~C)";
+ Text [ x-comment ] = " ";
+ };
};
@@ -3724,7 +3739,7 @@ retrieving revision 1.84.22.2
diff -u -w -p -r1.85 -r1.84.22.2
--- sc/source/ui/src/scfuncs.src 21 Oct 2005 12:08:35 -0000 1.85
+++ sc/source/ui/src/scfuncs.src 28 Nov 2005 16:06:41 -0000 1.84.22.2
-@@ -9049,6 +9049,81 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
+@@ -9049,6 +9049,95 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
Text [ x-comment ] = " ";
};
};
@@ -3732,8 +3747,15 @@ diff -u -w -p -r1.85 -r1.84.22.2
+ {
+ String 1 // Description
+ {
-+ Text [ de ] = "Bestimmt den Bezug auf eine Zelle als Text." ;
+ Text [ en-US ] = "Returns the reference to a cell as text." ;
++ Text[ de ] = "Gibt die Referenz auf eine Zelle als Text zurück.";
++ Text[ es ] = "Devuelve la referencia a una celda en formato de texto.";
++ Text[ fr ] = "Retourne la référence à une cellule sous forme de texte.";
++ Text[ it ] = "Restituisce un riferimento a una cella come testo.";
++ Text[ ja ] = "セルã¸ã®å‚照をテキストã¨ã—ã¦æˆ»ã—ã¾ã™ã€‚";
++ Text[ pt-BR ] = "Retorna a referência a uma célula como texto.";
++ Text[ zh-CN ] = "将引用作为文本返回至å•å…ƒã€‚";
++ Text[ zh-TW ] = "以文字方å¼å‚³å›žå„²å­˜æ ¼åƒè€ƒã€‚";
+ Text [ x-comment ] = " ";
+ };
+ ExtraData =
@@ -3786,8 +3808,15 @@ diff -u -w -p -r1.85 -r1.84.22.2
+ };
+ String 9 // Description of Parameter 4
+ {
-+ Text [ de ] = " ";
+ Text [ en-US ] = "If TRUE (or 1) or omitted generate A1 style address, otherwise produce R1C1 style address.";
++ Text[ de ] = "Wenn TRUE (oder 1) bzw. ausgelassen, A1-Adresse generieren, anderenfalls R1C1-Adresse erstellen.";
++ Text[ es ] = "Si el valor es TRUE (o 1) o se omite, genera una dirección del estilo A1; de lo contrario, genera una dirección del estilo R1C1.";
++ Text[ fr ] = "Si TRUE (ou 1) ou omis, générer une adresse de style A1. Sinon, produire une adresse de style R1C1.";
++ Text[ it ] = "Se impostato su TRUE (o 1) oppure se omesso genera un indirizzo tipo A1, altrimenti genera un indirizzo di tipo R1C1.";
++ Text[ ja ] = "TRUE (1)ã¾ãŸã¯A1スタイルアドレスãŒä½œæˆã•ã‚Œã¦ã„ãªã„å ´åˆã€R1C1スタイルアドレスãŒä½œæˆã•ã‚Œã¾ã™ã€‚";
++ Text[ pt-BR ] = "Se VERDADEIRO (ou 1) ou omitido, gerar endereço em estilo A1; caso contrário produzir endereço em estilo R1C1.";
++ Text[ zh-CN ] = "如果为 TRUE(或 1ï¼‰ï¼Œå¿½ç•¥ç”Ÿæˆ A1 æ ·å¼åœ°å€ï¼Œå¦åˆ™ç”Ÿæˆ R1C1 æ ·å¼åœ°å€ã€‚";
++ Text[ zh-TW ] = "如果是傳回 TRUE (或 1) 或是çœç•¥å°±æœƒç”¢ç”Ÿ A1 æ ¼å¼ä½å€ï¼Œå‚³å›žå…¶ä»–值則會產生 R1C1 æ ¼å¼ä½å€ã€‚";
+ Text [ x-comment ] = " ";
+ };
+ String 10 // Name of Parameter 5
@@ -3806,7 +3835,7 @@ diff -u -w -p -r1.85 -r1.84.22.2
// -=*# Resource for function BEREICHE #*=-
Resource SC_OPCODE_AREAS
{
-@@ -9511,6 +9586,46 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
+@@ -9511,6 +9586,53 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
{
Text [ de ] = "Die Zelle, deren Inhalt ausgewertet werden soll als Bezug in Textform (z.B. \"A1\")." ;
Text [ en-US ] = "The cell whose contents are to be evaluated is to be referenced in text form (e.g. \"A1\")." ;
@@ -3848,8 +3877,15 @@ diff -u -w -p -r1.85 -r1.84.22.2
+ };
+ String 5 // Description of Parameter 2
+ {
-+ Text [ de ] = "Verwendete Adressierungsart. TRUE für A1, FALSE für R1C1. Der Default ist A1." ;
+ Text [ en-US ] = "What address format to expect. TRUE for A1, FALSE for R1C1. Defaults to A1." ;
++ Text[ de ] = "Zu erwartendes Adressformat. TRUE für A1, FALSE für R1C1. Standardmäßig wird A1 verwendet.";
++ Text[ es ] = "Formato de dirección que se debe esperar. TRUE para A1, FALSE para R1C1. El valor por defecto es A1.";
++ Text[ fr ] = "Quel format d'adresse attendre. TRUE pour A1, FALSE pour R1C1. La valeur par défaut est A1.";
++ Text[ it ] = "Formato di indirizzo previsto. TRUE per A1, FALSE per R1C1. Il valore predefinito è A1.";
++ Text[ ja ] = "作æˆã•ã‚Œã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹å½¢å¼ TRUEã®å ´åˆã¯A1ã€FALSEã®å ´åˆã¯R1C1ãŒä½œæˆã•ã‚Œã¾ã™ã€‚ デフォルトã§ã¯ã€A1ã«ãªã‚Šã¾ã™ã€‚";
++ Text[ pt-BR ] = "Formato do endereço esperado. VERDADEIRO para A1, FALSO para R1C1. Usa A1 por padrão.";
++ Text[ zh-CN ] = "期望何ç§åœ°å€æ ¼å¼ã€‚TRUE 代表 A1,FALSE 代表 R1C1。默认值为 A1。";
++ Text[ zh-TW ] = "é æœŸæœƒç”¢ç”Ÿçš„ä½å€æ ¼å¼ã€‚TRUE 會產生 A1 æ ¼å¼ï¼ŒFALSE 會產生 R1C1 æ ¼å¼ã€‚é è¨­æ˜¯ç”¢ç”Ÿ A1 æ ¼å¼ã€‚";
Text [ x-comment ] = " ";
};
};
diff --git a/patches/src680/sc-source-ui-unobj-funcuno-cxx.diff b/patches/src680/sc-source-ui-unobj-funcuno-cxx.diff
index f5d56e482..5499d402a 100644
--- a/patches/src680/sc-source-ui-unobj-funcuno-cxx.diff
+++ b/patches/src680/sc-source-ui-unobj-funcuno-cxx.diff
@@ -5,7 +5,7 @@ retrieving revision 1.13
diff -u -p -r1.13 funcuno.cxx
--- sc/source/ui/unoobj/funcuno.cxx 8 Sep 2005 22:47:16 -0000 1.13
+++ sc/source/ui/unoobj/funcuno.cxx 24 Jan 2006 12:05:37 -0000
-@@ -376,6 +376,130 @@ void lcl_AddRef( ScTokenArray& rArray, l
+@@ -376,6 +376,129 @@ void lcl_AddRef( ScTokenArray& rArray, l
aRef.Ref2.nRow = (SCROW) (nStartRow + nRowCount - 1);
rArray.AddDoubleReference(aRef);
}
@@ -16,7 +16,7 @@ diff -u -p -r1.13 funcuno.cxx
+ ScDocument* mpDoc;
+public:
+ SimpleVisitor( ScDocument* pDoc ) : mpDoc( pDoc ), mbArgError( false ) {}
-+ // could possibly just get away with JUST the following overloads
++ // could possibly just get away with JUST the following overload
+ // 1) virtual void visitElem( long& nCol, long& nRow, const double& elem )
+ // 2) virtual void visitElem( long& nCol, long& nRow, const rtl::OUString& elem )
+ // 3) virtual void visitElem( long& nCol, long& nRow, const uno::Any& elem )
@@ -37,8 +37,9 @@ diff -u -p -r1.13 funcuno.cxx
+ }
+ virtual void visitElem( long& nCol, long& nRow, const rtl::OUString& elem )
+ {
-+ mpDoc->PutCell( (SCCOL) nCol, (SCROW) nRow, 0,
-+ new ScStringCell(elem) );
++ if ( elem.getLength() )
++ mpDoc->PutCell( (SCCOL) nCol, (SCROW) nRow, 0,
++ new ScStringCell( elem ) );
+ }
+ virtual void visitElem( long& nCol, long& nRow, const uno::Any& rElement )
+ {
@@ -59,15 +60,13 @@ diff -u -p -r1.13 funcuno.cxx
+ // variable as byte, short or long if it's an integer number.
+ double fVal;
+ rElement >>= fVal;
-+ mpDoc->SetValue( (SCCOL) nCol, (SCROW) nRow, 0, fVal );
++ visitElem( nCol, nRow, fVal );
+ }
+ else if ( eElemClass == uno::TypeClass_STRING )
+ {
+ rtl::OUString aUStr;
+ rElement >>= aUStr;
-+ if ( aUStr.getLength() )
-+ mpDoc->PutCell( (SCCOL) nCol, (SCROW) nRow, 0,
-+ new ScStringCell( aUStr ) );
++ visitElem( nCol, nRow, aUStr );
+ }
+ else
+ mbArgError = true;
diff --git a/patches/src680/sc-standard-filter-options-i18n.diff b/patches/src680/sc-standard-filter-options-i18n.diff
new file mode 100644
index 000000000..8fc5f9bf4
--- /dev/null
+++ b/patches/src680/sc-standard-filter-options-i18n.diff
@@ -0,0 +1,50 @@
+Index: sc/source/ui/src/localize.sdf
+===================================================================
+RCS file: /cvs/sc/sc/source/ui/src/localize.sdf,v
+retrieving revision 1.19
+diff -u -p -u -r1.19 localize.sdf
+--- sc/source/ui/src/localize.sdf 6 Feb 2006 19:07:43 -0000 1.19
++++ sc/source/ui/src/localize.sdf 5 May 2006 14:59:15 -0000
+@@ -9149,6 +9149,42 @@ sc source\ui\src\filter.src 0 stringlist
+ sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 10 0 zh-CN æœ€å° % 2002-02-02 02:02:02
+ sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 10 0 zh-TW æœ€å° % 2002-02-02 02:02:02
+ sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 10 0 zu I-% elincane kakhulu 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 11 0 en-GB Contains % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 11 0 de Enthält % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 11 0 es Contiene % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 11 0 fr Contient % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 11 0 it Contiene % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 11 0 ja ã‚’å«ã‚€ % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 11 0 pt-BR Contém % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 11 0 zh-CN åŒ…å« % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 11 0 zh-TW åŒ…å« % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 12 0 en-GB Does not Contain % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 12 0 de Enthält nicht % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 12 0 es No contiene % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 12 0 fr Ne contient pas % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 12 0 it Non contiene % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 12 0 ja ã‚’å«ã¾ãªã„ % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 12 0 pt-BR Não contém % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 12 0 zh-CN ä¸åŒ…å« % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 12 0 zh-TW ä¸åŒ…å« % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 13 0 en-GB Begins with % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 13 0 de Beginnt mit % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 13 0 es Empieza por % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 13 0 fr Commence par % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 13 0 it Inizia con % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 13 0 ja ã§å§‹ã¾ã‚‹ % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 13 0 pt-BR Começa com % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 13 0 zh-CN 开头是 % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 13 0 zh-TW 開頭以 % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 14 0 en-GB Ends with % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 14 0 de Endet mit % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 14 0 es Finaliza por % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 14 0 fr Finit par % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 14 0 it Termina con % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 14 0 ja ã§çµ‚ã‚ã‚‹ % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 14 0 pt-BR Termina com % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 14 0 zh-CN 结尾是 % 2002-02-02 02:02:02
++sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 14 0 zh-TW çµæŸä»¥ % 2002-02-02 02:02:02
+ sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 2 0 af < 2002-02-02 02:02:02
+ sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 2 0 ar > 20040507 14:23:12
+ sc source\ui\src\filter.src 0 stringlist RID_SCDLG_FILTER.LB_COND1 2 0 be-BY < 2002-02-02 02:02:02
diff --git a/patches/src680/sc-standard-filter-options.diff b/patches/src680/sc-standard-filter-options.diff
index f64d682b4..a44996aa9 100644
--- a/patches/src680/sc-standard-filter-options.diff
+++ b/patches/src680/sc-standard-filter-options.diff
@@ -36,7 +36,7 @@ diff -u -p -u -r1.54 filter.src
< "<=" ; Default ; > ;
< ">=" ; Default ; > ;
- < "<>" ; Default ; > ;
-+ < "Not equals" ; Default ; > ;
++ < "Not equal" ; Default ; > ;
< "Largest" ; Default ; > ;
< "Smallest" ; Default ; > ;
< "Largest %" ; Default ; > ;
diff --git a/patches/src680/sc-string-arg.diff b/patches/src680/sc-string-arg.diff
index 0fcdcff67..52a5b16a7 100644
--- a/patches/src680/sc-string-arg.diff
+++ b/patches/src680/sc-string-arg.diff
@@ -1,22 +1,23 @@
--- sc/source/core/tool/interpr4.cxx 2005-04-14 09:50:06.000000000 +0530
+++ sc/source/core/tool/interpr4.cxx 2005-04-19 13:12:20.678272373 +0530
-@@ -283,8 +283,6 @@ double ScInterpreter::GetCellValueOrZero
+@@ -257,7 +257,7 @@ double ScInterpreter::GetCellValueOrZero
break;
case CELLTYPE_STRING:
case CELLTYPE_EDIT:
-#if 0
--// Xcl does it, but SUM(A1:A2) differs from A1+A2. No good.
++#if 1 /* JEG : re-enable because compatibility is more important than consistency for this */
+ // Xcl does it, but SUM(A1:A2) differs from A1+A2. No good.
{
String aStr;
- if ( eType == CELLTYPE_STRING )
-@@ -299,7 +297,6 @@ double ScInterpreter::GetCellValueOrZero
+@@ -268,7 +268,7 @@ double ScInterpreter::GetCellValueOrZero
+ sal_uInt32 nFIndex = 0; // damit default Land/Spr.
+ if ( !pFormatter->IsNumberFormat( aStr, nFIndex, fValue ) )
+ {
+- SetError(errNoValue);
++ SetError(errCellNoValue); /* CellNoValue is not really an error */
+ fValue = 0.0;
}
}
- break;
--#endif
- default:
- SetError(errCellNoValue);
- fValue = 0.0;
--- sc/source/core/tool/interpr1.cxx 2005-04-14 09:50:06.000000000 +0530
+++ sc/source/core/tool/interpr1.cxx 2005-04-19 12:08:07.486080311 +0530
@@ -2685,12 +2685,13 @@ double ScInterpreter::IterateParameters(
diff --git a/patches/src680/sc-xl-errors.diff b/patches/src680/sc-xl-errors.diff
index e586e2cb6..1144ff9eb 100644
--- a/patches/src680/sc-xl-errors.diff
+++ b/patches/src680/sc-xl-errors.diff
@@ -68,8 +68,8 @@ retrieving revision 1.61
diff -u -p -u -r1.61 globstr.src
--- sc/source/ui/src/globstr.src 14 Jan 2005 12:15:01 -0000 1.61
+++ sc/source/ui/src/globstr.src 18 Apr 2005 11:26:48 -0000
-@@ -2587,6 +2588,29 @@ Resource RID_GLOBSTR
- Text [ de ] = "Sie können diesen Teil der Datenpilot-Tabelle nicht ändern.";
+@@ -2587,6 +2588,37 @@ Resource RID_GLOBSTR
+ Text [ de ] = "Sie können diesen Teil der Datenpilot-Tabelle nicht ändern.";
Text[ en-US ] = "You cannot change this part of the DataPilot table.";
};
-
@@ -83,6 +83,14 @@ diff -u -p -u -r1.61 globstr.src
+ {
+ Text [ de ] = "Division by zero" ;
+ Text [ en-US ] = "Division by zero" ;
++ Text[ de ] = "Division durch null";
++ Text[ es ] = "División por cero";
++ Text[ fr ] = "Division par zéro";
++ Text[ it ] = "Divisione per zero";
++ Text[ ja ] = "0ã«ã‚ˆã‚‹åˆ†å‰²";
++ Text[ pt-BR ] = "Divisão por zero";
++ Text[ zh-CN ] = "除以零";
++ Text[ zh-TW ] = "除數為零";
+ Text [ x-comment ] = " ";
+ };
+ String STR_NUM_ERROR
diff --git a/patches/src680/sd-toolbar-advanced-shapes.diff b/patches/src680/sd-toolbar-advanced-shapes.diff
new file mode 100644
index 000000000..03d310583
--- /dev/null
+++ b/patches/src680/sd-toolbar-advanced-shapes.diff
@@ -0,0 +1,28 @@
+diff -rup sd/uiconfig/simpress/toolbar.orig/toolbar.xml sd/uiconfig/simpress/toolbar/toolbar.xml
+--- sd/uiconfig/simpress/toolbar.orig/toolbar.xml 2006-05-28 18:56:48.000000000 +0200
++++ sd/uiconfig/simpress/toolbar/toolbar.xml 2006-05-28 18:57:49.000000000 +0200
+@@ -5,8 +5,8 @@
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:Line" toolbar:helpid="helpid:10102" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:LineArrowEnd" toolbar:helpid="helpid:27173" toolbar:style="radio" />
+- <toolbar:toolbaritem xlink:href=".uno:Rect" toolbar:helpid="helpid:10104" toolbar:style="radio" />
+- <toolbar:toolbaritem xlink:href=".uno:Ellipse" toolbar:helpid="helpid:10110" toolbar:style="radio" />
++ <toolbar:toolbaritem xlink:href=".uno:BasicShapes.rectangle" toolbar:helpid="helpid:10104" toolbar:style="radio" />
++ <toolbar:toolbaritem xlink:href=".uno:BasicShapes.ellipse" toolbar:helpid="helpid:10110" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:Text" toolbar:helpid="helpid:10398" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:VerticalText" toolbar:helpid="helpid:10398" toolbar:style="radio" />
+ <toolbar:toolbarseparator/>
+diff -rup sd/uiconfig/sdraw/toolbar.orig/toolbar.xml sd/uiconfig/sdraw/toolbar/toolbar.xml
+--- sd/uiconfig/sdraw/toolbar.orig/toolbar.xml 2006-05-28 19:59:49.000000000 +0200
++++ sd/uiconfig/sdraw/toolbar/toolbar.xml 2006-05-28 20:00:39.000000000 +0200
+@@ -5,8 +5,8 @@
+ <toolbar:toolbarseparator/>
+ <toolbar:toolbaritem xlink:href=".uno:Line" toolbar:helpid="helpid:10102" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:LineArrowEnd" toolbar:helpid="helpid:27173" toolbar:style="radio" />
+- <toolbar:toolbaritem xlink:href=".uno:Rect" toolbar:helpid="helpid:10104" toolbar:style="radio" />
+- <toolbar:toolbaritem xlink:href=".uno:Ellipse" toolbar:helpid="helpid:10110" toolbar:style="radio" />
++ <toolbar:toolbaritem xlink:href=".uno:BasicShapes.rectangle" toolbar:helpid="helpid:10104" toolbar:style="radio" />
++ <toolbar:toolbaritem xlink:href=".uno:BasicShapes.ellipse" toolbar:helpid="helpid:10110" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:Text" toolbar:helpid="helpid:10398" toolbar:style="radio" />
+ <toolbar:toolbaritem xlink:href=".uno:VerticalText" toolbar:helpid="helpid:10398" toolbar:style="radio" />
+ <toolbar:toolbarseparator/>
diff --git a/patches/src680/sdk-filenames-with-dollar.diff b/patches/src680/sdk-filenames-with-dollar.diff
new file mode 100644
index 000000000..5a6d9ea50
--- /dev/null
+++ b/patches/src680/sdk-filenames-with-dollar.diff
@@ -0,0 +1,15 @@
+--- solenv/bin/modules/installer/worker.pm.old 2006-02-06 11:52:50.000000000 +0100
++++ solenv/bin/modules/installer/worker.pm 2006-04-25 19:57:02.000000000 +0200
+@@ -711,6 +711,12 @@
+ my $destination = $onefile->{'destination'};
+ my $sourcepath = $onefile->{'sourcepath'};
+
++ # This is necessary to install SDK that includes files with $ in its name
++ # Otherwise, the following shell commands does not work and the file list
++ # is not correct
++ $destination =~ s/\$\$/\$/;
++ $sourcepath =~ s/\$\$/\$/;
++
+ # printf "mv $sourcepath $destdir$destination\n";
+ `cp -af '$sourcepath' '$destdir$destination'`;
+ `chmod $unixrights '$destdir$destination'`;
diff --git a/patches/src680/sfx2-fallback-to-en-help.diff b/patches/src680/sfx2-fallback-to-en-help.diff
new file mode 100644
index 000000000..2a47acad0
--- /dev/null
+++ b/patches/src680/sfx2-fallback-to-en-help.diff
@@ -0,0 +1,124 @@
+diff -u -r1.68 sfxhelp.cxx
+--- sfx2/source/appl/sfxhelp.cxx 7 Feb 2006 10:29:33 -0000 1.68
++++ sfx2/source/appl/sfxhelp.cxx 28 Mar 2006 13:12:14 -0000
+@@ -99,6 +99,9 @@
+ #ifndef _URLOBJ_HXX
+ #include <tools/urlobj.hxx>
+ #endif
++#ifndef _ISOLANG_HXX
++#include <tools/isolang.hxx>
++#endif
+ #ifndef _UTL_CONFIGMGR_HXX_
+ #include <unotools/configmgr.hxx>
+ #endif
+@@ -109,6 +112,11 @@
+ #include <svtools/pathoptions.hxx>
+ #include <rtl/ustring.hxx>
+ #include <osl/process.h>
++#include <osl/file.hxx>
++#ifndef _UTL_BOOTSTRAP_HXX
++#include <unotools/bootstrap.hxx>
++#endif
++
+ #include <rtl/uri.hxx>
+ #include <vcl/msgbox.hxx>
+ #include <svtools/ehdl.hxx>
+@@ -165,16 +173,53 @@
+
+ #define STARTERLIST 0
+
++rtl::OUString HelpLocaleString()
++{
++ static rtl::OUString aLocaleStr;
++ if (!aLocaleStr.getLength())
++ {
++ // detect installed locale
++ Any aLocale =
++ ::utl::ConfigManager::GetConfigManager()->GetDirectConfigProperty(
++ ::utl::ConfigManager::LOCALE );
++ bool bOk = (aLocale >>= aLocaleStr);
++ if ( bOk )
++ {
++ rtl::OUString aBaseInstallPath;
++ utl::Bootstrap::PathStatus aBaseLocateResult =
++ utl::Bootstrap::locateBaseInstallation(aBaseInstallPath);
++ static const char *szHelpPath = "/help/";
++
++ rtl::OUString sHelpPath = aBaseInstallPath +
++ rtl::OUString::createFromAscii(szHelpPath) + aLocaleStr;
++ osl::DirectoryItem aDirItem;
++
++ if (!osl::DirectoryItem::get(sHelpPath, aDirItem) == osl::FileBase::E_None)
++ {
++ bOk = false;
++ String sLang(aLocaleStr);
++ xub_StrLen nSepPos = sLang.Search( '-' );
++ if (nSepPos != STRING_NOTFOUND)
++ {
++ bOk = true;
++ sLang = sLang.Copy( 0, nSepPos );
++ sHelpPath = aBaseInstallPath +
++ rtl::OUString::createFromAscii(szHelpPath) + sLang;
++ if (!osl::DirectoryItem::get(sHelpPath, aDirItem) == osl::FileBase::E_None)
++ bOk = false;
++ }
++ }
++ }
++ if (!bOk)
++ aLocaleStr = rtl::OUString( DEFINE_CONST_UNICODE("en") );
++ }
++ return aLocaleStr;
++}
++
++
+ void AppendConfigToken_Impl( String& rURL, sal_Bool bQuestionMark )
+ {
+- // this completes a help url with the system parameters "Language" and "System"
+- // detect installed locale
+- Any aLocale =
+- ::utl::ConfigManager::GetConfigManager()->GetDirectConfigProperty( ::utl::ConfigManager::LOCALE );
+- ::rtl::OUString aLocaleStr;
+- if ( !( aLocale >>= aLocaleStr ) )
+- // fallback is english
+- aLocaleStr = ::rtl::OUString( DEFINE_CONST_UNICODE("en") );
++ ::rtl::OUString aLocaleStr(HelpLocaleString());
+
+ // query part exists?
+ if ( bQuestionMark )
+@@ -189,6 +234,7 @@
+ rURL += String( aLocaleStr );
+ rURL += DEFINE_CONST_UNICODE("&System=");
+ rURL += SvtHelpOptions().GetSystem();
++
+ }
+
+ // -----------------------------------------------------------------------
+@@ -426,11 +472,8 @@
+
+ pImp = new SfxHelp_Impl( bIsDebug );
+
+- Any aLocale =
+- ::utl::ConfigManager::GetConfigManager()->GetDirectConfigProperty( ::utl::ConfigManager::LOCALE );
+- ::rtl::OUString aLocaleStr;
+- if ( !( aLocale >>= aLocaleStr ) )
+- aLocaleStr = ::rtl::OUString( DEFINE_CONST_UNICODE("en") );
++ ::rtl::OUString aLocaleStr = HelpLocaleString();
++
+ sal_Int32 nSepPos = aLocaleStr.indexOf( '_' );
+ if ( nSepPos != -1 )
+ {
+--- xmlhelp/source/treeview/tvread.cxx 23 Mar 2005 13:04:52 -0000 1.16
++++ xmlhelp/source/treeview/tvread.cxx 24 Oct 2005 11:15:48 -0000
+@@ -701,7 +701,11 @@ ConfigData TVChildTarget::init( const Re
+ osl::FileBase::E_None == osl::DirectoryItem::get( url + locale.copy( 0,idx ),
+ aDirItem ) )
+ ret = locale.copy( 0,idx );
+-
++ else
++ {
++ locale = rtl::OUString::createFromAscii( "en-US" );
++ ret = rtl::OUString::createFromAscii("en");
++ }
+ url = url + ret;
+
+ // first of all, try do determine whether there are any *.tree files present
diff --git a/patches/src680/sfx2-title-generic-url.diff b/patches/src680/sfx2-title-generic-url.diff
new file mode 100644
index 000000000..7a75eb560
--- /dev/null
+++ b/patches/src680/sfx2-title-generic-url.diff
@@ -0,0 +1,13 @@
+diff -rup sfx2.orig/source/doc/objmisc.cxx sfx2/source/doc/objmisc.cxx
+--- sfx2.orig/source/doc/objmisc.cxx 2006-05-18 09:48:27.000000000 +0200
++++ sfx2/source/doc/objmisc.cxx 2006-05-18 09:49:19.000000000 +0200
+@@ -857,6 +857,9 @@ String SfxObjectShell::GetTitle
+ // ggf. Titel aus Dateiname generieren
+ if ( !pImp->aTitle.Len() )
+ pImp->aTitle = aURL.GetBase();
++
++ if ( !pImp->aTitle.Len() )
++ pImp->aTitle = aURL.GetMainURL( INetURLObject::DECODE_WITH_CHARSET );
+ }
+
+ // ganzer Titel
diff --git a/patches/src680/speed-local-link-except.diff b/patches/src680/speed-local-link-except.diff
new file mode 100644
index 000000000..0aaabfc0c
--- /dev/null
+++ b/patches/src680/speed-local-link-except.diff
@@ -0,0 +1,223 @@
+Index: codemaker/source/cppumaker/cppumaker.cxx
+===================================================================
+RCS file: /cvs/udk/codemaker/source/cppumaker/cppumaker.cxx,v
+retrieving revision 1.8
+diff -u -p -u -r1.8 cppumaker.cxx
+--- codemaker/source/cppumaker/cppumaker.cxx 8 Sep 2005 02:11:34 -0000 1.8
++++ codemaker/source/cppumaker/cppumaker.cxx 28 Mar 2006 08:54:32 -0000
+@@ -245,6 +249,36 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
+ exit(99);
+ }
+
++ if (!aIncludes.empty() && options.isValid("-O"))
++ {
++ OString outPath = options.getOption("-O");
++ outPath += "/catch.hxx";
++ FILE *excepts = fopen (outPath, "w+");
++ fprintf (excepts, "// This file is autogenerated by cppumaker\n");
++ fprintf (excepts, "// include exception headers\n");
++
++ ::std::list<rtl::OString>::const_iterator iter;
++
++ for (iter = aIncludes.begin(); iter != aIncludes.end(); iter++)
++ {
++ rtl::OString aStr = *iter;
++ fprintf (excepts, "#include <%s.hpp>\n", (const sal_Char *) aStr);
++ }
++
++ fprintf (excepts, "// dummy method\n");
++ fprintf (excepts, "extern void force_emit ()\n");
++ fprintf (excepts, "{\n");
++ for (iter = aExceptionNames.begin(); iter != aExceptionNames.end(); iter++) {
++ fprintf (excepts, " try {\n");
++ fprintf (excepts, " force_emit ();\n");
++ fprintf (excepts, " }\n");
++ rtl::OString aStr = *iter;
++ fprintf (excepts, "catch (const %s &r) {} \n", (const sal_Char *)aStr);
++ }
++ fprintf (excepts, "}\n\n");
++ fclose (excepts);
++ }
++
+ return 0;
+ }
+
+
+Index: codemaker/source/cppumaker/cpputype.cxx
+===================================================================
+RCS file: /cvs/udk/codemaker/source/cppumaker/cpputype.cxx,v
+retrieving revision 1.37
+diff -u -p -u -r1.37 cpputype.cxx
+--- codemaker/source/cppumaker/cpputype.cxx 26 Jan 2006 17:42:38 -0000 1.37
++++ codemaker/source/cppumaker/cpputype.cxx 28 Mar 2006 08:54:34 -0000
+@@ -56,6 +56,9 @@
+
+ using namespace rtl;
+
++::std::list<rtl::OString> aExceptionNames;
++::std::list<rtl::OString> aIncludes;
++
+ namespace {
+
+ rtl::OString translateSimpleUnoType(rtl::OString const & unoType) {
+@@ -3265,6 +3294,16 @@ sal_Bool ExceptionType::dumpHFile(
+ return sal_True;
+ }
+
++bool
++ExceptionType::dumpFiles(CppuOptions * options, rtl::OString const & outPath)
++{
++ OString aTypeName = scopedName (OString(), m_typeName);
++ aExceptionNames.insert(aExceptionNames.end(), aTypeName);
++
++ aIncludes.insert(aIncludes.end(), m_typeName);
++ return CppuType::dumpFiles (options, outPath);
++}
++
+ sal_Bool ExceptionType::dumpDeclaration(FileStream& o)
+ throw( CannotDumpException )
+ {
+
+
+Index: codemaker/source/cppumaker/cpputype.hxx
+===================================================================
+RCS file: /cvs/udk/codemaker/source/cppumaker/cpputype.hxx,v
+retrieving revision 1.9
+diff -u -p -u -r1.9 cpputype.hxx
+--- codemaker/source/cppumaker/cpputype.hxx 10 Jan 2006 15:46:47 -0000 1.9
++++ codemaker/source/cppumaker/cpputype.hxx 28 Mar 2006 08:54:34 -0000
+@@ -61,6 +61,11 @@ enum CppuTypeDecl
+ class CppuOptions;
+ class FileStream;
+
++#include <list>
++extern ::std::list<rtl::OString> aExceptionNames;
++extern ::std::list<rtl::OString> aIncludes;
++extern bool do_internal;
++
+ class CppuType
+ {
+ public:
+@@ -300,6 +305,7 @@ public:
+
+ virtual ~ExceptionType();
+
++ bool dumpFiles(CppuOptions * options, rtl::OString const & outPath);
+ sal_Bool dumpDeclaration(FileStream& o) throw( CannotDumpException );
+ sal_Bool dumpHFile(FileStream& o, codemaker::cppumaker::Includes & includes) throw( CannotDumpException );
+ sal_Bool dumpHxxFile(FileStream& o, codemaker::cppumaker::Includes & includes) throw( CannotDumpException );
+
+
+--- /dev/null
++++ offuh/except/except.cxx
+@@ -0,0 +1,25 @@
++#include <sal/config.h>
++#include <cppu/macros.hxx>
++
++// We don't want to hide all this shared goodness:
++#undef CPPU_GCC_DLLPUBLIC_EXPORT
++#define CPPU_GCC_DLLPUBLIC_EXPORT
++#undef CPPU_GCC_DLLPRIVATE
++#define CPPU_GCC_DLLPRIVATE
++
++#define CPPU_INTERNAL_IMPL 1
++
++// Evilness: sal/config.h includes stdlib.h
++// that has some workarounds for 'major' / 'minor'
++// issues, at least on Linux. These then cause problems
++// with chained constructors: FooClass : major(0) tec.
++
++// obscure CORBA compat interfaces
++#undef major
++#undef minor
++
++// com/sun/star/drawing/CaptionEscapeDirection.idl: keyword genius
++#define auto not_auto
++
++#include <catch.hxx>
++
+
+
+--- /dev/null 2006-03-11 13:25:00.000000000 +0000
++++ offuh/except/makefile.mk 2006-03-17 11:44:41.000000000 +0000
+@@ -0,0 +1,23 @@
++# --- Settings -----------------------------------------------------
++
++PRJ=..
++
++PRJNAME=offuh
++TARGET=unotypes
++ENABLE_EXCEPTIONS=TRUE
++
++.INCLUDE : settings.mk
++
++LIB1TARGET= $(SLB)$/$(TARGET).lib
++LIB1OBJFILES= $(SLO)$/except.obj
++
++SHL1TARGET=exlink$(UPD)$(DLLPOSTFIX)
++SHL1LIBS=$(LIB1TARGET)
++SHL1STDLIBS= $(SALLIB) $(SALHELPERLIB) $(REGLIB) $(CPPULIB)
++
++# --- Targets -------------------------------------------------------
++
++.INCLUDE : target.mk
++
++$(LIB1OBJFILES) : $(MISC)$/offuh.don
++
+
+
+Index: offuh/prj/build.lst
+===================================================================
+RCS file: /cvs/api/offuh/prj/build.lst,v
+retrieving revision 1.4
+diff -u -p -u -r1.4 build.lst
+--- offuh/prj/build.lst 18 Sep 2002 09:14:33 -0000 1.4
++++ offuh/prj/build.lst 3 Apr 2006 09:56:29 -0000
+@@ -2,3 +2,4 @@ ou offuh :: offapi codemaker NULL
+ ou offuh usr1 - all ou_mkout NULL
+ ou offuh\prj get - all ou_prj NULL
+ ou offuh\source nmake - all ou_source NULL
++ou offuh\except nmake - all ou_except ou_source NULL
+
+
+Index: offuh/prj/d.lst
+===================================================================
+RCS file: /cvs/api/offuh/prj/d.lst,v
+retrieving revision 1.59
+diff -u -p -u -r1.59 d.lst
+--- offuh/prj/d.lst 9 Jun 2005 14:54:16 -0000 1.59
++++ offuh/prj/d.lst 3 Apr 2006 09:56:29 -0000
+@@ -319,6 +326,9 @@ mkdir: %_DEST%\inc%_EXT%\com\sun\star\xm
+
+ ..\%__SRC%\inc\com\sun\star\script\browse\*.hpp %_DEST%\inc%_EXT%\com\sun\star\script\browse\*.hpp
+ ..\%__SRC%\inc\com\sun\star\script\browse\*.hdl %_DEST%\inc%_EXT%\com\sun\star\script\browse\*.hdl
++
++..\%__SRC%\lib\*.so %_DEST%\lib%_EXT%\*.so
++
+ ..\%__SRC%\inc\com\sun\star\script\provider\*.hpp %_DEST%\inc%_EXT%\com\sun\star\script\provider\*.hpp
+ ..\%__SRC%\inc\com\sun\star\script\provider\*.hdl %_DEST%\inc%_EXT%\com\sun\star\script\provider\*.hdl
+
+
+Index: scp2/source/ooo/file_library_ooo.scp
+===================================================================
+RCS file: /cvs/installation/scp2/source/ooo/file_library_ooo.scp,v
+retrieving revision 1.184.2.2
+diff -u -p -u -r1.184.2.2 file_library_ooo.scp
+--- scp2/source/ooo/file_library_ooo.scp 17 Feb 2006 16:52:02 -0000 1.184.2.2
++++ scp2/source/ooo/file_library_ooo.scp 3 Apr 2006 10:13:58 -0000
+@@ -468,6 +490,15 @@ STD_UNO_LIB_FILE( gid_File_Lib_Ctl , ctl
+
+ STD_LIB_FILE_PATCH( gid_File_Lib_Cui, cui)
+
++#ifdef LINUX
++File gid_File_Lib_ExLib
++ TXT_FILE_BODY;
++ Styles = (PACKED,PATCH);
++ Dir = gid_Dir_Program;
++ Name = LIBNAME(exlink);
++End
++#endif
++
+ #ifndef SYSTEM_CURL
+
+ File gid_File_Lib_Curl
diff --git a/patches/src680/speed-ooqstart-options.diff b/patches/src680/speed-ooqstart-options.diff
new file mode 100644
index 000000000..2b3c32089
--- /dev/null
+++ b/patches/src680/speed-ooqstart-options.diff
@@ -0,0 +1,18 @@
+--- desktop/unx/source/start.c 2006-04-10 17:33:14.000000000 +0000
++++ desktop/unx/source/start.c 2006-04-12 13:29:35.000000000 +0000
+@@ -415,10 +415,13 @@ setup_args (int argc, char **argv, const
+
+ else if (arg_check (argv[i], "nologo") ||
+ arg_check (argv[i], "headless") ||
+- arg_check (argv[i], "invisible"))
++ arg_check (argv[i], "invisible") ||
++ arg_check (argv[i], "help") || arg_check (argv[i], "h") || arg_check (argv[i], "?") ||
++ arg_check (argv[i], "minimized"))
+ *inhibit_splash = TRUE;
+
+- else if (arg_check (argv[i], "-pt"))
++ else if (arg_check (argv[i], "pt") ||
++ arg_check (argv[i], "display"))
+ next_arg_not_filename = TRUE;
+ }
+
diff --git a/patches/src680/speed-quickstart-i18n.diff b/patches/src680/speed-quickstart-i18n.diff
new file mode 100644
index 000000000..489906c14
--- /dev/null
+++ b/patches/src680/speed-quickstart-i18n.diff
@@ -0,0 +1,97 @@
+Index: svx/source/dialog/optmemory.cxx
+===================================================================
+RCS file: /cvs/graphics/svx/source/dialog/optmemory.cxx,v
+retrieving revision 1.8
+diff -u -p -u -r1.8 optmemory.cxx
+--- svx/source/dialog/optmemory.cxx 8 Sep 2005 21:47:15 -0000 1.8
++++ svx/source/dialog/optmemory.cxx 4 May 2006 10:48:18 -0000
+@@ -233,6 +233,9 @@ OfaMemoryOptionsPage::OfaMemoryOptionsPa
+ aQuickLaunchFL.Hide();
+ aQuickLaunchCB.Hide();
+ #endif
++#if defined(UNX)
++ aQuickLaunchCB.SetText( ResId( STR_QUICKLAUNCH_UNX ) );
++#endif
+
+ aTfGraphicObjectTime.SetExtFormat( EXTTIMEF_24H_SHORT );
+
+
+Index: svx/source/dialog/optmemory.hrc
+===================================================================
+RCS file: /cvs/graphics/svx/source/dialog/optmemory.hrc,v
+retrieving revision 1.4
+diff -u -p -u -r1.4 optmemory.hrc
+--- svx/source/dialog/optmemory.hrc 8 Sep 2005 21:47:30 -0000 1.4
++++ svx/source/dialog/optmemory.hrc 4 May 2006 10:48:18 -0000
+@@ -35,6 +35,7 @@
+ #ifndef _OFA_OPTMEMORY_HRC
+ #define _OFA_OPTMEMORY_HRC
+
++#include <dialogs.hrc>
+ #include <svtools/controldims.hrc>
+
+ // defines for positions and sizes ---------------------------------------
+@@ -88,6 +89,10 @@
+ #define NF_OLECACHE 25
+ #define FL_QUICKLAUNCH 26
+ #define CB_QUICKLAUNCH 27
++#define CB_QUICKLAUNCH_UNX 28
++
++// Yes - this is evil - but I'm not touching dialogs.hrc
++#define STR_QUICKLAUNCH_UNX (RID_SVX_CONTOUR_START + 8)
+
+ #endif // #ifndef _OFA_OPTMEMORY_HRC
+
+
+Index: svx/source/dialog/optmemory.src
+===================================================================
+RCS file: /cvs/graphics/svx/source/dialog/optmemory.src,v
+retrieving revision 1.6
+diff -u -p -u -r1.6 optmemory.src
+--- svx/source/dialog/optmemory.src 23 Sep 2005 13:45:16 -0000 1.6
++++ svx/source/dialog/optmemory.src 4 May 2006 10:48:18 -0000
+@@ -222,31 +222,16 @@ TabPage OFA_TP_MEMORY
+ };
+ };
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
++String STR_QUICKLAUNCH_UNX
++{
++ Text[ en-US ] = "enable systray quickstarter";
++ Text[ de ] = "Schnellstart des Systemabschnitts der Kontrollleiste aktivieren";
++ Text[ es ] = "habilitar Quickstarter en bandeja del sistema";
++ Text[ fr ] = "activer systray quickstarter";
++ Text[ it ] = "Abilita quickstarter systray";
++ Text[ ja ] = "systray quickstarterã®æœ‰åŠ¹åŒ–";
++ Text[ pt-BR ] = "habilitar quickstarter de systray";
++ Text[ zh-CN ] = "å¯ç”¨ç³»ç»Ÿç›˜å¿«é€Ÿå¯åŠ¨ç¨‹åº";
++ Text[ zh-TW ] = "啟用 systray quickstarter";
++ Text [ x-comment ] = " ";
++};
diff --git a/patches/src680/styles-dash.diff b/patches/src680/styles-dash.diff
new file mode 100644
index 000000000..c51ca9999
--- /dev/null
+++ b/patches/src680/styles-dash.diff
@@ -0,0 +1,273 @@
+Index: xmloff/source/draw/ximpstyl.cxx
+===================================================================
+RCS file: /cvs/xml/xmloff/source/draw/ximpstyl.cxx,v
+retrieving revision 1.46
+retrieving revision 1.46.100.1
+diff -u -p -r1.46 -r1.46.100.1
+--- xmloff/source/draw/ximpstyl.cxx 9 Sep 2005 14:02:13 -0000 1.46
++++ xmloff/source/draw/ximpstyl.cxx 3 Apr 2006 12:24:56 -0000 1.46.100.1
+@@ -208,8 +208,7 @@ SvXMLImportContext *SdXMLDrawingPageProp
+
+ if( (nPrefix == XML_NAMESPACE_XLINK) && IsXMLToken( aLocalName, XML_HREF ) )
+ {
+- uno::Any aAny;
+- aAny <<= GetImport().GetAbsoluteReference( xAttrList->getValueByIndex(i) );
++ uno::Any aAny( GetImport().GetAbsoluteReference( xAttrList->getValueByIndex(i) ) );
+ XMLPropertyState aPropState( rProp.mnIndex, aAny );
+ rProperties.push_back( aPropState );
+ }
+@@ -392,10 +391,7 @@ void SdXMLDrawingPageStyleContext::FillP
+ xInfo = rPropSet->getPropertySetInfo();
+ if ( xInfo->hasPropertyByName( rPropertyName ) )
+ {
+- Any aAny;
+- aAny <<= sStyleName;
+-
+- rPropSet->setPropertyValue( rPropertyName, aAny );
++ rPropSet->setPropertyValue( rPropertyName, Any( sStyleName ) );
+ }
+ }
+ }
+@@ -1336,10 +1332,7 @@ void SdXMLStylesContext::SetMasterPageSt
+
+ if(GetSdImport().GetLocalDocStyleFamilies().is() && GetSdImport().GetLocalDocStyleFamilies()->hasByName(rMaster.GetDisplayName()))
+ {
+- uno::Any aAny(GetSdImport().GetLocalDocStyleFamilies()->getByName(rMaster.GetDisplayName()));
+- uno::Reference< container::XNameAccess > xMasterPageStyles;
+- aAny >>= xMasterPageStyles;
+-
++ uno::Reference< container::XNameAccess > xMasterPageStyles( GetSdImport().GetLocalDocStyleFamilies()->getByName(rMaster.GetDisplayName()), UNO_QUERY );
+ if(xMasterPageStyles.is())
+ {
+ ImpSetGraphicStyles(xMasterPageStyles, XML_STYLE_FAMILY_SD_PRESENTATION_ID, sPrefix);
+@@ -1385,7 +1378,6 @@ void SdXMLStylesContext::ImpSetGraphicSt
+ const UniString& rPrefix) const
+ {
+ xub_StrLen nPrefLen(rPrefix.Len());
+- uno::Any aAny;
+
+ sal_uInt32 a;
+
+@@ -1408,88 +1400,85 @@ void SdXMLStylesContext::ImpSetGraphicSt
+ const SvXMLStyleContext* pStyle = GetStyle(a);
+ if(nFamily == pStyle->GetFamily() && !pStyle->IsDefaultStyle())
+ {
+- const UniString aStyleName(pStyle->GetDisplayName(), (sal_uInt16)pStyle->GetDisplayName().getLength());
+- sal_uInt16 nStylePrefLen = aStyleName.SearchBackward( sal_Unicode('-') ) + 1;
+-
+- if(!nPrefLen || ((nPrefLen == nStylePrefLen) && aStyleName.Equals(rPrefix, 0, nPrefLen)))
++ OUString aStyleName(pStyle->GetDisplayName());
++ if( nPrefLen )
+ {
+- uno::Reference< style::XStyle > xStyle;
+- const OUString aPureStyleName = nStylePrefLen ?
+- pStyle->GetDisplayName().copy((sal_Int32)nStylePrefLen) : pStyle->GetDisplayName();
+-
+- if(xPageStyles->hasByName(aPureStyleName))
+- {
+- aAny = xPageStyles->getByName(aPureStyleName);
+- aAny >>= xStyle;
++ sal_Int32 nStylePrefLen = aStyleName.lastIndexOf( sal_Unicode('-') ) + 1;
++ if( (nPrefLen != nStylePrefLen) || (aStyleName.compareTo( rPrefix, nPrefLen ) != 0) )
++ continue;
+
+- // set properties of existing styles to default
+- uno::Reference< beans::XPropertySet > xPropSet( xStyle, uno::UNO_QUERY );
+- uno::Reference< beans::XPropertySetInfo > xPropSetInfo;
+- if( xPropSet.is() )
+- xPropSetInfo = xPropSet->getPropertySetInfo();
++ aStyleName = aStyleName.copy( nPrefLen );
++ }
+
+- uno::Reference< beans::XPropertyState > xPropState( xStyle, uno::UNO_QUERY );
++ uno::Reference< style::XStyle > xStyle;
++ if(xPageStyles->hasByName(aStyleName))
++ {
++ xPageStyles->getByName(aStyleName) >>= xStyle;
+
+- if( xPropState.is() )
++ // set properties of existing styles to default
++ uno::Reference< beans::XPropertySet > xPropSet( xStyle, uno::UNO_QUERY );
++ uno::Reference< beans::XPropertySetInfo > xPropSetInfo;
++ if( xPropSet.is() )
++ xPropSetInfo = xPropSet->getPropertySetInfo();
++
++ uno::Reference< beans::XPropertyState > xPropState( xStyle, uno::UNO_QUERY );
++
++ if( xPropState.is() )
++ {
++ UniReference < XMLPropertySetMapper > xPrMap;
++ UniReference < SvXMLImportPropertyMapper > xImpPrMap = GetImportPropertyMapper( nFamily );
++ DBG_ASSERT( xImpPrMap.is(), "There is the import prop mapper" );
++ if( xImpPrMap.is() )
++ xPrMap = xImpPrMap->getPropertySetMapper();
++ if( xPrMap.is() )
+ {
+- UniReference < XMLPropertySetMapper > xPrMap;
+- UniReference < SvXMLImportPropertyMapper > xImpPrMap = GetImportPropertyMapper( nFamily );
+- DBG_ASSERT( xImpPrMap.is(), "There is the import prop mapper" );
+- if( xImpPrMap.is() )
+- xPrMap = xImpPrMap->getPropertySetMapper();
+- if( xPrMap.is() )
++ const sal_Int32 nCount = xPrMap->GetEntryCount();
++ for( sal_Int32 i = 0; i < nCount; i++ )
+ {
+- const sal_Int32 nCount = xPrMap->GetEntryCount();
+- for( sal_Int32 i = 0; i < nCount; i++ )
++ const OUString& rName = xPrMap->GetEntryAPIName( i );
++ if( xPropSetInfo->hasPropertyByName( rName ) && beans::PropertyState_DIRECT_VALUE == xPropState->getPropertyState( rName ) )
+ {
+- const OUString& rName = xPrMap->GetEntryAPIName( i );
+- if( xPropSetInfo->hasPropertyByName( rName ) && beans::PropertyState_DIRECT_VALUE == xPropState->getPropertyState( rName ) )
+- {
+- xPropState->setPropertyToDefault( rName );
+- }
++ xPropState->setPropertyToDefault( rName );
+ }
+ }
+ }
+ }
+- else
+- {
+- // graphics style does not exist, create and add it
+- uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetSdImport().GetModel(), uno::UNO_QUERY);
+- if(xServiceFact.is())
+- {
+- uno::Reference< style::XStyle > xNewStyle(
+- xServiceFact->createInstance(
+- OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.style.Style"))),
+- uno::UNO_QUERY);
++ }
++ else
++ {
++ // graphics style does not exist, create and add it
++ uno::Reference< lang::XMultiServiceFactory > xServiceFact(GetSdImport().GetModel(), uno::UNO_QUERY);
++ if(xServiceFact.is())
++ {
++ uno::Reference< style::XStyle > xNewStyle(
++ xServiceFact->createInstance(
++ OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.style.Style"))),
++ uno::UNO_QUERY);
+
+- if(xNewStyle.is())
+- {
+- // remember style
+- xStyle = xNewStyle;
++ if(xNewStyle.is())
++ {
++ // remember style
++ xStyle = xNewStyle;
+
+- // add new style to graphics style pool
+- uno::Reference< container::XNameContainer > xInsertContainer(xPageStyles, uno::UNO_QUERY);
+- if(xInsertContainer.is())
+- {
+- aAny <<= xStyle;
+- xInsertContainer->insertByName(aPureStyleName, aAny);
+- }
+- }
++ // add new style to graphics style pool
++ uno::Reference< container::XNameContainer > xInsertContainer(xPageStyles, uno::UNO_QUERY);
++ if(xInsertContainer.is())
++ xInsertContainer->insertByName(aStyleName, uno::Any( xStyle ) );
+ }
+ }
++ }
+
+- if(xStyle.is())
+- {
+- // set properties at style
+- XMLShapeStyleContext* pPropStyle =
+- (pStyle->ISA(XMLShapeStyleContext)) ? (XMLShapeStyleContext*)pStyle : 0L;
+- uno::Reference< beans::XPropertySet > xPropSet(xStyle, uno::UNO_QUERY);
++ if(xStyle.is())
++ {
++ // set properties at style
++ XMLShapeStyleContext* pPropStyle =
++ (pStyle->ISA(XMLShapeStyleContext)) ? (XMLShapeStyleContext*)pStyle : 0L;
++ uno::Reference< beans::XPropertySet > xPropSet(xStyle, uno::UNO_QUERY);
+
+- if(xPropSet.is() && pPropStyle)
+- {
+- pPropStyle->FillPropertySet(xPropSet);
+- pPropStyle->SetStyle(xStyle);
+- }
++ if(xPropSet.is() && pPropStyle)
++ {
++ pPropStyle->FillPropertySet(xPropSet);
++ pPropStyle->SetStyle(xStyle);
+ }
+ }
+ }
+@@ -1507,35 +1496,40 @@ void SdXMLStylesContext::ImpSetGraphicSt
+ {
+ const SvXMLStyleContext* pStyle = GetStyle(a);
+
+- if(pStyle && nFamily == pStyle->GetFamily())
++ if(pStyle && pStyle->GetName().getLength() && (nFamily == pStyle->GetFamily())) try
+ {
+- const UniString aStyleName(pStyle->GetDisplayName(), (sal_uInt16)pStyle->GetDisplayName().getLength());
+- sal_uInt16 nStylePrefLen = aStyleName.SearchBackward( sal_Unicode('-') ) + 1;
+-
+- if(pStyle->GetName().getLength() && (!nPrefLen || ((nPrefLen == nStylePrefLen) && aStyleName.Equals(rPrefix, 0, nPrefLen))))
++ OUString aStyleName(pStyle->GetDisplayName());
++ if( nPrefLen )
+ {
+- try
+- {
++ sal_Int32 nStylePrefLen = aStyleName.lastIndexOf( sal_Unicode('-') ) + 1;
++ if( (nPrefLen != nStylePrefLen) || (aStyleName.compareTo( rPrefix, nPrefLen ) != 0) )
++ continue;
+
+- uno::Reference< style::XStyle > xStyle;
+- const OUString aPureStyleName = nPrefLen ? pStyle->GetDisplayName().copy((sal_Int32)nPrefLen) : pStyle->GetDisplayName();
+- xPageStyles->getByName(aPureStyleName) >>= xStyle;
++ aStyleName = aStyleName.copy( nPrefLen );
++ }
+
+- if(xStyle.is())
+- {
+- // set parent style name
+- ::rtl::OUString sParentStyleDisplayName = const_cast< SvXMLImport& >( GetImport() ).GetStyleDisplayName( pStyle->GetFamily(), pStyle->GetParentName() );
+- xStyle->setParentStyle( sParentStyleDisplayName );
+- }
+- }
+- catch( Exception& e )
++ uno::Reference< style::XStyle > xStyle( xPageStyles->getByName(aStyleName), UNO_QUERY );
++ if(xStyle.is())
++ {
++ // set parent style name
++ ::rtl::OUString sParentStyleDisplayName( const_cast< SvXMLImport& >( GetImport() ).GetStyleDisplayName( pStyle->GetFamily(), pStyle->GetParentName() ) );
++ if( nPrefLen )
+ {
+- (void)e;
+- uno::Sequence<OUString> aSeq(0);
+- const_cast<SdXMLImport*>(&GetSdImport())->SetError( XMLERROR_FLAG_WARNING | XMLERROR_API, aSeq, e.Message, NULL );
++ sal_Int32 nStylePrefLen = sParentStyleDisplayName.lastIndexOf( sal_Unicode('-') ) + 1;
++ if( (nPrefLen != nStylePrefLen) || (sParentStyleDisplayName.compareTo( rPrefix, nPrefLen ) != 0) )
++ continue;
++
++ sParentStyleDisplayName = sParentStyleDisplayName.copy( nPrefLen );
+ }
++ xStyle->setParentStyle( sParentStyleDisplayName );
+ }
+ }
++ catch( Exception& e )
++ {
++ (void)e;
++ uno::Sequence<OUString> aSeq(0);
++ const_cast<SdXMLImport*>(&GetSdImport())->SetError( XMLERROR_FLAG_WARNING | XMLERROR_API, aSeq, e.Message, NULL );
++ }
+ }
+ }
+
+@@ -1603,8 +1597,7 @@ SvXMLImportContext* SdXMLMasterStylesCon
+ else
+ {
+ // existing page, use it
+- uno::Any aAny(xMasterPages->getByIndex(GetSdImport().GetNewMasterPageCount()));
+- aAny >>= xNewMasterPage;
++ xMasterPages->getByIndex(GetSdImport().GetNewMasterPageCount()) >>= xNewMasterPage;
+ }
+
+ // increment global import page counter
diff --git a/patches/src680/system-neon-0.26.diff b/patches/src680/system-neon-0.26.diff
new file mode 100644
index 000000000..ac2c72fb7
--- /dev/null
+++ b/patches/src680/system-neon-0.26.diff
@@ -0,0 +1,278 @@
+--- config_office/configure.in.orig 2006-04-26 22:44:35.000000000 +0200
++++ config_office/configure.in 2006-04-26 23:04:34.000000000 +0200
+@@ -3723,7 +3723,8 @@
+ test "$with_system_neon" != "no"; then
+ AC_MSG_RESULT([external])
+ PKG_CHECK_MODULES(NEON, neon >= 0.24.0)
+- PKG_CHECK_MODULES(NEON, neon < 0.26.0, , AC_MSG_ERROR([you need neon 0.24.x or 0.25.x for system-neon]))
++ PKG_CHECK_MODULES(NEON, neon < 0.27.0, , AC_MSG_ERROR([you need neon 0.24.x to 0.26.x for system-neon]))
++ NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
+ NEON_CFLAGS="$NEON_CFLAGS -DSYSTEM_NEON -DUSE_DAV_LOCKS=1"
+ SYSTEM_NEON=YES
+ else
+@@ -3731,9 +3732,11 @@
+ SYSTEM_NEON=NO
+ NEON_LIBS=-lneon
+ NEON_CFLAGS=
++ NEON_VERSION=0247
+ BUILD_TYPE="$BUILD_TYPE NEON"
+ fi
+ AC_SUBST(SYSTEM_NEON)
++AC_SUBST(NEON_VERSION)
+ AC_SUBST(NEON_LIBS)
+ AC_SUBST(NEON_CFLAGS)
+ fi
+--- config_office/set_soenv.in.orig 2006-04-26 22:52:38.000000000 +0200
++++ config_office/set_soenv.in 2006-04-26 22:53:15.000000000 +0200
+@@ -1804,6 +1804,7 @@
+ ToFile( "SYSTEM_SNDFILE", "@SYSTEM_SNDFILE@", "e" );
+ ToFile( "SYSTEM_PORTAUDIO", "@SYSTEM_PORTAUDIO@", "e" );
+ ToFile( "SYSTEM_NEON", "@SYSTEM_NEON@", "e" );
++ToFile( "NEON_VERSION", "@NEON_VERSION@", "e" );
+ ToFile( "NEON_LIBS", "@NEON_LIBS@", "e" );
+ ToFile( "NEON_CFLAGS", "@NEON_CFLAGS@", "e" );
+ ToFile( "DISABLE_NEON", "@DISABLE_NEON@", "e" );
+diff -Nur ucb.orig/source/ucp/webdav/LinkSequence.cxx ucb/source/ucp/webdav/LinkSequence.cxx
+--- ucb.orig/source/ucp/webdav/LinkSequence.cxx 2006-04-26 22:46:11.000000000 +0200
++++ ucb/source/ucp/webdav/LinkSequence.cxx 2006-04-26 23:00:53.000000000 +0200
+@@ -177,7 +177,7 @@
+ rInData.getStr() + nStart,
+ nEnd - nStart + TOKEN_LENGTH );
+
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ success = !ne_xml_failed( parser );
+ #else
+ success = !!ne_xml_valid( parser );
+diff -Nur ucb.orig/source/ucp/webdav/LockEntrySequence.cxx ucb/source/ucp/webdav/LockEntrySequence.cxx
+--- ucb.orig/source/ucp/webdav/LockEntrySequence.cxx 2006-04-26 22:46:11.000000000 +0200
++++ ucb/source/ucp/webdav/LockEntrySequence.cxx 2006-04-26 23:00:53.000000000 +0200
+@@ -202,7 +202,7 @@
+ rInData.getStr() + nStart,
+ nEnd - nStart + TOKEN_LENGTH );
+
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ success = !ne_xml_failed( parser );
+ #else
+ success = !!ne_xml_valid( parser );
+diff -Nur ucb.orig/source/ucp/webdav/LockSequence.cxx ucb/source/ucp/webdav/LockSequence.cxx
+--- ucb.orig/source/ucp/webdav/LockSequence.cxx 2006-04-26 22:46:11.000000000 +0200
++++ ucb/source/ucp/webdav/LockSequence.cxx 2006-04-26 23:00:53.000000000 +0200
+@@ -335,7 +335,7 @@
+ rInData.getStr() + nStart,
+ nEnd - nStart + TOKEN_LENGTH );
+
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ success = !ne_xml_failed( parser );
+ #else
+ success = !!ne_xml_valid( parser );
+diff -Nur ucb.orig/source/ucp/webdav/makefile.mk ucb/source/ucp/webdav/makefile.mk
+--- ucb.orig/source/ucp/webdav/makefile.mk 2006-04-26 22:46:11.000000000 +0200
++++ ucb/source/ucp/webdav/makefile.mk 2006-04-26 22:56:47.000000000 +0200
+@@ -61,12 +61,9 @@
+ CFLAGS+= $(LIBXML_CFLAGS)
+ .ENDIF
+
++CFLAGS+= -DNEON_VERSION=$(NEON_VERSION)
+ .IF "$(SYSTEM_NEON)" == "YES"
+ CFLAGS+= $(NEON_CFLAGS)
+-TWOFIVE:=$(shell pkg-config --atleast-version=0.25.0 neon && echo YES || echo NO)
+-.IF "$(TWOFIVE)" == "YES"
+-CFLAGS+=-DNEONTWOFIVE
+-.ENDIF
+ .ELSE
+ NEONINCDIR=external$/neon
+ CFLAGS+= -I$(SOLARINCDIR)$/$(NEONINCDIR)
+diff -Nur ucb.orig/source/ucp/webdav/NeonHeadRequest.cxx ucb/source/ucp/webdav/NeonHeadRequest.cxx
+--- ucb.orig/source/ucp/webdav/NeonHeadRequest.cxx 2006-04-26 22:46:11.000000000 +0200
++++ ucb/source/ucp/webdav/NeonHeadRequest.cxx 2006-04-26 23:00:53.000000000 +0200
+@@ -51,7 +51,7 @@
+ using namespace webdav_ucp;
+ using namespace com::sun::star;
+
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ static void process_headers(ne_request *req,
+ DAVResource &rResource,
+ const std::vector< ::rtl::OUString > &rHeaderNames)
+@@ -190,14 +190,14 @@
+ inPath,
+ RTL_TEXTENCODING_UTF8 ) );
+
+-#ifndef NEONTWOFIVE
++#if NEON_VERSION < 0250
+ NeonHeadRequestContext aCtx( &ioResource, &inHeaderNames );
+ ne_add_response_header_catcher( req, NHR_ResponseHeaderCatcher, &aCtx );
+ #endif
+
+ nError = ne_request_dispatch( req );
+
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ process_headers(req, ioResource, inHeaderNames);
+ #endif
+
+diff -Nur ucb.orig/source/ucp/webdav/NeonPropFindRequest.cxx ucb/source/ucp/webdav/NeonPropFindRequest.cxx
+--- ucb.orig/source/ucp/webdav/NeonPropFindRequest.cxx 2006-04-26 22:46:11.000000000 +0200
++++ ucb/source/ucp/webdav/NeonPropFindRequest.cxx 2006-04-26 23:08:37.000000000 +0200
+@@ -175,11 +175,19 @@
+
+ // -------------------------------------------------------------------
+ extern "C" void NPFR_propfind_results( void* userdata,
++#if NEON_VERSION >= 0260
++ const ne_uri* href_uri,
++#else
+ const char* href,
++#endif
+ const NeonPropFindResultSet* set )
+ {
+ // @@@ href is not the uri! DAVResource ctor wants uri!
+
++#if NEON_VERSION >= 0260
++ // href should be free'd? says header ...
++ char* href = ne_uri_unparse(href_uri);
++#endif
+ DAVResource theResource(
+ OStringToOUString( href, RTL_TEXTENCODING_UTF8 ) );
+
+@@ -209,11 +217,19 @@
+
+ // -------------------------------------------------------------------
+ extern "C" void NPFR_propnames_results( void* userdata,
++#if NEON_VERSION >= 0260
++ const ne_uri* href_uri,
++#else
+ const char* href,
++#endif
+ const NeonPropFindResultSet* results )
+ {
+ // @@@ href is not the uri! DAVResourceInfo ctor wants uri!
+
++#if NEON_VERSION >= 0260
++ // href should be free'd? says header ...
++ char* href = ne_uri_unparse(href_uri);
++#endif
+ // Create entry for the resource.
+ DAVResourceInfo theResource(
+ OStringToOUString( href, RTL_TEXTENCODING_UTF8 ) );
+diff -Nur ucb.orig/source/ucp/webdav/NeonSession.cxx ucb/source/ucp/webdav/NeonSession.cxx
+--- ucb.orig/source/ucp/webdav/NeonSession.cxx 2006-04-26 22:46:11.000000000 +0200
++++ ucb/source/ucp/webdav/NeonSession.cxx 2006-04-26 23:00:53.000000000 +0200
+@@ -221,7 +221,7 @@
+ // ResponseBlockReader
+ // A simple Neon response_block_reader for use with an XInputStream
+ // -------------------------------------------------------------------
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ extern "C" int NeonSession_ResponseBlockReader
+ #else
+ extern "C" void NeonSession_ResponseBlockReader
+@@ -244,7 +244,7 @@
+ xInputStream->AddToStream( inBuf, inLen );
+ }
+ }
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ return 0;
+ #endif
+ }
+@@ -253,7 +253,7 @@
+ // ResponseBlockWriter
+ // A simple Neon response_block_reader for use with an XOutputStream
+ // -------------------------------------------------------------------
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ extern "C" int NeonSession_ResponseBlockWriter
+ #else
+ extern "C" void NeonSession_ResponseBlockWriter
+@@ -273,7 +273,7 @@
+ xOutputStream->writeBytes( aSeq );
+ }
+ }
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ return 0;
+ #endif
+ }
+@@ -1538,7 +1538,7 @@
+ }
+ */
+
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ static void run_header_handler(ne_request *req, ne_header_handler handler, void *userdata)
+ {
+ void *cursor = NULL;
+@@ -1566,13 +1566,13 @@
+ //struct get_context ctx;
+ ne_request * req = ne_request_create( sess, "GET", uri );
+ int ret;
+-#ifndef NEONTWOFIVE
++#if NEON_VERSION < 0250
+ ne_add_response_header_catcher( req, handler, userdata );
+ #endif
+ ne_add_response_body_reader( req, ne_accept_2xx, reader, userdata );
+
+ ret = ne_request_dispatch( req );
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ run_header_handler(req, handler, userdata);
+ #endif
+
+diff -Nur ucb.orig/source/ucp/webdav/NeonSession.hxx ucb/source/ucp/webdav/NeonSession.hxx
+--- ucb.orig/source/ucp/webdav/NeonSession.hxx 2006-04-26 22:46:11.000000000 +0200
++++ ucb/source/ucp/webdav/NeonSession.hxx 2006-04-26 22:59:20.000000000 +0200
+@@ -49,7 +49,7 @@
+ #include "NeonTypes.hxx"
+ #endif
+
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ typedef void (*ne_header_handler)(void *userdata, const char *value);
+ #endif
+
+diff -Nur ucb.orig/source/ucp/webdav/NeonUri.cxx ucb/source/ucp/webdav/NeonUri.cxx
+--- ucb.orig/source/ucp/webdav/NeonUri.cxx 2006-04-26 22:46:11.000000000 +0200
++++ ucb/source/ucp/webdav/NeonUri.cxx 2006-04-26 23:08:37.000000000 +0200
+@@ -54,9 +54,15 @@
+
+ using namespace webdav_ucp;
+
++#if NEON_VERSION >= 0260
++ne_uri NeonUri::sUriDefaultsHTTP = { "http", NULL, NULL, DEFAULT_HTTP_PORT };
++ne_uri NeonUri::sUriDefaultsHTTPS = { "https", NULL, NULL, DEFAULT_HTTPS_PORT };
++ne_uri NeonUri::sUriDefaultsFTP = { "ftp", NULL, NULL, DEFAULT_FTP_PORT };
++#else
+ ne_uri NeonUri::sUriDefaultsHTTP = { "http", NULL, DEFAULT_HTTP_PORT, NULL };
+ ne_uri NeonUri::sUriDefaultsHTTPS = { "https", NULL, DEFAULT_HTTPS_PORT, NULL };
+ ne_uri NeonUri::sUriDefaultsFTP = { "ftp", NULL, DEFAULT_FTP_PORT, NULL };
++#endif
+
+ // -------------------------------------------------------------------
+ // Constructor
+@@ -132,7 +138,11 @@
+ pUri->scheme ? pUri->scheme : pUriDefs->scheme,
+ RTL_TEXTENCODING_UTF8 );
+ mUserInfo = rtl::OStringToOUString(
++#if NEON_VERSION >= 0260
++ pUri->userinfo ? pUri->userinfo : pUriDefs->userinfo,
++#else
+ pUri->authinfo ? pUri->authinfo : pUriDefs->authinfo,
++#endif
+ RTL_TEXTENCODING_UTF8 );
+ mHostName = rtl::OStringToOUString(
+ pUri->host ? pUri->host : pUriDefs->host,
+diff -Nur ucb.orig/source/ucp/webdav/UCBDeadPropertyValue.cxx ucb/source/ucp/webdav/UCBDeadPropertyValue.cxx
+--- ucb.orig/source/ucp/webdav/UCBDeadPropertyValue.cxx 2006-04-26 22:46:11.000000000 +0200
++++ ucb/source/ucp/webdav/UCBDeadPropertyValue.cxx 2006-04-26 23:00:53.000000000 +0200
+@@ -390,7 +390,7 @@
+
+ ne_xml_parse( parser, rInData.getStr(), rInData.getLength() );
+
+-#ifdef NEONTWOFIVE
++#if NEON_VERSION >= 0250
+ success = !ne_xml_failed( parser );
+ #else
+ success = !!ne_xml_valid( parser );
diff --git a/patches/src680/tools-smb-url.diff b/patches/src680/tools-smb-url.diff
new file mode 100644
index 000000000..2b948810d
--- /dev/null
+++ b/patches/src680/tools-smb-url.diff
@@ -0,0 +1,60 @@
+diff -rup tools.orig/inc/urlobj.hxx tools/inc/urlobj.hxx
+--- tools.orig/inc/urlobj.hxx 2006-05-18 09:47:10.000000000 +0200
++++ tools/inc/urlobj.hxx 2006-05-18 09:47:18.000000000 +0200
+@@ -105,6 +105,7 @@ namespace com { namespace sun { namespac
+ #define INET_DB_SCHEME "db:"
+ #define INET_BUGID_SCHEME "bugid:"
+ #define INET_TELNET_SCHEME "telnet://"
++#define INET_SAMBA_SCHEME "smb://"
+
+ #define URL_PREFIX_PRIV_SOFFICE "private:"
+ enum
+@@ -162,8 +163,9 @@ enum INetProtocol
+ INET_PROT_TELNET = 28,
+ INET_PROT_VND_SUN_STAR_EXPAND = 29,
+ INET_PROT_VND_SUN_STAR_TDOC = 30,
+- INET_PROT_GENERIC = 31,
+- INET_PROT_END = 32
++ INET_PROT_SAMBA = 31,
++ INET_PROT_GENERIC = 32,
++ INET_PROT_END = 33
+ };
+
+ //============================================================================
+diff -rup tools.orig/source/fsys/urlobj.cxx tools/source/fsys/urlobj.cxx
+--- tools.orig/source/fsys/urlobj.cxx 2006-05-18 09:47:10.000000000 +0200
++++ tools/source/fsys/urlobj.cxx 2006-05-18 09:47:18.000000000 +0200
+@@ -288,6 +288,8 @@ using namespace com::sun;
+ vnd-sun-star-tdoc-url = "VND.SUN.STAR.TDOC:/" segment *("/" segment)
+ segment = *pchar
+
++ ; private (http://ubiqx.org/cifs/Appendix-D.html)
++ samba-url = smb://[[[authdomain;]user@]host[:port][/share[/path][/name]]][?context]
+
+ ; private
+ unknown-url = scheme ":" 1*uric
+@@ -452,6 +454,8 @@ static INetURLObject::SchemeInfo const a
+ false, false, false, false, false },
+ { "vnd.sun.star.tdoc", "vnd.sun.star.tdoc:", 0, false, false, false,
+ false, false, false, true, false },
++ { "smb", "smb://", 139, true, true, false, true, true, true, true,
++ false },
+ { "", "", 0, false, false, false, false, false, false, false, false } };
+
+ // static
+@@ -2086,6 +2090,7 @@ INetURLObject::getPrefix(sal_Unicode con
+ INET_PROT_PRIV_SOFFICE, PrefixInfo::INTERNAL },
+ { "slot:", "staroffice.slot:", INET_PROT_SLOT,
+ PrefixInfo::INTERNAL },
++ { "smb:", 0, INET_PROT_SAMBA, PrefixInfo::OFFICIAL },
+ { "staroffice.component:", ".component:", INET_PROT_COMPONENT,
+ PrefixInfo::EXTERNAL },
+ { "staroffice.db:", "db:", INET_PROT_DB, PrefixInfo::EXTERNAL },
+@@ -2472,6 +2477,7 @@ bool INetURLObject::parsePath(INetProtoc
+ return false;
+
+ case INET_PROT_FTP:
++ case INET_PROT_SAMBA:
+ case INET_PROT_IMAP:
+ if (pPos < pEnd && *pPos != '/')
+ return false;
diff --git a/patches/src680/vcl-fontconfig-hints.diff b/patches/src680/vcl-fontconfig-hints.diff
new file mode 100644
index 000000000..a8628274c
--- /dev/null
+++ b/patches/src680/vcl-fontconfig-hints.diff
@@ -0,0 +1,618 @@
+Index: psprint/inc/psprint/fontmanager.hxx
+===================================================================
+RCS file: /cvs/gsl/psprint/inc/psprint/fontmanager.hxx,v
+retrieving revision 1.28
+retrieving revision 1.28.4.1
+diff -u -p -r1.28 -r1.28.4.1
+--- psprint/inc/psprint/fontmanager.hxx 19 Jan 2006 17:36:34 -0000 1.28
++++ psprint/inc/psprint/fontmanager.hxx 16 Feb 2006 13:23:58 -0000 1.28.4.1
+@@ -143,6 +143,15 @@ enum type {
+ };
+ }
+
++namespace fcstatus
++{
++enum type {
++ istrue,
++ isunset,
++ isfalse
++};
++}
++
+ /*
+ * the difference between FastPrintFontInfo and PrintFontInfo
+ * is that the information in FastPrintFontInfo can usually
+@@ -168,6 +177,8 @@ struct FastPrintFontInfo
+ weight::type m_eWeight;
+ pitch::type m_ePitch;
+ rtl_TextEncoding m_aEncoding;
++ fcstatus::type m_eEmbeddedbitmap;
++ fcstatus::type m_eAntialias;
+
+ FastPrintFontInfo() :
+ m_nID( 0 ),
+@@ -177,7 +188,9 @@ struct FastPrintFontInfo
+ m_eWidth( width::Unknown ),
+ m_eWeight( weight::Unknown ),
+ m_ePitch( pitch::Unknown ),
+- m_aEncoding( RTL_TEXTENCODING_DONTKNOW )
++ m_aEncoding( RTL_TEXTENCODING_DONTKNOW ),
++ m_eEmbeddedbitmap( fcstatus::isunset ),
++ m_eAntialias( fcstatus::isunset )
+ {}
+ };
+
+@@ -291,6 +304,10 @@ class PrintFontManager
+ int m_nYMax;
+ bool m_bHaveVerticalSubstitutedGlyphs;
+ bool m_bUserOverride;
++
++ fcstatus::type m_eEmbeddedbitmap;
++ fcstatus::type m_eAntialias;
++
+ std::map< sal_Unicode, sal_Int32 > m_aEncodingVector;
+ std::map< sal_Unicode, rtl::OString > m_aNonEncoded;
+
+cvs diff: Diffing psprint/prj
+cvs diff: Diffing psprint/source
+cvs diff: Diffing psprint/source/fontmanager
+Index: psprint/source/fontmanager/fontcache.cxx
+===================================================================
+RCS file: /cvs/gsl/psprint/source/fontmanager/fontcache.cxx,v
+retrieving revision 1.19
+retrieving revision 1.18.14.2
+diff -u -p -r1.19 -r1.18.14.2
+--- psprint/source/fontmanager/fontcache.cxx 9 Feb 2006 12:33:17 -0000 1.19
++++ psprint/source/fontmanager/fontcache.cxx 16 Feb 2006 13:23:32 -0000 1.18.14.2
+@@ -55,7 +55,7 @@
+ #endif
+
+ #define FONTCACHEFILE "/user/psprint/pspfontcache"
+-#define CACHE_MAGIC "PspFontCacheFile format 2"
++#define CACHE_MAGIC "PspFontCacheFile format 3"
+
+ using namespace std;
+ using namespace rtl;
+@@ -168,7 +168,7 @@ void FontCache::flush()
+ /*
+ * for each font entry write:
+ * name[;name[;name]]
+- * fontnr;PSName;italic;weight;width;pitch;encoding;ascend;descend;leading;vsubst;gxw;gxh;gyw;gyh;useroverrride[;{metricfile,typeflags}][;stylename]
++ * fontnr;PSName;italic;weight;width;pitch;encoding;ascend;descend;leading;vsubst;gxw;gxh;gyw;gyh;useroverrride;embed;antialias[;{metricfile,typeflags}][;stylename]
+ */
+ if( nEntrySize > 1 )
+ nSubEntry = static_cast<const PrintFontManager::TrueTypeFontFile*>(*it)->m_nCollectionEntry;
+@@ -219,6 +219,10 @@ void FontCache::flush()
+ aLine.Append( ByteString::CreateFromInt32( (*it)->m_aGlobalMetricY.height ) );
+ aLine.Append( ';' );
+ aLine.Append( (*it)->m_bUserOverride ? "1" : "0" );
++ aLine.Append( ';' );
++ aLine.Append( ByteString::CreateFromInt32( (*it)->m_eEmbeddedbitmap ) );
++ aLine.Append( ';' );
++ aLine.Append( ByteString::CreateFromInt32( (*it)->m_eAntialias ) );
+
+ switch( (*it)->m_eType )
+ {
+@@ -387,8 +391,8 @@ void FontCache::read()
+ pLine = aLine.GetBuffer();
+ nLen = aLine.Len();
+
+- // get up to 18 token positions
+- const int nMaxTokens = 18;
++ // get up to 20 token positions
++ const int nMaxTokens = 20;
+ int nTokenPos[nMaxTokens];
+ nTokenPos[0] = 0;
+ int nTokens = 1;
+@@ -401,7 +405,7 @@ void FontCache::read()
+ break;
+ }
+ }
+- if( nTokens < 16 )
++ if( nTokens < 18 )
+ {
+ delete pFont;
+ continue;
+@@ -428,11 +432,14 @@ void FontCache::read()
+ = atoi( pLine + nTokenPos[14] );
+ pFont->m_bUserOverride
+ = (atoi( pLine + nTokenPos[15] ) != 0);
+- int nStyleTokenNr = 16;
++ pFont->m_eEmbeddedbitmap
++ = (fcstatus::type)atoi(pLine+nTokenPos[16]);
++ pFont->m_eAntialias = (fcstatus::type)atoi(pLine+nTokenPos[17]);
++ int nStyleTokenNr = 18;
+ switch( eType )
+ {
+ case fonttype::TrueType:
+- static_cast<PrintFontManager::TrueTypeFontFile*>(pFont)->m_nTypeFlags = atoi( pLine + nTokenPos[16] );
++ static_cast<PrintFontManager::TrueTypeFontFile*>(pFont)->m_nTypeFlags = atoi( pLine + nTokenPos[18] );
+ static_cast<PrintFontManager::TrueTypeFontFile*>(pFont)->m_nCollectionEntry = nCollEntry;
+ static_cast<PrintFontManager::TrueTypeFontFile*>(pFont)->m_nDirectory = nDir;
+ static_cast<PrintFontManager::TrueTypeFontFile*>(pFont)->m_aFontFile = aFile;
+@@ -440,7 +447,7 @@ void FontCache::read()
+ break;
+ case fonttype::Type1:
+ {
+- int nTokLen = (nTokens > 17 ) ? nTokenPos[17]-nTokenPos[16]-1 : nLen - nTokenPos[16];
++ int nTokLen = (nTokens > 19 ) ? nTokenPos[19]-nTokenPos[18]-1 : nLen - nTokenPos[18];
+ static_cast<PrintFontManager::Type1FontFile*>(pFont)->m_aMetricFile = OString( pLine + nTokenPos[16], nTokLen );
+ static_cast<PrintFontManager::Type1FontFile*>(pFont)->m_nDirectory = nDir;
+ static_cast<PrintFontManager::Type1FontFile*>(pFont)->m_aFontFile = aFile;
+@@ -557,6 +564,8 @@ void FontCache::copyPrintFont( const Pri
+ pTo->m_nYMax = pFrom->m_nYMax;
+ pTo->m_bHaveVerticalSubstitutedGlyphs = pFrom->m_bHaveVerticalSubstitutedGlyphs;
+ pTo->m_bUserOverride = pFrom->m_bUserOverride;
++ pTo->m_eEmbeddedbitmap = pFrom->m_eEmbeddedbitmap;
++ pTo->m_eAntialias = pFrom->m_eAntialias;
+ }
+
+ /*
+@@ -618,7 +627,9 @@ bool FontCache::equalsPrintFont( const P
+ pRight->m_nXMax != pLeft->m_nXMax ||
+ pRight->m_nYMax != pLeft->m_nYMax ||
+ pRight->m_bHaveVerticalSubstitutedGlyphs != pLeft->m_bHaveVerticalSubstitutedGlyphs ||
+- pRight->m_bUserOverride != pLeft->m_bUserOverride
++ pRight->m_bUserOverride != pLeft->m_bUserOverride ||
++ pRight->m_eEmbeddedbitmap != pLeft->m_eEmbeddedbitmap ||
++ pRight->m_eAntialias != pLeft->m_eAntialias
+ )
+ return false;
+ std::list< int >::const_iterator lit, rit;
+Index: psprint/source/fontmanager/fontconfig.cxx
+===================================================================
+RCS file: /cvs/gsl/psprint/source/fontmanager/fontconfig.cxx,v
+retrieving revision 1.16
+retrieving revision 1.16.2.1
+diff -u -p -r1.16 -r1.16.2.1
+--- psprint/source/fontmanager/fontconfig.cxx 25 Jan 2006 11:35:42 -0000 1.16
++++ psprint/source/fontmanager/fontconfig.cxx 16 Feb 2006 13:23:32 -0000 1.16.2.1
+@@ -97,6 +97,7 @@ class FontCfgWrapper
+ FcResult (*m_pFcPatternGetBool)(const FcPattern*,const char*,int,FcBool*);
+ void (*m_pFcDefaultSubstitute)(FcPattern *);
+ FcPattern* (*m_pFcFontMatch)(FcConfig*,FcPattern*,FcResult*);
++ FcPattern* (*m_pFcFontSetMatch)(FcConfig*,FcFontSet**, int, FcPattern*,FcResult*);
+ FcBool (*m_pFcConfigSubstitute)(FcConfig*,FcPattern*,FcMatchKind);
+ FcBool (*m_pFcPatternAddInteger)(FcPattern*,const char*,int);
+ FcBool (*m_pFcPatternAddString)(FcPattern*,const char*,const FcChar8*);
+@@ -166,6 +167,8 @@ public:
+ { m_pFcDefaultSubstitute( pPattern ); }
+ FcPattern* FcFontMatch( FcConfig* pConfig, FcPattern* pPattern, FcResult* pResult )
+ { return m_pFcFontMatch( pConfig, pPattern, pResult ); }
++ FcPattern* FcFontSetMatch( FcConfig* pConfig, FcFontSet **ppFontSet, int nset, FcPattern* pPattern, FcResult* pResult )
++ { return m_pFcFontSetMatch ? m_pFcFontSetMatch( pConfig, ppFontSet, nset, pPattern, pResult ) : 0; }
+ FcBool FcConfigSubstitute( FcConfig* pConfig, FcPattern* pPattern, FcMatchKind eKind )
+ { return m_pFcConfigSubstitute( pConfig, pPattern, eKind ); }
+ FcBool FcPatternAddInteger( FcPattern* pPattern, const char* pObject, int nValue )
+@@ -238,6 +241,8 @@ FontCfgWrapper::FontCfgWrapper()
+ loadSymbol( "FcDefaultSubstitute" );
+ m_pFcFontMatch = (FcPattern*(*)(FcConfig*,FcPattern*,FcResult*))
+ loadSymbol( "FcFontMatch" );
++ m_pFcFontSetMatch = (FcPattern*(*)(FcConfig*,FcFontSet**,int,FcPattern*,FcResult*))
++ loadSymbol( "FcFontSetMatch" );
+ m_pFcConfigSubstitute = (FcBool(*)(FcConfig*,FcPattern*,FcMatchKind))
+ loadSymbol( "FcConfigSubstitute" );
+ m_pFcPatternAddInteger = (FcBool(*)(FcPattern*,const char*,int))
+@@ -307,6 +312,10 @@ void FontCfgWrapper::release()
+ }
+ }
+
++#ifndef FC_EMBEDDED_BITMAP
++#define FC_EMBEDDED_BITMAP "embeddedbitmap"
++#endif
++
+ /*
+ * PrintFontManager::initFontconfig
+ */
+@@ -346,7 +355,7 @@ bool PrintFontManager::initFontconfig()
+ int weight = 0;
+ int spacing = 0;
+ int nCollectionEntry = -1;
+- FcBool outline = false;
++ FcBool outline = false, embitmap = true, antialias = true;
+
+ FcResult eFileRes = rWrapper.FcPatternGetString( pFSet->fonts[i], FC_FILE, 0, &file );
+ FcResult eFamilyRes = rWrapper.FcPatternGetString( pFSet->fonts[i], FC_FAMILY, 0, &family );
+@@ -356,6 +365,24 @@ bool PrintFontManager::initFontconfig()
+ FcResult eSpacRes = rWrapper.FcPatternGetInteger( pFSet->fonts[i], FC_SPACING, 0, &spacing );
+ FcResult eOutRes = rWrapper.FcPatternGetBool( pFSet->fonts[i], FC_OUTLINE, 0, &outline );
+ FcResult eIndexRes = rWrapper.FcPatternGetInteger( pFSet->fonts[i], FC_INDEX, 0, &nCollectionEntry );
++
++ FcResult eEmbeddedBitmap = FcResultNoMatch;
++ FcResult eAntialias = FcResultNoMatch;
++
++ if (eFamilyRes == FcResultMatch)
++ {
++ FcPattern *pMatch = rWrapper.FcPatternCreate();
++ rWrapper.FcPatternAddString(pMatch, FC_FAMILY, family);
++ rWrapper.FcConfigSubstitute( NULL, pMatch, FcMatchPattern );
++ FcResult eResult;
++ if (FcPattern* pResult = rWrapper.FcFontSetMatch( NULL, &pFSet, 1, pMatch, &eResult ))
++ {
++ eEmbeddedBitmap = rWrapper.FcPatternGetBool( pResult, FC_EMBEDDED_BITMAP, 0, &embitmap );
++ eAntialias = rWrapper.FcPatternGetBool( pResult, FC_ANTIALIAS, 0, &antialias );
++ rWrapper.FcPatternDestroy(pResult);
++ }
++ rWrapper.FcPatternDestroy(pMatch);
++ }
+
+ if( eFileRes != FcResultMatch || eFamilyRes != FcResultMatch || eOutRes != FcResultMatch )
+ continue;
+@@ -491,6 +518,15 @@ bool PrintFontManager::initFontconfig()
+ {
+ pUpdate->m_aStyleName = OStringToOUString( OString( (sal_Char*)style ), RTL_TEXTENCODING_UTF8 );
+ }
++ if( eEmbeddedBitmap == FcResultMatch )
++ {
++ pUpdate->m_eEmbeddedbitmap = embitmap ? fcstatus::istrue : fcstatus::isfalse;
++ }
++ if( eAntialias == FcResultMatch )
++ {
++ pUpdate->m_eAntialias = antialias ? fcstatus::istrue : fcstatus::isfalse;
++ }
++
+
+ // update font cache
+ m_pFontCache->updateFontCacheEntry( pUpdate, false );
+Index: psprint/source/fontmanager/fontmanager.cxx
+===================================================================
+RCS file: /cvs/gsl/psprint/source/fontmanager/fontmanager.cxx,v
+retrieving revision 1.64
+retrieving revision 1.64.6.1
+diff -u -p -r1.64 -r1.64.6.1
+--- psprint/source/fontmanager/fontmanager.cxx 16 Jan 2006 12:54:13 -0000 1.64
++++ psprint/source/fontmanager/fontmanager.cxx 16 Feb 2006 13:23:33 -0000 1.64.6.1
+@@ -379,7 +379,9 @@ PrintFontManager::PrintFont::PrintFont(
+ m_nXMax( 0 ),
+ m_nYMax( 0 ),
+ m_bHaveVerticalSubstitutedGlyphs( false ),
+- m_bUserOverride( false )
++ m_bUserOverride( false ),
++ m_eEmbeddedbitmap( fcstatus::isunset ),
++ m_eAntialias( fcstatus::isunset )
+ {
+ }
+
+@@ -2591,6 +2593,8 @@ void PrintFontManager::fillPrintFontInfo
+ rInfo.m_eWeight = pFont->m_eWeight;
+ rInfo.m_ePitch = pFont->m_ePitch;
+ rInfo.m_aEncoding = pFont->m_aEncoding;
++ rInfo.m_eEmbeddedbitmap = pFont->m_eEmbeddedbitmap;
++ rInfo.m_eAntialias = pFont->m_eAntialias;
+ rInfo.m_aAliases.clear();
+ for( ::std::list< int >::iterator it = pFont->m_aAliases.begin(); it != pFont->m_aAliases.end(); ++it )
+ rInfo.m_aAliases.push_back( m_pAtoms->getString( ATOM_FAMILYNAME, *it ) );
+Index: vcl/inc/outfont.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/outfont.hxx,v
+retrieving revision 1.19
+retrieving revision 1.19.108.1
+diff -u -p -r1.19 -r1.19.108.1
+--- vcl/inc/outfont.hxx 17 Oct 2005 14:49:15 -0000 1.19
++++ vcl/inc/outfont.hxx 16 Feb 2006 13:28:40 -0000 1.19.108.1
+@@ -112,20 +112,24 @@ public: // TODO: hide members behind acc
+ class ImplDevFontAttributes : public ImplFontAttributes
+ {
+ public: // TODO: create matching interface class
+- const String& GetAliasNames() const { return maMapNames; }
+- int GetQuality() const { return mnQuality; }
+- bool IsRotatable() const { return mbOrientation; }
+- bool IsDeviceFont() const { return mbDevice; }
+- bool IsEmbeddable() const { return mbEmbeddable; }
+- bool IsSubsettable() const { return mbSubsettable; }
++ const String& GetAliasNames() const { return maMapNames; }
++ int GetQuality() const { return mnQuality; }
++ bool IsRotatable() const { return mbOrientation; }
++ bool IsDeviceFont() const { return mbDevice; }
++ bool IsEmbeddable() const { return mbEmbeddable; }
++ bool IsSubsettable() const { return mbSubsettable; }
++ FontEmbeddedBitmap UseEmbeddedBitmap() const { return meEmbeddedBitmap; }
++ FontAntiAlias UseAntiAlias() const { return meAntiAlias; }
+
+ public: // TODO: hide members behind accessor methods
+- String maMapNames; // List of family name aliass separated with ';'
+- int mnQuality; // Quality (used when similar fonts compete)
+- bool mbOrientation; // true: physical font can be rotated
+- bool mbDevice; // true: built in font
+- bool mbSubsettable; // true: a subset of the font can be created
+- bool mbEmbeddable; // true: the font can be embedded
++ String maMapNames; // List of family name aliass separated with ';'
++ int mnQuality; // Quality (used when similar fonts compete)
++ bool mbOrientation; // true: physical font can be rotated
++ bool mbDevice; // true: built in font
++ bool mbSubsettable; // true: a subset of the font can be created
++ bool mbEmbeddable; // true: the font can be embedded
++ FontEmbeddedBitmap meEmbeddedBitmap; // whether the embedded bitmaps should be used
++ FontAntiAlias meAntiAlias; // whether the font should be antialiased
+ };
+
+ // ----------------
+Index: vcl/inc/vclenum.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/vclenum.hxx,v
+retrieving revision 1.6
+retrieving revision 1.6.156.1
+diff -u -p -r1.6 -r1.6.156.1
+--- vcl/inc/vclenum.hxx 9 Sep 2005 11:34:53 -0000 1.6
++++ vcl/inc/vclenum.hxx 16 Feb 2006 13:28:41 -0000 1.6.156.1
+@@ -275,6 +275,20 @@ enum FontType { TYPE_DONTKNOW, TYPE_RAST
+
+ #endif
+
++#ifndef ENUM_FONTEMBEDDEDBITMAP_DECLARED
++#define ENUM_FONTEMBEDDEDBITMAP_DECLARED
++
++enum FontEmbeddedBitmap { EMBEDDEDBITMAP_DONTKNOW, EMBEDDEDBITMAP_FALSE, EMBEDDEDBITMAP_TRUE };
++
++#endif
++
++#ifndef ENUM_FONTANTIALIAS_DECLARED
++#define ENUM_FONTANTIALIAS_DECLARED
++
++enum FontAntiAlias { ANTIALIAS_DONTKNOW, ANTIALIAS_FALSE, ANTIALIAS_TRUE };
++
++#endif
++
+ // ------------------------------------------------------------
+
+ #ifndef ENUM_KEYFUNCTYPE_DECLARED
+
+
+Index: vcl/source/glyphs/gcach_ftyp.cxx
+===================================================================
+RCS file: /cvs/gsl/vcl/source/glyphs/gcach_ftyp.cxx,v
+retrieving revision 1.119
+retrieving revision 1.119.26.1
+diff -u -p -r1.119 -r1.119.26.1
+--- vcl/source/glyphs/gcach_ftyp.cxx 25 Jan 2006 11:39:36 -0000 1.119
++++ vcl/source/glyphs/gcach_ftyp.cxx 16 Feb 2006 13:28:41 -0000 1.119.26.1
+@@ -153,9 +153,9 @@ namespace { struct vclFontFileList : pub
+ // if (AA prio <= AH prio) => antialias + autohint
+ // if (AH<AA) => do not autohint when antialiasing
+ // if (EB<AH) => do not autohint for monochrome
+-static int nPrioEmbedded = 2;
+-static int nPrioAutoHint = 1;
+-static int nPrioAntiAlias = 1;
++static int nDefaultPrioEmbedded = 2;
++static int nDefaultPrioAutoHint = 1;
++static int nDefaultPrioAntiAlias = 1;
+
+ // =======================================================================
+ // FreetypeManager
+@@ -470,7 +470,7 @@ FreetypeManager::FreetypeManager()
+ // requested by env var below because it crashes StarOffice on RH9
+ // TODO: investigate
+ if( nFTVERSION == 2103 )
+- nPrioEmbedded = 0;
++ nDefaultPrioEmbedded = 0;
+
+ #else // RTLD_DEFAULT
+ // assume systems where dlsym is not possible use supplied library
+@@ -481,13 +481,13 @@ FreetypeManager::FreetypeManager()
+ char* pEnv;
+ pEnv = ::getenv( "SAL_EMBEDDED_BITMAP_PRIORITY" );
+ if( pEnv )
+- nPrioEmbedded = pEnv[0] - '0';
++ nDefaultPrioEmbedded = pEnv[0] - '0';
+ pEnv = ::getenv( "SAL_ANTIALIASED_TEXT_PRIORITY" );
+ if( pEnv )
+- nPrioAntiAlias = pEnv[0] - '0';
++ nDefaultPrioAntiAlias = pEnv[0] - '0';
+ pEnv = ::getenv( "SAL_AUTOHINTING_PRIORITY" );
+ if( pEnv )
+- nPrioAutoHint = pEnv[0] - '0';
++ nDefaultPrioAutoHint = pEnv[0] - '0';
+
+ InitGammaTable();
+ }
+@@ -593,6 +593,9 @@ long FreetypeManager::AddFontDir( const
+ aDFA.mbSubsettable= false;
+ aDFA.mbEmbeddable = false;
+
++ aDFA.meEmbeddedBitmap = EMBEDDEDBITMAP_DONTKNOW;
++ aDFA.meAntiAlias = ANTIALIAS_DONTKNOW;
++
+ FT_Done_Face( aFaceFT );
+ AddFontFile( aCFileName, nFaceNum, ++mnNextFontId, aDFA, NULL );
+ ++nCount;
+@@ -687,6 +690,7 @@ ImplFontEntry* ImplFTSFontData::CreateFo
+
+ FreetypeServerFont::FreetypeServerFont( const ImplFontSelectData& rFSD, FtFontInfo* pFI )
+ : ServerFont( rFSD ),
++ mnPrioEmbedded(nDefaultPrioEmbedded), mnPrioAntiAlias(nDefaultPrioAntiAlias),
+ mpFontInfo( pFI ),
+ maFaceFT( NULL ),
+ maSizeFT( NULL ),
+@@ -831,8 +835,13 @@ FreetypeServerFont::FreetypeServerFont(
+ mnLoadFlags |= FT_LOAD_NO_HINTING;
+ mnLoadFlags |= FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH; //#88334#
+
++ if (mpFontInfo->DontUseAntiAlias())
++ mnPrioAntiAlias = 0;
++ if (mpFontInfo->DontUseEmbeddedBitmaps())
++ mnPrioEmbedded = 0;
++
+ #if (FTVERSION >= 2005) || defined(TT_CONFIG_OPTION_BYTECODE_INTERPRETER)
+- if( nPrioAutoHint <= 0 )
++ if( nDefaultPrioAutoHint <= 0 )
+ #endif
+ mnLoadFlags |= FT_LOAD_NO_HINTING;
+
+@@ -842,7 +851,7 @@ FreetypeServerFont::FreetypeServerFont(
+ mnLoadFlags |= FT_LOAD_TARGET_LIGHT;
+ #endif
+
+- if( ((mnCos != 0) && (mnSin != 0)) || (nPrioEmbedded <= 0) )
++ if( ((mnCos != 0) && (mnSin != 0)) || (mnPrioEmbedded <= 0) )
+ mnLoadFlags |= FT_LOAD_NO_BITMAP;
+ }
+
+@@ -1273,7 +1282,7 @@ void FreetypeServerFont::InitGlyphData(
+
+ bool FreetypeServerFont::GetAntialiasAdvice( void ) const
+ {
+- if( GetFontSelData().mbNonAntialiased || (nPrioAntiAlias<=0) )
++ if( GetFontSelData().mbNonAntialiased || (mnPrioAntiAlias<=0) )
+ return false;
+ bool bAdviseAA = true;
+ // TODO: also use GASP info
+@@ -1298,11 +1307,11 @@ bool FreetypeServerFont::GetGlyphBitmap1
+ #if (FTVERSION >= 2002)
+ // for 0/90/180/270 degree fonts enable autohinting even if not advisable
+ // non-hinted and non-antialiased bitmaps just look too ugly
+- if( (mnCos==0 || mnSin==0) && (nPrioAutoHint > 0) )
++ if( (mnCos==0 || mnSin==0) && (nDefaultPrioAutoHint > 0) )
+ nLoadFlags &= ~FT_LOAD_NO_HINTING;
+ #endif
+
+- if( nPrioEmbedded <= nPrioAutoHint )
++ if( mnPrioEmbedded <= nDefaultPrioAutoHint )
+ nLoadFlags |= FT_LOAD_NO_BITMAP;
+
+ FT_Error rc = -1;
+@@ -1449,11 +1458,11 @@ bool FreetypeServerFont::GetGlyphBitmap8
+ // autohinting in FT<=2.0.4 makes antialiased glyphs look worse
+ nLoadFlags |= FT_LOAD_NO_HINTING;
+ #else
+- if( (nGlyphFlags & GF_UNHINTED) || (nPrioAutoHint < nPrioAntiAlias) )
++ if( (nGlyphFlags & GF_UNHINTED) || (nDefaultPrioAutoHint < mnPrioAntiAlias) )
+ nLoadFlags |= FT_LOAD_NO_HINTING;
+ #endif
+
+- if( nPrioEmbedded <= nPrioAntiAlias )
++ if( mnPrioEmbedded <= mnPrioAntiAlias )
+ nLoadFlags |= FT_LOAD_NO_BITMAP;
+
+ FT_Error rc = -1;
+Index: vcl/source/glyphs/gcach_ftyp.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/source/glyphs/gcach_ftyp.hxx,v
+retrieving revision 1.33
+retrieving revision 1.33.38.1
+diff -u -p -r1.33 -r1.33.38.1
+--- vcl/source/glyphs/gcach_ftyp.hxx 14 Dec 2005 09:12:02 -0000 1.33
++++ vcl/source/glyphs/gcach_ftyp.hxx 16 Feb 2006 13:28:42 -0000 1.33.38.1
+@@ -93,7 +93,10 @@ public:
+ int GetFaceNum() const { return mnFaceNum; }
+ int GetSynthetic() const { return mnSynthetic; }
+ int GetFontId() const { return mnFontId; }
+-
++ bool DontUseAntiAlias() const
++ { return maDevFontAttributes.UseAntiAlias() == ANTIALIAS_FALSE; }
++ bool DontUseEmbeddedBitmaps() const
++ { return maDevFontAttributes.UseEmbeddedBitmap() == EMBEDDEDBITMAP_FALSE; }
+ bool IsSymbolFont() const { return maDevFontAttributes.IsSymbolFont(); }
+ const ImplFontAttributes& GetFontAttributes() const { return maDevFontAttributes; }
+
+@@ -207,6 +210,8 @@ protected:
+
+ private:
+ int mnWidth;
++ int mnPrioEmbedded;
++ int mnPrioAntiAlias;
+ FtFontInfo* mpFontInfo;
+ FT_Int mnLoadFlags;
+ double mfStretch;
+
+Index: vcl/unx/source/gdi/pspgraphics.cxx
+===================================================================
+RCS file: /cvs/gsl/vcl/unx/source/gdi/pspgraphics.cxx,v
+retrieving revision 1.13
+retrieving revision 1.13.88.1
+diff -u -p -r1.13 -r1.13.88.1
+--- vcl/unx/source/gdi/pspgraphics.cxx 2 Nov 2005 13:34:27 -0000 1.13
++++ vcl/unx/source/gdi/pspgraphics.cxx 16 Feb 2006 13:28:43 -0000 1.13.88.1
+@@ -1226,6 +1226,32 @@ ImplDevFontAttributes PspGraphics::Info2
+ aDFA.mePitch = ToFontPitch (rInfo.m_ePitch);
+ aDFA.mbSymbolFlag = (rInfo.m_aEncoding == RTL_TEXTENCODING_SYMBOL);
+
++ switch (rInfo.m_eEmbeddedbitmap)
++ {
++ default:
++ aDFA.meEmbeddedBitmap = EMBEDDEDBITMAP_DONTKNOW;
++ break;
++ case psp::fcstatus::istrue:
++ aDFA.meEmbeddedBitmap = EMBEDDEDBITMAP_TRUE;
++ break;
++ case psp::fcstatus::isfalse:
++ aDFA.meEmbeddedBitmap = EMBEDDEDBITMAP_FALSE;
++ break;
++ }
++
++ switch (rInfo.m_eAntialias)
++ {
++ default:
++ aDFA.meAntiAlias = ANTIALIAS_DONTKNOW;
++ break;
++ case psp::fcstatus::istrue:
++ aDFA.meAntiAlias = ANTIALIAS_TRUE;
++ break;
++ case psp::fcstatus::isfalse:
++ aDFA.meAntiAlias = ANTIALIAS_FALSE;
++ break;
++ }
++
+ // special case for the ghostscript fonts
+ if( aDFA.maName.CompareIgnoreCaseToAscii( "itc ", 4 ) == COMPARE_EQUAL )
+ aDFA.maName = aDFA.maName.Copy( 4 );
+
+
+
+Index: vcl/unx/source/gdi/xlfd_extd.cxx
+===================================================================
+RCS file: /cvs/gsl/vcl/unx/source/gdi/xlfd_extd.cxx,v
+retrieving revision 1.25
+retrieving revision 1.25.90.1
+diff -u -p -r1.25 -r1.25.90.1
+--- vcl/unx/source/gdi/xlfd_extd.cxx 1 Nov 2005 10:40:06 -0000 1.25
++++ vcl/unx/source/gdi/xlfd_extd.cxx 16 Feb 2006 13:28:44 -0000 1.25.90.1
+@@ -113,6 +113,10 @@ ExtendedXlfd::ExtendedXlfd( bool bScalab
+ mbDevice = false;
+ mbSubsettable = false;
+ mbEmbeddable = false;
++
++ meEmbeddedBitmap = EMBEDDEDBITMAP_DONTKNOW;
++ meAntiAlias = ANTIALIAS_DONTKNOW;
++
+ mnQuality = -1;
+ }
+
+Index: vcl/win/source/gdi/salgdi3.cxx
+===================================================================
+RCS file: /cvs/gsl/vcl/win/source/gdi/salgdi3.cxx,v
+retrieving revision 1.75
+retrieving revision 1.75.10.1
+diff -u -p -r1.75 -r1.75.10.1
+--- vcl/win/source/gdi/salgdi3.cxx 27 Jan 2006 13:50:33 -0000 1.75
++++ vcl/win/source/gdi/salgdi3.cxx 16 Feb 2006 13:28:45 -0000 1.75.10.1
+@@ -407,7 +407,10 @@ static ImplDevFontAttributes WinFont2Dev
+ || aDFA.maName.EqualsAscii( "ZapfChancery" )
+ || aDFA.maName.EqualsAscii( "ZapfDingbats" ) )
+ aDFA.mnQuality += 500;
+- }
++ }
++
++ aDFA.meEmbeddedBitmap = EMBEDDEDBITMAP_DONTKNOW;
++ aDFA.meAntiAlias = ANTIALIAS_DONTKNOW;
+
+ // TODO: add alias names
+
+@@ -488,6 +491,9 @@ static ImplDevFontAttributes WinFont2Dev
+ aDFA.mnQuality += 500;
+ }
+
++ aDFA.meEmbeddedBitmap = EMBEDDEDBITMAP_DONTKNOW;
++ aDFA.meAntiAlias = ANTIALIAS_DONTKNOW;
++
+ // TODO: add alias names
+ return aDFA;
+ }
+@@ -1870,6 +1876,8 @@ bool WinSalGraphics::AddTempDevFont( Imp
+ aDFA.mePitch = PITCH_DONTKNOW;;
+ aDFA.mbSubsettable= false;
+ aDFA.mbEmbeddable = false;
++ aDFA.meEmbeddedBitmap = EMBEDDEDBITMAP_DONTKNOW;
++ aDFA.meAntiAlias = ANTIALIAS_DONTKNOW;
+
+ /*
+ // TODO: improve ImplDevFontAttributes using "FONTRES:" from *.fot file
diff --git a/patches/src680/vcl-glyphs-cjk-embolden.diff b/patches/src680/vcl-glyphs-cjk-embolden.diff
new file mode 100644
index 000000000..f1cafdfaa
--- /dev/null
+++ b/patches/src680/vcl-glyphs-cjk-embolden.diff
@@ -0,0 +1,229 @@
+--- vcl/source/glyphs/gcach_ftyp.hxx.m169 2006-04-19 21:56:08.000000000 +0800
++++ vcl/source/glyphs/gcach_ftyp.hxx 2006-05-18 15:59:45.000000000 +0800
+@@ -220,7 +220,9 @@
+
+ bool mbArtItalic;
+ bool mbArtBold;
+- bool mbUseGamma;
++
++ //remove it because of using FT_GlyphSlot_Embolden to generate cjk bold font.
++// bool mbUseGamma;
+
+ typedef ::std::hash_map<int,int> GlyphSubstitution;
+ GlyphSubstitution maGlyphSubstitution;
+--- vcl/source/glyphs/gcach_ftyp.cxx.m169 2006-05-17 12:48:44.000000000 +0800
++++ vcl/source/glyphs/gcach_ftyp.cxx 2006-05-18 15:51:17.000000000 +0800
+@@ -60,6 +60,7 @@
+ #include FT_TRUETYPE_TABLES_H
+ #include FT_TRUETYPE_TAGS_H
+ #include FT_TRUETYPE_IDS_H
++#include FT_SYNTHESIS_H
+
+ #ifndef INCLUDED_RTL_INSTANCE_HXX
+ #include <rtl/instance.hxx>
+@@ -106,31 +107,6 @@
+ #define NEXT_ULong( x ) FT_NEXT_ULONG( x )
+ #endif
+
+-// -----------------------------------------------------------------------
+-
+-// the gamma table makes artificial bold look better for CJK glyphs
+-static unsigned char aGammaTable[257];
+-
+-static void InitGammaTable()
+-{
+- static const int M_MAX = 255;
+- static const int M_X = 128;
+- static const int M_Y = 208;
+-
+- unsigned int x, a;
+- for( x = 0; x < 256; x++)
+- {
+- if ( x <= M_X )
+- a = ( x * M_Y + M_X / 2) / M_X;
+- else
+- a = M_Y + ( ( x - M_X ) * ( M_MAX - M_Y ) +
+- ( M_MAX - M_X ) / 2 ) / ( M_MAX - M_X );
+-
+- aGammaTable[x] = (unsigned char)a;
+- }
+-}
+-// -----------------------------------------------------------------------
+-
+ static FT_Library aLibFT = 0;
+
+ // #110607# enable linking with old FT versions
+@@ -491,7 +467,7 @@
+ if( pEnv )
+ nDefaultPrioAutoHint = pEnv[0] - '0';
+
+- InitGammaTable();
++// InitGammaTable();
+ }
+
+ // -----------------------------------------------------------------------
+@@ -817,14 +793,9 @@
+ static const int TT_CODEPAGE_RANGE_1361 = (1L << 21); // Korean Johab
+ static const int TT_CODEPAGE_RANGES1_CJKT = 0x3F0000; // all of the above
+ const TT_OS2* pOs2 = (const TT_OS2*)FT_Get_Sfnt_Table( maFaceFT, ft_sfnt_os2 );
+- if ((pOs2) && (pOs2->ulCodePageRange1 & TT_CODEPAGE_RANGES1_CJKT )
+- && rFSD.mnHeight < 20)
+- mbUseGamma = true;
+- else
+- mbUseGamma = false;
+-
+- if (mbUseGamma)
+- mnLoadFlags |= FT_LOAD_FORCE_AUTOHINT;
++// ----------------------------------------------------------------------------------
++ if ((pOs2) && (pOs2->ulCodePageRange1 & TT_CODEPAGE_RANGES1_CJKT ))
++ mnLoadFlags |= FT_LOAD_FORCE_AUTOHINT;
+
+ if( (mnSin != 0) && (mnCos != 0) ) // hinting for 0/90/180/270 degrees only
+ mnLoadFlags |= FT_LOAD_NO_HINTING;
+@@ -1328,7 +1299,14 @@
+ return false;
+
+ FT_Glyph pGlyphFT;
+- rc = FT_Get_Glyph( maFaceFT->glyph, &pGlyphFT );
++ if( mbArtBold )
++ {
++ FT_GlyphSlot slot = maFaceFT->glyph;
++ FT_GlyphSlot_Embolden( slot );
++ rc = FT_Get_Glyph( slot, &pGlyphFT );
++ }
++ else
++ rc = FT_Get_Glyph( maFaceFT->glyph, &pGlyphFT );
+ if( rc != FT_Err_Ok )
+ return false;
+
+@@ -1344,7 +1322,7 @@
+ aMatrix.yx = 0x6000L, aMatrix.xy = 0;
+ FT_Glyph_Transform( pGlyphFT, &aMatrix, NULL );
+ }
+-
++
+ if( pGlyphFT->format != ft_glyph_format_bitmap )
+ {
+ if( pGlyphFT->format == ft_glyph_format_outline )
+@@ -1367,17 +1345,8 @@
+ const FT_Bitmap& rBitmapFT = rBmpGlyphFT->bitmap;
+ rRawBitmap.mnHeight = rBitmapFT.rows;
+ rRawBitmap.mnBitCount = 1;
+- if( mbArtBold )
+- {
+- rRawBitmap.mnWidth = rBitmapFT.width + 1;
+- int nLineBytes = (rRawBitmap.mnWidth + 7) >> 3;
+- rRawBitmap.mnScanlineSize = (nLineBytes > rBitmapFT.pitch) ? nLineBytes : rBitmapFT.pitch;
+- }
+- else
+- {
+ rRawBitmap.mnWidth = rBitmapFT.width;
+ rRawBitmap.mnScanlineSize = rBitmapFT.pitch;
+- }
+
+ const ULONG nNeededSize = rRawBitmap.mnScanlineSize * rRawBitmap.mnHeight;
+
+@@ -1388,35 +1357,7 @@
+ rRawBitmap.mpBits = new unsigned char[ rRawBitmap.mnAllocated ];
+ }
+
+- if( !mbArtBold )
+- {
+ memcpy( rRawBitmap.mpBits, rBitmapFT.buffer, nNeededSize );
+- }
+- else
+- {
+- memset( rRawBitmap.mpBits, 0, nNeededSize );
+- const unsigned char* pSrcLine = rBitmapFT.buffer;
+- unsigned char* pDstLine = rRawBitmap.mpBits;
+- for( int h = rRawBitmap.mnHeight; --h >= 0; )
+- {
+- memcpy( pDstLine, pSrcLine, rBitmapFT.pitch );
+- pDstLine += rRawBitmap.mnScanlineSize;
+- pSrcLine += rBitmapFT.pitch;
+- }
+-
+- unsigned char* p = rRawBitmap.mpBits;
+- for( int y=0; y < rRawBitmap.mnHeight; y++ )
+- {
+- unsigned char nLastByte = 0;
+- for( int x=0; x < rRawBitmap.mnScanlineSize; x++ )
+- {
+- unsigned char nTmp = p[x] << 7;
+- p[x] |= (p[x] >> 1) | nLastByte;
+- nLastByte = nTmp;
+- }
+- p += rRawBitmap.mnScanlineSize;
+- }
+- }
+
+ FT_Done_Glyph( pGlyphFT );
+
+@@ -1480,7 +1421,17 @@
+ return false;
+
+ FT_Glyph pGlyphFT;
+- rc = FT_Get_Glyph( maFaceFT->glyph, &pGlyphFT );
++
++ //if mbArtBold true, using freetype API FT_GlyphSlot_Embolden embolden font to generate fake bold font.
++ //but, this method still have to be improve for big cjk font. but I think this should be improve by freetype
++ if( mbArtBold )
++ {
++ FT_GlyphSlot slot = maFaceFT->glyph;
++ FT_GlyphSlot_Embolden( slot );
++ rc = FT_Get_Glyph( slot, &pGlyphFT );
++ }
++ else
++ rc = FT_Get_Glyph( maFaceFT->glyph, &pGlyphFT );
+ if( rc != FT_Err_Ok )
+ return false;
+
+@@ -1517,11 +1468,6 @@
+ rRawBitmap.mnWidth = rBitmapFT.width;
+ rRawBitmap.mnBitCount = 8;
+ rRawBitmap.mnScanlineSize = bEmbedded ? rBitmapFT.width : rBitmapFT.pitch;
+- if( mbArtBold )
+- {
+- ++rRawBitmap.mnWidth;
+- ++rRawBitmap.mnScanlineSize;
+- }
+ rRawBitmap.mnScanlineSize = (rRawBitmap.mnScanlineSize + 3) & -4;
+
+ const ULONG nNeededSize = rRawBitmap.mnScanlineSize * rRawBitmap.mnHeight;
+@@ -1560,36 +1506,6 @@
+ }
+ }
+
+- if( mbArtBold )
+- {
+- // overlay with glyph image shifted by one left pixel
+- unsigned char* p = rRawBitmap.mpBits;
+- for( int y=0; y < rRawBitmap.mnHeight; y++ )
+- {
+- unsigned char nLastByte = 0;
+- for( int x=0; x < rRawBitmap.mnWidth; x++ )
+- {
+- unsigned char nTmp = p[x];
+- p[x] |= p[x] | nLastByte;
+- nLastByte = nTmp;
+- }
+- p += rRawBitmap.mnScanlineSize;
+- }
+- }
+-
+- if( !bEmbedded && mbUseGamma )
+- {
+- unsigned char* p = rRawBitmap.mpBits;
+- for( int y=0; y < rRawBitmap.mnHeight; y++ )
+- {
+- for( int x=0; x < rRawBitmap.mnWidth; x++ )
+- {
+- p[x] = aGammaTable[ p[x] ];
+- }
+- p += rRawBitmap.mnScanlineSize;
+- }
+- }
+-
+ FT_Done_Glyph( pGlyphFT );
+
+ // special case for 0/90/180/270 degree orientation
diff --git a/patches/src680/vcl-gnome-screensaver-poke.diff b/patches/src680/vcl-gnome-screensaver-poke.diff
new file mode 100644
index 000000000..e86a9f807
--- /dev/null
+++ b/patches/src680/vcl-gnome-screensaver-poke.diff
@@ -0,0 +1,212 @@
+--- vcl/unx/gtk/a11y/makefile.mk.orig 2006-05-26 12:26:01.000000000 +0200
++++ vcl/unx/gtk/a11y/makefile.mk 2006-05-26 12:26:30.000000000 +0200
+@@ -59,7 +59,7 @@ dummy:
+
+ .IF "$(ENABLE_GTK)" != ""
+
+-PKGCONFIG_MODULES=gtk+-2.0
++PKGCONFIG_MODULES=gtk+-2.0 dbus-glib-1
+ .INCLUDE : pkg_config.mk
+
+ CFLAGS+=-DVERSION=\"$(UPD)$(LAST_MINOR)\"
+diff -rup ../src680-m165-orig/vcl/unx/gtk/app/makefile.mk vcl/unx/gtk/app/makefile.mk
+--- ../src680-m165-orig/vcl/unx/gtk/app/makefile.mk 2005-09-09 14:36:54.000000000 +0200
++++ vcl/unx/gtk/app/makefile.mk 2006-05-25 09:22:07.000000000 +0200
+@@ -58,7 +58,7 @@ dummy:
+
+ .IF "$(ENABLE_GTK)" != ""
+
+-PKGCONFIG_MODULES=gtk+-2.0
++PKGCONFIG_MODULES=gtk+-2.0 dbus-glib-1
+ .INCLUDE : pkg_config.mk
+
+ SLOFILES=\
+diff -rup ../src680-m165-orig/vcl/unx/gtk/gdi/makefile.mk vcl/unx/gtk/gdi/makefile.mk
+--- ../src680-m165-orig/vcl/unx/gtk/gdi/makefile.mk 2005-09-09 14:37:10.000000000 +0200
++++ vcl/unx/gtk/gdi/makefile.mk 2006-05-25 09:22:07.000000000 +0200
+@@ -55,7 +55,7 @@ dummy:
+
+ .IF "$(ENABLE_GTK)" != ""
+
+-PKGCONFIG_MODULES=gtk+-2.0
++PKGCONFIG_MODULES=gtk+-2.0 dbus-glib-1
+ .INCLUDE : pkg_config.mk
+
+ SLOFILES=\
+diff -rup ../src680-m165-orig/vcl/unx/gtk/window/gtkframe.cxx vcl/unx/gtk/window/gtkframe.cxx
+--- ../src680-m165-orig/vcl/unx/gtk/window/gtkframe.cxx 2006-05-25 10:55:26.000000000 +0200
++++ vcl/unx/gtk/window/gtkframe.cxx 2006-05-25 10:38:25.000000000 +0200
+@@ -66,6 +66,8 @@
+
+ using namespace com::sun::star;
+
++#include <dbus/dbus-glib-lowlevel.h>
++
+ int GtkSalFrame::m_nFloats = 0;
+
+ static USHORT GetKeyModCode( guint state )
+@@ -491,6 +493,8 @@ void GtkSalFrame::InitCommon()
+ m_hBackgroundPixmap = None;
+ m_nSavedScreenSaverTimeout = 0;
+ m_nExtStyle = 0;
++ m_nGnomeScreenSaverPokeTimeoutId = 0;
++ m_pDBusConnection = NULL;
+
+ gtk_widget_set_app_paintable( GTK_WIDGET(m_pWindow), TRUE );
+ gtk_widget_set_double_buffered( GTK_WIDGET(m_pWindow), FALSE );
+@@ -1559,6 +1563,42 @@ void GtkSalFrame::setAutoLock( bool bLoc
+ sizeof( nMessage ) );
+ }
+
++#define GS_SERVICE "org.gnome.ScreenSaver"
++#define GS_PATH "/org/gnome/ScreenSaver"
++#define GS_INTERFACE "org.gnome.ScreenSaver"
++
++static gboolean
++pokeGnomeScreenSaver( gpointer data )
++{
++ DBusConnection *pConnection = (DBusConnection*) data;
++ DBusMessage *pMessage;
++ DBusError pError;
++
++ g_return_val_if_fail( pConnection != NULL, FALSE );
++
++ dbus_error_init( &pError );
++
++ pMessage = dbus_message_new_method_call (GS_SERVICE, GS_PATH, GS_INTERFACE, "Poke");
++ if( pMessage == NULL ) {
++ OSL_TRACE( "Couldn't allocate the dbus message" );
++ return FALSE;
++ }
++
++ if( !dbus_connection_send( pConnection, pMessage, NULL ) )
++ OSL_TRACE( "could not send dbus message" );
++
++ dbus_connection_flush( pConnection );
++
++ dbus_message_unref( pMessage );
++
++ if( dbus_error_is_set( &pError ) )
++ dbus_error_free( &pError );
++
++ OSL_TRACE( "Poke message sent" );
++
++ return TRUE;
++}
++
+ void GtkSalFrame::StartPresentation( BOOL bStart )
+ {
+ Display *pDisplay = GDK_DISPLAY_XDISPLAY( getGdkDisplay() );
+@@ -1571,6 +1611,7 @@ void GtkSalFrame::StartPresentation( BOO
+ &bPreferBlanking, &bAllowExposures );
+ if( bStart )
+ {
++ /* disable X server built-in screensaver */
+ if ( nTimeout )
+ {
+ m_nSavedScreenSaverTimeout = nTimeout;
+@@ -1578,14 +1619,51 @@ void GtkSalFrame::StartPresentation( BOO
+ XSetScreenSaver( pDisplay, 0, nInterval,
+ bPreferBlanking, bAllowExposures );
+ }
++
++ /* setup 30 seconds timeout to poke gnome-screensaver thru DBus connection */
++ if( !m_pDBusConnection ) {
++ DBusError pDBusError;
++
++ OSL_TRACE( "trying to create dbus connection" );
++
++ dbus_error_init( &pDBusError );
++ m_pDBusConnection = dbus_bus_get( DBUS_BUS_SESSION, &pDBusError );
++
++ if( dbus_error_is_set( &pDBusError ) )
++ dbus_error_free( &pDBusError );
++
++ if( m_pDBusConnection ) {
++ dbus_connection_setup_with_g_main( m_pDBusConnection, NULL );
++ OSL_TRACE( "dbus connection created" );
++
++ /* poke the screensaver now so that it doesn't kick in in the first 30 seconds of slideshow */
++ pokeGnomeScreenSaver( m_pDBusConnection );
++ }
++ }
++
++ if( m_pDBusConnection )
++ m_nGnomeScreenSaverPokeTimeoutId = g_timeout_add( 30000, pokeGnomeScreenSaver, m_pDBusConnection );
+ }
+ else
+ {
++ /* restore X server built-in screensaver settings */
+ if( m_nSavedScreenSaverTimeout )
+ XSetScreenSaver( pDisplay, m_nSavedScreenSaverTimeout,
+ nInterval, bPreferBlanking,
+ bAllowExposures );
+ m_nSavedScreenSaverTimeout = 0;
++
++ /* remove timeout for poking gnome-screensaver */
++ if( m_nGnomeScreenSaverPokeTimeoutId ) {
++ g_source_remove( m_nGnomeScreenSaverPokeTimeoutId );
++ m_nGnomeScreenSaverPokeTimeoutId = 0;
++ OSL_TRACE( "screensaver poking timeout removed" );
++
++ dbus_connection_disconnect( m_pDBusConnection );
++ dbus_connection_unref( m_pDBusConnection );
++ m_pDBusConnection = NULL;
++ OSL_TRACE( "dbus connection disconnected and unrefed" );
++ }
+ }
+ }
+
+Only in vcl/unx/gtk/window: gtkframe.cxx~
+Only in vcl/unx/gtk/window: gtkframe.cxx.orig
+diff -rup ../src680-m165-orig/vcl/unx/gtk/window/makefile.mk vcl/unx/gtk/window/makefile.mk
+--- ../src680-m165-orig/vcl/unx/gtk/window/makefile.mk 2005-09-09 14:38:24.000000000 +0200
++++ vcl/unx/gtk/window/makefile.mk 2006-05-25 09:22:07.000000000 +0200
+@@ -58,7 +58,7 @@ dummy:
+
+ .IF "$(ENABLE_GTK)" != ""
+
+-PKGCONFIG_MODULES=gtk+-2.0
++PKGCONFIG_MODULES=gtk+-2.0 dbus-glib-1
+ .INCLUDE : pkg_config.mk
+
+ SLOFILES=\
+diff -rup ../src680-m165-orig/vcl/unx/inc/plugins/gtk/gtkframe.hxx vcl/unx/inc/plugins/gtk/gtkframe.hxx
+--- ../src680-m165-orig/vcl/unx/inc/plugins/gtk/gtkframe.hxx 2006-05-25 10:55:26.000000000 +0200
++++ vcl/unx/inc/plugins/gtk/gtkframe.hxx 2006-05-25 09:22:07.000000000 +0200
+@@ -46,6 +46,10 @@
+ #include <com/sun/star/uno/Reference.hxx>
+ #include <com/sun/star/accessibility/XAccessible.hdl>
+
++#define DBUS_API_SUBJECT_TO_CHANGE
++#include <dbus/dbus.h>
++#include <dbus/dbus-glib.h>
++
+ #ifndef _SV_SALFRAME_HXX
+ #include <salframe.hxx>
+ #endif
+@@ -201,6 +205,9 @@ class GtkSalFrame : public SalFrame
+ Size m_aMaxSize;
+ Size m_aMinSize;
+ Rectangle m_aRestorePosSize;
++
++ DBusConnection *m_pDBusConnection;
++ guint m_nGnomeScreenSaverPokeTimeoutId;
+
+ void Init( SalFrame* pParent, ULONG nStyle );
+ void Init( SystemParentData* pSysData );
+Only in vcl/unx/inc/plugins/gtk: gtkframe.hxx.orig
+Only in vcl/: unxlngi6.pro
+diff -rup ../src680-m165-orig/vcl/util/makefile.mk vcl/util/makefile.mk
+--- ../src680-m165-orig/vcl/util/makefile.mk 2006-05-25 10:55:26.000000000 +0200
++++ vcl/util/makefile.mk 2006-05-25 09:22:07.000000000 +0200
+@@ -352,7 +352,7 @@ SHL3STDLIBS=\
+
+ # gtk plugin
+ .IF "$(ENABLE_GTK)" != ""
+-PKGCONFIG_MODULES=gtk+-2.0 gthread-2.0
++PKGCONFIG_MODULES=gtk+-2.0 gthread-2.0 dbus-glib-1
+ .INCLUDE: pkg_config.mk
+
+ LIB4TARGET=$(SLB)$/igtk_plug_
+
diff --git a/patches/src680/vcl-metacity-focus.diff b/patches/src680/vcl-metacity-focus.diff
new file mode 100644
index 000000000..f6485c9a9
--- /dev/null
+++ b/patches/src680/vcl-metacity-focus.diff
@@ -0,0 +1,51 @@
+From: pl@openoffice.org
+To: cvs@gsl.openoffice.org
+Subject: [gsl-cvs] CVS update [cws_src680_vcl56]: /gsl/vcl/unx/gtk/window/
+
+Tag: cws_src680_vcl56
+User: pl
+Date: 06/03/16 04:28:11
+
+Modified:
+ /gsl/vcl/unx/gtk/window/
+ gtkframe.cxx
+
+Log:
+ #i63086# workaround another metacity bug
+
+File Changes:
+
+Directory: /gsl/vcl/unx/gtk/window/
+===================================
+
+File [changed]: gtkframe.cxx
+Url: http://gsl.openoffice.org/source/browse/gsl/vcl/unx/gtk/window/gtkframe.cxx?r1=1.42&r2=1.42.88.1
+Delta lines: +17 -3
+--------------------
+--- vcl/unx/gtk/window/gtkframe.cxx 25 Jan 2006 11:40:22 -0000 1.42
++++ vcl/unx/gtk/window/gtkframe.cxx 16 Mar 2006 12:28:08 -0000 1.42.88.1
+@@ -1005,6 +1005,20 @@
+ if( m_pParent && m_pParent->m_nWorkArea != m_nWorkArea )
+ getDisplay()->getWMAdaptor()->switchToWorkArea( m_pParent->m_nWorkArea );
+
++ if( isFloatGrabWindow() &&
++ m_pParent &&
++ m_nFloats == 0 &&
++ ! getDisplay()->GetCaptureFrame() )
++ {
++ /* #i63086#
++ * outsmart Metacity's "focus:mouse" mode
++ * which insists on taking the focus from the document
++ * to the new float. Grab focus to parent frame BEFORE
++ * showing the float (cannot grab it to the float
++ * before show).
++ */
++ m_pParent->grabPointer( TRUE, TRUE );
++ }
+ gtk_widget_show( GTK_WIDGET(m_pWindow) );
+ if( isFloatGrabWindow() )
+ {
+
+
+
+
diff --git a/patches/src680/win32-activex-disable.diff b/patches/src680/win32-activex-disable.diff
new file mode 100644
index 000000000..a7de1f1ee
--- /dev/null
+++ b/patches/src680/win32-activex-disable.diff
@@ -0,0 +1,278 @@
+--- config_office/configure.in Wed May 3 15:15:00 2006
++++ /mnt/pippi/src/2.0.2/build/OOO_2_0_2/config_office/configure.in Wed May 3 14:38:03 2006
+@@ -74,4 +74,8 @@
+ set.
+ ],,with_agfa_monotype_fonts="yes")
++AC_ARG_ENABLE(activex,
++[ --disable-activex Remove support for ActiveX embedding of
++ OOo components
++],,enable_activex=yes)
+ AC_ARG_ENABLE(epm,
+ [ --disable-epm OO.o includes self-packaging code, that requires
+@@ -4268,6 +4272,19 @@
+ fi
+ AC_SUBST(WITH_AGFA_MONOTYPE_FONTS)
+-
+ AC_SUBST(SCPDEFS)
++
++if test "$_os" = "WINNT"; then
++ AC_MSG_CHECKING([whether to enable ActiveX embedding of OOo components])
++ if test "$enable_activex" = "yes" -o "$enable_activex" = "TRUE" -o "$enable_activex" = ""; then
++ ENABLE_ACTIVEX="TRUE"
++ AC_MSG_RESULT([yes])
++ SCPDEFS="$SCPDEFS -DWITH_ACTIVEX"
++ else
++ ENABLE_ACTIVEX=""
++ AC_MSG_RESULT([no])
++ fi
++ AC_SUBST(ENABLE_ACTIVEX)
++ AC_SUBST(SCPDEFS)
++fi
+
+ AC_MSG_CHECKING([whether to include PPDs])
+--- scp2/source/activex/file_activex.scp Thu Oct 27 17:08:13 2005
++++ /mnt/pippi/src/2.0.2/build/OOO_2_0_2/scp2/source/activex/file_activex.scp Wed May 3 14:24:12 2006
+@@ -36,4 +36,6 @@
+ #include "macros.inc"
+
++#ifdef WITH_ACTIVEX
++
+ File gid_File_Lib_Soactivex
+ TXT_FILE_BODY;
+@@ -50,2 +52,3 @@
+ End
+
++#endif // WITH_ACTIVEX
+--- scp2/source/activex/module_activex.scp Fri Sep 9 04:17:32 2005
++++ /mnt/pippi/src/2.0.2/build/OOO_2_0_2/scp2/source/activex/module_activex.scp Wed May 3 14:24:29 2006
+@@ -36,4 +36,6 @@
+ #include "macros.inc"
+
++#ifdef WITH_ACTIVEX
++
+ Module gid_Module_Optional_Activexcontrol
+ MOD_NAME_DESC ( MODULE_OPTIONAL_ACTIVEXCONTROL );
+@@ -43,2 +45,4 @@
+ Files = (gid_File_Lib_Soactivex, gid_File_Lib_Regactivex_Msi);
+ End
++
++#endif // WITH_ACTIVEX
+--- scp2/source/calc/registryitem_calc.scp Thu Nov 10 18:18:08 2005
++++ /mnt/pippi/src/2.0.2/build/OOO_2_0_2/scp2/source/calc/registryitem_calc.scp Wed May 3 14:25:20 2006
+@@ -36,4 +36,6 @@
+ #include "macros.inc"
+
++#ifdef WITH_ACTIVEX
++
+ // MSOLE embedded object in SO7 file format
+ RegistryItem gid_Regitem_Clsid__7b342dc4_139a_4a46_8a93_Db0827ccee9c_
+@@ -272,4 +274,6 @@
+ End
+
++#endif // WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Sdc_Contenttype
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -359,4 +363,6 @@
+ End
+
++#ifdef WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Soffice_Starcalcdocument_6_Clsid
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -366,4 +372,6 @@
+ End
+
++#endif // WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Soffice_Starcalcdocument_6_Defaulticon
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -688,4 +696,6 @@
+ End
+
++#ifdef WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Openoffice_Calcdocument_1_Clsid
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -694,4 +704,6 @@
+ Value = "{7FA8AE11-B3E3-4D88-AABF-255526CD1CE8}";
+ End
++
++#endif // WITH_ACTIVEX
+
+ RegistryItem gid_Regitem_Openoffice_Calcdocument_1_Defaulticon
+--- scp2/source/draw/registryitem_draw.scp Thu Nov 10 18:18:21 2005
++++ /mnt/pippi/src/2.0.2/build/OOO_2_0_2/scp2/source/draw/registryitem_draw.scp Wed May 3 14:25:46 2006
+@@ -36,4 +36,6 @@
+ #include "macros.inc"
+
++#ifdef WITH_ACTIVEX
++
+ // MSOLE embedded object in SO7 file format
+ RegistryItem gid_Regitem_Clsid__41662fc2_0d57_4aff_Ab27_Ad2e12e7c273_
+@@ -272,5 +274,5 @@
+ End
+
+-
++#endif // WITH_ACTIVEX
+
+ RegistryItem gid_Regitem_Sda_Contenttype
+@@ -361,4 +363,6 @@
+ End
+
++#ifdef WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Soffice_Stardrawdocument_6_Clsid
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -368,4 +372,6 @@
+ End
+
++#endif // WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Soffice_Stardrawdocument_6_Defaulticon
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -690,4 +696,6 @@
+ End
+
++#ifdef WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Openoffice_Drawdocument_1_Clsid
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -696,4 +704,6 @@
+ Value = "{448BB771-CFE2-47C4-BCDF-1FBF378E202C}";
+ End
++
++#endif // WITH_ACTIVEX
+
+ RegistryItem gid_Regitem_Openoffice_Drawdocument_1_Defaulticon
+--- scp2/source/impress/registryitem_impress.scp Thu Nov 10 18:18:33 2005
++++ /mnt/pippi/src/2.0.2/build/OOO_2_0_2/scp2/source/impress/registryitem_impress.scp Wed May 3 14:26:13 2006
+@@ -36,4 +36,6 @@
+ #include "macros.inc"
+
++#ifdef WITH_ACTIVEX
++
+ // MSOLE embedded object in SO7 file format
+ RegistryItem gid_Regitem_Clsid__E5a0b632_Dfba_4549_9346_E414da06e6f8_
+@@ -272,5 +274,5 @@
+ End
+
+-
++#endif // WITH_ACTIVEX
+
+ RegistryItem gid_Regitem_Sdd_Contenttype
+@@ -377,4 +379,6 @@
+ End
+
++#ifdef WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Soffice_Starimpressdocument_6_Clsid
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -384,4 +388,6 @@
+ End
+
++#endif // WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Soffice_Starimpressdocument_6_Defaulticon
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -727,4 +733,6 @@
+ End
+
++#ifdef WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Openoffice_Impressdocument_1_Clsid
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -733,4 +741,6 @@
+ Value = "{EE5D1EA4-D445-4289-B2FC-55FC93693917}";
+ End
++
++#endif // WITH_ACTIVEX
+
+ RegistryItem gid_Regitem_Openoffice_Impressdocument_1_Defaulticon
+--- scp2/source/math/registryitem_math.scp Thu Nov 10 18:18:46 2005
++++ /mnt/pippi/src/2.0.2/build/OOO_2_0_2/scp2/source/math/registryitem_math.scp Wed May 3 14:26:36 2006
+@@ -35,4 +35,6 @@
+ #include "macros.inc"
+
++#ifdef WITH_ACTIVEX
++
+ // MSOLE embedded object in SO7 file format
+ RegistryItem gid_Regitem_Clsid__D0484de6_Aaee_468a_991f_8d4b0737b57a_
+@@ -271,5 +273,5 @@
+ End
+
+-
++#endif // WITH_ACTIVEX
+
+ RegistryItem gid_Regitem_Smf_Contenttype
+@@ -360,4 +362,6 @@
+ End
+
++#ifdef WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Soffice_Starmathdocument_6_Clsid
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -367,4 +371,6 @@
+ End
+
++#endif // WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Soffice_Starmathdocument_6_Defaulticon
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -582,4 +588,6 @@
+ End
+
++#ifdef WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Openoffice_Mathdocument_1_Clsid
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -588,4 +596,6 @@
+ Value = "{D2D59CD1-0A6A-4D36-AE20-47817077D57C}";
+ End
++
++#endif // WITH_ACTIVEX
+
+ RegistryItem gid_Regitem_Openoffice_Mathdocument_1_Defaulticon
+--- scp2/source/writer/registryitem_writer.scp Thu Nov 10 18:19:00 2005
++++ /mnt/pippi/src/2.0.2/build/OOO_2_0_2/scp2/source/writer/registryitem_writer.scp Wed May 3 14:27:50 2006
+@@ -36,4 +36,6 @@
+ #include "macros.inc"
+
++#ifdef WITH_ACTIVEX
++
+ // MSOLE embedded object in SO7 file format
+ RegistryItem gid_Regitem_Clsid__30a2652a_Ddf7_45e7_Aca6_3eab26fc8a4e_
+@@ -272,4 +274,5 @@
+ End
+
++#endif // WITH_ACTIVEX
+
+ RegistryItem gid_Regitem_Sdw_Contenttype
+@@ -376,4 +379,6 @@
+ End
+
++#ifdef WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Soffice_Starwriterdocument_6_Clsid
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -383,4 +388,6 @@
+ End
+
++#endif // WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Soffice_Starwriterdocument_6_Defaulticon
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -882,4 +889,6 @@
+ End
+
++#ifdef WITH_ACTIVEX
++
+ RegistryItem gid_Regitem_Openoffice_Writerdocument_1_Clsid
+ ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+@@ -888,4 +897,6 @@
+ Value = "{F616B81F-7BB8-4F22-B8A5-47428D59F8AD}";
+ End
++
++#endif // WITH_ACTIVEX
+
+ RegistryItem gid_Regitem_Openoffice_Writerdocument_1_Defaulticon
diff --git a/patches/src680/wizard-evo-local.diff b/patches/src680/wizard-evo-local.diff
index 6b03892c6..f66b301e3 100644
--- a/patches/src680/wizard-evo-local.diff
+++ b/patches/src680/wizard-evo-local.diff
@@ -66,7 +66,7 @@ diff -u -p -u -r1.54 abspilot.src
RadioButton RB_THUNDERBIRD
{
Pos = MAP_APPFONT ( 15, 79 ) ;
-@@ -145,6 +146,22 @@ TabPage RID_PAGE_SELECTABTYPE
+@@ -145,6 +146,29 @@ TabPage RID_PAGE_SELECTABTYPE
Text [ de ] = "Evolution";
Text [ en-US ] = "Evolution";
};
@@ -83,8 +83,15 @@ diff -u -p -u -r1.54 abspilot.src
+ Pos = MAP_APPFONT ( 15, 90 ) ;
+ Size = MAP_APPFONT ( WINDOW_SIZE_X - 30, 8 ) ;
+
-+ Text [ de ] = "Evolution LDAP";
+ Text [ en-US ] = "Evolution LDAP";
++ Text[ de ] = "Evolution: LDAP";
++ Text[ es ] = "LDAP de Evolution";
++ Text[ fr ] = "LDAP Evolution";
++ Text[ it ] = "LDAP Evolution";
++ Text[ ja ] = "Evolution LDAP ";
++ Text[ pt-BR ] = "LDAP do Evolution";
++ Text[ zh-CN ] = "Evolution LDAP";
++ Text[ zh-TW ] = "Evolution LDAP";
+ };
RadioButton RB_KAB
{
diff --git a/patches/test/ooxml-sc-build.diff b/patches/test/ooxml-sc-build.diff
new file mode 100644
index 000000000..a3f53f4e3
--- /dev/null
+++ b/patches/test/ooxml-sc-build.diff
@@ -0,0 +1,38 @@
+Index: sc/util/makefile.mk
+===================================================================
+RCS file: /cvs/sc/sc/util/makefile.mk,v
+retrieving revision 1.33
+diff -u -p -u -r1.33 makefile.mk
+--- sc/util/makefile.mk 27 Jan 2006 15:52:35 -0000 1.33
++++ sc/util/makefile.mk 19 Apr 2006 13:08:14 -0000
+@@ -182,6 +182,7 @@ LIB4FILES= \
+ $(SLB)$/html.lib \
+ $(SLB)$/lotus.lib \
+ $(SLB)$/qpro.lib\
++ $(SLB)$/ecma.lib\
+ $(SLB)$/rtf.lib \
+ $(SLB)$/xml.lib \
+ $(SLB)$/accessibility.lib \
+
+
+Index: sc/prj/build.lst
+===================================================================
+RCS file: /cvs/sc/sc/prj/build.lst,v
+retrieving revision 1.11
+diff -u -p -u -r1.11 build.lst
+--- sc/prj/build.lst 27 Jan 2006 15:49:40 -0000 1.11
++++ sc/prj/build.lst 19 Apr 2006 13:08:47 -0000
+@@ -39,6 +40,7 @@ sc sc\source\filter\pch get - all s
+ sc sc\source\filter\excel nmake - all sc_excel sc_sdi NULL
+ sc sc\source\filter\lotus nmake - all sc_lotus sc_sdi NULL
+ sc sc\source\filter\qpro nmake - all sc_qpro sc_sdi NULL
++sc sc\source\filter\ecma nmake - all sc_ecma sc_sdi NULL
+ sc sc\source\filter\starcalc nmake - all sc_scalc sc_sdi NULL
+ sc sc\source\filter\dif nmake - all sc_dif sc_sdi NULL
+ sc sc\source\filter\rtf nmake - all sc_rtf sc_sdi NULL
+@@ -48,4 +50,4 @@ sc sc\source\filter\xcl97 nmake - al
+ sc sc\addin\datefunc nmake - all sc_addfu sc_sdi NULL
+ sc sc\addin\rot13 nmake - all sc_adrot sc_sdi NULL
+ sc sc\addin\util nmake - all sc_adutil sc_addfu sc_adrot sc_sdi NULL
+-sc sc\util nmake - all sc_util sc_addfu sc_adrot sc_adutil sc_app sc_attr sc_cctrl sc_cosrc sc_data sc_dbgui sc_dif sc_docsh sc_drfnc sc_excel sc_form sc_html sc_lotus sc_qpro sc_misc sc_name sc_nvipi sc_opt sc_page sc_rtf sc_scalc sc_style sc_tool sc_uisrc sc_undo sc_unobj sc_view sc_xcl97 sc_xml sc_acc sc_ftools sc_vba NULL
++sc sc\util nmake - all sc_util sc_addfu sc_adrot sc_adutil sc_app sc_attr sc_cctrl sc_cosrc sc_data sc_dbgui sc_dif sc_docsh sc_drfnc sc_excel sc_form sc_html sc_lotus sc_ecma sc_qpro sc_misc sc_name sc_nvipi sc_opt sc_page sc_rtf sc_scalc sc_style sc_tool sc_uisrc sc_undo sc_unobj sc_view sc_xcl97 sc_xml sc_acc sc_ftools sc_vba NULL
diff --git a/patches/test/sc-source-filter-ecma-parsebase-hxx.diff b/patches/test/sc-source-filter-ecma-parsebase-hxx.diff
new file mode 100644
index 000000000..80b184f63
--- /dev/null
+++ b/patches/test/sc-source-filter-ecma-parsebase-hxx.diff
@@ -0,0 +1,50 @@
+--- /dev/null
++++ sc/source/filter/ecma/parsebase.hxx
+@@ -0,0 +1,47 @@
++#ifndef SC_ECMA_PARSEBASE_HXX
++#define SC_ECMA_PARSEBASE_HXX
++
++#include "filter.hxx"
++#include "scerrors.hxx"
++#include <cppuhelper/implbase1.hxx>
++#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
++
++#define css ::com::sun::star
++
++class ScPathRefHolder;
++
++class ScECMAParseBase : public ::cppu::WeakImplHelper1<
++ css::xml::sax::XDocumentHandler >
++{
++ private:
++ ScPathRefHolder *m_pPath;
++ public:
++ ScECMAParseBase() : m_pPath(NULL) {}
++ virtual ~ScECMAParseBase();
++
++ FltError doParse(const css::uno::Reference<css::lang::XMultiServiceFactory> &xServiceFactory,
++ const css::uno::Reference<css::embed::XStorage> &xStorage,
++ const rtl::OUString &rStreamPath);
++
++ // css::xml::sax::XDocumentHandler
++ virtual void SAL_CALL startDocument(void)
++ throw( css::xml::sax::SAXException, css::uno::RuntimeException ) {}
++ virtual void SAL_CALL endDocument(void)
++ throw( css::xml::sax::SAXException, css::uno::RuntimeException ) {}
++ virtual void SAL_CALL startElement(const ::rtl::OUString& aName,
++ const css::uno::Reference< css::xml::sax::XAttributeList > & xAttribs)
++ throw( css::xml::sax::SAXException, css::uno::RuntimeException );
++ virtual void SAL_CALL endElement(const ::rtl::OUString& aName)
++ throw( css::xml::sax::SAXException, css::uno::RuntimeException ) {}
++ virtual void SAL_CALL characters(const ::rtl::OUString& aChars)
++ throw( css::xml::sax::SAXException, css::uno::RuntimeException ) {}
++ virtual void SAL_CALL ignorableWhitespace(const ::rtl::OUString& aWhitespaces)
++ throw( css::xml::sax::SAXException, css::uno::RuntimeException ) {}
++ virtual void SAL_CALL processingInstruction(const ::rtl::OUString& aTarget,
++ const ::rtl::OUString& aData)
++ throw( css::xml::sax::SAXException, css::uno::RuntimeException ) {}
++ virtual void SAL_CALL setDocumentLocator(const css::uno::Reference< css::xml::sax::XLocator > & xLocator)
++ throw( css::xml::sax::SAXException, css::uno::RuntimeException ) {}
++};
++
++#endif // SC_ECMA_PARSEBASE_HXX
diff --git a/scratch/sc-vba/makefile.mk b/scratch/sc-vba/makefile.mk
index 1cc2738a1..e74b7269c 100644
--- a/scratch/sc-vba/makefile.mk
+++ b/scratch/sc-vba/makefile.mk
@@ -45,13 +45,13 @@ SLOFILES= \
$(SLO)$/vbachartobjects.obj\
$(SLO)$/vbaseriescollection.obj\
$(SLO)$/vbacollectionimpl.obj\
- $(SLO)$/vbaarraywrapper.obj\
$(SLO)$/vbadialogs.obj \
$(SLO)$/vbadialog.obj \
$(SLO)$/vbapivottable.obj \
$(SLO)$/vbapivotcache.obj \
$(SLO)$/vbapivottables.obj \
$(SLO)$/vbawindows.obj \
+ $(SLO)$/vbapalette.obj \
$(SLO)$/vbacharacters.obj
diff --git a/scratch/sc-vba/vbaapplication.hxx b/scratch/sc-vba/vbaapplication.hxx
index bb9e61061..c332fabb6 100644
--- a/scratch/sc-vba/vbaapplication.hxx
+++ b/scratch/sc-vba/vbaapplication.hxx
@@ -23,12 +23,12 @@ public:
// XApplication
virtual ::sal_Int32 SAL_CALL getCalculation() throw (css::uno::RuntimeException);
virtual void SAL_CALL setCalculation( ::sal_Int32 _calculation ) throw (css::uno::RuntimeException);
- virtual css::uno::Reference< oo::vba::XRange > getSelection() throw (css::uno::RuntimeException);
- virtual css::uno::Reference< oo::vba::XWorkbook > getActiveWorkbook() throw (css::uno::RuntimeException);
- virtual css::uno::Reference< oo::vba::XRange > getActiveCell() throw ( css::uno::RuntimeException);
+ virtual css::uno::Reference< oo::vba::XRange > SAL_CALL getSelection() throw (css::uno::RuntimeException);
+ virtual css::uno::Reference< oo::vba::XWorkbook > SAL_CALL getActiveWorkbook() throw (css::uno::RuntimeException);
+ virtual css::uno::Reference< oo::vba::XRange > SAL_CALL getActiveCell() throw ( css::uno::RuntimeException);
virtual css::uno::Reference< oo::vba::XWindow > SAL_CALL getActiveWindow() throw (::com::sun::star::uno::RuntimeException);
- virtual sal_Bool getScreenUpdating() throw (css::uno::RuntimeException);
- virtual void setScreenUpdating(sal_Bool bUpdate) throw (css::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL getScreenUpdating() throw (css::uno::RuntimeException);
+ virtual void SAL_CALL setScreenUpdating(sal_Bool bUpdate) throw (css::uno::RuntimeException);
virtual css::uno::Reference< oo::vba::XWorkbook > SAL_CALL getThisWorkbook() throw (css::uno::RuntimeException);
virtual css::uno::Any SAL_CALL Workbooks( const css::uno::Any& aIndex ) throw (css::uno::RuntimeException);
virtual css::uno::Any SAL_CALL WorksheetFunction( ) throw (css::uno::RuntimeException);
diff --git a/scratch/sc-vba/vbacharacters.cxx b/scratch/sc-vba/vbacharacters.cxx
index b9627099d..d4b3234e7 100644
--- a/scratch/sc-vba/vbacharacters.cxx
+++ b/scratch/sc-vba/vbacharacters.cxx
@@ -7,7 +7,7 @@
using namespace ::org::openoffice;
using namespace ::com::sun::star;
-ScVbaCharacters::ScVbaCharacters( const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< text::XSimpleText>& xRange,const css::uno::Any& Start, const css::uno::Any& Length ) throw ( css::lang::IllegalArgumentException ) : m_xContext( xContext ), m_xSimpleText(xRange), nLength(-1), nStart(1)
+ScVbaCharacters::ScVbaCharacters( const uno::Reference< uno::XComponentContext >& xContext, const ScVbaPalette& dPalette, const uno::Reference< text::XSimpleText>& xRange,const css::uno::Any& Start, const css::uno::Any& Length ) throw ( css::lang::IllegalArgumentException ) : m_xContext( xContext ), m_aPalette( dPalette), m_xSimpleText(xRange), nLength(-1), nStart(1)
{
Start >>= nStart;
if ( nStart < 1 )
@@ -23,6 +23,7 @@ ScVbaCharacters::ScVbaCharacters( const uno::Reference< uno::XComponentContext >
else
xTextCursor->goRight( nLength, sal_True );
m_xTextRange.set( xTextCursor, uno::UNO_QUERY_THROW );
+
}
::rtl::OUString SAL_CALL
@@ -57,7 +58,7 @@ uno::Reference< vba::XFont > SAL_CALL
ScVbaCharacters::getFont() throw (css::uno::RuntimeException)
{
uno::Reference< beans::XPropertySet > xProps( m_xTextRange, uno::UNO_QUERY_THROW );
- return uno::Reference< vba::XFont >( new ScVbaFont( xProps ) );
+ return uno::Reference< vba::XFont >( new ScVbaFont( m_aPalette, xProps ) );
}
void SAL_CALL
ScVbaCharacters::setFont( const uno::Reference< vba::XFont >& _font ) throw (css::uno::RuntimeException)
diff --git a/scratch/sc-vba/vbacharacters.hxx b/scratch/sc-vba/vbacharacters.hxx
index a6f32dc8b..3cefbc856 100644
--- a/scratch/sc-vba/vbacharacters.hxx
+++ b/scratch/sc-vba/vbacharacters.hxx
@@ -8,7 +8,7 @@
#include <com/sun/star/text/XSimpleText.hpp>
#include "vbahelper.hxx"
-
+#include "vbapalette.hxx"
typedef ::cppu::WeakImplHelper1< oo::vba::XCharacters > ScVbaCharacters_BASE;
class ScVbaCharacters : public ScVbaCharacters_BASE
@@ -17,10 +17,11 @@ private:
css::uno::Reference< css::text::XTextRange > m_xTextRange;
css::uno::Reference< css::text::XSimpleText > m_xSimpleText;
css::uno::Reference< css::uno::XComponentContext > m_xContext;
+ ScVbaPalette m_aPalette;
sal_Int32 nLength;
sal_Int32 nStart;
public:
- ScVbaCharacters( const css::uno::Reference< css::uno::XComponentContext >& xContext, const css::uno::Reference< css::text::XSimpleText >& xRange, const css::uno::Any& Start, const css::uno::Any& Length ) throw ( css::lang::IllegalArgumentException );
+ ScVbaCharacters( const css::uno::Reference< css::uno::XComponentContext >& xContext, const ScVbaPalette& dPalette, const css::uno::Reference< css::text::XSimpleText >& xRange, const css::uno::Any& Start, const css::uno::Any& Length ) throw ( css::lang::IllegalArgumentException );
virtual ~ScVbaCharacters() {}
// Attributes
diff --git a/scratch/sc-vba/vbachartobjects.cxx b/scratch/sc-vba/vbachartobjects.cxx
index 0f7911a12..785815bdb 100644
--- a/scratch/sc-vba/vbachartobjects.cxx
+++ b/scratch/sc-vba/vbachartobjects.cxx
@@ -19,7 +19,7 @@ public:
virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException)
{
uno::Reference< table::XTableChart > xTableChart( m_xEnumeration->nextElement(), uno::UNO_QUERY_THROW );
- return makeAny( uno::Reference< vba::XChartObject > ( new ScVbaChartObject( m_xContext, xTableChart ) ) );
+ return uno::makeAny( uno::Reference< vba::XChartObject > ( new ScVbaChartObject( m_xContext, xTableChart ) ) );
}
};
@@ -47,6 +47,6 @@ uno::Any
ScVbaChartObjects::createCollectionObject( const css::uno::Any& aSource )
{
uno::Reference< table::XTableChart > xTableChart( aSource, uno::UNO_QUERY_THROW );
- return makeAny( uno::Reference< vba::XChartObject > ( new ScVbaChartObject( m_xContext, xTableChart ) ) );
+ return uno::makeAny( uno::Reference< vba::XChartObject > ( new ScVbaChartObject( m_xContext, xTableChart ) ) );
}
diff --git a/scratch/sc-vba/vbacollectionimpl.hxx b/scratch/sc-vba/vbacollectionimpl.hxx
index 43269eeff..312da0db0 100644
--- a/scratch/sc-vba/vbacollectionimpl.hxx
+++ b/scratch/sc-vba/vbacollectionimpl.hxx
@@ -4,9 +4,11 @@
#include <org/openoffice/vba/XCollection.hpp>
#include <com/sun/star/container/XEnumerationAccess.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
+#include <com/sun/star/script/XDefaultMethod.hpp>
#include <com/sun/star/container/XIndexAccess.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
+#include <cppuhelper/implbase3.hxx>
#include <cppuhelper/implbase2.hxx>
#include <cppuhelper/implbase1.hxx>
@@ -29,8 +31,8 @@ public:
-typedef ::cppu::WeakImplHelper2<oo::vba::XCollection,
-css::container::XEnumerationAccess > XCollection_BASE;
+typedef ::cppu::WeakImplHelper3<oo::vba::XCollection,
+css::container::XEnumerationAccess, css::script::XDefaultMethod > XCollection_BASE;
class ScVbaCollectionBaseImpl : public XCollection_BASE
{
@@ -53,6 +55,8 @@ public:
virtual css::uno::Reference< oo::vba::XApplication > SAL_CALL getApplication() throw (css::uno::RuntimeException);
virtual css::uno::Any SAL_CALL Item( const css::uno::Any& Index ) throw (css::uno::RuntimeException);
+ // XDefaultMethod
+ ::rtl::OUString SAL_CALL getName( ) throw (css::uno::RuntimeException);
// XEnumerationAccess
virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() throw (css::uno::RuntimeException) = 0;
diff --git a/scratch/sc-vba/vbacomments.cxx b/scratch/sc-vba/vbacomments.cxx
index a10f4084b..3fdc0d604 100644
--- a/scratch/sc-vba/vbacomments.cxx
+++ b/scratch/sc-vba/vbacomments.cxx
@@ -14,7 +14,7 @@ uno::Any AnnotationToComment( const uno::Any& aSource, uno::Reference< uno::XCom
uno::Reference< container::XChild > xChild( xAnno, uno::UNO_QUERY_THROW );
uno::Reference< table::XCellRange > xCellRange( xChild->getParent(), uno::UNO_QUERY_THROW );
- return makeAny( uno::Reference< vba::XComment > ( new ScVbaComment( xContext, xCellRange ) ) );
+ return uno::makeAny( uno::Reference< vba::XComment > ( new ScVbaComment( xContext, xCellRange ) ) );
}
class CommentEnumeration : public EnumerationHelperImpl
diff --git a/scratch/sc-vba/vbafont.cxx b/scratch/sc-vba/vbafont.cxx
index a55030640..733a4fb6e 100644
--- a/scratch/sc-vba/vbafont.cxx
+++ b/scratch/sc-vba/vbafont.cxx
@@ -3,11 +3,188 @@
#include <com/sun/star/awt/FontUnderline.hpp>
#include <com/sun/star/awt/FontStrikeout.hpp>
#include <com/sun/star/awt/FontSlant.hpp>
+#include <org/openoffice/vba/Excel/Constants.hpp>
+#include <org/openoffice/vba/Excel/XlUnderlineStyle.hpp>
#include "vbafont.hxx"
using namespace ::org::openoffice;
using namespace ::com::sun::star;
+// use local constants there is no need to expose these constants
+// externally. Looking at the Format->Character dialog it seem that
+// these may infact be even be calculated. Leave hardcoded for now
+// #FIXEME #TBD investigate the code for dialog mentioned above
+
+// The font baseline is not specified.
+const short NORMAL = 0;
+
+// specifies a superscripted.
+const short SUPERSCRIPT = 33;
+
+// specifies a subscripted.
+const short SUBSCRIPT = -33;
+
+// specifies a hight of superscripted font
+ const sal_Int8 SUPERSCRIPTHEIGHT = 58;
+
+// specifies a hight of subscripted font
+const sal_Int8 SUBSCRIPTHEIGHT = 58;
+
+// specifies a hight of normal font
+const short NORMALHEIGHT = 100;
+
+void
+ScVbaFont::setSuperscript( sal_Bool bValue ) throw ( uno::RuntimeException )
+{
+ sal_Int16 nValue = NORMAL;
+ sal_Int8 nValue2 = NORMALHEIGHT;
+
+ if( bValue )
+ {
+ nValue = SUPERSCRIPT;
+ nValue2 = SUPERSCRIPTHEIGHT;
+ }
+ mxFont->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharEscapement" ) ), ( uno::Any )nValue );
+ mxFont->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharEscapementHeight" ) ), ( uno::Any )nValue2 );
+}
+
+sal_Bool
+ScVbaFont::getSuperscript() throw ( uno::RuntimeException )
+{
+ short nValue = 0;
+ mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharEscapement" ) ) ) >>= nValue;
+ return( nValue == SUPERSCRIPT );
+}
+
+void
+ScVbaFont::setSubscript( sal_Bool bValue ) throw ( uno::RuntimeException )
+{
+ sal_Int16 nValue = NORMAL;
+ sal_Int8 nValue2 = NORMALHEIGHT;
+
+ if( bValue )
+ {
+ nValue= SUBSCRIPT;
+ nValue2 = SUBSCRIPTHEIGHT;
+ }
+
+ mxFont->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharEscapementHeight" ) ), ( uno::Any )nValue2 );
+ mxFont->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharEscapement" ) ), ( uno::Any )nValue );
+
+}
+
+sal_Bool
+ScVbaFont::getSubscript() throw ( uno::RuntimeException )
+{
+ short nValue = NORMAL;
+ mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharEscapement" ) ) ) >>= nValue;
+ return( nValue == SUBSCRIPT );
+}
+
+void
+ScVbaFont::setSize( float fValue ) throw( uno::RuntimeException )
+{
+ mxFont->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharHeight" ) ), ( uno::Any )fValue );
+}
+
+float
+ScVbaFont::getSize() throw ( uno::RuntimeException )
+{
+ float fValue = 0.0;
+ mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharHeight" ) ) ) >>= fValue;
+ return fValue;
+}
+
+void
+ScVbaFont::setColorIndex( sal_Int32 lValue ) throw( uno::RuntimeException )
+{
+ // #TODO #FIXME is behavior random or just default, maybe it depends
+ // on the parent object ( which we don't really take care of right now
+ if ( lValue == vba::Excel::Constants::xlColorIndexAutomatic )
+ lValue = 0;
+ mxFont->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharColor" ) ), ( uno::Any )mPalette.getPalette()->getByIndex( --lValue ) );
+}
+
+
+sal_Int32
+ScVbaFont::getColorIndex() throw ( uno::RuntimeException )
+{
+//XXX
+ sal_Int32 nColor = -1;
+ uno::Any aValue= mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharColor" ) ) );
+ aValue >>= nColor;
+ uno::Reference< container::XIndexAccess > xIndex = mPalette.getPalette();
+ sal_Int32 nElems = xIndex->getCount();
+ sal_Int32 nIndex = -1;
+ for ( sal_Int32 count=0; count<nElems; ++count )
+ {
+ sal_Int32 nPaletteColor;
+ xIndex->getByIndex( count ) >>= nPaletteColor;
+ if ( nPaletteColor == nColor )
+ {
+ nIndex = count + 1; // 1 based
+ break;
+ }
+ }
+ return nIndex;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////
+void
+ScVbaFont::setStandardFontSize( float fValue ) throw( uno::RuntimeException )
+{
+//XXX
+ //mxFont->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharSize" ) ), ( uno::Any )fValue );
+ throw uno::RuntimeException(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("setStandardFontSize not supported") ), uno::Reference< uno::XInterface >() );
+}
+
+
+float
+ScVbaFont::getStandardFontSize() throw ( uno::RuntimeException )
+{
+//XXX
+ throw uno::RuntimeException(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("getStandardFontSize not supported") ), uno::Reference< uno::XInterface >() );
+}
+
+
+void
+ScVbaFont::setStandardFont( const ::rtl::OUString &rString ) throw( uno::RuntimeException )
+{
+//XXX
+ //mxFont->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharSize" ) ), ( uno::Any )aValue );
+ throw uno::RuntimeException(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("setStandardFont not supported") ), uno::Reference< uno::XInterface >() );
+}
+
+
+::rtl::OUString
+ScVbaFont::getStandardFont() throw ( uno::RuntimeException )
+{
+//XXX
+ throw uno::RuntimeException(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("getStandardFont not supported") ), uno::Reference< uno::XInterface >() );
+}
+
+void
+ScVbaFont::setFontStyle( const ::rtl::OUString &rString ) throw( uno::RuntimeException )
+{
+//XXX
+ //mxFont->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharSize" ) ), ( uno::Any )aValue );
+ throw uno::RuntimeException(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("setFontStyle not supported") ), uno::Reference< uno::XInterface >() );
+}
+
+
+::rtl::OUString
+ScVbaFont::getFontStyle() throw ( uno::RuntimeException )
+{
+//XXX
+ throw uno::RuntimeException(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("getFontStyle not supported") ), uno::Reference< uno::XInterface >() );
+}
+
void
ScVbaFont::setBold( sal_Bool bValue ) throw( uno::RuntimeException )
{
@@ -22,27 +199,65 @@ sal_Bool
ScVbaFont::getBold() throw ( uno::RuntimeException )
{
double fValue;
- uno::Any aValue = mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharWeight" ) ) );
- aValue >>= fValue;
+ mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharWeight" ) ) ) >>= fValue;
return( fValue == awt::FontWeight::BOLD );
}
void
-ScVbaFont::setUnderline( sal_Bool bValue ) throw ( uno::RuntimeException )
+ScVbaFont::setUnderline( const uno::Any& aValue ) throw ( uno::RuntimeException )
{
- short nValue = awt::FontUnderline::NONE;
- if( bValue )
- nValue = awt::FontUnderline::SINGLE;
+ // default
+ sal_Int32 nValue = vba::Excel::XlUnderlineStyle::xlUnderlineStyleNone;
+ aValue >>= nValue;
+ switch ( nValue )
+ {
+// NOTE:: #TODO #FIMXE
+// xlUnderlineStyleDoubleAccounting & xlUnderlineStyleSingleAccounting
+// don't seem to be supported in Openoffice.
+// The import filter converts them to single or double underlines as appropriate
+// So, here at the moment we are similarly silently converting
+// xlUnderlineStyleSingleAccounting to xlUnderlineStyleSingle.
+
+ case vba::Excel::XlUnderlineStyle::xlUnderlineStyleNone:
+ nValue = awt::FontUnderline::NONE;
+ break;
+ case vba::Excel::XlUnderlineStyle::xlUnderlineStyleSingle:
+ case vba::Excel::XlUnderlineStyle::xlUnderlineStyleSingleAccounting:
+ nValue = awt::FontUnderline::SINGLE;
+ break;
+ case vba::Excel::XlUnderlineStyle::xlUnderlineStyleDouble:
+ case vba::Excel::XlUnderlineStyle::xlUnderlineStyleDoubleAccounting:
+ nValue = awt::FontUnderline::DOUBLE;
+ break;
+ default:
+ throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Unknown value for Underline")), uno::Reference< uno::XInterface >() );
+ }
+
mxFont->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharUnderline" ) ), ( uno::Any )nValue );
+
}
-sal_Bool
+uno::Any
ScVbaFont::getUnderline() throw ( uno::RuntimeException )
{
- short nValue = 0;
- uno::Any aValue = mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharUnderline" ) ) );
- aValue >>= nValue;
- return( nValue == awt::FontUnderline::SINGLE );
+ sal_Int32 nValue = awt::FontUnderline::NONE;
+ mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharUnderline" ) ) ) >>= nValue;
+ switch ( nValue )
+ {
+ case awt::FontUnderline::DOUBLE:
+ nValue = vba::Excel::XlUnderlineStyle::xlUnderlineStyleDouble;
+ break;
+ case awt::FontUnderline::SINGLE:
+ nValue = vba::Excel::XlUnderlineStyle::xlUnderlineStyleSingle;
+ break;
+ case awt::FontUnderline::NONE:
+ nValue = vba::Excel::XlUnderlineStyle::xlUnderlineStyleNone;
+ break;
+ default:
+ throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Unknown value retrieved for Underline") ), uno::Reference< uno::XInterface >() );
+
+ }
+ return uno::makeAny( nValue );
}
void
@@ -58,9 +273,8 @@ sal_Bool
ScVbaFont::getStrikethrough() throw ( uno::RuntimeException )
{
short nValue = 0;
- uno::Any aValue = mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharStrikeout" ) ) );
- aValue >>= nValue;
- return( nValue == awt::FontStrikeout::SINGLE );
+ mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharStrikeout" ) ) ) >>= nValue;
+ return( nValue == awt::FontStrikeout::SINGLE );
}
void
@@ -73,8 +287,7 @@ sal_Bool
ScVbaFont::getShadow() throw (uno::RuntimeException)
{
sal_Bool bValue = false;
- uno::Any aValue = mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharShadowed" ) ) );
- aValue >>= bValue;
+ mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharShadowed" ) ) ) >>= bValue;
return bValue;
}
@@ -91,8 +304,7 @@ sal_Bool
ScVbaFont::getItalic() throw ( uno::RuntimeException )
{
short nValue = 0;
- uno::Any aValue = mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharPosture" ) ) );
- aValue >>= nValue;
+ mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharPosture" ) ) ) >>= nValue;
return( nValue == awt::FontSlant_ITALIC );
}
@@ -106,7 +318,6 @@ ScVbaFont::setName( const ::rtl::OUString &rString ) throw ( uno::RuntimeExcepti
ScVbaFont::getName() throw ( uno::RuntimeException )
{
::rtl::OUString rString;
- uno::Any aValue = mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharFontName" ) ) );
- aValue >>= rString;
+ mxFont->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharFontName" ) ) ) >>= rString;
return rString;
}
diff --git a/scratch/sc-vba/vbaglobals.cxx b/scratch/sc-vba/vbaglobals.cxx
index e71f6963c..45acea73f 100644
--- a/scratch/sc-vba/vbaglobals.cxx
+++ b/scratch/sc-vba/vbaglobals.cxx
@@ -9,7 +9,7 @@
#include "vbaapplication.hxx"
#include "vbaworksheet.hxx"
#include "vbarange.hxx"
-
+#include <cppuhelper/bootstrap.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::org::openoffice;
@@ -34,10 +34,17 @@ namespace vbaobj
}
uno::Reference< XInterface > SAL_CALL create(
- Reference< XComponentContext > const & xContext )
+// Reference< XComponentContext > const & xContext )
+ Reference< lang::XMultiServiceFactory > const & xMultiContext )
SAL_THROW( () )
{
- OSL_TRACE("In create component for vbaglobals");
+ Reference< XComponentContext > xContext = ::cppu::defaultBootstrap_InitialComponentContext();
+ if ( !xContext.is() )
+ {
+ OSL_TRACE("Failed to obtain context" );
+ throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("BARRRRRRF no context")), uno::Reference< uno::XInterface >() );
+ }
+ OSL_TRACE("In create component for vbaglobals");
return static_cast< lang::XTypeProvider * >( new ScVbaGlobals( xContext ) );
}
diff --git a/scratch/sc-vba/vbahelper.cxx b/scratch/sc-vba/vbahelper.cxx
index ce33f665b..0d02e2044 100644
--- a/scratch/sc-vba/vbahelper.cxx
+++ b/scratch/sc-vba/vbahelper.cxx
@@ -3,6 +3,7 @@
#include <com/sun/star/frame/XDispatchProvider.hpp>
#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XDesktop.hpp>
#include <com/sun/star/frame/XController.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/lang/XMultiComponentFactory.hpp>
@@ -254,7 +255,16 @@ org::openoffice::getCurrentDocument() throw (uno::RuntimeException)
if ( sal_False == ( aModel >>= xModel ) ||
!xModel.is() )
{
- OSL_TRACE("Failed to extract model from thisComponent ");
+ // trying last gasp try the current component
+ uno::Reference<uno::XComponentContext > xCtx( ::cppu::defaultBootstrap_InitialComponentContext(), uno::UNO_QUERY_THROW );
+ uno::Reference<lang::XMultiComponentFactory > xSMgr( xCtx->getServiceManager(), uno::UNO_QUERY_THROW );
+ uno::Reference< frame::XDesktop > xDesktop (xSMgr->createInstanceWithContext(::rtl::OUString::createFromAscii("com.sun.star.frame.Desktop"), xCtx), uno::UNO_QUERY_THROW );
+ xModel.set( xDesktop->getCurrentComponent(), uno::UNO_QUERY );
+ if ( !xModel.is() )
+ {
+ throw uno::RuntimeException(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Can't extract model from basic ( its obviously not set yet ) therefore don't know the currently selected document") ), uno::Reference< uno::XInterface >() );
+ }
return xModel;
}
else
@@ -267,6 +277,11 @@ org::openoffice::getCurrentDocument() throw (uno::RuntimeException)
else
{
OSL_TRACE("Failed to get ThisComponent");
+ throw uno::RuntimeException(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "Can't determine the currently selected document") ),
+ uno::Reference< uno::XInterface >() );
}
return xModel;
}
diff --git a/scratch/sc-vba/vbainterior.cxx b/scratch/sc-vba/vbainterior.cxx
index aa3b31314..8f44019ea 100644
--- a/scratch/sc-vba/vbainterior.cxx
+++ b/scratch/sc-vba/vbainterior.cxx
@@ -12,62 +12,12 @@
#include <cppuhelper/queryinterface.hxx>
#include <svx/xtable.hxx>
-#include <document.hxx>
#include "vbainterior.hxx"
+#include "vbapalette.hxx"
using namespace ::com::sun::star;
using namespace ::org::openoffice;
static const rtl::OUString BACKCOLOR( RTL_CONSTASCII_USTRINGPARAM( "CellBackColor" ) );
-/** Standard EGA colors, bright. */
-#define EXC_PALETTE_EGA_COLORS_LIGHT \
- 0x000000, 0xFFFFFF, 0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0xFF00FF, 0x00FFFF
-/** Standard EGA colors, dark. */
-#define EXC_PALETTE_EGA_COLORS_DARK \
- 0x800000, 0x008000, 0x000080, 0x808000, 0x800080, 0x008080, 0xC0C0C0, 0x808080
-
-static const ColorData spnDefColorTable8[] =
-{
-/* 8 */ EXC_PALETTE_EGA_COLORS_LIGHT,
-/* 16 */ EXC_PALETTE_EGA_COLORS_DARK,
-/* 24 */ 0x9999FF, 0x993366, 0xFFFFCC, 0xCCFFFF, 0x660066, 0xFF8080, 0x0066CC, 0xCCCCFF,
-/* 32 */ 0x000080, 0xFF00FF, 0xFFFF00, 0x00FFFF, 0x800080, 0x800000, 0x008080, 0x0000FF,
-/* 40 */ 0x00CCFF, 0xCCFFFF, 0xCCFFCC, 0xFFFF99, 0x99CCFF, 0xFF99CC, 0xCC99FF, 0xFFCC99,
-/* 48 */ 0x3366FF, 0x33CCCC, 0x99CC00, 0xFFCC00, 0xFF9900, 0xFF6600, 0x666699, 0x969696,
-/* 56 */ 0x003366, 0x339966, 0x003300, 0x333300, 0x993300, 0x993366, 0x333399, 0x333333
-};
-
-typedef ::cppu::WeakImplHelper1< container::XIndexAccess > XIndexAccess_BASE;
-
-class DefaultPalette : public XIndexAccess_BASE
-{
-public:
- DefaultPalette(){}
-
- // Methods XIndexAccess
- virtual ::sal_Int32 SAL_CALL getCount() throw (uno::RuntimeException)
- {
- return sizeof(spnDefColorTable8) / sizeof(spnDefColorTable8[0]);
- }
-
- virtual uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException)
- {
- if ( Index < 0 || Index >= getCount() )
- throw lang::IndexOutOfBoundsException();
- return uno::makeAny( sal_Int32( spnDefColorTable8[ Index ] ) );
- }
-
- // Methods XElementAcess
- virtual uno::Type SAL_CALL getElementType() throw (uno::RuntimeException)
- {
- return ::getCppuType( (sal_Int32*)0 );
- }
- virtual ::sal_Bool SAL_CALL hasElements() throw (uno::RuntimeException)
- {
- return sal_True;
- }
-
-};
-
ScVbaInterior::ScVbaInterior( const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< beans::XPropertySet >& xProps, ScDocument* pScDoc ) throw ( lang::IllegalArgumentException) : m_xContext(xContext),m_xProps(xProps), m_pScDoc( pScDoc )
{
@@ -94,17 +44,9 @@ ScVbaInterior::setColor( const uno::Any& _color ) throw (uno::RuntimeException)
uno::Reference< container::XIndexAccess >
ScVbaInterior::getPalette()
{
- uno::Reference< container::XIndexAccess > xIndex;
SfxObjectShell* pShell = m_pScDoc->GetDocumentShell();
- uno::Reference< beans::XPropertySet > xProps;
- if ( pShell )
- xProps.set( pShell->GetModel(), uno::UNO_QUERY_THROW );
- else
- throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Can't extract palette, no doc shell" ) ), uno::Reference< uno::XInterface >() );
- xIndex.set( xProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ColorPalette") ) ), uno::UNO_QUERY );
- if ( !xIndex.is() )
- return new DefaultPalette();
- return xIndex;
+ ScVbaPalette aPalette( pShell );
+ return aPalette.getPalette();
}
void SAL_CALL
@@ -112,6 +54,9 @@ ScVbaInterior::setColorIndex( const css::uno::Any& _colorindex ) throw (css::uno
{
sal_Int32 nIndex = 0;
_colorindex >>= nIndex;
+ // #FIXME xlColorIndexAutomatic & xlColorIndexNone are not really
+ // handled properly here
+
if ( nIndex && ( ( nIndex == vba::Excel::Constants::xlColorIndexAutomatic ) || ( nIndex == vba::Excel::Constants::xlColorIndexNone ) ) )
{
setColor( uno::makeAny( (sal_Int32)-1 ) ); // default
diff --git a/scratch/sc-vba/vbapalette.cxx b/scratch/sc-vba/vbapalette.cxx
new file mode 100644
index 000000000..f8ea1058a
--- /dev/null
+++ b/scratch/sc-vba/vbapalette.cxx
@@ -0,0 +1,72 @@
+#include "vbapalette.hxx"
+#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/beans/XPropertySet.hpp>
+
+
+using namespace ::com::sun::star;
+using namespace ::org::openoffice;
+
+/** Standard EGA colors, bright. */
+#define EXC_PALETTE_EGA_COLORS_LIGHT \
+ 0x000000, 0xFFFFFF, 0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0xFF00FF, 0x00FFFF
+/** Standard EGA colors, dark. */
+#define EXC_PALETTE_EGA_COLORS_DARK \
+ 0x800000, 0x008000, 0x000080, 0x808000, 0x800080, 0x008080, 0xC0C0C0, 0x808080
+
+static const ColorData spnDefColorTable8[] =
+{
+/* 8 */ EXC_PALETTE_EGA_COLORS_LIGHT,
+/* 16 */ EXC_PALETTE_EGA_COLORS_DARK,
+/* 24 */ 0x9999FF, 0x993366, 0xFFFFCC, 0xCCFFFF, 0x660066, 0xFF8080, 0x0066CC, 0xCCCCFF,
+/* 32 */ 0x000080, 0xFF00FF, 0xFFFF00, 0x00FFFF, 0x800080, 0x800000, 0x008080, 0x0000FF,
+/* 40 */ 0x00CCFF, 0xCCFFFF, 0xCCFFCC, 0xFFFF99, 0x99CCFF, 0xFF99CC, 0xCC99FF, 0xFFCC99,
+/* 48 */ 0x3366FF, 0x33CCCC, 0x99CC00, 0xFFCC00, 0xFF9900, 0xFF6600, 0x666699, 0x969696,
+/* 56 */ 0x003366, 0x339966, 0x003300, 0x333300, 0x993300, 0x993366, 0x333399, 0x333333
+};
+
+typedef ::cppu::WeakImplHelper1< container::XIndexAccess > XIndexAccess_BASE;
+
+class DefaultPalette : public XIndexAccess_BASE
+{
+public:
+ DefaultPalette(){}
+
+ // Methods XIndexAccess
+ virtual ::sal_Int32 SAL_CALL getCount() throw (uno::RuntimeException)
+ {
+ return sizeof(spnDefColorTable8) / sizeof(spnDefColorTable8[0]);
+ }
+
+ virtual uno::Any SAL_CALL getByIndex( ::sal_Int32 Index ) throw (lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException)
+ {
+ if ( Index < 0 || Index >= getCount() )
+ throw lang::IndexOutOfBoundsException();
+ return uno::makeAny( sal_Int32( spnDefColorTable8[ Index ] ) );
+ }
+
+ // Methods XElementAcess
+ virtual uno::Type SAL_CALL getElementType() throw (uno::RuntimeException)
+ {
+ return ::getCppuType( (sal_Int32*)0 );
+ }
+ virtual ::sal_Bool SAL_CALL hasElements() throw (uno::RuntimeException)
+ {
+ return sal_True;
+ }
+
+};
+
+uno::Reference< container::XIndexAccess >
+ScVbaPalette::getPalette()
+{
+ uno::Reference< container::XIndexAccess > xIndex;
+ uno::Reference< beans::XPropertySet > xProps;
+ if ( m_pShell )
+ xProps.set( m_pShell->GetModel(), uno::UNO_QUERY_THROW );
+ else
+ throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Can't extract palette, no doc shell" ) ), uno::Reference< uno::XInterface >() );
+ xIndex.set( xProps->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ColorPalette") ) ), uno::UNO_QUERY );
+ if ( !xIndex.is() )
+ return new DefaultPalette();
+ return xIndex;
+}
diff --git a/scratch/sc-vba/vbapalette.hxx b/scratch/sc-vba/vbapalette.hxx
new file mode 100644
index 000000000..f74d60698
--- /dev/null
+++ b/scratch/sc-vba/vbapalette.hxx
@@ -0,0 +1,20 @@
+#ifndef SC_VBAPALETTE_HXX
+#define SC_VBAPALETTE_HXX
+
+#include "vbahelper.hxx"
+#include <document.hxx>
+#include <com/sun/star/container/XIndexAccess.hpp>
+
+class ScVbaPalette
+{
+private:
+ SfxObjectShell* m_pShell;
+public:
+ ScVbaPalette( SfxObjectShell* pShell ) : m_pShell( pShell ){}
+ // if no palette available e.g. because the document doesn't have a
+ // palette defined then a default palette will be returned.
+ css::uno::Reference< css::container::XIndexAccess > getPalette();
+};
+
+#endif //SC_VBAPALETTE_HXX
+
diff --git a/scratch/sc-vba/vbaworkbook.cxx b/scratch/sc-vba/vbaworkbook.cxx
index 5b0c480b0..52bca1e77 100644
--- a/scratch/sc-vba/vbaworkbook.cxx
+++ b/scratch/sc-vba/vbaworkbook.cxx
@@ -6,6 +6,7 @@
#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
#include <com/sun/star/frame/XStorable.hpp>
#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
#include "vbaworksheet.hxx"
#include "vbaworksheets.hxx"
@@ -49,8 +50,24 @@ public:
::rtl::OUString
ScVbaWorkbook::getName() throw (uno::RuntimeException)
{
- INetURLObject aURL( getModel()->getURL() );
- return aURL.GetLastName();
+ rtl::OUString sName = getModel()->getURL();
+ if ( sName.getLength() )
+ {
+
+ INetURLObject aURL( getModel()->getURL() );
+ sName = aURL.GetLastName();
+ }
+ else
+ {
+ const static rtl::OUString sTitle( RTL_CONSTASCII_USTRINGPARAM("Title" ) );
+ // process "UntitledX - $(PRODUCTNAME)"
+ uno::Reference< frame::XFrame > xFrame( getModel()->getCurrentController()->getFrame(), uno::UNO_QUERY_THROW );
+ uno::Reference< beans::XPropertySet > xProps( xFrame, uno::UNO_QUERY_THROW );
+ xProps->getPropertyValue(sTitle ) >>= sName;
+ sal_Int32 pos = 0;
+ sName = sName.getToken(0,' ',pos);
+ }
+ return sName;
}
::rtl::OUString
ScVbaWorkbook::getPath() throw (uno::RuntimeException)
diff --git a/scratch/sc-vba/vbaworksheet.hxx b/scratch/sc-vba/vbaworksheet.hxx
index bfbdf7876..b84176ee3 100644
--- a/scratch/sc-vba/vbaworksheet.hxx
+++ b/scratch/sc-vba/vbaworksheet.hxx
@@ -44,8 +44,8 @@ public:
// Attributes
virtual ::rtl::OUString SAL_CALL getName() throw (css::uno::RuntimeException);
virtual void SAL_CALL setName( const ::rtl::OUString &rName ) throw (css::uno::RuntimeException);
- virtual sal_Bool getVisible() throw (css::uno::RuntimeException);
- virtual void setVisible( sal_Bool bVisible ) throw (css::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL getVisible() throw (css::uno::RuntimeException);
+ virtual void SAL_CALL setVisible( sal_Bool bVisible ) throw (css::uno::RuntimeException);
virtual ::sal_Int32 SAL_CALL getStandardWidth() throw (css::uno::RuntimeException);
virtual ::sal_Int32 SAL_CALL getStandardHeight() throw (css::uno::RuntimeException);
virtual ::sal_Bool SAL_CALL getProtectionMode() throw (css::uno::RuntimeException);
@@ -72,8 +72,8 @@ public:
virtual void SAL_CALL CheckSpelling( const css::uno::Any& CustomDictionary,const css::uno::Any& IgnoreUppercase,const css::uno::Any& AlwaysSuggest, const css::uno::Any& SpellingLang ) throw (css::uno::RuntimeException);
// Hacks (?)
virtual css::uno::Reference< oo::vba::XRange > SAL_CALL Cells( const css::uno::Any &nRow, const css::uno::Any &nCol ) throw (css::uno::RuntimeException);
- virtual css::uno::Reference< oo::vba::XRange > Rows(const css::uno::Any& aIndex ) throw (css::uno::RuntimeException);
- virtual css::uno::Reference< oo::vba::XRange > Columns(const css::uno::Any& aIndex ) throw (css::uno::RuntimeException);
+ virtual css::uno::Reference< oo::vba::XRange > SAL_CALL Rows(const css::uno::Any& aIndex ) throw (css::uno::RuntimeException);
+ virtual css::uno::Reference< oo::vba::XRange > SAL_CALL Columns(const css::uno::Any& aIndex ) throw (css::uno::RuntimeException);
virtual css::uno::Any SAL_CALL Evaluate( const ::rtl::OUString& Name ) throw (css::uno::RuntimeException);
virtual css::uno::Any SAL_CALL PivotTables( const css::uno::Any& Index ) throw (css::uno::RuntimeException);
diff --git a/scratch/sc-vba/vbaworksheets.cxx b/scratch/sc-vba/vbaworksheets.cxx
index 2a460ebbf..040079f4b 100644
--- a/scratch/sc-vba/vbaworksheets.cxx
+++ b/scratch/sc-vba/vbaworksheets.cxx
@@ -39,7 +39,7 @@ public:
virtual uno::Any SAL_CALL nextElement( ) throw (container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException)
{
uno::Reference< sheet::XSpreadsheet > xSheet( m_xEnumeration->nextElement(), uno::UNO_QUERY_THROW );
- return makeAny( uno::Reference< vba::XWorksheet > ( new ScVbaWorksheet( m_xContext, xSheet, m_xModel ) ) );
+ return uno::makeAny( uno::Reference< vba::XWorksheet > ( new ScVbaWorksheet( m_xContext, xSheet, m_xModel ) ) );
}
};
@@ -75,7 +75,7 @@ uno::Any
ScVbaWorksheets::createCollectionObject( const css::uno::Any& aSource )
{
uno::Reference< sheet::XSpreadsheet > xSheet( aSource, uno::UNO_QUERY );
- return makeAny( uno::Reference< vba::XWorksheet > ( new ScVbaWorksheet( m_xContext, xSheet, mxModel ) ) );
+ return uno::makeAny( uno::Reference< vba::XWorksheet > ( new ScVbaWorksheet( m_xContext, xSheet, mxModel ) ) );
}
// XWorksheets
diff --git a/src/Novell.dic b/src/Novell.dic
index 1e13748c9..e778f7cd7 100644
--- a/src/Novell.dic
+++ b/src/Novell.dic
@@ -14,6 +14,7 @@ NetIdentity
NetMail
NetStorage
NetWare
+Novell
OnDemand
PolyServe
SecretStore
@@ -29,4 +30,6 @@ iFolder
iManager
iPrint
Ximian
-SUSE
+SLES
+SLED
+SUSE \ No newline at end of file