diff options
author | nobody <nobody@gnome.org> | 2006-06-01 15:12:32 +0000 |
---|---|---|
committer | nobody <nobody@gnome.org> | 2006-06-01 15:12:32 +0000 |
commit | 29d71d6c36ee88acb5188e4bba74bc6f0ef7e336 (patch) | |
tree | 5e652e4287ecb407db4bb4e575e1773b42f51fcc | |
parent | b3c82fb1afa5f919a04e62c282879afa231b2abf (diff) |
This commit was manufactured by cvs2svn to create tagOOO_BUILD_2_0_2_12
'OOO_BUILD_2_0_2_12'.
89 files changed, 7269 insertions, 1643 deletions
@@ -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, µ) < 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, µ) < 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 |