--- /dev/null
+Index: vcl/unx/source/gdi/dtint.cxx
+===================================================================
+RCS file: /cvs/gsl/vcl/unx/source/gdi/dtint.cxx,v
+retrieving revision 1.16
+retrieving revision 1.16.112.2
+diff -u -3 -p -r1.16 -r1.16.112.2
+--- vcl/unx/source/gdi/dtint.cxx 28 May 2003 12:33:47 -0000 1.16
++++ vcl/unx/source/gdi/dtint.cxx 10 Nov 2003 10:43:05 -0000 1.16.112.2
+@@ -138,6 +138,27 @@ DtIntegrator* DtIntegrator::CreateDtInte
+ if( pIntegrator->mpDisplay == pDisplay )
+ return pIntegrator;
+ }
++ /*
++ * #i22061# override desktop detection
++ * if environment variable OOO_FORCE_DESKTOP is set
++ * to one of "cde" "kde" "gnome" then autodetection
++ * is overridden.
++ */
++ static const char* pOverride = getenv( "OOO_FORCE_DESKTOP" );
++ if( pOverride && *pOverride )
++ {
++ OString aOver( pOverride );
++#if USE_CDE
++ if( aOver.equalsIgnoreAsciiCase( "cde" ) == 0 )
++ return new CDEIntegrator( pFrame );
++#endif
++ if( aOver.equalsIgnoreAsciiCase( "kde" ) == 0 )
++ return new KDEIntegrator( pFrame );
++ if( aOver.equalsIgnoreAsciiCase( "gnome" ) == 0 )
++ return new GNOMEIntegrator( pFrame );
++ if( aOver.equalsIgnoreAsciiCase( "none" ) == 0 )
++ return new DtIntegrator( pFrame );
++ }
+
+ Atom nDtAtom = None;
+
--- /dev/null
+? vcl/util/vcl-gcc3.map
+Index: vcl/source/src/msgbox.bmp
+===================================================================
+RCS file: /cvs/gsl/vcl/source/src/msgbox.bmp,v
+retrieving revision 1.1.1.1
+diff -u -p -u -r1.1.1.1 msgbox.bmp
+Binary files /tmp/cvsM6aind and msgbox.bmp differ
+Index: vcl/unx/source/gdi/getstyle/getstyle-gnome.c
+===================================================================
+RCS file: /cvs/gsl/vcl/unx/source/gdi/getstyle/getstyle-gnome.c,v
+retrieving revision 1.5
+diff -u -p -u -r1.5 getstyle-gnome.c
+--- vcl/unx/source/gdi/getstyle/getstyle-gnome.c 27 Mar 2003 17:58:57 -0000 1.5
++++ vcl/unx/source/gdi/getstyle/getstyle-gnome.c 13 May 2003 11:28:48 -0000
+@@ -139,6 +139,25 @@ void printColor( int eStyle, GdkColor* p
+ pColor->blue/256 );
+ }
+
++/* We special case menu items because they use a "menuitem" detail field when
++ * calling gtk_paint_flat_box().
++ */
++void
++printMenuColors (void)
++{
++ GtkWidget *item;
++ GtkStyle *style;
++
++ item = gtk_menu_item_new ();
++ gtk_widget_ensure_style (item);
++
++ style = gtk_rc_get_style (item);
++ printColor (MenuHighlightColor, &style->bg[GTK_STATE_PRELIGHT]);
++ printColor (MenuHighlightTextColor, &style->fg[GTK_STATE_PRELIGHT]);
++
++ gtk_widget_destroy (item);
++}
++
+ void printFont( int eStyle, PangoFontDescription* pFont )
+ {
+ PangoWeight eWeight;
+@@ -194,6 +213,8 @@ void printVCLStyle( GtkWidget* widget )
+ printColor( HighlightTextColor, &pStyle->text[GTK_STATE_SELECTED] );
+ printColor( FieldColor, &pStyle->base[GTK_STATE_NORMAL] );
+ printColor( WindowColor, &pStyle->base[GTK_STATE_NORMAL] );
++ printColor( CheckedColor, &pStyle->bg[GTK_STATE_ACTIVE] );
++ printMenuColors();
+
+ printFont( UIFont, pStyle->font_desc );
+
+@@ -299,8 +319,10 @@ int main (int argc, char **argv)
+ #endif
+
+ /* realize the widgets, do not show it to avoid flicker */
+- gtk_widget_realize(mainwin);
+- gtk_widget_realize(toolbar);
++ gtk_widget_ensure_style( mainwin );
++ gtk_widget_ensure_style( toolbar );
++ gtk_widget_realize( mainwin );
++ gtk_widget_realize( toolbar );
+
+ /* Enter the main event loop, and wait for user interaction */
+ gtk_main ();
+Index: vcl/unx/source/gdi/getstyle/makefile.mk
+===================================================================
+RCS file: /cvs/gsl/vcl/unx/source/gdi/getstyle/makefile.mk,v
+retrieving revision 1.3
+diff -u -p -u -r1.3 makefile.mk
+--- vcl/unx/source/gdi/getstyle/makefile.mk 27 Mar 2003 17:58:57 -0000 1.3
++++ vcl/unx/source/gdi/getstyle/makefile.mk 13 May 2003 11:28:48 -0000
+@@ -95,10 +95,8 @@ HASGNOME2=TRUE
+
+ ALLTAR: $(BIN)$/getstyle-gnome
+
+-.IF "$(HASGNOME2)"=="TRUE"
+-$(BIN)$/getstyle-gnome:
+- +$(COPY) $(GETSTYLE_GNOME) $@
+-.ELSE
+-$(BIN)$/getstyle-gnome:
+- +$(TOUCH) $@
+-.ENDIF
++$(BIN)$/getstyle-gnome: getstyle-gnome.c
++ setenv UGLY_HACK_INDEED "$/LD_LIBRARY_PATH"; \
++ unsetenv LD_LIBRARY_PATH; \
++ $(CC) `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` -o $(BIN)$/getstyle-gnome getstyle-gnome.c; \
++ setenv LD_LIBRARY_PATH "$/UGLY_HACK_INDEED"
--- /dev/null
+Index: sc/source/ui/view/viewfun5.cxx
+===================================================================
+RCS file: /cvs/sc/sc/source/ui/view/viewfun5.cxx,v
+retrieving revision 1.18
+diff -u -r1.18 viewfun5.cxx
+--- sc/source/ui/view/viewfun5.cxx 7 Nov 2001 12:49:49 -0000 1.18
++++ sc/source/ui/view/viewfun5.cxx 12 Dec 2002 13:12:57 -0000
+@@ -120,6 +120,9 @@
+ #include "tabvwsh.hxx" // wegen GetViewFrame
+ #include "compiler.hxx"
+
++#include "asciiopt.hxx"
++#include "vcl/msgbox.hxx"
++
+ #ifndef _SFXVIEWFRM_HXX //autogen
+ #include <sfx2/viewfrm.hxx>
+ #endif
+@@ -131,6 +134,8 @@
+
+ //------------------------------------------------------------------
+
++#include <stdio.h>
++
+ BOOL ScViewFunc::PasteDataFormat( ULONG nFormatId,
+ const uno::Reference<datatransfer::XTransferable>& rxTransferable,
+ USHORT nPosX, USHORT nPosY, Point* pLogicPos, BOOL bLink )
+@@ -268,12 +273,41 @@
+ ScAddress aPos( nPosX, nPosY, GetViewData()->GetTabNo() );
+ ScImportExport aObj( GetViewData()->GetDocument(), aPos );
+
+- ::rtl::OUString aStr;
++ ::rtl::OUString aStr;
+ SotStorageStreamRef xStream;
+ if ( aDataHelper.GetSotStorageStream( nFormatId, xStream ) && xStream.Is() )
+ bRet = aObj.ImportStream( *xStream, nFormatId );
+- else if ( aDataHelper.GetString( nFormatId, aStr ) )
+- bRet = aObj.ImportString( aStr, nFormatId );
++
++ else if ( aDataHelper.GetString( nFormatId, aStr ) ) {
++
++ sal_Int32 newln;
++ newln = aStr.indexOf ('\n');
++/* ::rtl::OString tmpStr = OUStringToOString
++ ( aStr, RTL_TEXTENCODING_UTF8 );
++ fprintf (stderr, "String is '%s' (%d) [%d]\n",
++ tmpStr.getStr (), tmpStr.getLength(), newln); */
++ if (newln >= 0 && newln != aStr.getLength () - 1) { // do dialog
++ // FIXME: split me out - if only C++ 'private' didn't suck rocks.
++
++ SvMemoryStream aStrm( (void*)aStr.getStr(), aStr.getLength() * sizeof(sal_Unicode), STREAM_READ );
++ aStrm.SetStreamCharSet( RTL_TEXTENCODING_UNICODE );
++ // Hack - copied from impex.cxx - we need a helper to do this [!]
++ aStrm.SetEndianSwap( FALSE );
++
++ ScImportAsciiDlg* pDlg = new ScImportAsciiDlg
++ ( NULL, String::CreateFromAscii("Pasted Data"), &aStrm );
++
++ if (pDlg->Execute() == RET_OK) {
++ ScAsciiOptions aOptions;
++ pDlg->GetOptions( aOptions );
++ aObj.SetExtOptions( aOptions );
++
++ bRet = aObj.ImportString( aStr, nFormatId );
++ } else
++ bRet = FALSE;
++ } else
++ bRet = aObj.ImportString( aStr, nFormatId );
++ }
+
+ InvalidateAttribs();
+ GetViewData()->UpdateInputHandler();
--- /dev/null
+Index: svx/source/stbctrls/pszctrl.cxx
+===================================================================
+RCS file: /cvs/graphics/svx/source/stbctrls/pszctrl.cxx,v
+retrieving revision 1.5
+diff -u -r1.5 pszctrl.cxx
+--- svx/source/stbctrls/pszctrl.cxx 10 Jul 2001 11:22:50 -0000 1.5
++++ svx/source/stbctrls/pszctrl.cxx 6 Dec 2002 16:41:37 -0000
+@@ -143,10 +143,9 @@
+ eInUnit = FUNIT_100TH_MM;
+
+ String sMetric;
+- LocaleDataWrapper aLocaleWrapper( ::comphelper::getProcessServiceFactory(), Application::GetSettings().GetLocale() );
+- const sal_Unicode cSep = aLocaleWrapper.getNumDecimalSep().GetChar(0);
++ const sal_Unicode cSep = Application::GetSettings().GetLocaleDataWrapper().getNumDecimalSep().GetChar(0);
+ long nConvVal = MetricField::ConvertValue( nVal * 100, 0L, 0,
+- eInUnit, eOutUnit );
++ eInUnit, eOutUnit );
+
+ if ( nConvVal < 0 && ( nConvVal / 100 == 0 ) )
+ sMetric += '-';