[Libreoffice-commits] .: 13 commits - cui/source forms/source setup_native/source wizards/com xmlsecurity/source

Petr Mladek pmladek at kemper.freedesktop.org
Wed Apr 6 12:25:42 PDT 2011


 cui/source/dialogs/about.cxx                                        |  299 ++++------
 cui/source/dialogs/about.hrc                                        |   12 
 cui/source/dialogs/about.src                                        |   40 -
 cui/source/inc/about.hxx                                            |   29 
 forms/source/misc/services.cxx                                      |    2 
 setup_native/source/win32/customactions/reg4allmsdoc/exports.dxp    |    1 
 setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx |  136 ++++
 wizards/com/sun/star/wizards/letter/LocaleCodes.java                |    2 
 xmlsecurity/source/xmlsec/mscrypt/xsec_mscrypt.cxx                  |   75 --
 xmlsecurity/source/xmlsec/nss/xsec_nss.cxx                          |   75 --
 10 files changed, 320 insertions(+), 351 deletions(-)

New commits:
commit 6a4efb50ec0415752e38123f29581492bd052d42
Merge: 7d1b5c8... 8708342...
Author: Petr Mladek <pmladek at suse.cz>
Date:   Wed Apr 6 19:31:35 2011 +0200

    Merge remote-tracking branch 'origin/libreoffice-3-4'
    
    Conflicts:
    	cui/source/options/optchart.cxx

diff --cc setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx
index 580fdd1,e71bf10..eac8217
--- a/setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx
+++ b/setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx
@@@ -213,6 -213,9 +213,9 @@@ static LONG DeleteSubKeyTree( HKEY Root
      return rc;
  }
  
+ // Unused
 -#if 0 
++#if 0
+ 
  //----------------------------------------------------------
  static BOOL RemoveExtensionInRegistry( LPCSTR lpSubKey )
  {
@@@ -530,4 -592,78 +592,78 @@@ extern "C" UINT __stdcall DeleteRegiste
      return ERROR_SUCCESS;
  }
  
+ #endif
+ 
+ //----------------------------------------------------------
+ static void restoreOldRegistration( LPCSTR lpSubKey )
+ {
+     BOOL    bRet = false;
+     HKEY    hKey = NULL;
+     LONG    lResult = RegOpenKeyExA( HKEY_CLASSES_ROOT, lpSubKey, 0,
+                                      KEY_QUERY_VALUE|KEY_SET_VALUE, &hKey );
+ 
+     if ( ERROR_SUCCESS == lResult )
+     {
+         CHAR    szBuffer[1024];
+         DWORD   nSize = sizeof( szBuffer );
+ 
+         lResult = RegQueryValueExA( hKey, "OOoBackupAssociation", NULL, NULL,
+                                     (LPBYTE)szBuffer, &nSize );
+         if ( ERROR_SUCCESS == lResult )
+         {
+             HKEY hKey2 = NULL;
+             lResult = RegOpenKeyExA( HKEY_CLASSES_ROOT, szBuffer, 0,
+                                      KEY_QUERY_VALUE, &hKey2 );
+             if ( ERROR_SUCCESS == lResult )
+             {
+                 CHAR   szBuffer2[1024];
+                 DWORD  nSize2 = sizeof( szBuffer2 );
+ 
+                 lResult = RegQueryValueExA( hKey2, "", NULL, NULL, (LPBYTE)szBuffer2, &nSize2 );
+                 if ( ERROR_SUCCESS == lResult )
+                 {
+                     CHAR   szBuffer3[1024];
+                     DWORD  nSize3 = sizeof( szBuffer3 );
+ 
+                     // Try to verify that the old association is OK to restore
+                     lResult = RegQueryValueExA( hKey, "OOoBackupAssociationDeref", NULL, NULL,
+                                                 (LPBYTE)szBuffer3, &nSize3 );
+                     if ( ERROR_SUCCESS == lResult )
+                     {
+                         if ( nSize2 == nSize3 && strcmp (szBuffer2, szBuffer3) == 0)
+                         {
+                             // Yep. So restore it
+                             RegSetValueExA( hKey, "", 0, REG_SZ, (LPBYTE)szBuffer, nSize );
+                         }
+                     }
+                 }
+                 RegCloseKey( hKey2 );
+             }
+             RegDeleteValueA( hKey, "OOoBackupAssociation" );
+         }
+         RegDeleteValueA( hKey, "OOoBackupAssociationDeref" );
+         RegCloseKey( hKey );
+     }
+ }
+ 
+ //----------------------------------------------------------
+ //
+ // This function is not in OO.o. We call this from the
+ // Restoreregallmsdocdll custom action.
+ //
+ extern "C" UINT __stdcall RestoreRegAllMSDoc( MSIHANDLE /*handle*/ )
 -{         
++{
+     OutputDebugStringFormat( "RestoreRegAllMSDoc\n" );
+ 
+     int nIndex = 0;
+     while ( g_Extensions[nIndex] != 0 )
+     {
+         restoreOldRegistration( g_Extensions[nIndex] );
+         ++nIndex;
+     }
+ 
+ 
+     return ERROR_SUCCESS;
+ }
+ 
  /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 87083427605957c5c31a5537ed1f65e08356078c
Merge: f323e54... 0bdca5e...
Author: Petr Mladek <pmladek at suse.cz>
Date:   Tue Apr 5 17:34:42 2011 +0200

    Merge remote-tracking branch 'origin/libreoffice-3-3' into libreoffice-3-4

commit f323e54028f9c9015dee3d5018838f8c29c181ec
Author: Tor Lillqvist <tlillqvist at novell.com>
Date:   Tue Apr 5 16:32:59 2011 +0300

    bnc#530872: Save old associations for MS doc types when installing
    
    Then restore them, if still relevant, when uninstalling LibreOffice.
    
    git log from build repository:
    commit 1737ec9b6675cc7e30df03fa5537012a429425bb
    Author: Tor Lillqvist <tlillqvist at novell.com>
    Date:   Thu Oct 14 15:28:55 2010 +0300
    
        Make win32-restore-associations.diff apply again
    
    commit 72a25ab4a055cd1d3cf5aec627cfe120113bfb34
    Author: Tor Lillqvist <tlillqvist at novell.com>
    Date:   Thu May 20 10:34:24 2010 +0300
    
        Make patches apply for a Windows build
    
    commit d635f716a75d8c1648eab0c1d598b390be8c4f07
    Author: Tor Lillqvist <tlillqvist at novell.com>
    Date:   Thu Sep 17 22:16:40 2009 +0300
    
        Add new patch to restore MSO file associations on uninstall
    
        * patches/dev300/apply: Add it to Win32Only
    
        * patches/dev300/win32-restore-associations.diff: New file. Save
          previous associations of the MS Office file formats on installation
          of OOo. On uninstallation of OOo, restore them. Still a bit
          experimental, but seems to work.

diff --git a/setup_native/source/win32/customactions/reg4allmsdoc/exports.dxp b/setup_native/source/win32/customactions/reg4allmsdoc/exports.dxp
index 566981b..54ebb2f 100644
--- a/setup_native/source/win32/customactions/reg4allmsdoc/exports.dxp
+++ b/setup_native/source/win32/customactions/reg4allmsdoc/exports.dxp
@@ -1,3 +1,4 @@
 FindRegisteredExtensions
 LookForRegisteredExtensions
-RegisterSomeExtensions
\ No newline at end of file
+RegisterSomeExtensions
+RestoreRegAllMSDoc
diff --git a/setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx b/setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx
index 580fdd1..e71bf10 100644
--- a/setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx
+++ b/setup_native/source/win32/customactions/reg4allmsdoc/reg4allmsi.cxx
@@ -213,6 +213,9 @@ static LONG DeleteSubKeyTree( HKEY RootKey, LPCSTR lpKey )
     return rc;
 }
 
+// Unused
+#if 0 
+
 //----------------------------------------------------------
 static BOOL RemoveExtensionInRegistry( LPCSTR lpSubKey )
 {
@@ -263,6 +266,8 @@ static BOOL RemoveExtensionInRegistry( LPCSTR lpSubKey )
     return ( ERROR_SUCCESS == lResult );
 }
 
+#endif
+
 //----------------------------------------------------------
 bool GetMsiProp( MSIHANDLE handle, LPCSTR name, /*out*/std::string& value )
 {
@@ -307,11 +312,59 @@ static void registerForExtension( MSIHANDLE handle, const int nIndex, bool bRegi
 }
 
 //----------------------------------------------------------
+static void saveOldRegistration( LPCSTR lpSubKey )
+{
+    BOOL    bRet = false;
+    HKEY    hKey = NULL;
+    LONG    lResult = RegOpenKeyExA( HKEY_CLASSES_ROOT, lpSubKey, 0,
+                                     KEY_QUERY_VALUE|KEY_SET_VALUE, &hKey );
+
+    if ( ERROR_SUCCESS == lResult )
+    {
+        CHAR    szBuffer[1024];
+        DWORD   nSize = sizeof( szBuffer );
+
+        lResult = RegQueryValueExA( hKey, "", NULL, NULL, (LPBYTE)szBuffer, &nSize );
+        if ( ERROR_SUCCESS == lResult )
+        {
+            szBuffer[nSize] = '\0';
+
+            // No need to save assocations for our own types
+            if ( strncmp( szBuffer, "OpenOffice.org.", 15 ) != 0 )
+            {
+                // Save the old association
+                RegSetValueExA( hKey, "OOoBackupAssociation", 0,
+                                REG_SZ, (LPBYTE)szBuffer, nSize );
+                // Also save what the old association means, just so we can try to verify
+                // if/when restoring it that the old application still exists
+                HKEY hKey2 = NULL;
+                lResult = RegOpenKeyExA( HKEY_CLASSES_ROOT, szBuffer, 0,
+                                         KEY_QUERY_VALUE, &hKey2 );
+                if ( ERROR_SUCCESS == lResult )
+                {
+                    nSize = sizeof( szBuffer );
+                    lResult = RegQueryValueExA( hKey2, "", NULL, NULL, (LPBYTE)szBuffer, &nSize );
+                    if ( ERROR_SUCCESS == lResult )
+                    {
+                        RegSetValueExA( hKey, "OOoBackupAssociationDeref", 0,
+                                        REG_SZ, (LPBYTE)szBuffer, nSize );
+                    }
+                    RegCloseKey( hKey2 );
+                }
+            }
+        }
+        RegCloseKey( hKey );
+    }
+}
+
+//----------------------------------------------------------
 static void registerForExtensions( MSIHANDLE handle, BOOL bRegisterAll )
 { // Check all file extensions
     int nIndex = 0;
     while ( g_Extensions[nIndex] != 0 )
     {
+        saveOldRegistration( g_Extensions[nIndex] );
+
         BOOL bRegister = bRegisterAll || CheckExtensionInRegistry( g_Extensions[nIndex] );
         if ( bRegister )
             registerForExtension( handle, nIndex, true );
@@ -478,6 +531,10 @@ extern "C" UINT __stdcall RegisterSomeExtensions( MSIHANDLE handle )
 }
 
 //----------------------------------------------------------
+//
+// This is the (slightly misleadinly named) entry point for the
+// custom action called Regallmsdocdll.
+//
 extern "C" UINT __stdcall FindRegisteredExtensions( MSIHANDLE handle )
 {
     if ( IsSetMsiProp( handle, "FILETYPEDIALOGUSED" ) )
@@ -514,7 +571,12 @@ extern "C" UINT __stdcall FindRegisteredExtensions( MSIHANDLE handle )
     return ERROR_SUCCESS;
 }
 
+#if 0
+
 //----------------------------------------------------------
+//
+// This entry is not called for any custom action.
+//
 extern "C" UINT __stdcall DeleteRegisteredExtensions( MSIHANDLE /*handle*/ )
 {         
     OutputDebugStringFormat( "DeleteRegisteredExtensions\n" );
@@ -530,4 +592,78 @@ extern "C" UINT __stdcall DeleteRegisteredExtensions( MSIHANDLE /*handle*/ )
     return ERROR_SUCCESS;
 }
 
+#endif
+
+//----------------------------------------------------------
+static void restoreOldRegistration( LPCSTR lpSubKey )
+{
+    BOOL    bRet = false;
+    HKEY    hKey = NULL;
+    LONG    lResult = RegOpenKeyExA( HKEY_CLASSES_ROOT, lpSubKey, 0,
+                                     KEY_QUERY_VALUE|KEY_SET_VALUE, &hKey );
+
+    if ( ERROR_SUCCESS == lResult )
+    {
+        CHAR    szBuffer[1024];
+        DWORD   nSize = sizeof( szBuffer );
+
+        lResult = RegQueryValueExA( hKey, "OOoBackupAssociation", NULL, NULL,
+                                    (LPBYTE)szBuffer, &nSize );
+        if ( ERROR_SUCCESS == lResult )
+        {
+            HKEY hKey2 = NULL;
+            lResult = RegOpenKeyExA( HKEY_CLASSES_ROOT, szBuffer, 0,
+                                     KEY_QUERY_VALUE, &hKey2 );
+            if ( ERROR_SUCCESS == lResult )
+            {
+                CHAR   szBuffer2[1024];
+                DWORD  nSize2 = sizeof( szBuffer2 );
+
+                lResult = RegQueryValueExA( hKey2, "", NULL, NULL, (LPBYTE)szBuffer2, &nSize2 );
+                if ( ERROR_SUCCESS == lResult )
+                {
+                    CHAR   szBuffer3[1024];
+                    DWORD  nSize3 = sizeof( szBuffer3 );
+
+                    // Try to verify that the old association is OK to restore
+                    lResult = RegQueryValueExA( hKey, "OOoBackupAssociationDeref", NULL, NULL,
+                                                (LPBYTE)szBuffer3, &nSize3 );
+                    if ( ERROR_SUCCESS == lResult )
+                    {
+                        if ( nSize2 == nSize3 && strcmp (szBuffer2, szBuffer3) == 0)
+                        {
+                            // Yep. So restore it
+                            RegSetValueExA( hKey, "", 0, REG_SZ, (LPBYTE)szBuffer, nSize );
+                        }
+                    }
+                }
+                RegCloseKey( hKey2 );
+            }
+            RegDeleteValueA( hKey, "OOoBackupAssociation" );
+        }
+        RegDeleteValueA( hKey, "OOoBackupAssociationDeref" );
+        RegCloseKey( hKey );
+    }
+}
+
+//----------------------------------------------------------
+//
+// This function is not in OO.o. We call this from the
+// Restoreregallmsdocdll custom action.
+//
+extern "C" UINT __stdcall RestoreRegAllMSDoc( MSIHANDLE /*handle*/ )
+{         
+    OutputDebugStringFormat( "RestoreRegAllMSDoc\n" );
+
+    int nIndex = 0;
+    while ( g_Extensions[nIndex] != 0 )
+    {
+        restoreOldRegistration( g_Extensions[nIndex] );
+        ++nIndex;
+    }
+
+
+    return ERROR_SUCCESS;
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 34a48f3809c534a47c65d22a7db6b52d6ff46dee
Author: Michael Meeks <michael.meeks at novell.com>
Date:   Mon Apr 4 18:06:02 2011 +0100

    restore the build-id setup code, and clean hrc file

diff --git a/cui/source/dialogs/about.cxx b/cui/source/dialogs/about.cxx
index 2a09ff9..cd2e416 100644
--- a/cui/source/dialogs/about.cxx
+++ b/cui/source/dialogs/about.cxx
@@ -72,11 +72,70 @@ Image SfxApplication::GetApplicationLogo()
     return Image( aBitmap );
 }
 
+/* intense magic to get strong version information */
 static String
-GetVersionStr()
+GetBuildId()
 {
-    // FIXME: fill me in from sfx2/source/appl/appserv.cxx code ...
-    return String();
+    const String sCWSSchema( String::CreateFromAscii( "[CWS:" ) );
+    rtl::OUString sDefault;
+    String sBuildId( utl::Bootstrap::getBuildIdData( sDefault ) );
+    OSL_ENSURE( sBuildId.Len() > 0, "No BUILDID in bootstrap file" );
+    if ( sBuildId.Len() > 0 && sBuildId.Search( sCWSSchema ) == STRING_NOTFOUND )
+    {
+        // no cws part in brand buildid -> try basis buildid
+        rtl::OUString sBasisBuildId( DEFINE_CONST_OUSTRING("${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version") ":buildid}" ) );
+        rtl::Bootstrap::expandMacros( sBasisBuildId );
+        sal_Int32 nIndex = sBasisBuildId.indexOf( sCWSSchema );
+        if ( nIndex != -1 )
+            sBuildId += String( sBasisBuildId.copy( nIndex ) );
+    }
+
+    String sProductSource( utl::Bootstrap::getProductSource( sDefault ) );
+    OSL_ENSURE( sProductSource.Len() > 0, "No ProductSource in bootstrap file" );
+
+    // the product source is something like "DEV300", where the
+    // build id is something like "300m12(Build:12345)". For better readability,
+    // strip the duplicate UPD ("300").
+    if ( sProductSource.Len() )
+    {
+        bool bMatchingUPD =
+            ( sProductSource.Len() >= 3 )
+            &&  ( sBuildId.Len() >= 3 )
+            &&  ( sProductSource.Copy( sProductSource.Len() - 3 ) == sBuildId.Copy( 0, 3 ) );
+        OSL_ENSURE( bMatchingUPD, "BUILDID and ProductSource do not match in their UPD" );
+        if ( bMatchingUPD )
+            sProductSource = sProductSource.Copy( 0, sProductSource.Len() - 3 );
+
+        // prepend the product source
+        sBuildId.Insert( sProductSource, 0 );
+    }
+
+    // Version information (in about box) (#i94693#)
+    /* if the build ids of the basis or ure layer are different from the build id
+     * of the brand layer then show them */
+    rtl::OUString aBasisProductBuildId( DEFINE_CONST_OUSTRING("${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version") ":ProductBuildid}" ) );
+    rtl::Bootstrap::expandMacros( aBasisProductBuildId );
+    rtl::OUString aUREProductBuildId( DEFINE_CONST_OUSTRING("${$URE_BIN_DIR/" SAL_CONFIGFILE("version") ":ProductBuildid}" ) );
+    rtl::Bootstrap::expandMacros( aUREProductBuildId );
+    if ( sBuildId.Search( String( aBasisProductBuildId ) ) == STRING_NOTFOUND
+         || sBuildId.Search( String( aUREProductBuildId ) ) == STRING_NOTFOUND )
+    {
+        String sTemp( '-' );
+        sTemp += String( aBasisProductBuildId );
+        sTemp += '-';
+        sTemp += String( aUREProductBuildId );
+        sBuildId.Insert( sTemp, sBuildId.Search( ')' ) );
+    }
+
+    // the build id format is "milestone(build)[cwsname]". For readability, it would
+    // be nice to have some more spaces in there.
+    xub_StrLen nPos = 0;
+    if ( ( nPos = sBuildId.Search( sal_Unicode( '(' ) ) ) != STRING_NOTFOUND )
+        sBuildId.Insert( sal_Unicode( ' ' ), nPos );
+    if ( ( nPos = sBuildId.Search( sal_Unicode( '[' ) ) ) != STRING_NOTFOUND )
+        sBuildId.Insert( sal_Unicode( ' ' ), nPos );
+
+    return sBuildId;
 }
 
 AboutDialog::AboutDialog( Window* pParent, const ResId& rId) :
@@ -111,7 +170,7 @@ AboutDialog::AboutDialog( Window* pParent, const ResId& rId) :
     String sVersion = aVersionTextStr;
     sVersion.SearchAndReplaceAscii( "$(VER)", Application::GetDisplayName() );
     sVersion += '\n';
-    sVersion += GetVersionStr();
+    sVersion += GetBuildId();
 #ifdef BUILD_VER_STRING
     String aBuildString( DEFINE_CONST_UNICODE( BUILD_VER_STRING ) );
     sVersion += '\n';
diff --git a/cui/source/dialogs/about.hrc b/cui/source/dialogs/about.hrc
index b98d03f..7a74954 100644
--- a/cui/source/dialogs/about.hrc
+++ b/cui/source/dialogs/about.hrc
@@ -27,8 +27,12 @@
 
 #include <sfx2/sfx.hrc>
 
-#define ABOUT_BTN_OK                        1
-#define ABOUT_FTXT_VERSION                  1
-#define ABOUT_STR_ACCEL                     3
-#define ABOUT_FTXT_COPYRIGHT					4
+#define ABOUT_BTN_OK		1
+#define ABOUT_FTXT_VERSION	2
+#define ABOUT_STR_ACCEL		3
+#define ABOUT_FTXT_COPYRIGHT	4
 
+#define ABOUT_FTXT_LINK		5
+#define ABOUT_STR_VERSION	6
+#define ABOUT_STR_COPYRIGHT	7
+#define ABOUT_STR_LINK		8
commit dac9c2c8642c4edeff10a3250f96d1a86e6a2640
Author: Michael Meeks <michael.meeks at novell.com>
Date:   Mon Apr 4 18:02:18 2011 +0100

    Switch to the LibreOffice about dialog instead

diff --git a/cui/source/dialogs/about.cxx b/cui/source/dialogs/about.cxx
index a1de647..2a09ff9 100644
--- a/cui/source/dialogs/about.cxx
+++ b/cui/source/dialogs/about.cxx
@@ -1,7 +1,8 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 /*************************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * Copyright 2000, 2010 Oracle and/or its affiliates.
  *
  * OpenOffice.org - a multi-platform office productivity suite
@@ -25,29 +26,37 @@
  *
  ************************************************************************/
 
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_cui.hxx"
-
 // include ---------------------------------------------------------------
 
 #include <vcl/svapp.hxx>
 #include <vcl/msgbox.hxx>
+
 #include <tools/stream.hxx>
 #include <tools/urlobj.hxx>
 #include <rtl/bootstrap.hxx>
 #include <unotools/configmgr.hxx>
 #include <unotools/bootstrap.hxx>
 #include <com/sun/star/uno/Any.h>
+#include <unotools/configmgr.hxx>
+#include <vcl/svapp.hxx>
 #include <vcl/graph.hxx>
 #include <svtools/filter.hxx>
+
+#include "com/sun/star/system/SystemShellExecuteFlags.hpp"
+#include "com/sun/star/system/XSystemShellExecute.hpp"
+#include <comphelper/processfactory.hxx>
+#include "comphelper/anytostring.hxx"
+#include "cppuhelper/exc_hlp.hxx"
+#include "cppuhelper/bootstrap.hxx"
+
 #include <sfx2/sfxuno.hxx>
+#include <sfx2/sfxcommands.h>
 #include "about.hxx"
+#include "about.hrc"
 #include <sfx2/sfxdefs.hxx>
 #include <sfx2/app.hxx>
-#include <sfx2/sfxcommands.h>
-#include "about.hrc"
-#include <dialmgr.hxx>
-#include <svtools/svtools.hrc>
+
+using namespace ::com::sun::star;
 
 // defines ---------------------------------------------------------------
 
@@ -55,138 +64,62 @@
 #define SPACE_OFFSET	5
 #define SCROLL_TIMER	30
 
-#define WELCOME_URL     DEFINE_CONST_UNICODE( "http://www.openoffice.org/welcome/credits.html" )
-
-// class AboutDialog -----------------------------------------------------
-static void layoutText( FixedInfo &rText, long &nY, long nTextWidth, Size a6Size )
+/** loads the application logo as used in the about dialog and impress slideshow pause screen */
+Image SfxApplication::GetApplicationLogo()
 {
-    Point aTextPos = rText.GetPosPixel();
-    aTextPos.X() = a6Size.Width() * 2;
-    aTextPos.Y() = nY;
-    rText.SetPosPixel( aTextPos );
-
-    Size aTxtSiz = rText.GetSizePixel();
-    aTxtSiz.Width() = nTextWidth;
-    Size aCalcSize = rText.CalcMinimumSize( nTextWidth );
-    aTxtSiz.Height() = aCalcSize.Height();
-    rText.SetSizePixel( aTxtSiz );
-
-    nY += aTxtSiz.Height();
+    BitmapEx aBitmap;
+    Application::LoadBrandBitmap ("about", aBitmap);
+    return Image( aBitmap );
 }
 
-String InitDevVersionStr()
+static String
+GetVersionStr()
 {
-    const String sCWSSchema( String::CreateFromAscii( "[CWS:" ) );
-    rtl::OUString sDefault;
-    String sBuildId( utl::Bootstrap::getBuildIdData( sDefault ) );
-    OSL_ENSURE( sBuildId.Len() > 0, "No BUILDID in bootstrap file" );
-    if ( sBuildId.Len() > 0 && sBuildId.Search( sCWSSchema ) == STRING_NOTFOUND )
-    {
-        // no cws part in brand buildid -> try basis buildid
-        rtl::OUString sBasisBuildId( DEFINE_CONST_OUSTRING(
-            "${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version") ":buildid}" ) );
-        rtl::Bootstrap::expandMacros( sBasisBuildId );
-        sal_Int32 nIndex = sBasisBuildId.indexOf( sCWSSchema );
-        if ( nIndex != -1 )
-            sBuildId += String( sBasisBuildId.copy( nIndex ) );
-    }
-
-    String sProductSource( utl::Bootstrap::getProductSource( sDefault ) );
-    OSL_ENSURE( sProductSource.Len() > 0, "No ProductSource in bootstrap file" );
-
-    // the product source is something like "DEV300", where the
-    // build id is something like "300m12(Build:12345)". For better readability,
-    // strip the duplicate UPD ("300").
-    if ( sProductSource.Len() )
-    {
-        bool bMatchingUPD =
-                ( sProductSource.Len() >= 3 )
-            &&  ( sBuildId.Len() >= 3 )
-            &&  ( sProductSource.Copy( sProductSource.Len() - 3 ) == sBuildId.Copy( 0, 3 ) );
-        OSL_ENSURE( bMatchingUPD, "BUILDID and ProductSource do not match in their UPD" );
-        if ( bMatchingUPD )
-            sProductSource = sProductSource.Copy( 0, sProductSource.Len() - 3 );
-
-        // prepend the product source
-        sBuildId.Insert( sProductSource, 0 );
-    }
-
-    // --> PB 2008-10-30 #i94693#
-    // if the build ids of the basis or ure layer are different from the build id
-    // of the brand layer then show them
-    rtl::OUString aBasisProductBuildId( DEFINE_CONST_OUSTRING(
-        "${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version") ":ProductBuildid}" ) );
-    rtl::Bootstrap::expandMacros( aBasisProductBuildId );
-    rtl::OUString aUREProductBuildId( DEFINE_CONST_OUSTRING(
-        "${$URE_BIN_DIR/" SAL_CONFIGFILE("version") ":ProductBuildid}" ) );
-    rtl::Bootstrap::expandMacros( aUREProductBuildId );
-    if ( sBuildId.Search( String( aBasisProductBuildId ) ) == STRING_NOTFOUND
-        || sBuildId.Search( String( aUREProductBuildId ) ) == STRING_NOTFOUND )
-    {
-        String sTemp( '-' );
-        sTemp += String( aBasisProductBuildId );
-        sTemp += '-';
-        sTemp += String( aUREProductBuildId );
-        sBuildId.Insert( sTemp, sBuildId.Search( ')' ) );
-    }
-    // <--
-
-    // the build id format is "milestone(build)[cwsname]". For readability, it would
-    // be nice to have some more spaces in there.
-    xub_StrLen nPos = 0;
-    if ( ( nPos = sBuildId.Search( sal_Unicode( '(' ) ) ) != STRING_NOTFOUND )
-        sBuildId.Insert( sal_Unicode( ' ' ), nPos );
-    if ( ( nPos = sBuildId.Search( sal_Unicode( '[' ) ) ) != STRING_NOTFOUND )
-        sBuildId.Insert( sal_Unicode( ' ' ), nPos );
-    return sBuildId;
+    // FIXME: fill me in from sfx2/source/appl/appserv.cxx code ...
+    return String();
 }
 
-AboutDialog::AboutDialog( Window* pParent, const ResId& rId ) :
+AboutDialog::AboutDialog( Window* pParent, const ResId& rId) :
 
     SfxModalDialog	( pParent, 	rId ),
 
     aOKButton      	( this,		ResId( ABOUT_BTN_OK, *rId.GetResMgr() ) ),
     aVersionText 	( this, 	ResId( ABOUT_FTXT_VERSION, *rId.GetResMgr() ) ),
-    aCopyrightText  ( this,     ResId( ABOUT_FTXT_COPYRIGHT, *rId.GetResMgr() ) ),
-    aBuildData      ( this ),
-    pDeveloperAry(0),
+    aCopyrightText	( this, 	ResId( ABOUT_FTXT_COPYRIGHT, *rId.GetResMgr() ) ),
+    aInfoLink       ( this,     ResId( ABOUT_FTXT_LINK, *rId.GetResMgr() ) ),
     aAccelStr		( 			ResId( ABOUT_STR_ACCEL, *rId.GetResMgr() ) ),
+    aVersionTextStr(            ResId( ABOUT_STR_VERSION, *rId.GetResMgr() ) ),
+    aCopyrightTextStr(          ResId( ABOUT_STR_COPYRIGHT, *rId.GetResMgr() ) ),
+    aLinkStr        (           ResId( ABOUT_STR_LINK, *rId.GetResMgr() ) ),
     aTimer          (),
     nOff            ( 0 ),
     m_nDeltaWidth   ( 0 ),
-    m_nPendingScrolls( 0 ),
-    bNormal         ( sal_True )
+    m_nPendingScrolls( 0 )
 {
-    aDevVersionStr = InitDevVersionStr();
-
-    ::com::sun::star::lang::Locale aLocale;
-    ResMgr* pResMgr = ResMgr::SearchCreateResMgr( "about", aLocale );
-    if ( pResMgr )
-    {
-        aCopyrightTextStr = String( ResId( ABOUT_STR_COPYRIGHT, *pResMgr ) );
-//        pDeveloperAry = new ResStringArray( ResId( ABOUT_STR_DEVELOPER_ARY, *pResMgr ) );
-        delete pResMgr;
-    }
-
     rtl::OUString sProduct;
     utl::ConfigManager::GetDirectConfigProperty(utl::ConfigManager::PRODUCTNAME) >>= sProduct;
 
     // load image from module path
     aAppLogo = SfxApplication::GetApplicationLogo();
 
-    // Transparenter Font
+    // Transparent Font
     Font aFont = GetFont();
     aFont.SetTransparent( sal_True );
     SetFont( aFont );
 
     // if necessary more info
-    String sVersion = aVersionText.GetText();
+    String sVersion = aVersionTextStr;
     sVersion.SearchAndReplaceAscii( "$(VER)", Application::GetDisplayName() );
     sVersion += '\n';
-    sVersion += aDevVersionStr;
+    sVersion += GetVersionStr();
+#ifdef BUILD_VER_STRING
+    String aBuildString( DEFINE_CONST_UNICODE( BUILD_VER_STRING ) );
+    sVersion += '\n';
+    sVersion += aBuildString;
+#endif
     aVersionText.SetText( sVersion );
 
-    // Initialisierung fuer Aufruf Entwickler
+    // Initialization call for developers
     if ( aAccelStr.Len() && ByteString(U2S(aAccelStr)).IsAlphaAscii() )
     {
         Accelerator	*pAccel = 0, *pPrevAccel = 0, *pFirstAccel = 0;
@@ -196,7 +129,7 @@ AboutDialog::AboutDialog( Window* pParent, const ResId& rId ) :
         {
             pPrevAccel = pAccel;
             pAccel = new Accelerator;
-            aAccelList.Insert( pAccel, LIST_APPEND );
+            aAccelList.push_back( pAccel );
             sal_uInt16 nKey = aAccelStr.GetChar(i) - 'A' + KEY_A;
             pAccel->InsertItem( 1, KeyCode( nKey, KEY_MOD1 ) );
             if ( i > 0 )
@@ -221,58 +154,72 @@ AboutDialog::AboutDialog( Window* pParent, const ResId& rId ) :
 
     aVersionText.SetBackground();
     aCopyrightText.SetBackground();
+    aInfoLink.SetURL( aLinkStr );
+    aInfoLink.SetBackground();
+    aInfoLink.SetClickHdl( LINK( this, AboutDialog, HandleHyperlink ) );
 
     Color aTextColor( rSettings.GetWindowTextColor() );
     aVersionText.SetControlForeground( aTextColor );
     aCopyrightText.SetControlForeground( aTextColor );
-    aBuildData.SetBackground( aWall );
-
-    Font aSmallFont = rSettings.GetInfoFont();
-    Size aSmaller = aNewFont.GetSize();
-    aSmaller.Width() = (long) (aSmaller.Width() * 0.75);
-    aSmaller.Height() = (long) (aSmaller.Height() * 0.75);
-    aNewFont.SetSize( aSmaller );
-    aBuildData.SetFont( aNewFont );
-    aBuildData.SetBackground( aWall );
-#ifdef BUILD_VER_STRING
-    String aBuildString( DEFINE_CONST_UNICODE( BUILD_VER_STRING ) );
-#else
-    String aBuildString;
-#endif
-    aBuildData.SetText( aBuildString );
-    aBuildData.Show();
+
+    aCopyrightText.SetText( aCopyrightTextStr );
 
     // determine size and position of the dialog & elements
     Size aAppLogoSiz = aAppLogo.GetSizePixel();
+
+    if (aAppLogoSiz.Width() < 300)
+        aAppLogoSiz.Width() = 300;
+
     Size aOutSiz     = GetOutputSizePixel();
     aOutSiz.Width()  = aAppLogoSiz.Width();
 
+    // analyze size of the aVersionText widget
+    // character size
     Size a6Size      = aVersionText.LogicToPixel( Size( 6, 6 ), MAP_APPFONT );
+    // preferred Version widget size
+    Size aVTSize = aVersionText.CalcMinimumSize();
     long nY          = aAppLogoSiz.Height() + ( a6Size.Height() * 2 );
-    long nDlgMargin  = a6Size.Width() * 4 ;
-    long nCtrlMargin = a6Size.Height() * 2;
+    long nDlgMargin  = a6Size.Width() * 3 ;
+    long nCtrlMargin = aVTSize.Height() + ( a6Size.Height() * 2 );
     long nTextWidth  = aOutSiz.Width() - nDlgMargin;
 
-    aCopyrightText.SetText( aCopyrightTextStr );
+    // finally set the aVersionText widget position and size
+    Size aVTCopySize = aVTSize;
+    Point aVTCopyPnt;
+    aVTCopySize.Width()  = nTextWidth;
+    aVTCopyPnt.X() = ( aOutSiz.Width() - aVTCopySize.Width() ) / 2;
+    aVTCopyPnt.Y() = nY;
+    aVersionText.SetPosSizePixel( aVTCopyPnt, aVTCopySize );
     
-    layoutText( aVersionText, nY, nTextWidth, a6Size );
     nY += nCtrlMargin;
     
     // OK-Button-Position (at the bottom and centered)
     Size aOKSiz = aOKButton.GetSizePixel();
     Point aOKPnt = aOKButton.GetPosPixel();
     
+    // FixedHyperlink with more info link
+    Point aLinkPnt = aInfoLink.GetPosPixel();
+    Size aLinkSize = aInfoLink.GetSizePixel();
+
     // Multiline edit with Copyright-Text
     Point aCopyPnt = aCopyrightText.GetPosPixel();
     Size aCopySize = aCopyrightText.GetSizePixel();
     aCopySize.Width()  = nTextWidth;
-    aCopySize.Height() = aOutSiz.Height() - nY - ( aOKSiz.Height() * 2 ) - nCtrlMargin;
+    aCopySize.Height() = aOutSiz.Height() - nY - ( aOKSiz.Height() * 2 ) - 3*aLinkSize.Height() - nCtrlMargin;
 
     aCopyPnt.X() = ( aOutSiz.Width() - aCopySize.Width() ) / 2;
     aCopyPnt.Y() = nY;
     aCopyrightText.SetPosSizePixel( aCopyPnt, aCopySize );
 
-    nY += aCopySize.Height() + nCtrlMargin;
+    nY += aCopySize.Height() + aLinkSize.Height();
+
+    aLinkSize.Width() = aInfoLink.CalcMinimumSize().Width();
+    aLinkPnt.X() = ( aOutSiz.Width() - aLinkSize.Width() ) / 2;
+    aLinkPnt.Y() = nY;
+    aInfoLink.SetPosSizePixel( aLinkPnt, aLinkSize );
+
+    nY += aLinkSize.Height() + nCtrlMargin;
+
     aOKPnt.X() = ( aOutSiz.Width() - aOKSiz.Width() ) / 2;
     aOKPnt.Y() = nY;
     aOKButton.SetPosPixel( aOKPnt );
@@ -282,6 +229,7 @@ AboutDialog::AboutDialog( Window* pParent, const ResId& rId ) :
 
     FreeResource();
 
+    // explicit Help-Id
     SetHelpId( CMD_SID_ABOUT );
 }
 
@@ -289,18 +237,14 @@ AboutDialog::AboutDialog( Window* pParent, const ResId& rId ) :
 
 AboutDialog::~AboutDialog()
 {
-    // L"oschen des Entwickleraufrufs
-    delete pDeveloperAry;
-    if ( aAccelList.Count() )
+    // Clearing the developers call
+    if ( !aAccelList.empty() )
     {
-        GetpApp()->RemoveAccel( aAccelList.First() );
-        Accelerator* pAccel = aAccelList.Last();
+        GetpApp()->RemoveAccel( aAccelList.front() );
 
-        while ( pAccel )
-        {
-            delete pAccel;
-            pAccel = aAccelList.Prev();
-        }
+        for ( size_t i = 0, n = aAccelList.size(); i < n; ++i )
+            delete aAccelList[ i ];
+        aAccelList.clear();
     }
 }
 
@@ -318,11 +262,6 @@ IMPL_LINK( AboutDialog, TimerHdl, Timer *, pTimer )
 
 IMPL_LINK( AboutDialog, AccelSelectHdl, Accelerator *, pAccelerator )
 {
-#ifdef YURI_DARIO
-    aCopyrightText.SetHelpText( DEFINE_CONST_UNICODE("Conoscere qualcuno ovunque egli sia, con cui comprendersi nonostante le distanze\n"
-                      "e le differenze, puo' trasformare la terra in un giardino. baci Valeria") );
-#endif
-
     (void)pAccelerator; //unused
     // init Timer
     aTimer.SetTimeoutHdl( LINK( this, AboutDialog, TimerHdl ) );
@@ -331,7 +270,6 @@ IMPL_LINK( AboutDialog, AccelSelectHdl, Accelerator *, pAccelerator )
     nOff = GetOutputSizePixel().Height();
     MapMode aMapMode( MAP_PIXEL );
     SetMapMode( aMapMode );
-    bNormal = sal_False;
 
     // start scroll Timer
     aTimer.SetTimeout( SCROLL_TIMER );
@@ -341,85 +279,47 @@ IMPL_LINK( AboutDialog, AccelSelectHdl, Accelerator *, pAccelerator )
 
 // -----------------------------------------------------------------------
 
-sal_Bool AboutDialog::Close()
+IMPL_LINK( AboutDialog, HandleHyperlink, svt::FixedHyperlink*, pHyperlink )
 {
-    // stop Timer and finish the dialog
-    aTimer.Stop();
-    EndDialog( RET_OK );
-    return( sal_False );
-}
+    rtl::OUString sURL=pHyperlink->GetURL();
+    rtl::OUString sTitle=GetText();
 
-// -----------------------------------------------------------------------
+    if ( ! sURL.getLength() ) // Nothing to do, when the URL is empty
+        return 1;
+    try
+    {
+        uno::Reference< com::sun::star::system::XSystemShellExecute > xSystemShellExecute(
+            ::comphelper::getProcessServiceFactory()->createInstance(
+                DEFINE_CONST_UNICODE("com.sun.star.system.SystemShellExecute") ), uno::UNO_QUERY_THROW );
+        xSystemShellExecute->execute( sURL, rtl::OUString(),  com::sun::star::system::SystemShellExecuteFlags::DEFAULTS );
+    }
+    catch ( uno::Exception& )
+    {
+        uno::Any exc( ::cppu::getCaughtException() );
+        rtl::OUString msg( ::comphelper::anyToString( exc ) );
+        const SolarMutexGuard guard;
+        ErrorBox aErrorBox( NULL, WB_OK, msg );
+        aErrorBox.SetText( sTitle );
+        aErrorBox.Execute();
+    }
+
+    return 1;
+}
 
 void AboutDialog::Paint( const Rectangle& rRect )
 {
     SetClipRegion( rRect );
 
-    if ( bNormal ) // not in scroll mode
-    {
-        Point aPos( m_nDeltaWidth / 2, 0 );
-        DrawImage( aPos, aAppLogo );
-        return;
-    }
-
-    // scroll the content
-    const int nDeltaY = -SCROLL_OFFSET * m_nPendingScrolls;
-    if( !nDeltaY )
-        return;
-    nOff += nDeltaY;
-    Scroll( 0, nDeltaY, SCROLL_NOERASE );
-    m_nPendingScrolls = 0;
-
-    // draw the credits text
-    const Font aOrigFont = GetFont();
-    const int nFullWidth = GetOutputSizePixel().Width();
-
-    int nY = nOff;
-//    const int nDevCnt = static_cast<int>( pDeveloperAry->Count() );
-    const int nDevCnt = 0;
-    for( int i = 0; i < nDevCnt; ++i )
-    {
-        if( nY >= rRect.Bottom() )
-            break;
-
-        int nPos2 = nY + GetTextHeight() + 3;
-        if( nPos2 >= rRect.Top() + nDeltaY )
-        {
-            const String aStr = pDeveloperAry->GetString(i);
-            const long nVal = pDeveloperAry->GetValue(i);
-
-            if ( nVal )
-            {
-                // emphasize the headers
-                Font aFont = aOrigFont;
-                aFont.SetWeight( (FontWeight)nVal );
-                SetFont( aFont );
-                nPos2 = nY + GetTextHeight() + 3;
-            }
-
-            // clear text background
-            Rectangle aEraseRect( Point(0,nY), Size( nFullWidth, nPos2-nY));
-            Erase( aEraseRect );
-
-            // draw centered text
-            const long nTextWidth = GetTextWidth( aStr );
-            long nX = (nFullWidth - 5 - nTextWidth) / 2;
-            if( nX < 0 )
-                nX = SPACE_OFFSET;
-            const Point aPnt( nX, nY );
-            DrawText( aPnt, aStr );
-
-            // restore the font if needed
-            if( nVal )
-                SetFont( aOrigFont );
-        }
-        nY = nPos2;
-    }
+    Point aPos( m_nDeltaWidth / 2, 0 );
+    DrawImage( aPos, aAppLogo );
+}
 
-    // close dialog if the whole text has been scrolled
-    if ( nY <= 0 )
-    {
-        bNormal = sal_True;
-        Close();
-    }
+sal_Bool AboutDialog::Close()
+{
+    // stop Timer and finish the dialog
+    aTimer.Stop();
+    EndDialog( RET_OK );
+    return sal_False;
 }
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/source/dialogs/about.src b/cui/source/dialogs/about.src
index fb6466e..1bea545 100644
--- a/cui/source/dialogs/about.src
+++ b/cui/source/dialogs/about.src
@@ -29,39 +29,57 @@
 
 ModalDialog RID_DEFAULTABOUT
 {
-    HelpID = "cui:ModalDialog:RID_DEFAULTABOUT";
     OutputSize = TRUE ;
-    Size = MAP_APPFONT ( 245 , 260 ) ;
+    Size = MAP_APPFONT ( 245 , 280 ) ;
     Moveable = TRUE ;
     SVLook = TRUE ;
-    Text [ x-comment ] = "PB: ; PB: only %PRODUCTNAME";
-    Text [ en-US ] = "About %PRODUCTNAME" ;
+//    TEXT_DEFAULTABOUT
     OKButton ABOUT_BTN_OK
     {
         DefButton = TRUE ;
         Pos = MAP_APPFONT ( 174 , 6 ) ;
         Size = MAP_APPFONT ( 50 , 14 ) ;
     };
-    FixedText ABOUT_FTXT_VERSION
+    MultiLineEdit ABOUT_FTXT_VERSION
     {
+        Border = FALSE ;
         Pos = MAP_APPFONT ( 54 , 6 ) ;
         Size = MAP_APPFONT ( 118 , 16 ) ;
-        WordBreak = TRUE ;
-        Text = "%PRODUCTNAME %ABOUTBOXPRODUCTVERSION %PRODUCTEXTENSION" ;
+        IgnoreTab = TRUE ;
+        ReadOnly = TRUE ;
+        AutoVScroll = TRUE ;
     };
     MultiLineEdit ABOUT_FTXT_COPYRIGHT
     {
-        HelpID = "cui:MultiLineEdit:RID_DEFAULTABOUT:ABOUT_FTXT_COPYRIGHT";
-        Border = TRUE ;
+        Border = FALSE ;
         Pos = MAP_APPFONT ( 54 , 25 ) ;
-        Size = MAP_APPFONT ( 168 , 51 ) ;
+        Size = MAP_APPFONT ( 168 , 71 ) ;
         IgnoreTab = TRUE ;
         ReadOnly = TRUE ;
         AutoVScroll = TRUE ;
     };
+    FixedText ABOUT_FTXT_LINK
+    {
+        NoLabel = TRUE;
+        TabStop = TRUE;
+        Text [ en-US ] = "Contributor credits";
+        Pos = MAP_APPFONT ( 54 , 100 ) ;
+        Size = MAP_APPFONT ( 168 , 10 ) ;
+    };
+    String ABOUT_STR_VERSION
+    {
+        Text[ en-US ] = "%PRODUCTNAME %ABOUTBOXPRODUCTVERSION %PRODUCTEXTENSION";
+    };
+    String ABOUT_STR_COPYRIGHT
+    {
+        Text[ en-US ] = "Copyright © 2000, 2010 LibreOffice contributors and/or their affiliates. All rights reserved.\nThis product was created by %OOOVENDOR, based on OpenOffice.org, which is Copyright 2000, 2010 Oracle and/or its affiliates.\n%OOOVENDOR acknowledges all community members, please find more info at the link below:";
+    };
+    String ABOUT_STR_LINK
+    {
+        Text[ en-US ] = "http://www.libreoffice.org/credits.html";
+    };
     String ABOUT_STR_ACCEL
     {
         Text = "SDT" ;
     };
 };
-
diff --git a/cui/source/inc/about.hxx b/cui/source/inc/about.hxx
index 15256a5..86ead1d 100644
--- a/cui/source/inc/about.hxx
+++ b/cui/source/inc/about.hxx
@@ -1,7 +1,8 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 /*************************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * Copyright 2000, 2010 Oracle and/or its affiliates.
  *
  * OpenOffice.org - a multi-platform office productivity suite
@@ -33,11 +34,12 @@
 #include <vcl/button.hxx>
 #include <vcl/accel.hxx>
 #include <svtools/svmedit.hxx>
-#include <tools/list.hxx>
 #include <svtools/stdctrl.hxx>
+#include "svtools/fixedhyper.hxx"
 #include <sfx2/basedlgs.hxx>		// SfxModalDialog
+#include <vector>
 
-DECLARE_LIST( AccelList, Accelerator* )
+typedef ::std::vector< Accelerator* > AccelList;
 
 // class AboutDialog -----------------------------------------------------
 
@@ -47,15 +49,16 @@ private:
     OKButton    	aOKButton;
     Image			aAppLogo;
 
-    FixedInfo   	aVersionText;
-    MultiLineEdit  	aCopyrightText;
-    FixedInfo   	aBuildData;
+    MultiLineEdit       aVersionText;
+    MultiLineEdit       aCopyrightText;
+    svt::FixedHyperlink aInfoLink;
 
-    ResStringArray*	pDeveloperAry;
-    String			aDevVersionStr;
+//    ResStringArray	aDeveloperAry; // RIP ...
     String 			aAccelStr;
     String			aVersionData;
+    String          aVersionTextStr;
     String          aCopyrightTextStr;
+    String          aLinkStr;
 
     AccelList 		aAccelList;
 
@@ -64,20 +67,20 @@ private:
     long            m_nDeltaWidth;
     int				m_nPendingScrolls;
 
-    sal_Bool            bNormal;
-
 protected:
-    virtual sal_Bool 	Close();
-    virtual void 	Paint( const Rectangle& );
+    virtual sal_Bool Close();
+    virtual void Paint( const Rectangle& rRect );
 
 public:
-    AboutDialog( Window* pParent, const ResId& nId );
+    AboutDialog( Window* pParent, const ResId& rId);
     ~AboutDialog();
 
     DECL_LINK( TimerHdl, Timer * );
     DECL_LINK( AccelSelectHdl, Accelerator * );
+    DECL_LINK( HandleHyperlink, svt::FixedHyperlink * );
 };
 
 #endif // #ifndef _ABOUT_HXX
 
 
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit d9084de5a3d5c47a12379313751ba580c1b588d6
Author: Andras Timar <timar at fsf.hu>
Date:   Mon Apr 4 12:51:55 2011 +0200

    Change Spanish MSID from 0x040a to 0xc0a
    
    so it can appear in the language list of letter wizard
    0xc0a is the preferred code anyway (see #i94435#)

diff --git a/wizards/com/sun/star/wizards/letter/LetterWizardDialogConst.java b/wizards/com/sun/star/wizards/letter/LetterWizardDialogConst.java
old mode 100755
new mode 100644
diff --git a/wizards/com/sun/star/wizards/letter/LocaleCodes.java b/wizards/com/sun/star/wizards/letter/LocaleCodes.java
index 72785ff..244f178 100644
--- a/wizards/com/sun/star/wizards/letter/LocaleCodes.java
+++ b/wizards/com/sun/star/wizards/letter/LocaleCodes.java
@@ -158,7 +158,7 @@ public class LocaleCodes extends Resource
         Ids[94] = "Slovenian;sl;1060";
         Ids[95] = "Slovak;sk;1051";
         Ids[96] = "Sorbian;sb;1070";
-        Ids[97] = "Spanish - Spain;es-es;1034";
+        Ids[97] = "Spanish - Spain;es-es;3082";
         Ids[98] = "Spanish - Argentina;es-ar;11274";
         Ids[99] = "Spanish - Bolivia;es-bo;16394";
         Ids[100] = "Spanish - Chile;es-cl;13322";
commit 576feba610e92bd31e17573c06fc0242d3465742
Author: Rob Snelders <programming at ertai.nl>
Date:   Mon Apr 4 12:07:23 2011 +0300

    Improvement of adding and removing color charts
    
    (cherry picked from commit b635aad528973bf175aa8a61ad380992448b6f5a)

diff --git a/cui/source/inc/cuires.hrc b/cui/source/inc/cuires.hrc
index 24d3ce2..226b8f7 100644
--- a/cui/source/inc/cuires.hrc
+++ b/cui/source/inc/cuires.hrc
@@ -157,6 +157,8 @@
 #define RID_SVXPAGE_ACCESSIBILITYCONFIG     (RID_SVX_START + 250)
 #define RID_SVXPAGE_ASIAN_LAYOUT            (RID_SVX_START + 246)
 #define RID_OPTPAGE_CHART_DEFCOLORS         (RID_SVX_START + 299)
+#define RID_OPTQB_COLOR_CHART_DELETE        (RID_SVX_START + 296)
+#define RID_OPTSTR_COLOR_CHART_DELETE	    (RID_SVX_START + 289)
 #define RID_SVXPAGE_COLORCONFIG             (RID_SVX_START + 249)
 #define RID_SVXQB_DELETE_COLOR_CONFIG       (RID_SVX_START + 324)
 #define RID_SVXSTR_COLOR_CONFIG_SAVE1       (RID_SVX_START + 853)
diff --git a/cui/source/options/cfgchart.cxx b/cui/source/options/cfgchart.cxx
index 0d406cd..969eae0 100644
--- a/cui/source/options/cfgchart.cxx
+++ b/cui/source/options/cfgchart.cxx
@@ -92,6 +92,11 @@ void SvxChartColorTable::remove( size_t _nIndex )
 {
     if (m_aColorEntries.size() > 0)
         m_aColorEntries.erase( m_aColorEntries.begin() + _nIndex);
+
+    for (size_t i=0 ; i<m_aColorEntries.size(); i++)
+    {
+        m_aColorEntries[ i ].SetName( getDefaultName( i ) );
+    }
 }
 
 void SvxChartColorTable::replace( size_t _nIndex, const XColorEntry & _rEntry )
@@ -123,11 +128,11 @@ void SvxChartColorTable::useDefault()
 
     for( sal_Int32 i=0; i<ROW_COLOR_COUNT; i++ )
     {
-        append( XColorEntry( aColors[ i % sizeof( aColors ) ], getNextDefaultName() ));
+        append( XColorEntry( aColors[ i % sizeof( aColors ) ], getDefaultName( i ) ));
     }
 }
 
-String SvxChartColorTable::getNextDefaultName()
+String SvxChartColorTable::getDefaultName( size_t _nIndex )
 {
     String aName;
 
@@ -147,7 +152,7 @@ String SvxChartColorTable::getNextDefaultName()
     }
 
     aName = sDefaultNamePrefix;
-    aName.Append( String::CreateFromInt32 ( nNextElementNumber ) );
+    aName.Append( String::CreateFromInt32 ( _nIndex + 1 ) );
     aName.Append( sDefaultNamePostfix );
     nNextElementNumber++;
 
diff --git a/cui/source/options/cfgchart.hxx b/cui/source/options/cfgchart.hxx
index 918f81a..b9adf39 100644
--- a/cui/source/options/cfgchart.hxx
+++ b/cui/source/options/cfgchart.hxx
@@ -63,7 +63,7 @@ public:
     void remove( size_t _nIndex );
     void replace( size_t _nIndex, const XColorEntry & _rEntry );
     void useDefault();
-    String getNextDefaultName();
+    String getDefaultName(size_t _nIndex);
 
     // comparison
     bool operator==( const SvxChartColorTable & _rOther ) const;
diff --git a/cui/source/options/optchart.cxx b/cui/source/options/optchart.cxx
index 51d48d4..f5c25dc 100644
--- a/cui/source/options/optchart.cxx
+++ b/cui/source/options/optchart.cxx
@@ -31,6 +31,7 @@
 #include "optchart.hxx"
 #include "optchart.hrc"
 #include <dialmgr.hxx>
+#include <vcl/msgbox.hxx>
 #include <svx/svxids.hrc> // for SID_SCH_EDITOPTIONS
 
 // ====================
@@ -194,6 +195,7 @@ IMPL_LINK( SvxDefaultColorOptPage, ResetToDefaults, void *, EMPTYARG )
         aLbChartColors.FillBox( pColorConfig->GetColorTable() );
 
         aLbChartColors.GetFocus();
+        aLbChartColors.SelectEntryPos( 0 );
     }
 
     return 0L;
@@ -208,12 +210,13 @@ IMPL_LINK( SvxDefaultColorOptPage, AddChartColor, void *, EMPTYARG )
     {
         ColorData black = RGB_COLORDATA( 0x00, 0x00, 0x00 );
 
-        pColorConfig->GetColorTable().append (XColorEntry ( black, pColorConfig->GetColorTable().getNextDefaultName()));
+        pColorConfig->GetColorTable().append (XColorEntry ( black, pColorConfig->GetColorTable().getDefaultName(pColorConfig->GetColorTable().size())));
 
         aLbChartColors.Clear();
         aLbChartColors.FillBox( pColorConfig->GetColorTable() );
 
         aLbChartColors.GetFocus();
+        aLbChartColors.SelectEntryPos( pColorConfig->GetColorTable().size() - 1 );
     }
 
     return 0L;
@@ -222,16 +225,33 @@ IMPL_LINK( SvxDefaultColorOptPage, AddChartColor, void *, EMPTYARG )
 // RemoveChartColor
 // ----------------
 
-IMPL_LINK( SvxDefaultColorOptPage, RemoveChartColor, void *, EMPTYARG )
+IMPL_LINK( SvxDefaultColorOptPage, RemoveChartColor, PushButton*, pButton )
 {
+    size_t nIndex = aLbChartColors.GetSelectEntryPos();
+
+    if (aLbChartColors.GetSelectEntryCount() == 0)
+        return 0L;
+
     if( pColorConfig )
     {
-        pColorConfig->GetColorTable().remove( aLbChartColors.GetSelectEntryPos()  );
+        DBG_ASSERT(pColorConfig.size() > 1, "don't delete the last chart color");
+        QueryBox aQuery(pButton, CUI_RES(RID_OPTQB_COLOR_CHART_DELETE));
+        aQuery.SetText(String(CUI_RES(RID_OPTSTR_COLOR_CHART_DELETE)));
+        if(RET_YES == aQuery.Execute())
+        {
 
-        aLbChartColors.Clear();
-        aLbChartColors.FillBox( pColorConfig->GetColorTable() );
+            pColorConfig->GetColorTable().remove( nIndex  );
 
-        aLbChartColors.GetFocus();
+            aLbChartColors.Clear();
+            aLbChartColors.FillBox( pColorConfig->GetColorTable() );
+
+            aLbChartColors.GetFocus();
+
+            if (nIndex == aLbChartColors.GetEntryCount() && aLbChartColors.GetEntryCount() > 0)
+                aLbChartColors.SelectEntryPos( pColorConfig->GetColorTable().size() - 1 );
+            else if (aLbChartColors.GetEntryCount() > 0)
+                aLbChartColors.SelectEntryPos( nIndex );
+        }
     }
 
     return 0L;
diff --git a/cui/source/options/optchart.hxx b/cui/source/options/optchart.hxx
index 71898e9..1416008 100644
--- a/cui/source/options/optchart.hxx
+++ b/cui/source/options/optchart.hxx
@@ -55,6 +55,7 @@ public:
 
 class SvxDefaultColorOptPage : public SfxTabPage
 {
+
 private:
     FixedLine                           aGbChartColors;
     ChartColorLB                        aLbChartColors;
@@ -70,7 +71,7 @@ private:
 
     DECL_LINK( ResetToDefaults, void * );
     DECL_LINK( AddChartColor, void * );
-    DECL_LINK( RemoveChartColor, void * );
+    DECL_LINK( RemoveChartColor, PushButton * );
     DECL_LINK( ListClickedHdl, ChartColorLB * );
     DECL_LINK( BoxClickedHdl, ValueSet * );
 
diff --git a/cui/source/options/optchart.src b/cui/source/options/optchart.src
index 593fafd..09800aa 100644
--- a/cui/source/options/optchart.src
+++ b/cui/source/options/optchart.src
@@ -97,3 +97,13 @@ String RID_SVXSTR_DIAGRAM_ROW
 
     Text [ en-US ] = "Data Series $(ROW)" ;
 };
+QueryBox RID_OPTQB_COLOR_CHART_DELETE
+{
+    Buttons = WB_YES_NO ;
+    DefButton = WB_DEF_NO ;
+    Message [ en-US ] = "Do you really want to delete the chart color?" ;
+};
+String RID_OPTSTR_COLOR_CHART_DELETE
+{
+   Text [ en-US ] = "Chart Color Deletion" ;
+};
commit 50b65e0e971869854b8da7465ff642f1a886d873
Author: Michael Meeks <michael.meeks at novell.com>
Date:   Fri Apr 1 22:33:12 2011 +0100

    remove obsolete component_writeInfo methods

diff --git a/forms/source/misc/services.cxx b/forms/source/misc/services.cxx
index e2e25cf..20065f9 100644
--- a/forms/source/misc/services.cxx
+++ b/forms/source/misc/services.cxx
@@ -343,7 +343,7 @@ SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory(const sal_Char* _pImplN
     sal_Int32 nClasses = s_aClassImplementationNames.getLength();
     OSL_ENSURE((s_aClassServiceNames.getLength() == nClasses) &&
         (s_aFactories.getLength() == nClasses),
-        "forms::component_writeInfo : invalid class infos !");
+        "forms::component_getFactory : invalid class infos !");
 
     // loop through the sequences and register the service providers
     const ::rtl::OUString* pClasses = s_aClassImplementationNames.getConstArray();
diff --git a/xmlsecurity/source/xmlsec/mscrypt/xsec_mscrypt.cxx b/xmlsecurity/source/xmlsec/mscrypt/xsec_mscrypt.cxx
index f73e088..71c8544 100644
--- a/xmlsecurity/source/xmlsec/mscrypt/xsec_mscrypt.cxx
+++ b/xmlsecurity/source/xmlsec/mscrypt/xsec_mscrypt.cxx
@@ -52,81 +52,6 @@ using namespace ::com::sun::star::registry;
 extern "C"
 {
 
-sal_Bool SAL_CALL mscrypt_component_writeInfo( void* /*pServiceManager*/ , void* pRegistryKey )
-{
-    sal_Bool result = sal_False;
-    sal_Int32 i ;
-    OUString sKeyName ;
-    Reference< XRegistryKey > xNewKey ;
-    Sequence< OUString > seqServices ;
-    Reference< XRegistryKey > xKey( reinterpret_cast< XRegistryKey* >( pRegistryKey ) ) ;
-
-    if( xKey.is() ) {
-        // XMLSignature_MSCryptImpl
-        sKeyName = OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) ) ;
-        sKeyName += XMLSignature_MSCryptImpl::impl_getImplementationName() ;
-        sKeyName += OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES")) ;
-
-        xNewKey = xKey->createKey( sKeyName ) ;
-        if( xNewKey.is() ) {
-            seqServices = XMLSignature_MSCryptImpl::impl_getSupportedServiceNames() ;
-            for( i = seqServices.getLength() ; i -- ;  )
-                xNewKey->createKey( seqServices.getConstArray()[i] ) ;
-        }
-
-        // XMLEncryption_MSCryptImpl
-        sKeyName = OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) ) ;
-        sKeyName += XMLEncryption_MSCryptImpl::impl_getImplementationName() ;
-        sKeyName += OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES")) ;
-
-        xNewKey = xKey->createKey( sKeyName ) ;
-        if( xNewKey.is() ) {
-            seqServices = XMLEncryption_MSCryptImpl::impl_getSupportedServiceNames() ;
-            for( i = seqServices.getLength() ; i -- ;  )
-                xNewKey->createKey( seqServices.getConstArray()[i] ) ;
-        }
-
-        // XMLSecurityContext_MSCryptImpl
-        sKeyName = OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) ) ;
-        sKeyName += XMLSecurityContext_MSCryptImpl::impl_getImplementationName() ;
-        sKeyName += OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES")) ;
-
-        xNewKey = xKey->createKey( sKeyName ) ;
-        if( xNewKey.is() ) {
-            seqServices = XMLSecurityContext_MSCryptImpl::impl_getSupportedServiceNames() ;
-            for( i = seqServices.getLength() ; i -- ;  )
-                xNewKey->createKey( seqServices.getConstArray()[i] ) ;
-        }
-
-        // SecurityEnvironment_MSCryptImpl
-        sKeyName = OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) ) ;
-        sKeyName += SecurityEnvironment_MSCryptImpl::impl_getImplementationName() ;
-        sKeyName += OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES")) ;
-
-        xNewKey = xKey->createKey( sKeyName ) ;
-        if( xNewKey.is() ) {
-            seqServices = SecurityEnvironment_MSCryptImpl::impl_getSupportedServiceNames() ;
-            for( i = seqServices.getLength() ; i -- ;  )
-                xNewKey->createKey( seqServices.getConstArray()[i] ) ;
-        }
-
-        // SEInitializer_MSCryptImpl
-        sKeyName = OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) ) ;
-        sKeyName += SEInitializer_MSCryptImpl_getImplementationName() ;
-        sKeyName += OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES")) ;
-
-        xNewKey = xKey->createKey( sKeyName ) ;
-        if( xNewKey.is() ) {
-            seqServices = SEInitializer_MSCryptImpl_getSupportedServiceNames() ;
-            for( i = seqServices.getLength() ; i -- ;  )
-                xNewKey->createKey( seqServices.getConstArray()[i] ) ;
-        }
-        
-        return sal_True;
-    }
-    return result;
-}
-
 void* SAL_CALL mscrypt_component_getFactory( const sal_Char* pImplName , void* pServiceManager , void* /*pRegistryKey*/ )
 {
     void* pRet = 0;
diff --git a/xmlsecurity/source/xmlsec/nss/xsec_nss.cxx b/xmlsecurity/source/xmlsec/nss/xsec_nss.cxx
index 28664f5..a226d96 100644
--- a/xmlsecurity/source/xmlsec/nss/xsec_nss.cxx
+++ b/xmlsecurity/source/xmlsec/nss/xsec_nss.cxx
@@ -52,81 +52,6 @@ using namespace ::com::sun::star::registry;
 extern "C"
 {
 
-sal_Bool SAL_CALL nss_component_writeInfo( void* /*pServiceManager*/ , void* pRegistryKey )
-{
-    sal_Bool result = sal_False;
-    sal_Int32 i ;
-    OUString sKeyName ;
-    Reference< XRegistryKey > xNewKey ;
-    Sequence< OUString > seqServices ;
-    Reference< XRegistryKey > xKey( reinterpret_cast< XRegistryKey* >( pRegistryKey ) ) ;
-
-    if( xKey.is() ) {
-        // XMLSignature_NssImpl
-        sKeyName = OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) ) ;
-        sKeyName += XMLSignature_NssImpl::impl_getImplementationName() ;
-        sKeyName += OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES")) ;
-
-        xNewKey = xKey->createKey( sKeyName ) ;
-        if( xNewKey.is() ) {
-            seqServices = XMLSignature_NssImpl::impl_getSupportedServiceNames() ;
-            for( i = seqServices.getLength() ; i -- ;  )
-                xNewKey->createKey( seqServices.getConstArray()[i] ) ;
-        }
-
-        // XMLEncryption_NssImpl
-        sKeyName = OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) ) ;
-        sKeyName += XMLEncryption_NssImpl::impl_getImplementationName() ;
-        sKeyName += OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES")) ;
-
-        xNewKey = xKey->createKey( sKeyName ) ;
-        if( xNewKey.is() ) {
-            seqServices = XMLEncryption_NssImpl::impl_getSupportedServiceNames() ;
-            for( i = seqServices.getLength() ; i -- ;  )
-                xNewKey->createKey( seqServices.getConstArray()[i] ) ;
-        }
-
-        // XMLSecurityContext_NssImpl
-        sKeyName = OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) ) ;
-        sKeyName += XMLSecurityContext_NssImpl::impl_getImplementationName() ;
-        sKeyName += OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES")) ;
-
-        xNewKey = xKey->createKey( sKeyName ) ;
-        if( xNewKey.is() ) {
-            seqServices = XMLSecurityContext_NssImpl::impl_getSupportedServiceNames() ;
-            for( i = seqServices.getLength() ; i -- ;  )
-                xNewKey->createKey( seqServices.getConstArray()[i] ) ;
-        }
-
-        // SecurityEnvironment_NssImpl
-        sKeyName = OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) ) ;
-        sKeyName += SecurityEnvironment_NssImpl::impl_getImplementationName() ;
-        sKeyName += OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES")) ;
-
-        xNewKey = xKey->createKey( sKeyName ) ;
-        if( xNewKey.is() ) {
-            seqServices = SecurityEnvironment_NssImpl::impl_getSupportedServiceNames() ;
-            for( i = seqServices.getLength() ; i -- ;  )
-                xNewKey->createKey( seqServices.getConstArray()[i] ) ;
-        }
-
-        // SEInitializer_NssImpl
-        sKeyName = OUString( RTL_CONSTASCII_USTRINGPARAM( "/" ) ) ;
-        sKeyName += SEInitializer_NssImpl_getImplementationName() ;
-        sKeyName += OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES")) ;
-
-        xNewKey = xKey->createKey( sKeyName ) ;
-        if( xNewKey.is() ) {
-            seqServices = SEInitializer_NssImpl_getSupportedServiceNames() ;
-            for( i = seqServices.getLength() ; i -- ;  )
-                xNewKey->createKey( seqServices.getConstArray()[i] ) ;
-        }
-        
-        return sal_True;
-    }
-    return result;
-}
-
 void* SAL_CALL nss_component_getFactory( const sal_Char* pImplName , void* pServiceManager , void* /*pRegistryKey*/ )
 {
     void* pRet = 0;
commit ddffbb05759cc84365b8cc8e33a497099b034fd7
Author: Petr Mladek <pmladek at suse.cz>
Date:   Fri Apr 1 15:13:14 2011 +0200

    Branch libreoffice-3-4
    
    This is 'libreoffice-3-4' - the stable branch for the 3.4.x releases
    
        + only bug fixes are allowed
        + no approval needed during beta phase (two weeks after branch)
        + 1 approval needed during rc phase and for bugfix releases
        + 2 approvals with different/no affiliation needed for late features
        + regularly merged into master by a selected person when living
    
    Please watch http://wiki.documentfoundation.org/ReleasePlan
    and read announces on libreoffice at lists.freedesktop.org
    
    If you want to build something cool, unstable, and risky, use master.
commit 0bdca5ef30f83883eb038e3c84828e0dc5a873b8
Author: Petr Mladek <pmladek at suse.cz>
Date:   Tue Mar 8 15:31:09 2011 +0100

    Version 3.3.2.1, tag libreoffice-3.3.2.1 (3.3.2-rc1)
commit 98abfb3b8ca07e23708907a3fb5ed464c89498b3
Author: Andras Timar <timar at fsf.hu>
Date:   Wed Feb 23 23:16:01 2011 +0100

    l10n: Updated oc_FR spelling dictionary

diff --git a/setup_native/source/packinfo/packinfo_office.txt b/setup_native/source/packinfo/packinfo_office.txt
index 415e92f..988d60f 100755
--- a/setup_native/source/packinfo/packinfo_office.txt
+++ b/setup_native/source/packinfo/packinfo_office.txt
@@ -851,9 +851,9 @@ solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEP
 packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-oc"
 requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
 linuxpatchrequires = ""
-copyright = "1990-2011 by Dicollecte"
+copyright = "2006-2011 by Bruno Gallart"
 solariscopyright = "solariscopyrightfile"
-vendor = "Dicollecte"
+vendor = "OpenOc.org"
 description = "Occitan-languedocian dictionary for %PRODUCTNAME %PRODUCTVERSION"
 destpath = "/opt"
 packageversion = "%PACKAGEVERSION"
commit 2b3b78977da058300905c3863c4444b929a0b554
Author: Andras Timar <timar at fsf.hu>
Date:   Tue Feb 22 18:59:40 2011 +0100

    l10n: add Breton spelling dictionary

diff --git a/setup_native/source/packinfo/packinfo_office.txt b/setup_native/source/packinfo/packinfo_office.txt
index 7958977..415e92f 100755
--- a/setup_native/source/packinfo/packinfo_office.txt
+++ b/setup_native/source/packinfo/packinfo_office.txt
@@ -508,6 +508,22 @@ packageversion = "%PACKAGEVERSION"
 End
 
 Start
+module = "gid_Module_Root_Extension_Dictionary_Br"
+script = "shellscripts_extensions.txt"
+solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-br"
+solarisrequires = "%SOLSUREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core01, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core02, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core03, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core04, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core05, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core06, %BASISPACKAGEPREFIX%WITHOUTDOTOOOBASEVERSION-core07, %PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION"
+packagename = "%UNIXPACKAGENAME%BRANDPACKAGEVERSION-dict-br"
+requires = "%UREPACKAGEPREFIX%BRANDPACKAGEVERSION-ure,%BASISPACKAGEPREFIX%OOOBASEVERSION-core01,%BASISPACKAGEPREFIX%OOOBASEVERSION-core02,%BASISPACKAGEPREFIX%OOOBASEVERSION-core03,%BASISPACKAGEPREFIX%OOOBASEVERSION-core04,%BASISPACKAGEPREFIX%OOOBASEVERSION-core05,%BASISPACKAGEPREFIX%OOOBASEVERSION-core06,%BASISPACKAGEPREFIX%OOOBASEVERSION-core07,%UNIXPACKAGENAME%BRANDPACKAGEVERSION"
+linuxpatchrequires = ""
+copyright = "2009-2011 by An Drouizig"
+solariscopyright = "solariscopyrightfile"
+vendor = "An Drouizig"
+description = "Br dictionary for %PRODUCTNAME %PRODUCTVERSION"
+destpath = "/opt"
+packageversion = "%PACKAGEVERSION"
+End
+
+Start
 module = "gid_Module_Root_Extension_Dictionary_Ca"
 script = "shellscripts_extensions.txt"
 solarispackagename = "%PACKAGEPREFIX%SOLARISBRANDPACKAGENAME%BRANDPACKAGEVERSION-dict-ca"
commit c1d45fdb7f6380a0e6640a336cd790027e903b4f
Author: bjoern.michaelsen at canonical.com <Bjoern Michaelsen>
Date:   Mon Feb 7 17:18:01 2011 +0100

    lp#696527: enable human icon theme in LibreOffice
    (cherry picked from commit cfa7e88f5959a8b3b729107d61351410be80f49b)
    
    Signed-off-by: Thorsten Behrens <tbehrens at novell.com>

diff --git a/cui/source/options/optgdlg.src b/cui/source/options/optgdlg.src
index 762e025..f2aff18 100644
--- a/cui/source/options/optgdlg.src
+++ b/cui/source/options/optgdlg.src
@@ -270,6 +270,7 @@ TabPage OFA_TP_VIEW
             < "Tango" ; > ;
             < "Oxygen" ; > ;
             < "Classic" ; > ;
+            < "Human" ; > ;
         };
     };
     CheckBox CB_SYSTEM_FONT


More information about the Libreoffice-commits mailing list