summaryrefslogtreecommitdiff
path: root/patches/OOO_1_1_2/vcl-inc.diff
diff options
context:
space:
mode:
Diffstat (limited to 'patches/OOO_1_1_2/vcl-inc.diff')
-rw-r--r--patches/OOO_1_1_2/vcl-inc.diff8737
1 files changed, 8737 insertions, 0 deletions
diff --git a/patches/OOO_1_1_2/vcl-inc.diff b/patches/OOO_1_1_2/vcl-inc.diff
new file mode 100644
index 000000000..9abbee81a
--- /dev/null
+++ b/patches/OOO_1_1_2/vcl-inc.diff
@@ -0,0 +1,8737 @@
+Index: vcl/inc/abstdlg.hxx
+===================================================================
+RCS file: vcl/inc/abstdlg.hxx
+diff -N vcl/inc/abstdlg.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/abstdlg.hxx 3 Feb 2004 17:13:21 -0000 1.3
+@@ -0,0 +1,101 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * The Contents of this file are made available subject to the terms of
++ * either of the following licenses
++ *
++ * - GNU Lesser General Public License Version 2.1
++ * - Sun Industry Standards Source License Version 1.1
++ *
++ * Sun Microsystems Inc., October, 2000
++ *
++ * GNU Lesser General Public License Version 2.1
++ * =============================================
++ * Copyright 2000 by Sun Microsystems, Inc.
++ * 901 San Antonio Road, Palo Alto, CA 94303, USA
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License version 2.1, as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ *
++ * Sun Industry Standards Source License Version 1.1
++ * =================================================
++ * The contents of this file are subject to the Sun Industry Standards
++ * Source License Version 1.1 (the "License"); You may not use this file
++ * except in compliance with the License. You may obtain a copy of the
++ * License at http://www.openoffice.org/license.html.
++ *
++ * Software provided under this License is provided on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
++ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
++ * See the License for the specific provisions governing your rights and
++ * obligations concerning the Software.
++ *
++ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
++ *
++ * Copyright: 2000 by Sun Microsystems, Inc.
++ *
++ * All Rights Reserved.
++ *
++ * Contributor(s): _______________________________________
++ *
++ *
++ ************************************************************************/
++#ifndef _VCL_ABSTDLG_HXX
++#define _VCL_ABSTDLG_HXX
++
++// include ---------------------------------------------------------------
++
++#include <tools/solar.h>
++#include <tools/string.hxx>
++
++class Window;
++class ResId;
++
++class VclAbstractDialog
++{
++public:
++ virtual USHORT Execute() = 0;
++ //virtual void Show( BOOL bVisible = TRUE, USHORT nFlags = 0 ) = 0;
++ virtual ~VclAbstractDialog();
++};
++
++class VclAbstractTerminatedDialog : public VclAbstractDialog
++{
++public:
++ virtual void EndDialog(long nResult =0) = 0;
++};
++
++class VclAbstractRefreshableDialog : public VclAbstractDialog
++{
++public:
++ virtual void Update() = 0;
++ virtual void Sync() = 0;
++};
++
++class VclAbstractDialogFactory
++{
++public:
++ static VclAbstractDialogFactory* Create();
++ virtual VclAbstractDialog* CreateVclDialog( Window* pParent, const ResId& rResId ) = 0;
++};
++
++#endif
++
+Index: vcl/inc/accel.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/accel.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/accel.hxx 7 Dec 2000 13:37:15 -0000 1.2
++++ vcl/inc/accel.hxx 6 Jan 2004 12:50:31 -0000 1.3
+@@ -65,11 +65,11 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_RESID_HXX
+-#include <resid.hxx>
++#ifndef _TOOLS_RESID_HXX
++#include <tools/resid.hxx>
+ #endif
+-#ifndef _SV_RC_HXX
+-#include <rc.hxx>
++#ifndef _TOOLS_RC_HXX
++#include <tools/rc.hxx>
+ #endif
+ #ifndef _SV_KEYCOD_HXX
+ #include <keycod.hxx>
+@@ -84,6 +84,8 @@ class ImplAccelEntry;
+
+ class Accelerator : public Resource
+ {
++ friend class ImplAccelManager;
++
+ private:
+ ImplAccelData* mpData;
+ XubString maHelpStr;
+@@ -99,15 +101,12 @@ private:
+ BOOL* mpDel;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_ACCEL_CXX
+ void ImplInit();
+ void ImplCopyData( ImplAccelData& rAccelData );
+ void ImplDeleteData();
+ void ImplInsertAccel( USHORT nItemId, const KeyCode& rKeyCode,
+ BOOL bEnable, Accelerator* pAutoAccel );
+-#endif
+
+- friend class ImplAccelManager;
+ ImplAccelEntry* ImplGetAccelData( const KeyCode& rKeyCode ) const;
+ #endif
+
+@@ -118,7 +117,7 @@ public:
+ Accelerator();
+ Accelerator( const Accelerator& rAccel );
+ Accelerator( const ResId& rResId );
+- ~Accelerator();
++ virtual ~Accelerator();
+
+ virtual void Activate();
+ virtual void Deactivate();
+Index: vcl/inc/alpha.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/alpha.hxx,v
+retrieving revision 1.3
+retrieving revision 1.6
+diff -u -p -u -r1.3 -r1.6
+--- vcl/inc/alpha.hxx 12 Sep 2002 09:30:19 -0000 1.3
++++ vcl/inc/alpha.hxx 21 May 2004 16:20:16 -0000 1.6
+@@ -70,15 +70,15 @@
+ // - AlphaMask -
+ // -------------
+
++class ImageList;
++
+ class AlphaMask : private Bitmap
+ {
+ friend class BitmapEx;
+ friend class OutputDevice;
++ friend SvStream& operator<<( SvStream&, const ImageList& );
+
+ private:
+-
+- long nDummy1;
+- long nDummy2;
+
+ const Bitmap& ImplGetBitmap() const;
+ void ImplSetBitmap( const Bitmap& rBitmap );
+Index: vcl/inc/apptypes.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/apptypes.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/apptypes.hxx 11 Jul 2001 08:32:52 -0000 1.3
++++ vcl/inc/apptypes.hxx 6 Jan 2004 12:51:37 -0000 1.4
+@@ -62,12 +62,12 @@
+ #ifndef _VCL_APPTYPES_HXX
+ #define _VCL_APPTYPES_HXX
+
+-#ifndef _RTTI_HXX
+-#include <tools/rtti.hxx>
+-#endif
+-
+ #ifndef _SV_SV_H
+ #include <sv.h>
++#endif
++
++#ifndef _RTTI_HXX
++#include <tools/rtti.hxx>
+ #endif
+
+ // ---------------------
+Index: vcl/inc/bitmap.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/bitmap.hxx,v
+retrieving revision 1.8
+retrieving revision 1.13
+diff -u -p -u -r1.8 -r1.13
+--- vcl/inc/bitmap.hxx 24 Apr 2003 14:56:11 -0000 1.8
++++ vcl/inc/bitmap.hxx 10 Jun 2004 17:36:43 -0000 1.13
+@@ -68,8 +68,8 @@
+ #ifndef _SV_MAPMOD_HXX
+ #include <mapmod.hxx>
+ #endif
+-#ifndef _SV_RC_HXX
+-#include <rc.hxx>
++#ifndef _TOOLS_RC_HXX
++#include <tools/rc.hxx>
+ #endif
+ #ifndef _SV_REGION_HXX
+ #include <region.hxx>
+@@ -106,8 +106,8 @@
+
+ // -----------------------------------------------------------------------------
+
+-#define BMP_COL_TRANS Color( 252, 3, 251 )
+-
++#define BMP_COL_TRANS Color( 252, 3, 251 )
++#define BMP_COLOR_MONOCHROME_THRESHOLD 128
+
+ // ---------
+ // - Enums -
+@@ -188,7 +188,9 @@ enum BmpFilter
+ enum BmpColorMode
+ {
+ BMP_COLOR_NORMAL = 0,
+- BMP_COLOR_HIGHCONTRAST = 1
++ BMP_COLOR_HIGHCONTRAST = 1,
++ BMP_COLOR_MONOCHROME_BLACK = 2,
++ BMP_COLOR_MONOCHROME_WHITE = 3
+ };
+
+ // --------------------
+@@ -330,27 +332,6 @@ public:
+ BOOL ImplMosaic( const BmpFilterParam* pFilterParam, const Link* pProgress );
+ BOOL ImplPopArt( const BmpFilterParam* pFilterParam, const Link* pProgress );
+
+-#ifdef REMOTE_APPSERVER
+-
+- void ImplDrawRemote( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz ) const;
+- void ImplDrawRemoteEx( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz,
+- const Bitmap& rMask ) const;
+- void ImplDrawRemoteAlpha( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz,
+- const AlphaMask& rAlpha ) const;
+- void ImplDrawRemoteMask( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz,
+- const Color& rColor ) const;
+- void ImplGetRemoteBmp( OutputDevice* pOut, const Point& rPt,
+- const Size& rSz );
+-
+-#endif // REMOTE_APPSERVER
+ #endif // PRIVATE
+
+ public:
+Index: vcl/inc/bitmapex.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/bitmapex.hxx,v
+retrieving revision 1.5
+retrieving revision 1.9
+diff -u -p -u -r1.5 -r1.9
+--- vcl/inc/bitmapex.hxx 22 Oct 2002 17:07:54 -0000 1.5
++++ vcl/inc/bitmapex.hxx 21 May 2004 16:20:50 -0000 1.9
+@@ -68,8 +68,8 @@
+ #ifndef _SV_ALPHA_HXX
+ #include <alpha.hxx>
+ #endif
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+
+ // -------------------
+@@ -100,23 +100,10 @@ private:
+ Size aBitmapSize;
+ Color aTransparentColor;
+ TransparentType eTransparent;
+- USHORT nDummy;
+ BOOL bAlpha;
+- BYTE cDummy;
+
+ public:
+
+-#ifdef REMOTE_APPSERVER
+-
+- void ImplDrawRemote( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz ) const;
+- void ImplDrawRemoteAlpha( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz ) const;
+-
+-#endif // REMOTE
+-
+ #if _SOLAR__PRIVATE
+
+ ImpBitmap* ImplGetBitmapImpBitmap() const { return aBitmap.ImplGetImpBitmap(); }
+Index: vcl/inc/brdwin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/brdwin.hxx,v
+retrieving revision 1.2
+retrieving revision 1.4
+diff -u -p -u -r1.2 -r1.4
+--- vcl/inc/brdwin.hxx 16 Feb 2001 11:09:45 -0000 1.2
++++ vcl/inc/brdwin.hxx 17 Jun 2004 12:01:23 -0000 1.4
+@@ -156,14 +156,12 @@ private:
+ BOOL mbHelpBtn;
+ BOOL mbDisplayActive;
+
+-#ifdef _SV_BRDWIN_CXX
+ void ImplInit( Window* pParent,
+ WinBits nStyle, USHORT nTypeStyle,
+ SystemParentData* pParentData );
+ void ImplInit( Window* pParent,
+ WinBits nStyle, USHORT nTypeStyle,
+ const ::com::sun::star::uno::Any& );
+-#endif
+
+ public:
+ ImplBorderWindow( Window* pParent,
+@@ -213,8 +211,8 @@ public:
+ void SetMinOutputSize( long nWidth, long nHeight )
+ { mnMinWidth = nWidth; mnMinHeight = nHeight; }
+
+- void GetBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const;
++ void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+ long CalcTitleWidth() const;
+ };
+
+@@ -242,10 +240,10 @@ struct ImplBorderFrameData
+ long mnTrackY;
+ long mnTrackWidth;
+ long mnTrackHeight;
+- long mnLeftBorder;
+- long mnTopBorder;
+- long mnRightBorder;
+- long mnBottomBorder;
++ sal_Int32 mnLeftBorder;
++ sal_Int32 mnTopBorder;
++ sal_Int32 mnRightBorder;
++ sal_Int32 mnBottomBorder;
+ long mnNoTitleTop;
+ long mnBorderSize;
+ long mnTitleHeight;
+@@ -279,8 +277,8 @@ public:
+ virtual USHORT RequestHelp( const Point& rPos, Rectangle& rHelpRect );
+
+ virtual void Init( OutputDevice* pDev, long nWidth, long nHeight ) = 0;
+- virtual void GetBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const = 0;
++ virtual void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const = 0;
+ virtual long CalcTitleWidth() const = 0;
+ virtual void DrawWindow( USHORT nDrawFlags, OutputDevice* pOutDev = NULL, const Point* pOffset = NULL ) = 0;
+
+@@ -305,8 +303,8 @@ public:
+ ImplNoBorderWindowView( ImplBorderWindow* pBorderWindow );
+
+ virtual void Init( OutputDevice* pDev, long nWidth, long nHeight );
+- virtual void GetBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const;
++ virtual void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+ virtual long CalcTitleWidth() const;
+ virtual void DrawWindow( USHORT nDrawFlags, OutputDevice* pOutDev, const Point* pOffset );
+ };
+@@ -324,17 +322,17 @@ class ImplSmallBorderWindowView : public
+ OutputDevice* mpOutDev;
+ long mnWidth;
+ long mnHeight;
+- long mnLeftBorder;
+- long mnTopBorder;
+- long mnRightBorder;
+- long mnBottomBorder;
++ sal_Int32 mnLeftBorder;
++ sal_Int32 mnTopBorder;
++ sal_Int32 mnRightBorder;
++ sal_Int32 mnBottomBorder;
+
+ public:
+ ImplSmallBorderWindowView( ImplBorderWindow* pBorderWindow );
+
+ virtual void Init( OutputDevice* pOutDev, long nWidth, long nHeight );
+- virtual void GetBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const;
++ virtual void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+ virtual long CalcTitleWidth() const;
+ virtual void DrawWindow( USHORT nDrawFlags, OutputDevice* pOutDev, const Point* pOffset );
+ };
+@@ -363,8 +361,8 @@ public:
+ virtual USHORT RequestHelp( const Point& rPos, Rectangle& rHelpRect );
+
+ virtual void Init( OutputDevice* pDev, long nWidth, long nHeight );
+- virtual void GetBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const;
++ virtual void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+ virtual long CalcTitleWidth() const;
+ virtual void DrawWindow( USHORT nDrawFlags, OutputDevice* pOutDev, const Point* pOffset );
+ };
+Index: vcl/inc/btndlg.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/btndlg.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/btndlg.hxx 7 Dec 2000 13:37:15 -0000 1.2
++++ vcl/inc/btndlg.hxx 6 Jan 2004 12:53:29 -0000 1.3
+@@ -101,20 +101,15 @@ private:
+ BOOL mbFormat;
+ Link maClickHdl;
+
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_BTNDLG_CXX
+ void ImplInitData();
+ PushButton* ImplCreatePushButton( USHORT nBtnFlags );
+ ImplBtnDlgItem* ImplGetItem( USHORT nId ) const;
+ DECL_LINK( ImplClickHdl, PushButton* pBtn );
+ void ImplPosControls();
+-#endif
+-protected:
+- long ImplGetButtonSize();
+-#endif
+
+ protected:
+ ButtonDialog( WindowType nType );
++ long ImplGetButtonSize();
+
+ public:
+ ButtonDialog( Window* pParent, WinBits nStyle = WB_STDDIALOG );
+Index: vcl/inc/button.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/button.hxx,v
+retrieving revision 1.8
+retrieving revision 1.11
+diff -u -p -u -r1.8 -r1.11
+--- vcl/inc/button.hxx 17 Apr 2003 17:55:12 -0000 1.8
++++ vcl/inc/button.hxx 10 May 2004 15:40:59 -0000 1.11
+@@ -78,6 +78,10 @@
+ #include <bitmap.hxx>
+ #endif
+
++#ifndef _SV_NATIVEWIDGETS_HXX
++#include <salnativewidgets.hxx>
++#endif
++
+ class UserDrawEvent;
+
+ // ----------
+@@ -124,7 +128,6 @@ protected:
+ Image maImageHC;
+ BitmapEx* mpBitmapEx;
+ BitmapEx* mpBitmapExHC;
+- void* mpDummy;
+ SymbolType meSymbol;
+ ImageAlign meImageAlign;
+ TriState meState;
+@@ -133,12 +136,9 @@ protected:
+ USHORT mnButtonState;
+ BOOL mbPressed;
+ BOOL mbInUserDraw;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+ Link maToggleHdl;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_BUTTON_CXX
+ void ImplInitData();
+ WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+@@ -148,7 +148,6 @@ protected:
+ USHORT ImplGetTextStyle() const;
+ BOOL IsSymbol() const { return ( (meSymbol != SYMBOL_NOSYMBOL) && (meSymbol != SYMBOL_IMAGE) ); }
+ BOOL IsImage() const { return !!maImage; }
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+@@ -180,6 +179,7 @@ public:
+ virtual void LoseFocus();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
++ virtual long PreNotify( NotifyEvent& rNEvt );
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+
+ virtual void Toggle();
+@@ -253,10 +246,8 @@ inline BOOL PushButton::IsChecked() cons
+
+ class OKButton : public PushButton
+ {
+-#ifdef _SV_BUTTON_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+-#endif
+
+ public:
+ OKButton( Window* pParent, WinBits nStyle = WB_DEFBUTTON );
+@@ -271,10 +262,8 @@ public:
+
+ class CancelButton : public PushButton
+ {
+-#ifdef _SV_BUTTON_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+-#endif
+
+ public:
+ CancelButton( Window* pParent, WinBits nStyle = 0 );
+@@ -289,10 +278,8 @@ public:
+
+ class HelpButton : public PushButton
+ {
+-#ifdef _SV_BUTTON_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+-#endif
+
+ public:
+ HelpButton( Window* pParent, WinBits nStyle = 0 );
+@@ -318,12 +305,9 @@ private:
+ BOOL mbSaveValue;
+ BOOL mbRadioCheck;
+ BOOL mbStateChanged;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+ Link maToggleHdl;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_BUTTON_CXX
+ void ImplInitData();
+ WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+@@ -336,7 +320,6 @@ private:
+ bool bLayout = false );
+ void ImplDrawRadioButton( bool bLayout = false );
+ void ImplUncheckAllOther();
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+@@ -376,6 +359,7 @@ public:
+ virtual void LoseFocus();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
++ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ virtual void Toggle();
+
+@@ -428,7 +412,6 @@ private:
+ Link maToggleHdl;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_BUTTON_CXX
+ void ImplInitData();
+ WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+@@ -439,7 +422,6 @@ private:
+ Rectangle& rStateRect,
+ Rectangle& rMouseRect, Rectangle& rFocusRect, bool bLayout );
+ void ImplDrawCheckBox( bool bLayout = false );
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+@@ -465,6 +447,7 @@ public:
+ virtual void LoseFocus();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
++ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ virtual void Toggle();
+
+Index: vcl/inc/cmdevt.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/cmdevt.hxx,v
+retrieving revision 1.10.250.1
+retrieving revision 1.12
+diff -u -p -u -r1.10.250.1 -r1.12
+--- vcl/inc/cmdevt.hxx 9 Jan 2004 18:13:38 -0000 1.10.250.1
++++ vcl/inc/cmdevt.hxx 6 Jan 2004 12:54:08 -0000 1.12
+@@ -101,7 +101,6 @@ private:
+ xub_StrLen mnOldTextLen;
+ USHORT mnCursorFlags;
+ BOOL mbOnlyCursor;
+- BOOL mbDummy;
+
+ public:
+ CommandExtTextInputData();
+Index: vcl/inc/combobox.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/combobox.hxx,v
+retrieving revision 1.12
+retrieving revision 1.14
+diff -u -p -u -r1.12 -r1.14
+--- vcl/inc/combobox.hxx 11 Apr 2003 17:24:42 -0000 1.12
++++ vcl/inc/combobox.hxx 18 May 2004 10:47:56 -0000 1.14
+@@ -192,6 +192,7 @@ public:
+ BOOL IsUserDrawEnabled() const;
+
+ void DrawEntry( const UserDrawEvent& rEvt, BOOL bDrawImage, BOOL bDrawText, BOOL bDrawTextAtImagePos = FALSE );
++ void SetBorderStyle( USHORT nBorderStyle );
+
+ void SetSeparatorPos( USHORT n );
+ void SetSeparatorPos();
+Index: vcl/inc/controllayout.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/controllayout.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/controllayout.hxx 16 May 2002 11:52:49 -0000 1.3
++++ vcl/inc/controllayout.hxx 18 May 2004 10:48:10 -0000 1.4
+@@ -103,6 +103,20 @@ struct ControlLayoutData
+ // returns the interval [start,end] of line nLine
+ // returns [-1,-1] for an invalid line
+ Pair GetLineStartEnd( long nLine ) const;
++ /** ToRelativeLineIndex changes a layout data index to a count relative to its line.
++
++ <p>This is equivalent to getting the line start/end pairs with
++ <member>GetLineStartEnd</member> until the index lies within [start,end] of a line
++ </p>
++
++ @param nIndex
++ the absolute index inside the display text to be changed to a relative index
++
++ @returns
++ the relative index inside the displayed line or -1 if the absolute index does
++ not match any line
++ */
++ long ToRelativeLineIndex( long nIndex ) const;
+ };
+
+ } // namespace vcl
+Index: vcl/inc/ctrl.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/ctrl.hxx,v
+retrieving revision 1.5
+retrieving revision 1.8
+diff -u -p -u -r1.5 -r1.8
+--- vcl/inc/ctrl.hxx 16 May 2002 11:52:49 -0000 1.5
++++ vcl/inc/ctrl.hxx 18 May 2004 10:48:23 -0000 1.8
+@@ -73,6 +73,10 @@
+ #include <window.hxx>
+ #endif
+
++#ifndef _SV_NATIVEWIDGETS_HXX
++#include <salnativewidgets.hxx>
++#endif
++
+ // forward
+ namespace vcl { struct ControlLayoutData; }
+
+@@ -83,27 +87,26 @@ namespace vcl { struct ControlLayoutData
+ class Control : public Window
+ {
+ protected:
+- mutable vcl::ControlLayoutData* mpLayoutData;
++ mutable vcl::ControlLayoutData* mpLayoutData;
+ private:
+- long mnDummy1;
+- BOOL mbHasFocus;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+- BOOL mbDummy3;
+- Link maGetFocusHdl;
+- Link maLoseFocusHdl;
++ BOOL mbHasFocus;
++ Link maGetFocusHdl;
++ Link maLoseFocusHdl;
+
+-#ifdef _SV_CTRL_CXX
+ void ImplInitData();
+-public:
+- void ImplSubControlLayoutChanged() const;
+-#endif
++
+ protected:
+ Control( WindowType nType );
+- virtual void FillLayoutData() const;
++ virtual void FillLayoutData() const;
+
+ // helper method for composite controls
+ void AppendLayoutData( const Control& rSubControl ) const;
++
++#if _SOLAR__PRIVATE
++public:
++ void ImplClearLayoutData() const;
++#endif
++
+ public:
+ Control( Window* pParent, WinBits nWinStyle = 0 );
+ Control( Window* pParent, const ResId& rResId );
+@@ -129,6 +132,20 @@ public:
+ // returns the interval [start,end] of line nLine
+ // returns [-1,-1] for an invalid line
+ Pair GetLineStartEnd( long nLine ) const;
++ /** ToRelativeLineIndex changes a layout data index to a count relative to its line.
++
++ <p>This is equivalent to getting the line start/end pairs with
++ <member>GetLineStartEnd</member> until the index lies within [start,end] of a line
++ </p>
++
++ @param nIndex
++ the absolute index inside the display text to be changed to a relative index
++
++ @returns
++ the relative index inside the displayed line or -1 if the absolute index does
++ not match any line
++ */
++ long ToRelativeLineIndex( long nIndex ) const;
+
+
+ void SetGetFocusHdl( const Link& rLink ) { maGetFocusHdl = rLink; }
+Index: vcl/inc/cursor.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/cursor.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/cursor.hxx 27 Mar 2003 17:57:20 -0000 1.3
++++ vcl/inc/cursor.hxx 6 Jan 2004 12:55:28 -0000 1.4
+@@ -66,6 +66,10 @@
+ #include <tools/gen.hxx>
+ #endif
+
++#ifndef _LINK_HXX
++#include <tools/link.hxx>
++#endif
++
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+@@ -103,11 +107,9 @@ private:
+
+ #if _SOLAR__PRIVATE
+ public:
+-#ifdef _SV_CURSOR_CXX
+ void ImplDraw();
+ void ImplRestore();
+ DECL_LINK( ImplTimerHdl, AutoTimer* );
+-#endif
+ void ImplShow( BOOL bDrawDirect = TRUE );
+ void ImplHide();
+ void ImplNew();
+Index: vcl/inc/cvtsvm.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/cvtsvm.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/cvtsvm.hxx 7 Dec 2000 13:37:15 -0000 1.3
++++ vcl/inc/cvtsvm.hxx 6 Jan 2004 12:55:49 -0000 1.4
+@@ -129,7 +129,6 @@ class SVMConverter
+ {
+ private:
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_CVTSVM_CXX
+ void ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf );
+ void ImplConvertToSVM1( SvStream& rOStm, GDIMetaFile& rMtf );
+ ULONG ImplWriteActions( SvStream& rOStm, GDIMetaFile& rMtf,
+@@ -137,7 +136,6 @@ private:
+ Color& rLineCol, Stack& rLineColStack,
+ rtl_TextEncoding& rActualCharSet );
+ #endif
+-#endif // __PRIVATE
+
+ public:
+ SVMConverter( SvStream& rIStm, GDIMetaFile& rMtf, ULONG nConvertMode );
+Index: vcl/inc/decoview.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/decoview.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/decoview.hxx 27 Mar 2003 17:57:20 -0000 1.3
++++ vcl/inc/decoview.hxx 10 May 2004 15:41:25 -0000 1.4
+@@ -88,6 +88,7 @@ class OutputDevice;
+ #define FRAME_DRAW_DOUBLEIN ((USHORT)0x0004)
+ #define FRAME_DRAW_DOUBLEOUT ((USHORT)0x0005)
+ #define FRAME_DRAW_MENU ((USHORT)0x0010)
++#define FRAME_DRAW_WINDOWBORDER ((USHORT)0x0020)
+ #define FRAME_DRAW_MONO ((USHORT)0x1000)
+ #define FRAME_DRAW_NODRAW ((USHORT)0x8000)
+ #define FRAME_DRAW_STYLE ((USHORT)0x000F)
+Index: vcl/inc/dialog.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/dialog.hxx,v
+retrieving revision 1.7.252.1
+retrieving revision 1.10
+diff -u -p -u -r1.7.252.1 -r1.10
+--- vcl/inc/dialog.hxx 31 Oct 2003 15:43:22 -0000 1.7.252.1
++++ vcl/inc/dialog.hxx 17 Jun 2004 12:02:16 -0000 1.10
+@@ -81,20 +81,16 @@ class Dialog : public SystemWindow
+ {
+ private:
+ Window* mpDialogParent;
+- long mnDummy;
+ Dialog* mpPrevExecuteDlg;
+ long* mpResult;
+- long mnDummy1;
+ long mnMousePositioned;
+ BOOL mbInExecute;
+ BOOL mbOldSaveBack;
+ BOOL mbInClose;
+ BOOL mbModalMode;
+
+-#ifdef _SV_DIALOG_CXX
+ void ImplInitData();
+ void ImplInitSettings();
+-#endif
+
+ #if _SOLAR__PRIVATE
+ protected:
+@@ -126,8 +122,8 @@ public:
+ void EndDialog( long nResult = 0 );
+ static void EndAllDialogs( Window* pParent=NULL );
+
+- void GetDrawWindowBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const;
++ void GetDrawWindowBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+
+ void SetModalInputMode( BOOL bModal );
+ void SetModalInputMode( BOOL bModal, BOOL bSubModalDialogs );
+Index: vcl/inc/dockwin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/dockwin.hxx,v
+retrieving revision 1.4
+retrieving revision 1.6
+diff -u -p -u -r1.4 -r1.6
+--- vcl/inc/dockwin.hxx 24 Apr 2002 15:41:07 -0000 1.4
++++ vcl/inc/dockwin.hxx 17 Jun 2004 12:02:29 -0000 1.6
+@@ -89,10 +89,10 @@ private:
+ long mnTrackY;
+ long mnTrackWidth;
+ long mnTrackHeight;
+- long mnDockLeft;
+- long mnDockTop;
+- long mnDockRight;
+- long mnDockBottom;
++ sal_Int32 mnDockLeft;
++ sal_Int32 mnDockTop;
++ sal_Int32 mnDockRight;
++ sal_Int32 mnDockBottom;
+ WinBits mnFloatBits;
+ BOOL mbDockCanceled:1,
+ mbDockPrevented:1,
+@@ -106,15 +106,10 @@ private:
+ mbPined:1,
+ mbRollUp:1,
+ mbDockBtn:1,
+- mbHideBtn:1,
+- mbDummy1:1,
+- mbDummy2:1,
+- mbDummy3:1;
++ mbHideBtn:1;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_DOCKWIN_CXX
+ void ImplInitData();
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+Index: vcl/inc/edit.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/edit.hxx,v
+retrieving revision 1.11
+retrieving revision 1.13
+diff -u -p -u -r1.11 -r1.13
+--- vcl/inc/edit.hxx 27 Mar 2003 17:57:20 -0000 1.11
++++ vcl/inc/edit.hxx 10 May 2004 15:41:45 -0000 1.13
+@@ -139,7 +139,6 @@ private:
+ Link maAutocompleteHdl;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_EDIT_CXX
+ DECL_LINK( ImplUpdateDataHdl, Timer* );
+
+ void ImplInitData();
+@@ -164,7 +163,6 @@ private:
+ void ImplPaste( ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard >& rxClipboard );
+ long ImplGetExtraOffset() const;
+ #endif
+-#endif
+
+ protected:
+ #if _SOLAR__PRIVATE
+@@ -174,6 +172,7 @@ protected:
+ void ImplLoadRes( const ResId& rResId );
+ void ImplSetSelection( const Selection& rSelection, BOOL bPaint = TRUE );
+ #endif
++ int ImplGetNativeControlType();
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::dnd::XDragSourceListener > mxDnDListener;
+
+Index: vcl/inc/field.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/field.hxx,v
+retrieving revision 1.9
+retrieving revision 1.12
+diff -u -p -u -r1.9 -r1.12
+--- vcl/inc/field.hxx 5 Nov 2001 13:00:00 -0000 1.9
++++ vcl/inc/field.hxx 2 Apr 2004 10:35:02 -0000 1.12
+@@ -105,17 +105,10 @@ private:
+ BOOL mbEmptyFieldValue;
+ BOOL mbEmptyFieldValueEnabled;
+ BOOL mbDefaultLocale;
+- ULONG mnDummy1;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+- BOOL mbDummy3;
+- BOOL mbDummy4;
+
+ protected:
+-#if defined( _SV_FIELD_CXX ) || defined( _SV_FIELD2_CXX ) || defined( VCL_LONGCURR_CXX )
+ void ImplSetText( const XubString& rText, Selection* pNewSel = NULL );
+ BOOL ImplGetEmptyFieldValue() const { return mbEmptyFieldValue; }
+-#endif
+
+ void SetFieldText( const XubString& rText, BOOL bKeepSelection );
+ void SetEmptyFieldValueData( BOOL bValue ) { mbEmptyFieldValue = bValue; }
+@@ -125,7 +118,7 @@ protected:
+
+ public:
+ FormatterBase( Edit* pField = NULL );
+- ~FormatterBase();
++ virtual ~FormatterBase();
+
+ const LocaleDataWrapper& GetLocaleDataWrapper() const;
+
+@@ -174,21 +163,16 @@ private:
+ XubString maFieldString;
+ XubString maLiteralMask;
+ USHORT mnFormatFlags;
+- USHORT mnDummy1;
+ BOOL mbSameMask;
+ BOOL mbInPattKeyInput;
+- BOOL mbDummy1;
+- BYTE mbDummy2;
+
+ protected:
+ PatternFormatter();
+
+-#ifdef _SV_FIELD2_CXX
+ void ImplLoadRes( const ResId& rResId );
+ void ImplSetMask( const ByteString& rEditMask, const XubString& rLiteralMask );
+ BOOL ImplIsSameMask() const { return mbSameMask; }
+ BOOL& ImplGetInPattKeyInput() { return mbInPattKeyInput; }
+-#endif
+
+ public:
+ ~PatternFormatter();
+@@ -217,9 +201,7 @@ public:
+ class NumericFormatter : public FormatterBase
+ {
+ private:
+-#ifdef _SV_FIELD_CXX
+ void ImplInit();
+-#endif
+
+ protected:
+ long mnFieldValue;
+@@ -233,8 +215,6 @@ protected:
+ USHORT mnDumym2;
+ BOOL mbThousandSep;
+ BOOL mbShowTrailingZeros;
+- BYTE mbDummy2;
+- BYTE mbDummy3;
+
+ // Eigentlich nur am entsprechenden Feld einstellbar (fuer Interaktion),
+ // wird aber in allen Verschiedenen Ableitungen benoetigt
+@@ -255,12 +235,10 @@ protected:
+ void FieldFirst();
+ void FieldLast();
+
+-#ifdef _SV_FIELD_CXX
+ void ImplLoadRes( const ResId& rResId );
+ BOOL ImplNumericReformat( const XubString& rStr, double& rValue, XubString& rOutStr );
+ void ImplNewFieldValue( long nNewValue );
+ void ImplSetUserValue( long nNewValue, Selection* pNewSelection = NULL );
+-#endif
+
+ public:
+ ~NumericFormatter();
+@@ -308,9 +286,7 @@ public:
+ class MetricFormatter : public NumericFormatter
+ {
+ private:
+-#ifdef _SV_FIELD_CXX
+ void ImplInit();
+-#endif
+
+ protected:
+ XubString maCustomUnitText;
+@@ -324,10 +300,8 @@ protected:
+
+ virtual XubString CreateFieldText( long nValue ) const;
+
+-#ifdef _SV_FIELD_CXX
+ void ImplLoadRes( const ResId& rResId );
+ BOOL ImplMetricReformat( const XubString& rStr, double& rValue, XubString& rOutStr );
+-#endif
+
+ public:
+ ~MetricFormatter();
+@@ -368,23 +342,13 @@ class CurrencyFormatter : public Numeric
+ {
+ private:
+ String maCurrencySymbol;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+- BYTE mbDummy3;
+- BYTE mbDummy4;
+
+-#ifdef _SV_FIELD_CXX
+ void ImplInit();
+-#endif
+
+ protected:
+ CurrencyFormatter();
+-
+ virtual XubString CreateFieldText( long nValue ) const;
+-
+-#ifdef _SV_FIELD_CXX
+ BOOL ImplCurrencyReformat( const XubString& rStr, XubString& rOutStr );
+-#endif
+
+ public:
+ ~CurrencyFormatter();
+@@ -417,19 +381,13 @@ private:
+ BOOL mbShowDateCentury;
+ USHORT mnDateFormat;
+ ULONG mnExtDateFormat;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+- BYTE mbDummy3;
+- BYTE mbDummy4;
++ BOOL mbEnforceValidValue;
+
+-#ifdef _SV_FIELD2_CXX
+ void ImplInit();
+-#endif
+
+ protected:
+ DateFormatter();
+
+-#ifdef _SV_FIELD2_CXX
+ void ImplLoadRes( const ResId& rResId );
+ const Date& ImplGetFieldDate() const { return maFieldDate; }
+ BOOL ImplDateReformat( const XubString& rStr, XubString& rOutStr,
+@@ -440,7 +398,8 @@ protected:
+ const AllSettings& rSettings ) const;
+ void ImplNewFieldValue( const Date& rDate );
+ CalendarWrapper& GetCalendarWrapper() const;
+-#endif
++
++ BOOL ImplAllowMalformedInput() const;
+
+ public:
+ ~DateFormatter();
+@@ -450,11 +409,6 @@ public:
+
+ virtual void SetLocale( const ::com::sun::star::lang::Locale& rLocale );
+
+-#if SUPD < 651
+- // MT 11/01: Seems that nobody uses them, I only want to use the ExtDateFormat now ( ## )
+- void SetDateFormat( DateFormat eFormat );
+- DateFormat GetDateFormat() const;
+-#endif
+
+ void SetExtDateFormat( ExtDateFieldFormat eFormat );
+ ExtDateFieldFormat GetExtDateFormat( BOOL bResolveSystemFormat = FALSE ) const;
+@@ -489,6 +443,23 @@ public:
+
+ static void ExpandCentury( Date& rDate );
+ static void ExpandCentury( Date& rDate, USHORT nTwoDigitYearStart );
++
++ static Date GetInvalidDate() { return Date( 0, 0, 0 ); }
++
++ /** enables or disables the enforcement of valid values
++
++ If this is set to <TRUE/> (which is the default), then GetDate will always return a valid
++ date, no matter whether the current text can really be interpreted as date. (Note: this
++ is the compatible bahavior).
++
++ If this is set to <FALSE/>, the GetDate will return GetInvalidDate, in case the current text
++ cannot be interpreted as date.
++
++ In addition, if this is set to <FALSE/>, the text in the field will <em>not</em> be corrected
++ when the control loses the focus - instead, the invalid input will be preserved.
++ */
++ void EnforceValidValue( BOOL _bEnforce ) { mbEnforceValidValue = _bEnforce; }
++ inline BOOL IsEnforceValidValue( ) const { return mbEnforceValidValue; }
+ };
+
+
+@@ -507,27 +478,20 @@ private:
+ USHORT mnTimeFormat;
+ BOOL mbDuration;
+ BOOL mbEmptyTime;
+- ULONG mnDummy1;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+- BYTE mbDummy3;
+- BYTE mbDummy4;
++ BOOL mbEnforceValidValue;
+
+-#ifdef _SV_FIELD2_CXX
+ void ImplInit();
+-#endif
+
+ protected:
+ Time maFieldTime;
+
+ TimeFormatter();
+
+-#ifdef _SV_FIELD2_CXX
+ void ImplLoadRes( const ResId& rResId );
+ BOOL ImplTimeReformat( const XubString& rStr, XubString& rOutStr );
+ void ImplNewFieldValue( const Time& rTime );
+ void ImplSetUserTime( const Time& rNewTime, Selection* pNewSelection = NULL );
+-#endif
++ BOOL ImplAllowMalformedInput() const;
+
+ public:
+ ~TimeFormatter();
+@@ -557,6 +521,23 @@ public:
+ void SetEmptyTime() { FormatterBase::SetEmptyFieldValue(); }
+ BOOL IsEmptyTime() const { return FormatterBase::IsEmptyFieldValue(); }
+ Time GetCorrectedTime() const { return maCorrectedTime; }
++
++ static Time GetInvalidTime() { return Time( 99, 99, 99 ); }
++
++ /** enables or disables the enforcement of valid values
++
++ If this is set to <TRUE/> (which is the default), then GetTime will always return a valid
++ time, no matter whether the current text can really be interpreted as time. (Note: this
++ is the compatible bahavior).
++
++ If this is set to <FALSE/>, the GetTime will return GetInvalidTime, in case the current text
++ cannot be interpreted as time.
++
++ In addition, if this is set to <FALSE/>, the text in the field will <em>not</em> be corrected
++ when the control loses the focus - instead, the invalid input will be preserved.
++ */
++ void EnforceValidValue( BOOL _bEnforce ) { mbEnforceValidValue = _bEnforce; }
++ inline BOOL IsEnforceValidValue( ) const { return mbEnforceValidValue; }
+ };
+
+
+@@ -583,10 +564,8 @@ public:
+
+ class NumericField : public SpinField, public NumericFormatter
+ {
+-#ifdef _SV_FIELD_CXX
+ protected:
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ NumericField( Window* pParent, WinBits nWinStyle );
+@@ -612,10 +591,8 @@ public:
+
+ class MetricField : public SpinField, public MetricFormatter
+ {
+-#ifdef _SV_FIELD_CXX
+ protected:
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ MetricField( Window* pParent, WinBits nWinStyle );
+@@ -663,10 +640,8 @@ public:
+
+ class CurrencyField : public SpinField, public CurrencyFormatter
+ {
+-#ifdef _SV_FIELD_CXX
+ protected:
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ CurrencyField( Window* pParent, WinBits nWinStyle );
+@@ -696,11 +671,9 @@ private:
+ Date maFirst;
+ Date maLast;
+
+-#ifdef _SV_FIELD2_CXX
+ protected:
+ void ImplDateSpinArea( BOOL bUp );
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ DateField( Window* pParent, WinBits nWinStyle );
+@@ -739,11 +707,9 @@ private:
+ Time maFirst;
+ Time maLast;
+
+-#ifdef _SV_FIELD2_CXX
+ protected:
+ void ImplTimeSpinArea( BOOL bUp );
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ TimeField( Window* pParent, WinBits nWinStyle );
+Index: vcl/inc/fixbrd.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/fixbrd.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/fixbrd.hxx 7 Dec 2000 13:37:15 -0000 1.2
++++ vcl/inc/fixbrd.hxx 6 Jan 2004 12:57:59 -0000 1.3
+@@ -91,18 +91,13 @@ class FixedBorder : public Control
+ private:
+ USHORT mnType;
+ BOOL mbTransparent;
+- BOOL mbDummy1;
+
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_FIXBRD_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ WinBits ImplInitStyle( WinBits nStyle );
+ void ImplInitSettings();
+ void ImplDraw( OutputDevice* pDev, ULONG nDrawFlags,
+ const Point& rPos, const Size& rSize );
+-#endif
+-#endif
+
+ public:
+ FixedBorder( Window* pParent, WinBits nStyle = 0 );
+Index: vcl/inc/fixed.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/fixed.hxx,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -p -u -r1.5 -r1.6
+--- vcl/inc/fixed.hxx 29 Apr 2002 17:46:17 -0000 1.5
++++ vcl/inc/fixed.hxx 6 Jan 2004 12:58:20 -0000 1.6
+@@ -84,14 +84,12 @@ class UserDrawEvent;
+ class FixedText : public Control
+ {
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_FIXED_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ WinBits ImplInitStyle( WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+ void ImplDraw( OutputDevice* pDev, ULONG nDrawFlags,
+ const Point& rPos, const Size& rSize, bool bFillLayout = false ) const;
+-#endif
+ public:
+ static USHORT ImplGetTextStyle( WinBits nWinBits );
+ #endif
+@@ -116,17 +114,15 @@ public:
+
+ class FixedLine : public Control
+ {
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_FIXED_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ WinBits ImplInitStyle( WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+ void ImplDraw( bool bLayout = false );
+-#endif
+-#endif
++
+ protected:
+- virtual void FillLayoutData() const;
++ virtual void FillLayoutData() const;
++
+ public:
+ FixedLine( Window* pParent, WinBits nStyle = WB_HORZ );
+ FixedLine( Window* pParent, const ResId& rResId );
+@@ -148,19 +144,14 @@ private:
+ Bitmap maBitmap;
+ Bitmap maBitmapHC;
+
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_FIXED_CXX
+-private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ WinBits ImplInitStyle( WinBits nStyle );
+ void ImplInitSettings();
+ void ImplDraw( OutputDevice* pDev, ULONG nDrawFlags,
+ const Point& rPos, const Size& rSize );
+-#endif
+
+ protected:
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ FixedBitmap( Window* pParent, WinBits nStyle = 0 );
+@@ -190,19 +181,15 @@ private:
+ Image maImageHC;
+ BOOL mbInUserDraw;
+
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_FIXED_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ WinBits ImplInitStyle( WinBits nStyle );
+ void ImplInitSettings();
+ void ImplDraw( OutputDevice* pDev, ULONG nDrawFlags,
+ const Point& rPos, const Size& rSize );
+-#endif
+
+ protected:
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ FixedImage( Window* pParent, WinBits nStyle = 0 );
+Index: vcl/inc/floatwin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/floatwin.hxx,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -p -u -r1.5 -r1.6
+--- vcl/inc/floatwin.hxx 31 Oct 2001 19:28:50 -0000 1.5
++++ vcl/inc/floatwin.hxx 6 Jan 2004 12:58:54 -0000 1.6
+@@ -114,7 +114,6 @@ private:
+ FloatingWindow* mpNextFloat;
+ Window* mpFirstPopupModeWin;
+ ToolBox* mpBox;
+- void* mpDummy;
+ Rectangle maFloatRect;
+ ULONG mnPostId;
+ ULONG mnPopupModeFlags;
+@@ -131,10 +130,8 @@ private:
+ Link maPopupModeEndHdl;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_FLOATWIN_CXX
+ void ImplCallPopupModeEnd();
+ DECL_LINK( ImplEndPopupModeHdl, void* );
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+Index: vcl/inc/fntstyle.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/fntstyle.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/fntstyle.hxx 23 Mar 2001 11:44:51 -0000 1.2
++++ vcl/inc/fntstyle.hxx 6 Jan 2004 12:59:13 -0000 1.3
+@@ -62,6 +62,7 @@
+ #ifndef _VCL_FNTSTYLE_HXX
+ #define _VCL_FNTSTYLE_HXX
+
++#include <tools/solar.h>
+ #include <sal/types.h>
+
+ // --------------
+Index: vcl/inc/font.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/font.hxx,v
+retrieving revision 1.6
+retrieving revision 1.8
+diff -u -p -u -r1.6 -r1.8
+--- vcl/inc/font.hxx 1 Aug 2001 12:32:45 -0000 1.6
++++ vcl/inc/font.hxx 6 Jan 2004 12:59:38 -0000 1.8
+@@ -71,8 +71,8 @@
+ #ifndef _TOOLS_LANG_HXX
+ #include <tools/lang.hxx>
+ #endif
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+ #ifndef _VCL_VCLENUM_HXX
+ #include <vclenum.hxx>
+@@ -81,12 +81,6 @@
+ #include <fntstyle.hxx>
+ #endif
+
+-#ifdef SMART_UNO_GENERATION
+-class Font_Type;
+-class Font_Size;
+-class Font_Attribs;
+-#endif
+-
+ class SvStream;
+ #define FontAlign TextAlign
+
+@@ -226,16 +220,4 @@ public:
+
+ friend SvStream& operator>>( SvStream& rIStm, Font& rFont );
+ friend SvStream& operator<<( SvStream& rOStm, const Font& rFont );
+-
+-#ifdef SMART_UNO_GENERATION
+- void getType( Font_Type& ) const;
+- void setType( const Font_Type& );
+-
+- void getSize( Font_Size& ) const;
+- void setSize( const Font_Size& );
+-
+- void getAttribs( Font_Attribs& ) const;
+- void setAttribs( const Font_Attribs& );
+-#endif
+-
+ };
+
+Index: vcl/inc/fontcfg.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/fontcfg.hxx,v
+retrieving revision 1.3
+retrieving revision 1.5
+diff -u -p -u -r1.3 -r1.5
+--- vcl/inc/fontcfg.hxx 29 May 2002 13:37:05 -0000 1.3
++++ vcl/inc/fontcfg.hxx 25 Jun 2004 15:24:19 -0000 1.5
+@@ -66,43 +66,70 @@
+ #ifndef _UTL_CONFIGITEM_HXX_
+ #include <unotools/configitem.hxx>
+ #endif
+-#ifndef _LANG_HXX
+-#include <tools/lang.hxx>
+-#endif
+ #ifndef _STRING_HXX
+ #include <tools/string.hxx>
+ #endif
+ #ifndef _VCL_ENUM_HXX
+ #include <vclenum.hxx>
+ #endif
++#ifndef _COM_SUN_STAR_LANG_LOCALE_HPP_
++#include <com/sun/star/lang/Locale.hpp>
++#endif
+
+-#include <map>
+ #include <hash_map>
+ #include <vector>
+
++namespace com {
++namespace sun {
++namespace star {
++namespace lang {
++
++// equality operator needed for hash_map;
++// (-> why does this need to be in the namespace of Locale ? g++ fails to compile else)
++inline bool operator==( const com::sun::star::lang::Locale& rLeft, const com::sun::star::lang::Locale& rRight )
++{
++ return
++ rLeft.Language.equals( rRight.Language ) &&
++ rLeft.Country.equals( rRight.Country ) &&
++ rLeft.Variant.equals( rRight.Variant )
++ ;
++}
++}}}}
++
+ namespace vcl
+ {
+
++struct LocaleHash
++{
++ size_t operator()( const com::sun::star::lang::Locale& rLocale ) const
++ {
++ return
++ (size_t)rLocale.Language.hashCode() ^
++ (size_t)rLocale.Country.hashCode() ^
++ (size_t)rLocale.Variant.hashCode();
++ }
++};
++
+ class DefaultFontConfigItem : public ::utl::ConfigItem
+ {
+
+- ::std::map< int, ::std::map< int, ::rtl::OUString > > m_aDefaults;
++ std::hash_map< com::sun::star::lang::Locale , std::hash_map< int, rtl::OUString >, vcl::LocaleHash > m_aDefaults;
+
+- virtual void Notify( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& rPropertyNames );
++ virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& rPropertyNames );
+ virtual void Commit();
+
+ void getValues();
+- static int getKeyType( const ::rtl::OUString& rKey );
++ static int getKeyType( const rtl::OUString& rKey );
+ DefaultFontConfigItem();
+ public:
+ virtual ~DefaultFontConfigItem();
+
+ static DefaultFontConfigItem* get();
+
+- const ::rtl::OUString& getDefaultFont( int nLanguage, int nType ) const;
+- const ::rtl::OUString& getUserInterfaceFont( int nLanguage = LANGUAGE_SYSTEM ) const;
++ const rtl::OUString& getDefaultFont( const com::sun::star::lang::Locale& rLocale, int nType ) const;
++ const rtl::OUString& getUserInterfaceFont( const com::sun::star::lang::Locale& rLocale ) const;
+
+- void setDefaultFont( int nLanguage, int nType, const ::rtl::OUString& rName );
++ void setDefaultFont( const com::sun::star::lang::Locale& rLocale, int nType, const rtl::OUString& rName );
+ };
+
+
+@@ -170,13 +197,13 @@ public:
+ struct FontNameAttr
+ {
+ String Name;
+- ::std::vector< String > Substitutions;
+- ::std::vector< String > MSSubstitutions;
+- ::std::vector< String > PSSubstitutions;
+- ::std::vector< String > HTMLSubstitutions;
+- FontWeight Weight;
++ std::vector< String > Substitutions;
++ std::vector< String > MSSubstitutions;
++ std::vector< String > PSSubstitutions;
++ std::vector< String > HTMLSubstitutions;
++ FontWeight Weight;
+ FontWidth Width;
+- unsigned long Type; // bitfield of IMPL_FONT_ATTR_*
++ unsigned long Type; // bitfield of IMPL_FONT_ATTR_*
+ };
+ private:
+
+@@ -184,9 +211,9 @@ private:
+ // searches on the substitutes are done with Name as key, where
+ // a minimal match is sufficient (that is e.g. "Thorndale" will match
+ // "Thorndale BlaBlub"). Also names must be lower case.
+- ::std::map< int, ::std::vector< FontNameAttr > > m_aSubstitutions;
++ std::hash_map< com::sun::star::lang::Locale, std::vector< FontNameAttr >, vcl::LocaleHash > m_aSubstitutions;
+
+- virtual void Notify( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& rPropertyNames );
++ virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& rPropertyNames );
+ virtual void Commit();
+
+ void getValues();
+@@ -196,17 +223,23 @@ public:
+
+ static FontSubstConfigItem* get();
+
+- const FontNameAttr* getSubstInfo( const String& rFontName, int nLanguage = LANGUAGE_ENGLISH ) const;
++ const FontNameAttr* getSubstInfo(
++ const String& rFontName,
++ const com::sun::star::lang::Locale& rLocale =
++ com::sun::star::lang::Locale( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "en" ) ),
++ rtl::OUString(),
++ rtl::OUString() )
++ ) const;
+ static void getMapName( const String& rOrgName, String& rShortName, String& rFamilyName, FontWeight& rWeight, FontWidth& rWidth, unsigned long& rType );
+ };
+
+ class SettingsConfigItem : public ::utl::ConfigItem
+ {
+
+- ::std::hash_map< ::rtl::OUString, ::std::hash_map< ::rtl::OUString, ::rtl::OUString, ::rtl::OUStringHash >, ::rtl::OUStringHash >
++ std::hash_map< rtl::OUString, std::hash_map< rtl::OUString, rtl::OUString, rtl::OUStringHash >, rtl::OUStringHash >
+ m_aSettings;
+
+- virtual void Notify( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& rPropertyNames );
++ virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& rPropertyNames );
+ virtual void Commit();
+
+ void getValues();
+@@ -216,8 +249,8 @@ public:
+
+ static SettingsConfigItem* get();
+
+- const ::rtl::OUString& getValue( const ::rtl::OUString& rGroup, const ::rtl::OUString& rKey ) const;
+- void setValue( const ::rtl::OUString& rGroup, const ::rtl::OUString& rKey, const ::rtl::OUString& rValue );
++ const rtl::OUString& getValue( const rtl::OUString& rGroup, const rtl::OUString& rKey ) const;
++ void setValue( const rtl::OUString& rGroup, const rtl::OUString& rKey, const rtl::OUString& rValue );
+ };
+
+
+Index: vcl/inc/gdimtf.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/gdimtf.hxx,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -p -u -r1.5 -r1.6
+--- vcl/inc/gdimtf.hxx 18 Nov 2002 13:42:14 -0000 1.5
++++ vcl/inc/gdimtf.hxx 6 Jan 2004 13:00:30 -0000 1.6
+@@ -98,6 +98,7 @@ class Gradient;
+ #ifndef METAFILE_END
+ #define METAFILE_END GDI_METAFILE_END
+ #endif
++
+ #ifndef METAFILE_LABEL_NOTFOUND
+ #define METAFILE_LABEL_NOTFOUND GDI_METAFILE_LABEL_NOTFOUND
+ #endif
+@@ -136,11 +137,7 @@ typedef BitmapEx (*BmpExchangeFnc)( cons
+ // - GDIMetaFile -
+ // ---------------
+
+-#ifndef MAC
+ class GDIMetaFile : protected List
+-#else
+-class GDIMetaFile : public List
+-#endif
+ {
+ private:
+
+@@ -191,8 +188,8 @@ protected:
+
+ public:
+ GDIMetaFile();
+- GDIMetaFile( const GDIMetaFile& rMtf );
+- ~GDIMetaFile();
++ GDIMetaFile( const GDIMetaFile& rMtf );
++ virtual ~GDIMetaFile();
+
+ GDIMetaFile& operator=( const GDIMetaFile& rMtf );
+ BOOL operator==( const GDIMetaFile& rMtf ) const;
+Index: vcl/inc/glyphcache.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/glyphcache.hxx,v
+retrieving revision 1.19
+retrieving revision 1.22
+diff -u -p -u -r1.19 -r1.22
+--- vcl/inc/glyphcache.hxx 2 Jul 2003 13:38:54 -0000 1.19
++++ vcl/inc/glyphcache.hxx 18 May 2004 10:48:36 -0000 1.22
+@@ -72,6 +72,7 @@ class ServerFontLayout;
+
+ #include <tools/gen.hxx>
+ #include <hash_map>
++#include <map>
+ #include <hash_set>
+
+ struct ImplFontSelectData;
+@@ -90,14 +91,20 @@ bool operator==( const ImplFontSelectDat
+
+ // =======================================================================
+
++namespace std {
+ template<>
+-struct std::hash<ImplFontSelectData>
++struct hash<ImplFontSelectData>
+ {
+ size_t operator()( const ImplFontSelectData& ) const;
+ };
+
++}
++
+ //--------
+
++typedef std::map< sal_Unicode, std::map< sal_Unicode, int > > unicodeKernMap;
++typedef std::map< int, std::map< int, int > > glyphKernMap;
++
+ class GlyphCache
+ {
+ public:
+@@ -110,7 +117,11 @@ public:
+ void ClearFontPath();
+ void AddFontPath( const String& rFontPath );
+ void AddFontFile( const rtl::OString& rNormalizedName,
+- int nFaceNum, int nFontId, const ImplFontData* );
++ int nFaceNum,
++ int nFontId,
++ const ImplFontData*,
++ const unicodeKernMap* pUniKernPairs = NULL
++ );
+ long FetchFontList( ImplDevFontList* ) const;
+
+ ServerFont* CacheFont( const ImplFontSelectData& );
+@@ -118,7 +129,7 @@ public:
+ void RemoveFont( const ImplFontData* );
+
+ private:
+-friend ServerFont;
++ friend class ServerFont;
+ // used by ServerFont class only
+ void AddedGlyph( ServerFont& rServerFont, GlyphData& rGlyphData );
+ void RemovingGlyph( ServerFont& rSF, GlyphData& rGD, int nGlyphIndex );
+@@ -156,7 +167,7 @@ public:
+ long GetCharWidth() const { return mnAdvanceWidth; }
+
+ protected:
+-friend class GlyphData;
++ friend class GlyphData;
+ void SetOffset( int nX, int nY ) { maOffset = Point( nX, nY); }
+ void SetDelta( int nX, int nY ) { maDelta = Point( nX, nY); }
+ void SetSize( const Size& s ) { maSize = s; }
+@@ -218,8 +229,8 @@ public:
+ const ImplFontSelectData& GetFontSelData() const { return maFontSelData; }
+
+ virtual void FetchFontMetric( ImplFontMetricData&, long& rFactor ) const = 0;
+- virtual ULONG GetKernPairs( struct ImplKernPairData** ) const = 0;
+- virtual int GetGlyphKernValue( int, int ) const = 0;
++ virtual ULONG GetKernPairs( struct ImplKernPairData** ) const;
++ virtual int GetGlyphKernValue( int, int ) const;
+ virtual ULONG GetFontCodeRanges( sal_uInt32* pCodes ) const { return 0; }
+ Point TransformPoint( const Point& ) const;
+
+@@ -238,9 +249,9 @@ public:
+ void* GetExtPointer() { return mpExtData; }
+
+ protected:
+-friend GlyphCache;
+-friend ServerFontLayout;
+- ServerFont( const ImplFontSelectData& );
++ friend class GlyphCache;
++ friend class ServerFontLayout;
++ ServerFont( const ImplFontSelectData&, const glyphKernMap* pGlyphKern = NULL, const unicodeKernMap* pUniKern = NULL );
+ virtual ~ServerFont();
+
+ void AddRef() const { ++mnRefCount; }
+@@ -273,6 +284,12 @@ private:
+ protected:
+ long nCos;
+ long nSin;
++
++ // maps left glyph id to map of right glyphid
++ // the inner map maps right glyphid to kern value
++ const glyphKernMap* mpKernPairs;
++ const unicodeKernMap* mpUnicodeKernPairs;
++
+ };
+
+ // =======================================================================
+Index: vcl/inc/gradient.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/gradient.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.3
+diff -u -p -u -r1.1.1.1 -r1.3
+--- vcl/inc/gradient.hxx 19 Sep 2000 10:23:04 -0000 1.1.1.1
++++ vcl/inc/gradient.hxx 6 Jan 2004 13:01:22 -0000 1.3
+@@ -62,7 +62,10 @@
+ #ifndef _SV_GRADIENT_HXX
+ #define _SV_GRADIENT_HXX
+
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
++#endif
++
+ #include <vclenum.hxx>
+
+ // ------------------
+@@ -160,29 +163,6 @@ public:
+
+ friend SvStream& operator>>( SvStream& rIStm, Gradient& rGradient );
+ friend SvStream& operator<<( SvStream& rOStm, const Gradient& rGradient );
+-
+-#ifdef SMART_UNO_GENERATION
+- GradientStyle getStyle() const { return GetStyle(); }
+- void setStyle( GradientStyle e ) { SetStyle( e ); }
+- long getStartColor() const { return GetStartColor().GetColor(); }
+- void setStartColor( long n ) { SetStartColor( Color( n ) ); }
+- long getEndColor() const { return GetEndColor().GetColor(); }
+- void setEndColor( long n ) { SetEndColor( Color( n ) ); }
+- USHORT getAngle() const { return GetAngle(); }
+- void setAngle( USHORT n ) { SetAngle( n ); }
+- USHORT getBorder() const { return GetBorder(); }
+- void setBorder( USHORT n ) { SetBorder( n ); }
+- USHORT getXOffset() const { return GetOfsX(); }
+- void setXOffset( USHORT n ) { SetOfsX( n ); }
+- USHORT getYOffset() const { return GetOfsY(); }
+- void setYOffset( USHORT n ) { SetOfsY( n ); }
+- USHORT getStartIntensity() const { return GetStartIntensity(); }
+- void setStartIntensity( USHORT n ) { SetStartIntensity( n ); }
+- USHORT getEndIntensity() const { return GetEndIntensity(); }
+- void setEndIntensity( USHORT n ) { SetEndIntensity( n ); }
+- USHORT getStepCount() const { return GetSteps(); }
+- void setStepCount( USHORT n ) { SetSteps( n ); }
+-#endif
+ };
+
+ #endif // _SV_GRADIENT_HXX
+Index: vcl/inc/graph.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/graph.hxx,v
+retrieving revision 1.6
+retrieving revision 1.7
+diff -u -p -u -r1.6 -r1.7
+--- vcl/inc/graph.hxx 27 Mar 2003 17:57:21 -0000 1.6
++++ vcl/inc/graph.hxx 20 Apr 2004 13:53:29 -0000 1.7
+@@ -143,6 +143,8 @@ public:
+ Bitmap GetBitmap( const Size* pSizePixel ) const;
+ BitmapEx GetBitmapEx() const;
+ BitmapEx GetBitmapEx( const Size* pSizePixel ) const;
++ Bitmap GetUnlimitedBitmap( const Size* pSizePixel ) const;
++ BitmapEx GetUnlimitedBitmapEx( const Size* pSizePixel ) const;
+ Animation GetAnimation() const;
+ const GDIMetaFile& GetGDIMetaFile() const;
+
+Index: vcl/inc/group.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/group.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/group.hxx 8 May 2002 16:01:29 -0000 1.2
++++ vcl/inc/group.hxx 6 Jan 2004 13:01:39 -0000 1.3
+@@ -75,16 +75,15 @@
+
+ class GroupBox : public Control
+ {
+-#ifdef _SV_GROUP_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ WinBits ImplInitStyle( WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+ void ImplDraw( OutputDevice* pDev, ULONG nDrawFlags,
+ const Point& rPos, const Size& rSize, bool bLayout = false );
+-#endif
+
+- virtual void FillLayoutData() const;
++ virtual void FillLayoutData() const;
++
+ public:
+ GroupBox( Window* pParent, WinBits nStyle = 0 );
+ GroupBox( Window* pParent, const ResId& rResId );
+Index: vcl/inc/hatch.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/hatch.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.3
+diff -u -p -u -r1.1.1.1 -r1.3
+--- vcl/inc/hatch.hxx 19 Sep 2000 10:23:04 -0000 1.1.1.1
++++ vcl/inc/hatch.hxx 6 Jan 2004 13:01:57 -0000 1.3
+@@ -62,7 +62,10 @@
+ #ifndef _SV_HATCH_HXX
+ #define _SV_HATCH_HXX
+
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
++#endif
++
+ #include <vclenum.hxx>
+
+ // --------------
+@@ -77,7 +80,6 @@ struct ImplHatch
+ Color maColor;
+ HatchStyle meStyle;
+ long mnDistance;
+- long mnDummy;
+ USHORT mnAngle;
+
+ ImplHatch();
+@@ -124,22 +126,6 @@ public:
+
+ friend SvStream& operator>>( SvStream& rIStm, Hatch& rHatch );
+ friend SvStream& operator<<( SvStream& rOStm, const Hatch& rHatch );
+-
+-#ifdef SMART_UNO_GENERATION
+-
+- HatchStyle getStyle() const { return GetStyle(); }
+- void setStyle( HatchStyle eStyle ) { SetStyle( eStyle ); }
+-
+- long getColor() const { return GetColor().GetColor(); }
+- void setColor( long nColor ) { SetColor( Color( nColor ) ); }
+-
+- long getDistance() const { return GetDistance(); }
+- void setDistance( ULONG nDistance ) { SetDistance( nDistance ); }
+-
+- USHORT getAngle() const { return GetAngle(); }
+- void setAngle( USHORT n ) { SetAngle( n ); }
+-
+-#endif
+ };
+
+ #endif // _SV_HATCH_HXX
+Index: vcl/inc/help.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/help.hxx,v
+retrieving revision 1.3.284.1
+retrieving revision 1.5
+diff -u -p -u -r1.3.284.1 -r1.5
+--- vcl/inc/help.hxx 9 Jan 2004 18:13:39 -0000 1.3.284.1
++++ vcl/inc/help.hxx 6 Jan 2004 13:02:14 -0000 1.5
+@@ -103,6 +103,7 @@ private:
+
+ public:
+ Help();
++ virtual ~Help();
+
+ void SetHelpFile( const String& rFileName ) { maHelpFile = rFileName; }
+ const String& GetHelpFile() const { return maHelpFile; }
+Index: vcl/inc/ilstbox.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/ilstbox.hxx,v
+retrieving revision 1.20
+retrieving revision 1.23
+diff -u -p -u -r1.20 -r1.23
+--- vcl/inc/ilstbox.hxx 24 Apr 2003 16:29:18 -0000 1.20
++++ vcl/inc/ilstbox.hxx 18 May 2004 10:48:51 -0000 1.23
+@@ -244,7 +244,7 @@ private:
+ USHORT mnBorder; // Abstand Rahmen - Text
+ USHORT mnTextHeight; // Texthoehe
+
+- USHORT mnSelectModifier; // Modifiers
++ USHORT mnSelectModifier; // Modifiers
+
+ BOOL mbHasFocusRect;
+
+@@ -261,8 +261,8 @@ private:
+ mbGrabFocus: 1, // Focus bei MBDown grabben
+ mbUserDrawEnabled: 1, // UserDraw possible
+ mbInUserDraw: 1, // In UserDraw
+- mbReadOnly: 1; // ReadOnly
+-
++ mbReadOnly: 1, // ReadOnly
++ mbMirroring: 1; // pb: #106948# explicit mirroring for calc
+
+ Link maScrollHdl;
+ Link maSelectHdl;
+@@ -273,7 +273,7 @@ private:
+
+ protected:
+ DECL_LINK( SearchStringTimeout, Timer* );
+-
++
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+@@ -293,7 +293,7 @@ protected:
+ void ImplShowFocusRect();
+ void ImplHideFocusRect();
+
+-
++
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+@@ -316,6 +316,7 @@ public:
+
+ void SelectEntry( USHORT nPos, BOOL bSelect );
+ void DeselectAll();
++ USHORT GetEntryPosForPoint( const Point& rPoint ) const;
+
+ BOOL ProcessKeyInput( const KeyEvent& rKEvt );
+
+@@ -342,13 +343,13 @@ public:
+
+ void EnableUserDraw( BOOL bUserDraw ) { mbUserDrawEnabled = bUserDraw; }
+ BOOL IsUserDrawEnabled() const { return mbUserDrawEnabled; }
+-
++
+ void EnableMultiSelection( BOOL bMulti, BOOL bStackMode ) { mbMulti = bMulti; mbStackMode = bStackMode; }
+ BOOL IsMultiSelectionEnabled() const { return mbMulti; }
+-
++
+ void SetMultiSelectionSimpleMode( BOOL bSimple ) { mbSimpleMode = bSimple; }
+ BOOL IsMultiSelectionSimpleMode() const { return mbSimpleMode; }
+-
++
+ void EnableMouseMoveSelect( BOOL bMouseMoveSelect ) { mbMouseMoveSelect = bMouseMoveSelect; }
+ BOOL IsMouseMoveSelectEnabled() const { return mbMouseMoveSelect; }
+ BOOL IsMouseMoveSelect() const { return mbMouseMoveSelect||mbStackMode; }
+@@ -372,7 +373,7 @@ public:
+ const Link& GetUserDrawHdl() const { return maUserDrawHdl; }
+ void SetMRUChangedHdl( const Link& rLink ) { maMRUChangedHdl = rLink; }
+ const Link& GetMRUChangedHdl() const { return maMRUChangedHdl; }
+-
++
+ BOOL IsSelectionChanged() const { return mbSelectionChanged; }
+ USHORT GetSelectModifier() const { return mnSelectModifier; }
+
+@@ -381,8 +382,11 @@ public:
+ void SetReadOnly( BOOL bReadOnly ) { mbReadOnly = bReadOnly; }
+ BOOL IsReadOnly() const { return mbReadOnly; }
+
+-
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
++
++ // pb: #106948# explicit mirroring for calc
++ inline void EnableMirroring() { mbMirroring = TRUE; }
++ inline BOOL IsMirroring() const { return mbMirroring; }
+ };
+
+ // ---------------
+@@ -422,7 +426,7 @@ public:
+
+ const ImplEntryList* GetEntryList() const { return maLBWindow.GetEntryList(); }
+ ImplListBoxWindow* GetMainWindow() { return &maLBWindow; }
+-
++
+ virtual void Resize();
+ virtual const Wallpaper& GetDisplayBackground() const;
+ virtual Window* GetPreferredKeyInputWindow();
+@@ -441,7 +445,7 @@ public:
+
+ BOOL ProcessKeyInput( const KeyEvent& rKEvt ) { return maLBWindow.ProcessKeyInput( rKEvt ); }
+ BOOL HandleWheelAsCursorTravel( const CommandEvent& rCEvt );
+-
++
+ void SetSeparatorPos( USHORT n ) { maLBWindow.SetSeparatorPos( n ); }
+ USHORT GetSeparatorPos() const { return maLBWindow.GetSeparatorPos(); }
+
+@@ -459,7 +463,7 @@ public:
+
+ void EnableMultiSelection( BOOL bMulti, BOOL bStackMode ) { maLBWindow.EnableMultiSelection( bMulti, bStackMode ); }
+ BOOL IsMultiSelectionEnabled() const { return maLBWindow.IsMultiSelectionEnabled(); }
+-
++
+ void SetMultiSelectionSimpleMode( BOOL bSimple ) { maLBWindow.SetMultiSelectionSimpleMode( bSimple ); }
+ BOOL IsMultiSelectionSimpleMode() const { return maLBWindow.IsMultiSelectionSimpleMode(); }
+
+@@ -481,7 +485,7 @@ public:
+ const Link& GetDoubleClickHdl() const { return maLBWindow.GetDoubleClickHdl(); }
+ void SetUserDrawHdl( const Link& rLink ) { maLBWindow.SetUserDrawHdl( rLink ); }
+ const Link& GetUserDrawHdl() const { return maLBWindow.GetUserDrawHdl(); }
+-
++
+ void SetSelectionChangedHdl( const Link& rLnk ) { maLBWindow.GetEntryList()->SetSelectionChangedHdl( rLnk ); }
+ void SetCallSelectionChangedHdl( BOOL bCall ) { maLBWindow.GetEntryList()->SetCallSelectionChangedHdl( bCall ); }
+ BOOL IsSelectionChanged() const { return maLBWindow.IsSelectionChanged(); }
+@@ -493,6 +497,9 @@ public:
+ USHORT GetMaxMRUCount() const { return maLBWindow.GetEntryList()->GetMaxMRUCount(); }
+ USHORT GetDisplayLineCount() const
+ { return maLBWindow.GetDisplayLineCount(); }
++
++ // pb: #106948# explicit mirroring for calc
++ inline void EnableMirroring() { maLBWindow.EnableMirroring(); }
+ };
+
+ // -----------------------------
+@@ -535,6 +542,8 @@ public:
+ USHORT GetDropDownLineCount() const { return mnDDLineCount; }
+
+ USHORT GetPopupModeStartSaveSelection() const { return mnPopupModeStartSaveSelection; }
++
++ virtual void Resize();
+ };
+
+ // -----------
+@@ -544,15 +553,15 @@ public:
+ class ImplWin : public Control
+ {
+ private:
+-
++
+ USHORT mnItemPos; // wegen UserDraw muss ich wissen, welches Item ich darstelle.
+ XubString maString;
+ Image maImage;
+ Image maImageHC;
+-
++
+ Rectangle maFocusRect;
+ Size maUserItemSize;
+-
++
+ Link maMBDownHdl;
+ Link maUserDrawHdl;
+
+@@ -573,10 +582,11 @@ public:
+ virtual void Resize();
+ virtual void GetFocus();
+ virtual void LoseFocus();
++ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ USHORT GetItemPos() const { return mnItemPos; }
+ void SetItemPos( USHORT n ) { mnItemPos = n; }
+-
++
+ const XubString& GetString() const { return maString; }
+ void SetString( const XubString& rStr ) { maString = rStr; }
+
+@@ -590,16 +600,16 @@ public:
+ virtual void MBDown();
+ void SetMBDownHdl( const Link& rLink ) { maMBDownHdl = rLink; }
+ const Link& GetMBDownHdl() const { return maMBDownHdl; }
+-
++
+ void SetUserDrawHdl( const Link& rLink ) { maUserDrawHdl = rLink; }
+ const Link& GetUserDrawHdl() const { return maUserDrawHdl; }
+-
++
+ void SetUserItemSize( const Size& rSz ) { maUserItemSize = rSz; }
+ const Size& GetUserItemSize() const { return maUserItemSize; }
+
+ void EnableUserDraw( BOOL bUserDraw ) { mbUserDrawEnabled = bUserDraw; }
+ BOOL IsUserDrawEnabled() const { return mbUserDrawEnabled; }
+-
++
+ void DrawEntry( BOOL bDrawImage, BOOL bDrawText, BOOL bDrawTextAtImagePos = FALSE, bool bLayout = false );
+ };
+
+Index: vcl/inc/imgcons.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/imgcons.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/imgcons.hxx 19 Sep 2000 10:23:04 -0000 1.1.1.1
++++ vcl/inc/imgcons.hxx 6 Jan 2004 13:03:07 -0000 1.2
+@@ -85,7 +85,6 @@ private:
+ Bitmap maBitmap;
+ Bitmap maMask;
+ Rectangle maChangedRect;
+- Rectangle maDummyRect;
+ Size maSize;
+ ImplColorMapper* mpMapper;
+ Color* mpPal;
+@@ -94,10 +93,6 @@ private:
+ ULONG mnFormat;
+ ULONG mnStatus;
+ BOOL mbTrans;
+- long mnDummy1;
+- long mnDummy2;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+
+ protected:
+
+Index: vcl/inc/imgctrl.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/imgctrl.hxx,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -p -u -r1.4 -r1.5
+--- vcl/inc/imgctrl.hxx 15 Aug 2002 14:49:14 -0000 1.4
++++ vcl/inc/imgctrl.hxx 6 Jan 2004 13:03:24 -0000 1.5
+@@ -74,7 +74,7 @@ class ImageControl : public FixedImage
+ private:
+ BitmapEx maBmp;
+ BitmapEx maBmpHC;
+- ULONG mnDummy1_mbScaleImage; // Change member in next full update!
++ BOOL mbScaleImage;
+
+ public:
+ ImageControl( Window* pParent, WinBits nStyle = 0 );
+Index: vcl/inc/impbmp.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/impbmp.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/impbmp.hxx 7 Dec 2000 13:37:15 -0000 1.2
++++ vcl/inc/impbmp.hxx 1 Dec 2003 12:53:44 -0000 1.3
+@@ -92,11 +92,7 @@ private:
+ ULONG mnRefCount;
+ ULONG mnChecksum;
+ RMBitmap* mpRMBitmap;
+-#ifndef REMOTE_APPSERVER
+ SalBitmap* mpSalBitmap;
+-#else
+- ImplServerBitmap* mpSalBitmap;
+-#endif
+
+ public:
+
+@@ -107,41 +103,8 @@ public:
+
+ public:
+
+-#ifndef REMOTE_APPSERVER
+ void ImplSetSalBitmap( SalBitmap* pSalBitmap );
+ SalBitmap* ImplGetSalBitmap() const { return mpSalBitmap; }
+-#else
+- void ImplSetSalBitmap( ImplServerBitmap* pSalBitmap );
+- ImplServerBitmap* ImplGetSalBitmap() const { return mpSalBitmap; }
+-
+- RMBitmap* ImplGetRemoteBmp();
+-
+- void ImplCreateRemoteBmp( const Bitmap& rBitmap );
+- void ImplCreateRemoteBmp( const Bitmap& rBitmap,
+- OutputDevice* pOut,
+- const Point& rPt, const Size& rSz );
+-
+- void ImplReleaseRemoteBmp();
+-
+- void ImplDrawRemoteBmp( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz );
+- void ImplDrawRemoteBmpEx( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz,
+- const Bitmap& rMask );
+- void ImplDrawRemoteBmpAlpha( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz,
+- const AlphaMask& rAlpha );
+- void ImplDrawRemoteBmpMask( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz,
+- const Color& rColor );
+-
+- BOOL ImplIsGetPrepared() const;
+- void ImplResolveGet();
+-#endif
+
+ public:
+
+Index: vcl/inc/impgraph.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/impgraph.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/impgraph.hxx 24 Aug 2001 14:07:49 -0000 1.3
++++ vcl/inc/impgraph.hxx 20 Apr 2004 13:53:44 -0000 1.4
+@@ -144,8 +144,8 @@ private:
+ BOOL ImplIsAlpha() const;
+ BOOL ImplIsAnimated() const;
+
+- Bitmap ImplGetBitmap( const Size* pSizePixel ) const;
+- BitmapEx ImplGetBitmapEx( const Size* pSizePixel ) const;
++ Bitmap ImplGetBitmap( const Size* pSizePixel, BOOL bUnlimited ) const;
++ BitmapEx ImplGetBitmapEx( const Size* pSizePixel, BOOL bUnlimited ) const;
+ Animation ImplGetAnimation() const;
+ const GDIMetaFile& ImplGetGDIMetaFile() const;
+
+Index: vcl/inc/jobset.h
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/jobset.h,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -p -u -r1.5 -r1.6
+--- vcl/inc/jobset.h 6 Mar 2002 11:13:54 -0000 1.5
++++ vcl/inc/jobset.h 6 Jan 2004 13:03:42 -0000 1.6
+@@ -72,7 +72,7 @@
+ #ifndef _SV_PRNTYPES_HXX
+ #include <prntypes.hxx>
+ #endif
+-#ifndef __SGI_STL_HASH_MAP
++#ifndef _STLP_HASH_MAP
+ #include <hash_map>
+ #endif
+ #ifndef _RTL_USTRING_
+Index: vcl/inc/jobset.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/jobset.hxx,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -p -u -r1.4 -r1.5
+--- vcl/inc/jobset.hxx 19 Dec 2001 14:43:31 -0000 1.4
++++ vcl/inc/jobset.hxx 1 Dec 2003 12:54:41 -0000 1.5
+@@ -75,10 +75,6 @@
+ class SvStream;
+ struct ImplJobSetup;
+
+-#ifdef REMOTE_APPSERVER
+-namespace com { namespace sun { namespace star { namespace portal { namespace client { struct RmJobSetup; } } } } }
+-#endif
+-
+ // ------------
+ // - JobSetup -
+ // ------------
+@@ -115,10 +111,6 @@ public:
+
+
+ JobSetup& operator=( const JobSetup& rJob );
+-#ifdef REMOTE_APPSERVER
+- JobSetup& operator=( const ::com::sun::star::portal::client::RmJobSetup& );
+- void SetRmJobSetup( ::com::sun::star::portal::client::RmJobSetup& ) const;
+-#endif
+
+ BOOL operator==( const JobSetup& rJobSetup ) const;
+ BOOL operator!=( const JobSetup& rJobSetup ) const
+Index: vcl/inc/keycod.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/keycod.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/keycod.hxx 27 Feb 2002 12:11:26 -0000 1.2
++++ vcl/inc/keycod.hxx 6 Jan 2004 13:03:58 -0000 1.3
+@@ -69,8 +69,8 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_RESID_HXX
+-#include <resid.hxx>
++#ifndef _TOOLS_RESID_HXX
++#include <tools/resid.hxx>
+ #endif
+ #ifndef _SV_KEYCODES_HXX
+ #include <keycodes.hxx>
+Index: vcl/inc/keycodes.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/keycodes.hxx,v
+retrieving revision 1.2.250.1
+retrieving revision 1.5
+diff -u -p -u -r1.2.250.1 -r1.5
+--- vcl/inc/keycodes.hxx 9 Jan 2004 18:13:39 -0000 1.2.250.1
++++ vcl/inc/keycodes.hxx 17 Mar 2004 10:04:17 -0000 1.5
+@@ -70,7 +70,7 @@
+ // - KeyCode-Types -
+ // -----------------
+
+-// By changes you must also change: tools/vclrsc.hxx
++// By changes you must also change: rsc/vclrsc.hxx
+
+ // Key-Gruppen
+ #define KEYGROUP_NUM ((USHORT)0x0100)
+@@ -186,6 +186,7 @@
+ #define KEY_MENU ((USHORT)(KEYGROUP_MISC+26))
+ #define KEY_HELP ((USHORT)(KEYGROUP_MISC+27))
+ #define KEY_HANGUL_HANJA ((USHORT)(KEYGROUP_MISC+28))
++#define KEY_DECIMAL ((USHORT)(KEYGROUP_MISC+29))
+
+ #define KEY_CODE ((USHORT)0x0FFF)
+
+Index: vcl/inc/lineinfo.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/lineinfo.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/lineinfo.hxx 19 Sep 2000 10:23:05 -0000 1.1.1.1
++++ vcl/inc/lineinfo.hxx 4 Sep 2003 07:41:49 -0000 1.2
+@@ -140,31 +140,6 @@ public:
+
+ friend SvStream& operator>>( SvStream& rIStm, LineInfo& rLineInfo );
+ friend SvStream& operator<<( SvStream& rOStm, const LineInfo& rLineInfo );
+-
+-#ifdef SMART_UNO_GENERATION
+-
+- LineStyle getStyle() const { return GetStyle(); }
+- void setStyle( LineStyle eStyle ) { SetStyle( eStyle ); }
+-
+- long getWidth() const { return GetWidth(); }
+- void setWidth( ULONG nDistance ) { SetWidth( nWidth ); }
+-
+- USORT getDashCount const { return GetDashCount(); }
+- void setDashCount( USHORT nDashCount ) { SetDashCount( nDashCount ); }
+-
+- long getDashLen() const { return GetDashLen(); }
+- void setDashLen( long nDashLen ) { SetDashLen( nDashLen ); }
+-
+- USHORT getDotCount() const { return GetDotCount(); }
+- void setDotCount( USHORT nDotCount ) { SetDotCount( nDotCount ); }
+-
+- long getDotLen() const { GetDotLen(); }
+- void setDotLen( long nDotLen ) { SetDotLen( nDotLen ); }
+-
+- long getDistance() const { return GetDistance(); }
+- void setDistance( long nDistance ) { SetDistance( nDistance ); }
+-
+-#endif
+ };
+
+ #endif // _SV_LINEINFO_HXX
+Index: vcl/inc/longcurr.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/longcurr.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/longcurr.hxx 29 Jun 2001 10:17:29 -0000 1.3
++++ vcl/inc/longcurr.hxx 6 Jan 2004 13:04:51 -0000 1.4
+@@ -77,12 +77,9 @@ class LocaleDataWrapper;
+
+ class LongCurrencyFormatter : public FormatterBase
+ {
+-#if _SOLAR__PRIVATE
+-#ifdef VCL_LONGCURR_CXX
+- friend BOOL ImplLongCurrencyReformat( const XubString&, BigInt, BigInt, USHORT, const LocaleDataWrapper&, XubString&, LongCurrencyFormatter& );
++private:
++ friend BOOL ImplLongCurrencyReformat( const XubString&, BigInt, BigInt, USHORT, const LocaleDataWrapper&, XubString&, LongCurrencyFormatter& );
+ void ImpInit();
+-#endif
+-#endif
+
+ protected:
+ BigInt mnFieldValue;
+@@ -95,9 +92,6 @@ protected:
+ USHORT mnDecimalDigits;
+ BOOL mbThousandSep;
+
+- ULONG mnDummy;
+- BOOL mbDummy;
+-
+ LongCurrencyFormatter();
+ void ImplLoadRes( const ResId& rResId );
+
+@@ -141,9 +135,7 @@ public:
+ class LongCurrencyField : public SpinField, public LongCurrencyFormatter
+ {
+ #if _SOLAR__PRIVATE
+-#ifdef VCL_LONGCURR_CXX
+ friend void ImplNewLongCurrencyFieldValue( LongCurrencyField*, BigInt );
+-#endif
+ #endif
+
+ private:
+Index: vcl/inc/lstbox.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/lstbox.hxx,v
+retrieving revision 1.12
+retrieving revision 1.14
+diff -u -p -u -r1.12 -r1.14
+--- vcl/inc/lstbox.hxx 1 Nov 2002 09:00:27 -0000 1.12
++++ vcl/inc/lstbox.hxx 18 May 2004 10:49:04 -0000 1.14
+@@ -232,6 +232,9 @@ public:
+ USHORT GetMaxMRUCount() const;
+
+ USHORT GetDisplayLineCount() const;
++
++ void EnableMirroring();
++
+ };
+
+
+
+Index: vcl/inc/mapmod.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/mapmod.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/mapmod.hxx 19 Sep 2000 10:23:05 -0000 1.1.1.1
++++ vcl/inc/mapmod.hxx 7 Jan 2004 09:06:47 -0000 1.2
+@@ -72,8 +72,8 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_RESID_HXX
+-#include <resid.hxx>
++#ifndef _TOOLS_RESID_HXX
++#include <tools/resid.hxx>
+ #endif
+ #ifndef _VCL_MAPUNIT_HXX
+ #include <mapunit.hxx>
+@@ -101,11 +101,9 @@ private:
+ friend SvStream& operator>>( SvStream& rIStm, ImplMapMode& rMapMode );
+ friend SvStream& operator<<( SvStream& rOStm, const ImplMapMode& rMapMode );
+
+-#ifdef _SV_MAPMOD_CXX
+ public:
+ ImplMapMode();
+ ImplMapMode( const ImplMapMode& rImpMapMode );
+-#endif
+ };
+
+ // -----------
+@@ -119,9 +117,7 @@ class MapMode
+ private:
+ ImplMapMode* mpImplMapMode;
+
+-#ifdef _SV_MAPMOD_CXX
+ void ImplMakeUnique();
+-#endif
+
+ public:
+ MapMode();
+Index: vcl/inc/menu.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/menu.hxx,v
+retrieving revision 1.26.112.1
+retrieving revision 1.30
+diff -u -p -u -r1.26.112.1 -r1.30
+--- vcl/inc/menu.hxx 13 Nov 2003 16:48:20 -0000 1.26.112.1
++++ vcl/inc/menu.hxx 25 Feb 2004 17:29:29 -0000 1.30
+@@ -66,20 +66,20 @@
+ #include <sv.h>
+ #endif
+
+-#ifndef _SV_RC_HXX
+-#include <rc.hxx>
++#ifndef _TOOLS_RC_HXX
++#include <tools/rc.hxx>
+ #endif
+
+-#ifndef _SV_RESID_HXX
+-#include <resid.hxx>
++#ifndef _TOOLS_RESID_HXX
++#include <tools/resid.hxx>
+ #endif
+
+ #ifndef _SV_BITMAPEX_HXX
+ #include <bitmapex.hxx>
+ #endif
+
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+
+ #ifndef _VCL_VCLEVENT_HXX
+@@ -103,7 +103,9 @@ class KeyEvent;
+ class AppBarWindow;
+ class MenuFloatingWindow;
+ class Window;
+ class AccessObjectRef;
++class SalMenu;
++struct SystemMenuData;
+
+ namespace com {
+ namespace sun {
+@@ -126,11 +127,11 @@ namespace vcl { struct MenuLayoutData; }
+ #define POPUPMENU_EXECUTE_LEFT ((USHORT)0x0004)
+ #define POPUPMENU_EXECUTE_RIGHT ((USHORT)0x0008)
+
+-// By changes you must also change: tools/vclrsc.hxx
++// By changes you must also change: rsc/vclrsc.hxx
+ enum MenuItemType { MENUITEM_DONTKNOW, MENUITEM_STRING, MENUITEM_IMAGE,
+ MENUITEM_STRINGIMAGE, MENUITEM_SEPARATOR };
+
+-// By changes you must also change: tools/vclrsc.hxx
++// By changes you must also change: rsc/vclrsc.hxx
+ typedef USHORT MenuItemBits;
+ #define MIB_CHECKABLE ((MenuItemBits)0x0001)
+ #define MIB_RADIOCHECK ((MenuItemBits)0x0002)
+@@ -151,12 +152,10 @@ struct MenuLogo
+ BitmapEx aBitmap;
+ Color aStartColor;
+ Color aEndColor;
+- ULONG nDummy;
+ };
+
+ class Menu : public Resource
+ {
+- friend class AccessObject;
+ friend class MenuBar;
+ friend class MenuBarWindow;
+ friend class MenuFloatingWindow;
+@@ -164,6 +163,7 @@ class Menu : public Resource
+ friend class SystemWindow;
+
+ private:
++ void* pMenuData_NotUsedYet;
+ MenuItemList* pItemList; // Liste mit den MenuItems
+ MenuLogo* pLogo;
+ Menu* pStartedFrom;
+@@ -180,7 +180,7 @@ private:
+ XubString aTitleText; // PopupMenu-Text
+
+ ULONG nEventId;
+- ULONG nDummy;
++ USHORT mnHighlightedItemPos; // for native menues: keeps track of the highlighted item
+ USHORT nMenuFlags;
+ USHORT nDefaultItem; // Id vom Default-Item
+ USHORT nSelectedId;
+@@ -197,16 +197,14 @@ private:
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > mxAccessible;
+ mutable vcl::MenuLayoutData* mpLayoutData;
+- void* mpDummy;
+- long mnDummy;
+- BOOL mbDummy;
++ SalMenu* mpSalMenu;
+
+ protected:
+-#ifdef _SV_MENU_CXX
+ void ImplInit();
+ void ImplLoadRes( const ResId& rResId );
+ Menu* ImplGetStartMenu();
+ Menu* ImplFindSelectMenu();
++ Menu* ImplFindMenu( USHORT nId );
+ Size ImplCalcSize( Window* pWin );
+ BOOL ImplIsVisible( USHORT nPos ) const;
+ USHORT ImplGetVisibleItemCount() const;
+@@ -220,11 +218,16 @@ protected:
+ DECL_LINK( ImplCallSelect, Menu* );
+
+ void ImplFillLayoutData() const;
++ SalMenu* ImplGetSalMenu() { return mpSalMenu; }
++ void ImplSetSalMenu( SalMenu *pMenu );
++
++#if _SOLAR__PRIVATE
+ public:
+ void ImplKillLayoutData() const;
+ #endif
+
+ Menu();
++ Menu( BOOL bMenuBar );
+ Window* ImplGetWindow() const { return pWindow; }
+
+ public:
+@@ -315,7 +318,10 @@ public:
+ void SetTipHelpText( USHORT nItemId, const XubString& rString );
+ const XubString& GetTipHelpText( USHORT nItemId ) const;
+
+- void SetHelpId( USHORT nItemId, ULONG nHelpId );
++ void SetHelpCommand( USHORT nItemId, const XubString& rString );
++ const XubString& GetHelpCommand( USHORT nItemId ) const;
++
++ void SetHelpId( USHORT nItemId, ULONG nHelpId );
+ ULONG GetHelpId( USHORT nItemId ) const;
+
+ void SetActivateHdl( const Link& rLink ) { aActivateHdl = rLink; }
+@@ -342,6 +348,9 @@ public:
+ // Fuer Menu-'Funktionen'
+ MenuItemList* GetItemList() const { return pItemList; }
+
++ // returns the system's menu handle if native menues are supported
++ // pData must point to a SystemMenuData structure
++ BOOL GetSystemMenuData( SystemMenuData* pData ) const;
+
+ // accessibility helpers
+
+@@ -393,14 +400,13 @@ public:
+
+ class MenuBar : public Menu
+ {
+- void* pDummy;
+ Link maCloserHdl;
+ Link maFloatHdl;
+ Link maHideHdl;
+ BOOL mbCloserVisible;
+ BOOL mbFloatBtnVisible;
+ BOOL mbHideBtnVisible;
+- BOOL mbDummy1;
++ BOOL mbDisplayable;
+
+ #if _SOLAR__PRIVATE
+ friend class Application;
+@@ -431,6 +437,10 @@ public:
+ void ShowButtons( BOOL bClose, BOOL bFloat, BOOL bHide );
+
+ void SelectEntry( USHORT nId );
++ BOOL HandleMenuActivateEvent( Menu *pMenu ) const;
++ BOOL HandleMenuDeActivateEvent( Menu *pMenu ) const;
++ BOOL HandleMenuHighlightEvent( Menu *pMenu, USHORT nEventId ) const;
++ BOOL HandleMenuCommandEvent( Menu *pMenu, USHORT nEventId ) const;
+
+ void SetCloserHdl( const Link& rLink ) { maCloserHdl = rLink; }
+ const Link& GetCloserHdl() const { return maCloserHdl; }
+@@ -438,6 +448,14 @@ public:
+ const Link& GetFloatButtonClickHdl() const { return maFloatHdl; }
+ void SetHideButtonClickHdl( const Link& rLink ) { maHideHdl = rLink; }
+ const Link& GetHideButtonClickHdl() const { return maHideHdl; }
++
++ // - by default a menubar is displayable
++ // - if a menubar is not displayable, its MenuBarWindow will never be shown
++ // and it will be hidden if it was visible before
++ // - note: if a menubar is diplayable, this does not necessarily mean that it is currently visible
++ void SetDisplayable( BOOL bDisplayable );
++ BOOL IsDisplayable() const { return mbDisplayable; }
++
+ };
+
+ inline MenuBar& MenuBar::operator =( const MenuBar& rMenu )
+Index: vcl/inc/menubtn.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/menubtn.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/menubtn.hxx 19 Sep 2000 10:23:05 -0000 1.1.1.1
++++ vcl/inc/menubtn.hxx 7 Jan 2004 09:07:50 -0000 1.2
+@@ -86,7 +86,6 @@ class MenuButton : public PushButton
+ {
+ private:
+ Rectangle maFocusRect;
+- void* mpDummy;
+ Timer* mpMenuTimer;
+ PopupMenu* mpOwnMenu;
+ PopupMenu* mpMenu;
+@@ -95,11 +94,9 @@ private:
+ Link maActivateHdl;
+ Link maSelectHdl;
+
+-#ifdef _SV_MENUBTN_CXX
+ void ImplInitData();
+ void ImplExecuteMenu();
+ DECL_LINK( ImplMenuTimeoutHdl, Timer* );
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+Index: vcl/inc/metaact.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/metaact.hxx,v
+retrieving revision 1.4.252.1
+retrieving revision 1.7
+diff -u -p -u -r1.4.252.1 -r1.7
+--- vcl/inc/metaact.hxx 9 Jan 2004 18:13:40 -0000 1.4.252.1
++++ vcl/inc/metaact.hxx 17 Jun 2004 12:05:02 -0000 1.7
+@@ -74,8 +74,8 @@
+ #ifndef _SV_FONT_HXX
+ #include <font.hxx>
+ #endif
+-#ifndef _SV_POLY_HXX
+-#include <poly.hxx>
++#ifndef _TL_POLY_HXX
++#include <tools/poly.hxx>
+ #endif
+ #ifndef _SV_BITMAP_HXX
+ #include <bitmap.hxx>
+@@ -575,7 +575,7 @@ private:
+
+ Point maStartPt;
+ XubString maStr;
+- long* mpDXAry;
++ sal_Int32* mpDXAry;
+ USHORT mnIndex;
+ USHORT mnLen;
+
+@@ -586,7 +586,7 @@ public:
+ MetaTextArrayAction( const MetaTextArrayAction& rAction );
+ MetaTextArrayAction( const Point& rStartPt,
+ const XubString& rStr,
+- const long* pDXAry,
++ const sal_Int32* pDXAry,
+ USHORT nIndex,
+ USHORT nLen );
+ virtual ~MetaTextArrayAction();
+@@ -605,7 +605,7 @@ public:
+ const XubString& GetText() const { return maStr; }
+ USHORT GetIndex() const { return mnIndex; }
+ USHORT GetLen() const { return mnLen; }
+- long* GetDXArray() const { return mpDXAry; }
++ sal_Int32* GetDXArray() const { return mpDXAry; }
+ };
+
+ // -------------------------
+Index: vcl/inc/msgbox.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/msgbox.hxx,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -p -u -r1.5 -r1.6
+--- vcl/inc/msgbox.hxx 24 Oct 2002 10:56:12 -0000 1.5
++++ vcl/inc/msgbox.hxx 7 Jan 2004 09:08:49 -0000 1.6
+@@ -118,12 +118,9 @@ protected:
+ XubString maCheckBoxText;
+ BOOL mbCheck;
+
+-#ifdef _SV_MSGBOX_CXX
+-private:
+ void ImplInitData();
+ void ImplInitButtons();
+ void ImplPosControls();
+-#endif
+
+ protected:
+ void ImplLoadRes( const ResId& rResId );
+@@ -159,10 +156,8 @@ public:
+
+ class InfoBox : public MessBox
+ {
+-#ifdef _SV_MSGBOX_CXX
+ private:
+ void ImplInitData();
+-#endif
+
+ public:
+ InfoBox( Window* pParent, const XubString& rMessage );
+@@ -177,10 +172,8 @@ public:
+
+ class WarningBox : public MessBox
+ {
+-#ifdef _SV_MSGBOX_CXX
+ private:
+ void ImplInitData();
+-#endif
+
+ public:
+ WarningBox( Window* pParent, WinBits nStyle,
+@@ -198,10 +191,8 @@ public:
+
+ class ErrorBox : public MessBox
+ {
+-#ifdef _SV_MSGBOX_CXX
+ private:
+ void ImplInitData();
+-#endif
+
+ public:
+ ErrorBox( Window* pParent, WinBits nStyle,
+@@ -217,10 +208,8 @@ public:
+
+ class QueryBox : public MessBox
+ {
+-#ifdef _SV_MSGBOX_CXX
+ private:
+ void ImplInitData();
+-#endif
+
+ public:
+ QueryBox( Window* pParent, WinBits nStyle,
+Index: vcl/inc/opengl.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/opengl.hxx,v
+retrieving revision 1.3
+retrieving revision 1.5
+diff -u -p -u -r1.3 -r1.5
+--- vcl/inc/opengl.hxx 15 Mar 2002 17:10:25 -0000 1.3
++++ vcl/inc/opengl.hxx 7 Jan 2004 09:09:11 -0000 1.5
+@@ -80,22 +80,13 @@ class RmOpenGL;
+ class OpenGL
+ {
+ static BOOL mbNoOGL;
+-private:
+
++private:
+ OutputDevice* mpOutDev;
+-#ifndef REMOTE_APPSERVER
+ SalOpenGL* mpOGL;
+-#else
+- RmOpenGL* mpOGL;
+-#endif
+
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_OPENGL_CXX
+-private:
+ void ImplInit();
+ BOOL ImplInitFncPointers();
+-#endif
+-#endif // __PRIVATE
+
+ public:
+ OpenGL( OutputDevice* pOutDev );
+Index: vcl/inc/outdata.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/outdata.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.3
+diff -u -p -u -r1.1.1.1 -r1.3
+--- vcl/inc/outdata.hxx 19 Sep 2000 10:23:05 -0000 1.1.1.1
++++ vcl/inc/outdata.hxx 7 Jan 2004 09:09:31 -0000 1.3
+@@ -66,8 +66,8 @@
+ #include <sv.h>
+ #endif
+
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+
+ #ifndef _SV_SALGTYPE_HXX
+@@ -78,12 +78,10 @@
+ // - Hilfemethoden -
+ // -----------------
+
+-#ifndef REMOTE_APPSERVER
+ inline SalColor ImplColorToSal( Color aColor )
+ {
+ return MAKE_SALCOLOR( aColor.GetRed(), aColor.GetGreen(), aColor.GetBlue() );
+ }
+-#endif
+
+ inline int ImplIsColorTransparent( Color aColor )
+ {
+Index: vcl/inc/outdev.h
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/outdev.h,v
+retrieving revision 1.13
+retrieving revision 1.14
+diff -u -p -u -r1.13 -r1.14
+--- vcl/inc/outdev.h 27 Mar 2003 17:57:25 -0000 1.13
++++ vcl/inc/outdev.h 7 Jan 2004 09:09:50 -0000 1.14
+@@ -263,7 +263,6 @@ private:
+ ImplFontEntry* mpFirstEntry;
+ USHORT mnRef0Count;
+ BOOL mbPrinter;
+- BOOL mbDummy;
+
+ public:
+ ImplFontCache( BOOL bPrinter );
+Index: vcl/inc/outdev.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/outdev.hxx,v
+retrieving revision 1.40
+retrieving revision 1.51
+diff -u -p -u -r1.40 -r1.51
+--- vcl/inc/outdev.hxx 6 Jun 2003 10:29:59 -0000 1.40
++++ vcl/inc/outdev.hxx 17 Jun 2004 12:05:32 -0000 1.51
+@@ -71,11 +71,11 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_RC_HXX
+-#include <rc.hxx>
++#ifndef _TOOLS_RC_HXX
++#include <tools/rc.hxx>
+ #endif
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+ #ifndef _SV_FONT_HXX
+ #include <font.hxx>
+@@ -92,8 +92,8 @@
+ #ifndef _SV_SETTINGS_HXX
+ #include <settings.hxx>
+ #endif
+-#ifndef _SV_POLY_HXX
+-#include <poly.hxx>
++#ifndef _TL_POLY_HXX
++#include <tools/poly.hxx>
+ #endif
+
+ #include <vector>
+@@ -108,7 +108,6 @@ class ImplGetDevFontList;
+ class ImplGetDevSizeList;
+ class ImplMultiTextLineInfo;
+ class SalGraphics;
+-class ImplServerGraphics;
+ class Gradient;
+ class Hatch;
+ class Bitmap;
+@@ -139,7 +138,10 @@ namespace awt {
+ typedef std::vector< Rectangle > MetricVector;
+
+ namespace vcl { class PDFWriterImpl; }
+
++#define OUTDEV_BUFFER_SIZE 128
++
++
+ // ---------------------
+ // - OutputDevice-Data -
+ // ---------------------
+@@ -196,7 +194,9 @@ struct KerningPair
+ #define PUSH_TEXTALIGN ((USHORT)0x0100)
+ #define PUSH_REFPOINT ((USHORT)0x0200)
+ #define PUSH_TEXTLINECOLOR ((USHORT)0x0400)
+-#define PUSH_ALLTEXT (PUSH_TEXTCOLOR | PUSH_TEXTFILLCOLOR | PUSH_TEXTLINECOLOR | PUSH_TEXTALIGN)
++#define PUSH_TEXTLAYOUTMODE ((USHORT)0x0800)
++#define PUSH_TEXTLANGUAGE ((USHORT)0x1000)
++#define PUSH_ALLTEXT (PUSH_TEXTCOLOR | PUSH_TEXTFILLCOLOR | PUSH_TEXTLINECOLOR | PUSH_TEXTALIGN | PUSH_TEXTLAYOUTMODE | PUSH_TEXTLANGUAGE)
+ #define PUSH_ALLFONT (PUSH_ALLTEXT | PUSH_FONT)
+ #define PUSH_ALL ((USHORT)0xFFFF)
+
+@@ -224,10 +224,11 @@ struct KerningPair
+ #define IMAGE_DRAW_DISABLE ((USHORT)0x0001)
+ #define IMAGE_DRAW_HIGHLIGHT ((USHORT)0x0002)
+ #define IMAGE_DRAW_DEACTIVE ((USHORT)0x0004)
+-#define IMAGE_DRAW_COLORTRANSFORM ((USHORT)0x0008)
++#define IMAGE_DRAW_COLORTRANSFORM ((USHORT)0x0008)
+ #define IMAGE_DRAW_SEMITRANSPARENT ((USHORT)0x0010)
++#define IMAGE_DRAW_MONOCHROME_BLACK ((USHORT)0x0020)
++#define IMAGE_DRAW_MONOCHROME_WHITE ((USHORT)0x0040)
+ #define IMAGE_DRAW_3DLOOK 0
+-
+ #define IMAGE_DRAW_BTNLOOK 0
+
+ // WaveLine
+@@ -327,20 +328,24 @@ enum OutDevViewType { OUTDEV_VIEWTYPE_DO
+
+ class OutputDevice : public Resource
+ {
+- friend class Window;
+- friend class VirtualDevice;
+- friend class Printer;
+- friend class ImplQPrinter;
+- friend class OpenGL;
+- friend class ::vcl::PDFWriterImpl;
+- friend class SalGraphicsLayout;
++ friend class Application;
++ friend class Bitmap;
++ friend class ImplImageBmp;
++ friend class ImplQPrinter;
++ friend class OpenGL;
++ friend class Printer;
++ friend class RMBitmap;
++ friend class RMBitmapEx;
++ friend class SalGraphicsLayout;
++ friend class System;
++ friend class VirtualDevice;
++ friend class Window;
++ friend class WorkWindow;
++ friend class vcl::PDFWriterImpl;
++ friend const char* ImplDbgCheckOutputDevice( const void* pObj );
+
+ private:
+-#ifndef REMOTE_APPSERVER
+ mutable SalGraphics* mpGraphics;
+-#else
+- mutable ImplServerGraphics* mpGraphics;
+-#endif
+ mutable OutputDevice* mpPrevGraphics;
+ mutable OutputDevice* mpNextGraphics;
+ GDIMetaFile* mpMetaFile;
+@@ -354,7 +359,10 @@ private:
+ List* mpUnoGraphicsList;
+ OutDev3D* mp3DContext;
+ vcl::PDFWriterImpl* mpPDFWriter;
+- void* mpDummy1;
++
++ // TEMP TEMP TEMP
++ VirtualDevice* mpAlphaVDev;
++
+ /// Additional output pixel offset, applied in LogicToPixel (used by SetPixelOffset/GetPixelOffset)
+ long mnOutOffOrigX;
+ /// Additional output offset in _logical_ coordinates, applied in PixelToLogic (used by SetPixelOffset/GetPixelOffset)
+@@ -369,8 +377,8 @@ private:
+ long mnOutOffY;
+ long mnOutWidth;
+ long mnOutHeight;
+- long mnDPIX;
+- long mnDPIY;
++ sal_Int32 mnDPIX;
++ sal_Int32 mnDPIY;
+ /// Output offset for text alignment in pixel
+ long mnTextOffX;
+ /// Output offset for text alignment in pixel
+@@ -379,7 +387,6 @@ private:
+ long mnEmphasisDescent;
+ ULONG mnDrawMode;
+ ULONG mnTextLayoutMode;
+- long mnDummy1;
+ ImplMapRes maMapRes;
+ ImplThresholdRes maThresRes;
+ OutDevType meOutDevType;
+@@ -389,7 +396,6 @@ private:
+ Color maFillColor;
+ Font maFont;
+ Color maTextColor;
+- Color maTextFillColorDummy; // For compatibility to SV we work with the font fill color
+ Color maTextLineColor;
+ TextAlign meTextAlign;
+ RasterOp meRasterOp;
+@@ -399,8 +405,6 @@ private:
+ Point maRefPoint;
+ USHORT mnAntialiasing;
+ LanguageType meTextLanguage;
+- USHORT mnDummy3;
+- USHORT mnDummy4;
+ mutable BOOL mbMap:1,
+ mbMapIsDefault:1,
+ mbClipRegion:1,
+@@ -421,12 +425,121 @@ private:
+ mbTextLines:1,
+ mbTextSpecial:1,
+ mbRefPoint:1,
+- mbEnableRTL:1,
+- mbDummy2:1,
+- mbDummy3:1;
++ mbEnableRTL:1;
+
+ #if _SOLAR__PRIVATE
+-#include <outdev.imp>
++public:
++ sal_Int32 ImplGetDPIX() const { return mnDPIX; }
++ sal_Int32 ImplGetDPIY() const { return mnDPIY; }
++ int ImplGetGraphics() const;
++ void ImplReleaseGraphics( BOOL bRelease = TRUE );
++ BOOL ImplHasMirroredGraphics();
++ void ImplReMirror( Point &rPoint ) const;
++ void ImplReMirror( Rectangle &rRect ) const;
++ void ImplReMirror( Region &rRegion ) const;
++ void ImplInitOutDevData();
++ void ImplDeInitOutDevData();
++ void ImplInitLineColor();
++ void ImplInitFillColor();
++ int ImplNewFont();
++ void ImplInitFont();
++ void ImplInitTextColor();
++ void ImplInitKerningPairs( ImplKernPairData* pKernPairs = 0, long nKernPairs = 0 );
++ void ImplInitClipRegion();
++ static BOOL ImplSelectClipRegion( SalGraphics* pGraphics, const Region& rRegion, OutputDevice *pOutDev );
++ void ImplSetClipRegion( const Region* pRegion );
++
++ SalLayout* ImplLayout( const String& rOrigStr, xub_StrLen nIndex,
++ xub_StrLen nLen, const Point& rLogicPos = Point(0,0),
++ long nLogicWidth=0, const sal_Int32* pLogicDXArray=NULL ) const;
++ long ImplGetTextWidth( const SalLayout& ) const;
++ void ImplDrawTextBackground( const SalLayout& );
++ void ImplDrawTextLines( SalLayout&, FontStrikeout eStrikeout, FontUnderline eUnderline, BOOL bWordLine, BOOL bUnderlineAbove );
++ bool ImplDrawRotateText( SalLayout& );
++ void ImplDrawTextDirect( SalLayout&, BOOL bTextLines );
++ void ImplDrawSpecialText( SalLayout& );
++ void ImplDrawText( SalLayout& );
++ Rectangle ImplGetTextBoundRect( const SalLayout& );
++ void ImplDrawEmphasisMarks( SalLayout& );
++
++ void ImplDrawTextRect( long nBaseX, long nBaseY, long nX, long nY, long nWidth, long nHeight );
++
++ void ImplInitTextLineSize();
++ void ImplInitAboveTextLineSize();
++ void ImplDrawWaveLine( long nBaseX, long nBaseY, long nStartX, long nStartY, long nWidth, long nHeight, long nLineWidth, short nOrientation, const Color& rColor );
++ void ImplDrawTextLine( long nBaseX, long nX, long nY, long nWidth, FontStrikeout eStrikeout, FontUnderline eUnderline, BOOL bUnderlineAbove );
++ void ImplDrawMnemonicLine( long nX, long nY, long nWidth );
++ void ImplGetEmphasisMark( PolyPolygon& rPolyPoly, BOOL& rPolyLine, Rectangle& rRect1, Rectangle& rRect2, long& rYOff, long& rWidth, FontEmphasisMark eEmphasis, long nHeight, short nOrient );
++ void ImplDrawEmphasisMark( long nBaseX, long nX, long nY, const PolyPolygon& rPolyPoly, BOOL bPolyLine, const Rectangle& rRect1, const Rectangle& rRect2 );
++ long ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo, long nWidth, const XubString& rStr, USHORT nStyle ) const;
++ void ImplInitFontList() const;
++ void ImplUpdateFontData( BOOL bNewFontLists );
++ static void ImplUpdateAllFontData( BOOL bNewFontLists );
++ long ImplLogicXToDevicePixel( long nX ) const;
++ long ImplLogicYToDevicePixel( long nY ) const;
++ long ImplLogicWidthToDevicePixel( long nWidth ) const;
++ long ImplLogicHeightToDevicePixel( long nHeight ) const;
++ long ImplDevicePixelToLogicWidth( long nWidth ) const;
++ long ImplDevicePixelToLogicHeight( long nHeight ) const;
++ Point ImplLogicToDevicePixel( const Point& rLogicPt ) const;
++ Size ImplLogicToDevicePixel( const Size& rLogicSize ) const;
++ Rectangle ImplLogicToDevicePixel( const Rectangle& rLogicRect ) const;
++ Polygon ImplLogicToDevicePixel( const Polygon& rLogicPoly ) const;
++ PolyPolygon ImplLogicToDevicePixel( const PolyPolygon& rLogicPolyPoly ) const;
++ LineInfo ImplLogicToDevicePixel( const LineInfo& rLineInfo ) const;
++ Rectangle ImplDevicePixelToLogic( const Rectangle& rLogicRect ) const;
++ Region ImplPixelToDevicePixel( const Region& rRegion ) const;
++ void ImplDrawPolygon( const Polygon& rPoly, const PolyPolygon* pClipPolyPoly = NULL );
++ void ImplDrawPolyPolygon( const PolyPolygon& rPolyPoly, const PolyPolygon* pClipPolyPoly = NULL );
++ void ImplDrawPolyPolygon( USHORT nPoly, const PolyPolygon& rPolyPoly );
++ void ImplDrawLinearGradient( const Rectangle& rRect, const Gradient& rGradient, BOOL bMtf, const PolyPolygon* pClipPolyPoly );
++ void ImplDrawComplexGradient( const Rectangle& rRect, const Gradient& rGradient, BOOL bMtf, const PolyPolygon* pClipPolyPoly );
++
++ void ImplDrawHatch( const PolyPolygon& rPolyPoly, const Hatch& rHatch, BOOL bMtf );
++ void ImplCalcHatchValues( const Rectangle& rRect, long nDist, USHORT nAngle10, Point& rPt1, Point& rPt2, Size& rInc, Point& rEndPt1 );
++ void ImplDrawHatchLine( const Line& rLine, const PolyPolygon& rPolyPoly, Point* pPtBuffer, BOOL bMtf );
++
++ void ImplDrawWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
++ void ImplDrawColorWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
++ void ImplDrawBitmapWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
++ void ImplDrawGradientWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
++ void ImplDraw2ColorFrame( const Rectangle& rRect, const Color& rLeftTopColor, const Color& rRightBottomColor );
++
++ void ImplDrawOutDevDirect( const OutputDevice* pSrcDev, void* pPosAry );
++ void ImplDrawBitmap( const Point& rDestPt, const Size& rDestSize,
++ const Point& rSrcPtPixel, const Size& rSrcSizePixel,
++ const Bitmap& rBitmap, const ULONG nAction );
++ void ImplDrawBitmapEx( const Point& rDestPt, const Size& rDestSize,
++ const Point& rSrcPtPixel, const Size& rSrcSizePixel,
++ const BitmapEx& rBitmapEx, const ULONG nAction );
++ void ImplDrawMask( const Point& rDestPt, const Size& rDestSize,
++ const Point& rSrcPtPixel, const Size& rSrcSizePixel,
++ const Bitmap& rBitmap, const Color& rMaskColor,
++ const ULONG nAction );
++ void ImplDrawAlpha( const Bitmap& rBmp, const AlphaMask& rAlpha,
++ const Point& rDestPt, const Size& rDestSize,
++ const Point& rSrcPtPixel, const Size& rSrcSizePixel );
++ void ImplPrintTransparent( const Bitmap& rBmp, const Bitmap& rMask,
++ const Point& rDestPt, const Size& rDestSize,
++ const Point& rSrcPtPixel, const Size& rSrcSizePixel );
++ void ImplPrintMask( const Bitmap& rMask, const Color& rMaskColor,
++ const Point& rDestPt, const Size& rDestSize,
++ const Point& rSrcPtPixel, const Size& rSrcSizePixel );
++ void ImplDrawFrameDev( const Point& rPt, const Point& rDevPt, const Size& rDevSize,
++ const OutputDevice& rOutDev, const Region& rRegion );
++ void ImplGetFrameDev( const Point& rPt, const Point& rDevPt, const Size& rDevSize,
++ OutputDevice& rOutDev );
++ void ImplGetFrameBitmap( const Point& rPt, const Size& rSize,
++ Bitmap& rBitmap ) const;
++
++ BOOL ImplIsRecordLayout() const;
++
++ void ImplAddDevFontSubstitute( const XubString& rFontName,
++ const XubString& rReplaceFontName,
++ USHORT nFlags = 0 );
++
++ static FontEmphasisMark ImplGetEmphasisMarkStyle( const Font& rFont );
++ static BOOL ImplIsUnderlineAbove( const Font& );
+ #endif
+
+ protected:
+@@ -459,15 +572,15 @@ public:
+ xub_StrLen nLen = STRING_LEN ) const;
+ long GetTextHeight() const;
+ void DrawTextArray( const Point& rStartPt, const XubString& rStr,
+- const long* pDXAry = NULL,
++ const sal_Int32* pDXAry = NULL,
+ xub_StrLen nIndex = 0,
+ xub_StrLen nLen = STRING_LEN );
+- long GetTextArray( const XubString& rStr, long* pDXAry = NULL,
++ long GetTextArray( const XubString& rStr, sal_Int32* pDXAry = NULL,
+ xub_StrLen nIndex = 0,
+ xub_StrLen nLen = STRING_LEN ) const;
+- bool GetCaretPositions( const XubString&, long* pCaretXArray,
++ bool GetCaretPositions( const XubString&, sal_Int32* pCaretXArray,
+ xub_StrLen nIndex, xub_StrLen nLen,
+- long* pDXAry = NULL, long nWidth = 0,
++ sal_Int32* pDXAry = NULL, long nWidth = 0,
+ BOOL bCellBreaking = TRUE ) const;
+ void DrawStretchText( const Point& rStartPt, ULONG nWidth,
+ const XubString& rStr,
+@@ -505,10 +618,10 @@ public:
+ xub_StrLen nLen = STRING_LEN ) const;
+ BOOL GetTextOutline( PolyPolygon&,
+ const String& rStr, xub_StrLen nBase = 0, xub_StrLen nIndex = 0,
+- xub_StrLen nLen = STRING_LEN, BOOL bOptimize = TRUE, const ULONG nWidth = 0, const long* pDXArray = NULL ) const;
++ xub_StrLen nLen = STRING_LEN, BOOL bOptimize = TRUE, const ULONG nWidth = 0, const sal_Int32* pDXArray = NULL ) const;
+ BOOL GetTextOutlines( PolyPolyVector&,
+ const String& rStr, xub_StrLen nBase = 0, xub_StrLen nIndex = 0,
+- xub_StrLen nLen = STRING_LEN, BOOL bOptimize = TRUE, const ULONG nWidth = 0, const long* pDXArray = NULL ) const;
++ xub_StrLen nLen = STRING_LEN, BOOL bOptimize = TRUE, const ULONG nWidth = 0, const sal_Int32* pDXArray = NULL ) const;
+ BOOL GetGlyphBoundRects( const Point& rOrigin, const String& rStr, int nIndex,
+ int nLen, int nBase, MetricVector& rVector );
+
+@@ -517,10 +630,52 @@ public:
+ void DrawLine( const Point& rStartPt, const Point& rEndPt );
+ void DrawLine( const Point& rStartPt, const Point& rEndPt,
+ const LineInfo& rLineInfo );
++
++ /** Render the given polygon as a line stroke
++
++ The given polygon is stroked with the current LineColor, start
++ and end point are not automatically connected
++
++ @see DrawPolygon
++ @see DrawPolyPolygon
++ */
+ void DrawPolyLine( const Polygon& rPoly );
++
++ /** Render the given polygon as a line stroke
++
++ The given polygon is stroked with the current LineColor, start
++ and end point are not automatically connected. The line is
++ rendered according to the specified LineInfo, e.g. supplying a
++ dash pattern, or a line thickness.
++
++ @see DrawPolygon
++ @see DrawPolyPolygon
++ */
+ void DrawPolyLine( const Polygon& rPoly,
+ const LineInfo& rLineInfo );
++
++ /** Render the given polygon
++
++ The given polygon is stroked with the current LineColor, and
++ filled with the current FillColor. If one of these colors are
++ transparent, the corresponding stroke or fill stays
++ invisible. Start and end point of the polygon are
++ automatically connected.
++
++ @see DrawPolyLine
++ */
+ void DrawPolygon( const Polygon& rPoly );
++
++ /** Render the given poly-polygon
++
++ The given poly-polygon is stroked with the current LineColor,
++ and filled with the current FillColor. If one of these colors
++ are transparent, the corresponding stroke or fill stays
++ invisible. Start and end points of the contained polygons are
++ automatically connected.
++
++ @see DrawPolyLine
++ */
+ void DrawPolyPolygon( const PolyPolygon& rPolyPoly );
+ void DrawRect( const Rectangle& rRect );
+ void DrawRect( const Rectangle& rRect,
+@@ -606,17 +755,21 @@ public:
+
+ Bitmap GetBitmap( const Point& rSrcPt, const Size& rSize ) const;
+
+- void EnableMapMode( BOOL bEnable = TRUE ) { mbMap = (bEnable != 0); }
++ /** Query extended bitmap (with alpha channel, if available).
++ */
++ BitmapEx GetBitmapEx( const Point& rSrcPt, const Size& rSize ) const;
++
++ void EnableMapMode( BOOL bEnable = TRUE );
+ BOOL IsMapModeEnabled() const { return mbMap; }
+
+ // Enabling/disabling RTL only makes sense for OutputDevices that use a mirroring SalGraphisLayout
+ void EnableRTL( BOOL bEnable = TRUE);
+ BOOL IsRTLEnabled() const { return mbEnableRTL; }
+
+- void SetConnectMetaFile( GDIMetaFile* pMtf ) { mpMetaFile = pMtf; }
++ void SetConnectMetaFile( GDIMetaFile* pMtf );
+ GDIMetaFile* GetConnectMetaFile() const { return mpMetaFile; }
+
+- void EnableOutput( BOOL bEnable = TRUE ) { mbOutput = (bEnable != 0); }
++ void EnableOutput( BOOL bEnable = TRUE );
+ BOOL IsOutputEnabled() const { return mbOutput; }
+ BOOL IsDeviceOutput() const { return mbDevOutput; }
+ BOOL IsDeviceOutputNecessary() const { return (mbOutput && mbDevOutput); }
+@@ -676,7 +829,7 @@ public:
+ void SetFont( const Font& rNewFont );
+ const Font& GetFont() const { return maFont; }
+ void SetTextColor( const Color& rColor );
+- const Color& GetTextColor() const { return maFont.GetColor(); }
++ const Color& GetTextColor() const { return maTextColor; }
+ void SetTextFillColor();
+ void SetTextFillColor( const Color& rColor );
+
+@@ -689,6 +842,6 @@ public:
+ void SetTextAlign( TextAlign eAlign );
+ TextAlign GetTextAlign() const { return maFont.GetAlign(); }
+
+- void SetSettings( const AllSettings& rSettings ) { maSettings = rSettings; }
++ void SetSettings( const AllSettings& rSettings );
+ const AllSettings& GetSettings() const { return maSettings; }
+
+@@ -811,6 +953,11 @@ public:
+
+ Size GetOutputSizePixel() const
+ { return Size( mnOutWidth, mnOutHeight ); }
++ long GetOutputWidthPixel() const { return mnOutWidth; }
++ long GetOutputHeightPixel() const { return mnOutHeight; }
++ long GetOutOffXPixel() const { return mnOutOffX; }
++ long GetOutOffYPixel() const { return mnOutOffY; }
++
+ Size GetOutputSize() const
+ { return PixelToLogic( GetOutputSizePixel() ); }
+
+@@ -831,9 +978,22 @@ public:
+ USHORT GetBitCount() const;
++
++ /** Query the existence and depth of the alpha channel
++
++ @return 0, if no alpha channel available, and the bit depth of
++ the alpha channel otherwise.
++ */
++ USHORT GetAlphaBitCount() const;
+ ULONG GetColorCount() const;
+
+ void Push( USHORT nFlags = PUSH_ALL );
+ void Pop();
+
++ /** Query availability of alpha channel
++
++ @return TRUE, if this device has an alpha channel.
++ */
++ BOOL HasAlpha();
++
+ void DrawEPS( const Point& rPt, const Size& rSz,
+ const GfxLink& rGfxLink, GDIMetaFile* pSubst = NULL );
+
+
+Index: vcl/inc/pdfwriter.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/pdfwriter.hxx,v
+retrieving revision 1.6
+retrieving revision 1.8
+diff -u -p -u -r1.6 -r1.8
+--- vcl/inc/pdfwriter.hxx 28 May 2003 12:29:54 -0000 1.6
++++ vcl/inc/pdfwriter.hxx 17 Jun 2004 12:05:47 -0000 1.8
+@@ -73,7 +73,7 @@
+ #ifndef _STRING_HXX
+ #include <tools/string.hxx>
+ #endif
+-#ifndef _COLOR_HXX
++#ifndef _TOOLS_COLOR_HXX
+ #include <tools/color.hxx>
+ #endif
+
+@@ -191,7 +191,7 @@ public:
+ FontUnderline eUnderline,
+ BOOL bUnderlineAbove = FALSE );
+ void DrawTextArray( const Point& rStartPt, const XubString& rStr,
+- const long* pDXAry = NULL,
++ const sal_Int32* pDXAry = NULL,
+ xub_StrLen nIndex = 0,
+ xub_StrLen nLen = STRING_LEN );
+ void DrawStretchText( const Point& rStartPt, ULONG nWidth,
+Index: vcl/inc/pngread.hxx
+===================================================================
+RCS file: vcl/inc/pngread.hxx
+diff -N vcl/inc/pngread.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/pngread.hxx 28 Jun 2004 16:05:43 -0000 1.3
+@@ -0,0 +1,101 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * The Contents of this file are made available subject to the terms of
++ * either of the following licenses
++ *
++ * - GNU Lesser General Public License Version 2.1
++ * - Sun Industry Standards Source License Version 1.1
++ *
++ * Sun Microsystems Inc., October, 2000
++ *
++ * GNU Lesser General Public License Version 2.1
++ * =============================================
++ * Copyright 2000 by Sun Microsystems, Inc.
++ * 901 San Antonio Road, Palo Alto, CA 94303, USA
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License version 2.1, as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ *
++ * Sun Industry Standards Source License Version 1.1
++ * =================================================
++ * The contents of this file are subject to the Sun Industry Standards
++ * Source License Version 1.1 (the "License"); You may not use this file
++ * except in compliance with the License. You may obtain a copy of the
++ * License at http://www.openoffice.org/license.html.
++ *
++ * Software provided under this License is provided on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
++ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
++ * See the License for the specific provisions governing your rights and
++ * obligations concerning the Software.
++ *
++ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
++ *
++ * Copyright: 2000 by Sun Microsystems, Inc.
++ *
++ * All Rights Reserved.
++ *
++ * Contributor(s): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_PNGREAD_HXX
++#define _SV_PNGREAD_HXX
++
++#ifndef _SV_BITMAPEX_HXX
++#include <bitmapex.hxx>
++#endif
++#include <vector>
++
++// -------------
++// - PNGReader -
++// -------------
++
++namespace vcl
++{
++ class PNGReaderImpl;
++
++ class PNGReader
++ {
++ PNGReaderImpl* mpImpl;
++
++ public:
++
++ /* the PNG chunks are read within the c'tor, so the stream will
++ be positioned at the end of the PNG */
++ PNGReader( SvStream& rStm );
++ ~PNGReader();
++
++ BitmapEx Read();
++
++ // retrieve every chunk that resides inside the PNG
++ struct ChunkData
++ {
++ sal_uInt32 nType;
++ std::vector< sal_uInt8 > aData;
++ };
++ const std::vector< ChunkData >& GetChunks() const;
++ };
++}
++
++#endif // _SV_PNGREAD_HXX
+Index: vcl/inc/pngwrite.hxx
+===================================================================
+RCS file: vcl/inc/pngwrite.hxx
+diff -N vcl/inc/pngwrite.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/pngwrite.hxx 28 Jun 2004 16:05:57 -0000 1.3
+@@ -0,0 +1,106 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * The Contents of this file are made available subject to the terms of
++ * either of the following licenses
++ *
++ * - GNU Lesser General Public License Version 2.1
++ * - Sun Industry Standards Source License Version 1.1
++ *
++ * Sun Microsystems Inc., October, 2000
++ *
++ * GNU Lesser General Public License Version 2.1
++ * =============================================
++ * Copyright 2000 by Sun Microsystems, Inc.
++ * 901 San Antonio Road, Palo Alto, CA 94303, USA
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License version 2.1, as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ *
++ * Sun Industry Standards Source License Version 1.1
++ * =================================================
++ * The contents of this file are subject to the Sun Industry Standards
++ * Source License Version 1.1 (the "License"); You may not use this file
++ * except in compliance with the License. You may obtain a copy of the
++ * License at http://www.openoffice.org/license.html.
++ *
++ * Software provided under this License is provided on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
++ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
++ * See the License for the specific provisions governing your rights and
++ * obligations concerning the Software.
++ *
++ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
++ *
++ * Copyright: 2000 by Sun Microsystems, Inc.
++ *
++ * All Rights Reserved.
++ *
++ * Contributor(s): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_PNGWRITE_HXX
++#define _SV_PNGWRITE_HXX
++
++#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_
++#include <com/sun/star/uno/Sequence.hxx>
++#endif
++#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUE_HPP_
++#include <com/sun/star/beans/PropertyValue.hpp>
++#endif
++#ifndef _SV_BITMAPEX_HXX
++#include <bitmapex.hxx>
++#endif
++#include <vector>
++
++// -------------
++// - PNGWriter -
++// -------------
++
++namespace vcl
++{
++ class PNGWriterImpl;
++
++ class PNGWriter
++ {
++ PNGWriterImpl* mpImpl;
++
++ public:
++
++ PNGWriter( const BitmapEx& BmpEx,
++ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >* pFilterData = NULL );
++ ~PNGWriter();
++
++ sal_Bool Write( SvStream& rStm );
++
++ // additional method to be able to modify all chunk before they are stored
++ struct ChunkData
++ {
++ sal_uInt32 nType;
++ std::vector< sal_uInt8 > aData;
++ };
++ std::vector< ChunkData >& GetChunks();
++ };
++}
++
++#endif // _SV_PNGWRITE_HXX
+Index: vcl/inc/print.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/print.hxx,v
+retrieving revision 1.17
+retrieving revision 1.19
+diff -u -p -u -r1.17 -r1.19
+--- vcl/inc/print.hxx 27 Mar 2003 17:57:29 -0000 1.17
++++ vcl/inc/print.hxx 7 Jan 2004 09:11:49 -0000 1.19
+@@ -85,12 +85,9 @@
+ #include <tools/stream.hxx>
+ #endif
+
+-#if defined REMOTE_APPSERVER
+-#include <vector>
+-#endif
+-
+ struct SalPrinterInfoQueue;
+ class SalInfoPrinter;
++struct SalPrinterQueueInfo;
+ class SalPrinter;
+ class VirtualDevice;
+ class Window;
+@@ -101,10 +98,6 @@ namespace com { namespace sun { namespac
+ class Any;
+ } } } }
+
+-#ifdef REMOTE_APPSERVER
+-namespace com { namespace sun { namespace star { namespace portal { namespace client { struct RmJobSetup; } } } } }
+-#endif
+-
+ // -----------------
+ // - Printer-Types -
+ // -----------------
+@@ -268,29 +261,17 @@ class Printer : public OutputDevice
+ friend class ImplQPrinter;
+
+ private:
+-#ifndef REMOTE_APPSERVER
++ void* mpPrinterData_NotUsedYet;
+ SalInfoPrinter* mpInfoPrinter;
+ SalPrinter* mpPrinter;
+ Printer* mpJobPrinter;
+ SalGraphics* mpJobGraphics;
+-#else
+- RmPrinter* mpInfoPrinter;
+- RmPrinter* mpPrinter;
+- void* mpJobPrinter;
+- void* mpJobGraphics;
+-#endif
+ Printer* mpPrev;
+ Printer* mpNext;
+ VirtualDevice* mpDisplayDev;
+ ImplQPrinter* mpQPrinter;
+ GDIMetaFile* mpQMtf;
+ PrinterOptions* mpPrinterOptions;
+-#ifndef REMOTE_APPSERVER
+- void* mpDummy2;
+-#else
+- ::std::vector< PrinterPage* >* mpRemotePages;
+-#endif
+- void* mpDummy3;
+ XubString maPrinterName;
+ XubString maDriver;
+ XubString maPrintFile;
+@@ -313,18 +294,11 @@ private:
+ BOOL mbIsQueuePrinter;
+ BOOL mbUserSetupCompleted;
+ BOOL mbUserSetupResult;
+- BOOL mbDummy3;
+ Link maErrorHdl;
+ Link maStartPrintHdl;
+ Link maEndPrintHdl;
+ Link maPrintPageHdl;
+
+-#ifdef REMOTE_APPSERVER
+- DECL_LINK( UserSetupCompleted, ::com::sun::star::uno::Any* );
+-#endif
+-
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_PRINT_CXX
+ void ImplInitData();
+ void ImplInit( SalPrinterQueueInfo* pInfo );
+ void ImplInitDisplay( const Window* pWindow );
+@@ -333,19 +307,11 @@ private:
+ void ImplUpdatePageData();
+ void ImplUpdateFontList();
+ void ImplFindPaperFormatForUserSize( JobSetup& );
+-#endif // _SV_PRINT_CXX
+-#ifndef REMOTE_APPSERVER
+-
+ DECL_LINK( ImplDestroyPrinterAsync, void* );
++#if _SOLAR__PRIVATE
+ public:
+-
+ void ImplEndPrint();
+-#else
+-public:
+- void PrintRemotePage( ULONG nPage );
+- void GetRemotePageSetup( ULONG nPage, ::com::sun::star::portal::client::RmJobSetup& rSetup );
+-#endif // REMOTE_APPSERVER
+-#endif // __PRIVATE
++#endif
+
+ #ifdef _SPOOLPRINTER_EXT
+ public:
+Index: vcl/inc/regband.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/regband.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/regband.hxx 19 Sep 2000 10:23:06 -0000 1.1.1.1
++++ vcl/inc/regband.hxx 7 Jan 2004 09:13:14 -0000 1.2
+@@ -65,8 +65,8 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_POLY_HXX
+-#include <poly.hxx>
++#ifndef _TL_POLY_HXX
++#include <tools/poly.hxx>
+ #endif
+
+ /* =======================================================================
+Index: vcl/inc/region.h
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/region.h,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/region.h 19 Sep 2000 10:23:06 -0000 1.1.1.1
++++ vcl/inc/region.h 7 Jan 2004 09:13:32 -0000 1.2
+@@ -68,8 +68,8 @@
+ #ifndef _SV_REGBAND_HXX
+ #include <regband.hxx>
+ #endif
+-#ifndef _SV_POLY_HXX
+-#include <poly.hxx>
++#ifndef _TL_POLY_HXX
++#include <tools/poly.hxx>
+ #endif
+
+ #ifndef _SV_REGION_HXX
+Index: vcl/inc/region.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/region.hxx,v
+retrieving revision 1.3
+retrieving revision 1.5
+diff -u -p -u -r1.3 -r1.5
+--- vcl/inc/region.hxx 18 Jun 2001 12:53:13 -0000 1.3
++++ vcl/inc/region.hxx 7 Jan 2004 09:13:51 -0000 1.5
+@@ -91,11 +91,30 @@ typedef long RegionHandle;
+
+ class Region
+ {
++ friend class OutputDevice;
++ friend class Window;
++ friend class Bitmap;
++
+ private:
+- ImplRegion* mpImplRegion;
++ ImplRegion* mpImplRegion;
++
++ void ImplCopyData();
++ void ImplCreateRectRegion( const Rectangle& rRect );
++ void ImplCreatePolyPolyRegion( const PolyPolygon& rPolyPoly );
++ void ImplPolyPolyRegionToBandRegionFunc();
++ inline void ImplPolyPolyRegionToBandRegion();
++ const ImplRegion* ImplGetImplRegion() const { return mpImplRegion; }
++ ImplRegion* ImplGetImplRegion() { return mpImplRegion; }
++ BOOL ImplGetFirstRect( ImplRegionInfo& rImplRegionInfo,
++ long& nX, long& nY, long& nWidth, long& nHeight ) const;
++ BOOL ImplGetNextRect( ImplRegionInfo& rImplRegionInfo,
++ long& nX, long& nY, long& nWidth, long& nHeight ) const;
++ void ImplBeginAddRect( );
++ BOOL ImplAddRect( const Rectangle& rRect );
++ void ImplEndAddRect( );
+
+-#if _SOLAR__PRIVATE
+-#include <region.imp>
++#ifdef DBG_UTIL
++ friend const char* ImplDbgTestRegion( const void* pObj );
+ #endif
+
+ public:
+@@ -150,9 +169,6 @@ public:
+
+ friend SvStream& operator>>( SvStream& rIStm, Region& rRegion );
+ friend SvStream& operator<<( SvStream& rOStm, const Region& rRegion );
+-
+- // usage of this function is only intended for the remote client
+- RegionOverlapType GetOverlapType( const Rectangle& rRect ) const;
+ };
+
+ #endif // _SV_REGION_HXX
+Index: vcl/inc/salbmp.hxx
+===================================================================
+RCS file: vcl/inc/salbmp.hxx
+diff -N vcl/inc/salbmp.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salbmp.hxx 18 Nov 2003 14:28:29 -0000 1.2
+@@ -0,0 +1,96 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * The Contents of this file are made available subject to the terms of
++ * either of the following licenses
++ *
++ * - GNU Lesser General Public License Version 2.1
++ * - Sun Industry Standards Source License Version 1.1
++ *
++ * Sun Microsystems Inc., October, 2000
++ *
++ * GNU Lesser General Public License Version 2.1
++ * =============================================
++ * Copyright 2000 by Sun Microsystems, Inc.
++ * 901 San Antonio Road, Palo Alto, CA 94303, USA
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License version 2.1, as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ *
++ * Sun Industry Standards Source License Version 1.1
++ * =================================================
++ * The contents of this file are subject to the Sun Industry Standards
++ * Source License Version 1.1 (the "License"); You may not use this file
++ * except in compliance with the License. You may obtain a copy of the
++ * License at http://www.openoffice.org/license.html.
++ *
++ * Software provided under this License is provided on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
++ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
++ * See the License for the specific provisions governing your rights and
++ * obligations concerning the Software.
++ *
++ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
++ *
++ * Copyright: 2000 by Sun Microsystems, Inc.
++ *
++ * All Rights Reserved.
++ *
++ * Contributor(s): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_SALBMP_HXX
++#define _SV_SALBMP_HXX
++
++#ifndef _TL_GEN_HXX
++#include <tools/gen.hxx>
++#endif
++
++struct BitmapBuffer;
++class SalGraphics;
++class BitmapPalette;
++
++class SalBitmap
++{
++public:
++ SalBitmap() {}
++ virtual ~SalBitmap();
++
++ virtual bool Create( const Size& rSize,
++ USHORT nBitCount,
++ const BitmapPalette& rPal ) = 0;
++ virtual bool Create( const SalBitmap& rSalBmp ) = 0;
++ virtual bool Create( const SalBitmap& rSalBmp,
++ SalGraphics* pGraphics ) = 0;
++ virtual bool Create( const SalBitmap& rSalBmp,
++ USHORT nNewBitCount ) = 0;
++ virtual void Destroy() = 0;
++ virtual Size GetSize() const = 0;
++ virtual USHORT GetBitCount() const = 0;
++
++ virtual BitmapBuffer* AcquireBuffer( bool bReadOnly ) = 0;
++ virtual void ReleaseBuffer( BitmapBuffer* pBuffer, bool bReadOnly ) = 0;
++
++};
++
++#endif
+Index: vcl/inc/salctrlhandle.hxx
+===================================================================
+RCS file: vcl/inc/salctrlhandle.hxx
+diff -N vcl/inc/salctrlhandle.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salctrlhandle.hxx 10 May 2004 15:42:11 -0000 1.2
+@@ -0,0 +1,82 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * The Contents of this file are made available subject to the terms of
++ * either of the following licenses
++ *
++ * - GNU Lesser General Public License Version 2.1
++ * - Sun Industry Standards Source License Version 1.1
++ *
++ * Sun Microsystems Inc., October, 2000
++ *
++ * GNU Lesser General Public License Version 2.1
++ * =============================================
++ * Copyright 2000 by Sun Microsystems, Inc.
++ * 901 San Antonio Road, Palo Alto, CA 94303, USA
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License version 2.1, as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ *
++ * Sun Industry Standards Source License Version 1.1
++ * =================================================
++ * The contents of this file are subject to the Sun Industry Standards
++ * Source License Version 1.1 (the "License"); You may not use this file
++ * except in compliance with the License. You may obtain a copy of the
++ * License at http://www.openoffice.org/license.html.
++ *
++ * Software provided under this License is provided on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
++ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
++ * See the License for the specific provisions governing your rights and
++ * obligations concerning the Software.
++ *
++ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
++ *
++ * Copyright: 2000 by Sun Microsystems, Inc.
++ *
++ * All Rights Reserved.
++ *
++ * Contributor(s): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_SALCTRLHANDLE_HXX
++#define _SV_SALCTRLHANDLE_HXX
++
++/* SalControlHandle:
++ *
++ * Container for platform-specific handles and data
++ * about controls. Lives as long as the VCL control
++ * lives.
++ */
++
++class SalControlHandle
++{
++ public:
++ SalControlHandle() {}
++ virtual ~SalControlHandle();
++
++ // TODO: derive Sal implementation
++ //SalControlHandleData maData;
++};
++
++#endif
+Index: vcl/inc/salframe.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salframe.hxx,v
+retrieving revision 1.16
+retrieving revision 1.19
+diff -u -p -u -r1.16 -r1.19
+--- vcl/inc/salframe.hxx 24 Apr 2003 15:16:48 -0000 1.16
++++ vcl/inc/salframe.hxx 10 May 2004 15:42:24 -0000 1.19
+@@ -80,9 +80,6 @@
+ #ifndef _SV_SALWTYPE_HXX
+ #include <salwtype.hxx>
+ #endif
+-#ifndef _SV_SALFRAME_H
+-#include <salframe.h>
+-#endif
+ #ifndef _SV_SALGEOM_HXX
+ #include <salgeom.hxx>
+ #endif
+@@ -91,11 +88,20 @@
+ #include <tools/gen.hxx>
+ #endif
+
++#ifndef _SV_REGION_HXX
++#include <region.hxx>
++#endif
++
++#ifndef _RTL_USTRING_HXX_
++#include <rtl/ustring.hxx>
++#endif
++
+ #ifdef __cplusplus
+
+ class AllSettings;
+ class SalGraphics;
+ class SalBitmap;
++class SalMenu;
+
+ #else
+
+@@ -160,112 +166,119 @@ struct SystemEnvData;
+
+ #ifdef __cplusplus
+
++using namespace rtl;
++
+ // ------------
+ // - SalFrame -
+ // ------------
+
++struct SystemParentData;
++
+ class SalFrame
+ {
+- friend class SalInstance;
+-
++ void* m_pInst;
++ SALFRAMEPROC m_pProc;
+ public: // public for Sal Implementation
+- SalFrame();
+- ~SalFrame();
++ SalFrame() : m_pInst( NULL ), m_pProc( NULL ) {}
++ virtual ~SalFrame();
+
+ public: // public for Sal Implementation
+- SalFrameData maFrameData;
+ SalFrameGeometry maGeometry;
+- static BOOL mbInReparent;
+-
+-#ifdef _INCL_SAL_SALFRAME_IMP
+-#include <salframe.imp>
+-#endif
+
+ public:
+ // SalGraphics or NULL, but two Graphics for all SalFrames
+ // must be returned
+- SalGraphics* GetGraphics();
+- void ReleaseGraphics( SalGraphics* pGraphics );
++ virtual SalGraphics* GetGraphics() = 0;
++ virtual void ReleaseGraphics( SalGraphics* pGraphics ) = 0;
+
+ // Event must be destroyed, when Frame is destroyed
+ // When Event is called, SalInstance::Yield() must be returned
+- BOOL PostEvent( void* pData );
++ virtual BOOL PostEvent( void* pData ) = 0;
+
+- void SetTitle( const XubString& rTitle );
+- void SetIcon( USHORT nIcon );
+-
+- // Befor the window is visible, a resize event
+- // must be sent with the correct size
+- void Show( BOOL bVisible, BOOL bNoActivate = FALSE );
+- void Enable( BOOL bEnable );
+- // Set ClientSize and Center the Window to the desktop
+- // and send/post a resize message
+- void SetMinClientSize( long nWidth, long nHeight );
+- void SetPosSize( long nX, long nY, long nWidth, long nHeight, USHORT nFlags );
+- void GetClientSize( long& rWidth, long& rHeight );
+- void GetWorkArea( Rectangle& rRect );
+- SalFrame* GetParent() const;
++ virtual void SetTitle( const XubString& rTitle ) = 0;
++ virtual void SetIcon( USHORT nIcon ) = 0;
++ virtual void SetMenu( SalMenu *pSalMenu ) = 0;
++ virtual void DrawMenuBar() = 0;
++
++ // Before the window is visible, a resize event
++ // must be sent with the correct size
++ virtual void Show( BOOL bVisible, BOOL bNoActivate = FALSE ) = 0;
++ virtual void Enable( BOOL bEnable ) = 0;
++ // Set ClientSize and Center the Window to the desktop
++ // and send/post a resize message
++ virtual void SetMinClientSize( long nWidth, long nHeight ) = 0;
++ virtual void SetPosSize( long nX, long nY, long nWidth, long nHeight, USHORT nFlags ) = 0;
++ virtual void GetClientSize( long& rWidth, long& rHeight ) = 0;
++ virtual void GetWorkArea( Rectangle& rRect ) = 0;
++ virtual SalFrame* GetParent() const = 0;
+ // Note: x will be mirrored at parent if UI mirroring is active
+- SalFrameGeometry GetGeometry();
+- const SalFrameGeometry& GetUnmirroredGeometry() const { return maGeometry; }
+- void SetWindowState( const SalFrameState* pState );
+- BOOL GetWindowState( SalFrameState* pState );
+- void ShowFullScreen( BOOL bFullScreen );
+- // Enable/Disable ScreenSaver, SystemAgents, ...
+- void StartPresentation( BOOL bStart );
+- // Show Window over all other Windows
+- void SetAlwaysOnTop( BOOL bOnTop );
+-
+- // Window to top and grab focus
+- void ToTop( USHORT nFlags );
+-
+- // this function can call with the same
+- // pointer style
+- void SetPointer( PointerStyle ePointerStyle );
+- void CaptureMouse( BOOL bMouse );
+- void SetPointerPos( long nX, long nY );
+-
+- // Alle noch anstehenden Ausgaben sofort
+- // durchfuehren
+- void Flush();
+- // Dummy-Syncronen Aufruf zum Client/Display
+- // machen, damit man sicher sein kann, das
+- // Ausgaben nicht den Client/das Display
+- // ueberrennen
+- void Sync();
+-
+- void SetInputContext( SalInputContext* pContext );
+- void EndExtTextInput( USHORT nFlags );
+-
+- XubString GetKeyName( USHORT nKeyCode );
+- XubString GetSymbolKeyName( const XubString& rFontName, USHORT nKeyCode );
+-
+- // returns the input language used for the last key stroke
+- // may be LANGUAGE_DONTKNOW if not supported by the OS
+- LanguageType GetInputLanguage();
+-
+- SalBitmap* SnapShot();
++ SalFrameGeometry GetGeometry();
++ const SalFrameGeometry& GetUnmirroredGeometry() const { return maGeometry; }
++ virtual void SetWindowState( const SalFrameState* pState ) = 0;
++ virtual BOOL GetWindowState( SalFrameState* pState ) = 0;
++ virtual void ShowFullScreen( BOOL bFullScreen ) = 0;
++ // Enable/Disable ScreenSaver, SystemAgents, ...
++ virtual void StartPresentation( BOOL bStart ) = 0;
++ // Show Window over all other Windows
++ virtual void SetAlwaysOnTop( BOOL bOnTop ) = 0;
++
++ // Window to top and grab focus
++ virtual void ToTop( USHORT nFlags ) = 0;
++
++ // this function can call with the same
++ // pointer style
++ virtual void SetPointer( PointerStyle ePointerStyle ) = 0;
++ virtual void CaptureMouse( BOOL bMouse ) = 0;
++ virtual void SetPointerPos( long nX, long nY ) = 0;
++
++ // flush output buffer
++ virtual void Flush() = 0;
++ // flush output buffer, wait till outstanding operations are done
++ virtual void Sync() = 0;
++
++ virtual void SetInputContext( SalInputContext* pContext ) = 0;
++ virtual void EndExtTextInput( USHORT nFlags ) = 0;
++
++ virtual String GetKeyName( USHORT nKeyCode ) = 0;
++ virtual String GetSymbolKeyName( const XubString& rFontName, USHORT nKeyCode ) = 0;
++
++ // returns the input language used for the last key stroke
++ // may be LANGUAGE_DONTKNOW if not supported by the OS
++ virtual LanguageType GetInputLanguage() = 0;
+
+- void UpdateSettings( AllSettings& rSettings );
++ virtual SalBitmap* SnapShot() = 0;
+
+- void Beep( SoundType eSoundType );
++ virtual void UpdateSettings( AllSettings& rSettings ) = 0;
+
+- // Liefert die SystemDaten zurueck
+- const SystemEnvData* GetSystemData() const;
++ virtual void Beep( SoundType eSoundType ) = 0;
++
++ // returns system data (most prominent: window handle)
++ virtual const SystemEnvData* GetSystemData() const = 0;
+
+- // Callbacks (indepen in \sv\source\app\svframe.cxx)
+- // for default message handling return 0
+- void SetCallback( void* pInst, SALFRAMEPROC pProc );
+
+ // get current modifier and button mask
+- ULONG GetCurrentModButtons();
++ virtual ULONG GetCurrentModButtons() = 0;
+
+ // set new parent window
+- void SetParent( SalFrame* pNewParent );
++ virtual void SetParent( SalFrame* pNewParent ) = 0;
+ // reparent window to act as a plugin; implementation
+ // may choose to use a new system window inetrnally
+ // return false to indicate failure
+- bool SetPluginParent( SystemParentData* pNewParent );
++ virtual bool SetPluginParent( SystemParentData* pNewParent ) = 0;
++
++ // Callbacks (indepent part in vcl/source/window/winproc.cxx)
++ // for default message handling return 0
++ void SetCallback( void* pInst, SALFRAMEPROC pProc )
++ { m_pInst = pInst; m_pProc = pProc; }
++
++ // returns the instance set
++ void* GetInstance() const { return m_pInst; }
++
++ // Call the callback set; this sometimes necessary for implementation classes
++ // that should not now more than necessary about the SalFrame implementation
++ // (e.g. input methods, printer update handlers).
++ long CallCallback( USHORT nEvent, const void* pEvent ) const
++ { return m_pProc ? m_pProc( m_pInst, const_cast<SalFrame*>(this), nEvent, pEvent ) : 0; }
+ };
+
+
+Index: vcl/inc/salgdi.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salgdi.hxx,v
+retrieving revision 1.20.116.1
+retrieving revision 1.24
+diff -u -p -u -r1.20.116.1 -r1.24
+--- vcl/inc/salgdi.hxx 9 Jan 2004 18:13:40 -0000 1.20.116.1
++++ vcl/inc/salgdi.hxx 17 Jun 2004 12:07:14 -0000 1.24
+@@ -72,15 +72,21 @@
+ #ifndef _SV_SALGTYPE_HXX
+ #include <salgtype.hxx>
+ #endif
+-#ifndef _SV_SALGDI_H
+-#include <salgdi.h>
+-#endif
+ #ifndef _VOS_THREAD_HXX
+ #include <vos/thread.hxx>
+ #endif
+ #ifndef _SV_OUTDEV_HXX
+ #include <outdev.hxx>
+ #endif
++#ifndef _RTL_USTRING_HXX_
++#include <rtl/ustring.hxx>
++#endif
++#ifndef _SV_NATIVEWIDGETS_HXX
++#include <salnativewidgets.hxx>
++#endif
++#ifndef _SV_SALCTRLHANDLE_HXX
++#include <salctrlhandle.hxx>
++#endif
+
+ #include <map>
+
+@@ -97,6 +103,7 @@ class ImplLayoutArgs;
+ class Rectangle;
+ struct FontSubsetInfo;
+ class OutputDevice;
++class ServerFontLayout;
+
+ // ---------------------
+ // - SalGraphics-Codes -
+@@ -114,72 +121,131 @@ class OutputDevice;
+ // - SalGraphics -
+ // ---------------
+
+-// note: if you add any new methods to class SalGraphics that work with coordinates
+-// make sure they are virtual and add them to class SalGraphicsLayout where you have
+-// to perform coordinate mirroring if required, (see existing methods as sample)
++// note: if you add any new methods to class SalGraphics using coordinates
++// make sure they have a corresponding protected pure virtual method
++// which has to be implemented by the platform dependent part.
++// Add a method that performs coordinate mirroring if required, (see
++// existing methods as sample) and then calls the equivalent pure method.
++
++// note: all positions are in pixel and relative to
++// the top/left-position of the virtual output area
++
+
+ class SalGraphics
+ {
+- friend class SalFrame;
+- friend class SalVirtualDevice;
+- friend class SalPrinter;
+-
+-public: // public for Sal Implementation
+- SalGraphics();
+- virtual ~SalGraphics();
+-
+-public: // public for Sal Implementation
+- SalGraphicsData maGraphicsData;
+-
+- // to be overridden by derived class
+- virtual int GetLayout() { return 0; } // base class supports left-to-right only
+- virtual void SetLayout( int ) {};
++ int m_nLayout; // 0: mirroring off, 1: mirror x-axis
++public:
++ SalGraphics();
++ virtual ~SalGraphics();
+
+-#ifdef _INCL_SAL_SALGDI_IMP
+-#include <salgdi.imp>
+-#endif
++protected:
++ virtual BOOL unionClipRegion( long nX, long nY, long nWidth, long nHeight ) = 0;
++ // draw --> LineColor and FillColor and RasterOp and ClipRegion
++ virtual void drawPixel( long nX, long nY ) = 0;
++ virtual void drawPixel( long nX, long nY, SalColor nSalColor ) = 0;
++ virtual void drawLine( long nX1, long nY1, long nX2, long nY2 ) = 0;
++ virtual void drawRect( long nX, long nY, long nWidth, long nHeight ) = 0;
++ virtual void drawPolyLine( ULONG nPoints, const SalPoint* pPtAry ) = 0;
++ virtual void drawPolygon( ULONG nPoints, const SalPoint* pPtAry ) = 0;
++ virtual void drawPolyPolygon( ULONG nPoly, const ULONG* pPoints, PCONSTSALPOINT* pPtAry ) = 0;
++ virtual sal_Bool drawPolyLineBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry ) = 0;
++ virtual sal_Bool drawPolygonBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry ) = 0;
++ virtual sal_Bool drawPolyPolygonBezier( ULONG nPoly, const ULONG* pPoints, const SalPoint* const* pPtAry, const BYTE* const* pFlgAry ) = 0;
+
++ // CopyArea --> No RasterOp, but ClipRegion
++ virtual void copyArea( long nDestX, long nDestY, long nSrcX, long nSrcY, long nSrcWidth,
++ long nSrcHeight, USHORT nFlags ) = 0;
++
++ // CopyBits and DrawBitmap --> RasterOp and ClipRegion
++ // CopyBits() --> pSrcGraphics == NULL, then CopyBits on same Graphics
++ virtual void copyBits( const SalTwoRect* pPosAry, SalGraphics* pSrcGraphics ) = 0;
++ virtual void drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap ) = 0;
++ virtual void drawBitmap( const SalTwoRect* pPosAry,
++ const SalBitmap& rSalBitmap,
++ SalColor nTransparentColor ) = 0;
++ virtual void drawBitmap( const SalTwoRect* pPosAry,
++ const SalBitmap& rSalBitmap,
++ const SalBitmap& rTransparentBitmap ) = 0;
++ virtual void drawMask( const SalTwoRect* pPosAry,
++ const SalBitmap& rSalBitmap,
++ SalColor nMaskColor ) = 0;
++
++ virtual SalBitmap* getBitmap( long nX, long nY, long nWidth, long nHeight ) = 0;
++ virtual SalColor getPixel( long nX, long nY ) = 0;
++
++ // invert --> ClipRegion (only Windows or VirDevs)
++ virtual void invert( long nX, long nY, long nWidth, long nHeight, SalInvert nFlags) = 0;
++ virtual void invert( ULONG nPoints, const SalPoint* pPtAry, SalInvert nFlags ) = 0;
++
++ virtual BOOL drawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize ) = 0;
++
++ // native widget rendering methods that require mirroring
++ virtual BOOL hitTestNativeControl( ControlType nType, ControlPart nPart, const Region& rControlRegion,
++ const Point& aPos, SalControlHandle& rControlHandle, BOOL& rIsInside );
++ virtual BOOL drawNativeControl( ControlType nType, ControlPart nPart, const Region& rControlRegion,
++ ControlState nState, const ImplControlValue& aValue, SalControlHandle& rControlHandle,
++ rtl::OUString aCaption );
++ virtual BOOL drawNativeControlText( ControlType nType, ControlPart nPart, const Region& rControlRegion,
++ ControlState nState, const ImplControlValue& aValue,
++ SalControlHandle& rControlHandle, rtl::OUString aCaption );
++ virtual BOOL getNativeControlRegion( ControlType nType, ControlPart nPart, const Region& rControlRegion, ControlState nState,
++ const ImplControlValue& aValue, SalControlHandle& rControlHandle, rtl::OUString aCaption,
++ Region &rNativeBoundingRegion, Region &rNativeContentRegion );
+ public:
++ // public SalGraphics methods, the interface to the independent vcl part
+
+- // this functions must be quick, because this data is query for all
+- // GetGraphics()-Instances
+- void GetResolution( long& rDPIX, long& rDPIY );
+- void GetScreenFontResolution( long& rDPIX, long& rDPIY );
+- USHORT GetBitCount();
+- long GetGraphicsWidth();
+-
+- void ResetClipRegion();
+- void BeginSetClipRegion( ULONG nCount );
+- virtual BOOL UnionClipRegion( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
+- void EndSetClipRegion();
+-
+- void SetLineColor();
+- void SetLineColor( SalColor nSalColor );
+- void SetFillColor();
+-
+- void SetFillColor( SalColor nSalColor );
+-
+- void SetXORMode( BOOL bSet );
+-
+- void SetROPLineColor( SalROPColor nROPColor );
+- void SetROPFillColor( SalROPColor nROPColor );
+-
+- // all positions are in pixel and relative to
+- // the top/left-position of the output area
+- void SetTextColor( SalColor nSalColor );
+- USHORT SetFont( ImplFontSelectData*, int nFallbackLevel );
+- void GetFontMetric( ImplFontMetricData* );
+- // return only PairCount when (pKernPairs == NULL)
+- ULONG GetKernPairs( ULONG nPairs, ImplKernPairData* pKernPairs );
+- ULONG GetFontCodeRanges( sal_uInt32* pCodePairs ) const;
++ // get device resolution
++ virtual void GetResolution( sal_Int32& rDPIX, sal_Int32& rDPIY ) = 0;
++ // get resolution for fonts (an implementations specific adjustment,
++ // ideally would be the same as the Resolution)
++ virtual void GetScreenFontResolution( sal_Int32& rDPIX, sal_Int32& rDPIY ) = 0;
++ // get the depth of the device
++ virtual USHORT GetBitCount() = 0;
++ // get the width of the device
++ virtual long GetGraphicsWidth() = 0;
++
++ // set the clip region to empty
++ virtual void ResetClipRegion() = 0;
++ // begin setting the clip region, add rectangles to the
++ // region with the UnionClipRegion call
++ virtual void BeginSetClipRegion( ULONG nCount ) = 0;
++ // all rectangles were added and the clip region should be set now
++ virtual void EndSetClipRegion() = 0;
++
++ // set the line color to transparent (= don't draw lines)
++ virtual void SetLineColor() = 0;
++ // set the line color to a specific color
++ virtual void SetLineColor( SalColor nSalColor ) = 0;
++ // set the fill color to transparent (= don't fill)
++ virtual void SetFillColor() = 0;
++ // set the fill color to a specific color, shapes will be
++ // filled accordingly
++ virtual void SetFillColor( SalColor nSalColor ) = 0;
++ // enable/disable XOR drawing
++ virtual void SetXORMode( BOOL bSet ) = 0;
++ // set line color for raster operations
++ virtual void SetROPLineColor( SalROPColor nROPColor ) = 0;
++ // set fill color for raster operations
++ virtual void SetROPFillColor( SalROPColor nROPColor ) = 0;
++ // set the text color to a specific color
++ virtual void SetTextColor( SalColor nSalColor ) = 0;
++ // set the font
++ virtual USHORT SetFont( ImplFontSelectData*, int nFallbackLevel ) = 0;
++ // get the current font's etrics
++ virtual void GetFontMetric( ImplFontMetricData* ) = 0;
++ // get kernign pairs of the current font
++ // return only PairCount if (pKernPairs == NULL)
++ virtual ULONG GetKernPairs( ULONG nPairs, ImplKernPairData* pKernPairs ) = 0;
++ // get the repertoire of the current font; the code pairs returned
++ // contain unicode ranges. if pCodePairs is NULL return only the
++ // number of pairs which would be filled
++ virtual ULONG GetFontCodeRanges( sal_uInt32* pCodePairs ) const = 0;
+ // graphics must fill supplied font list
+- void GetDevFontList( ImplDevFontList* );
++ virtual void GetDevFontList( ImplDevFontList* ) = 0;
+ // graphics should call ImplAddDevFontSubstitute on supplied
+ // OutputDevice for all its device specific preferred font substitutions
+- void GetDevFontSubstList( OutputDevice* );
+- ImplFontData* AddTempDevFont( const String& rFileURL, const String& rFontName );
+- static void RemovingFont( ImplFontData* );
+-
++ virtual void GetDevFontSubstList( OutputDevice* ) = 0;
++ virtual ImplFontData* AddTempDevFont( const String& rFileURL, const String& rFontName ) = 0;
+ // CreateFontSubset: a method to get a subset of glyhps of a font
+ // inside a new valid font file
+ // returns TRUE if creation of subset was successfull
+@@ -192,14 +258,14 @@ public:
+ // rInfo: additional outgoing information
+ // implementation note: encoding 0 with glyph id 0 should be added implicitly
+ // as "undefined character"
+- BOOL CreateFontSubset( const rtl::OUString& rToFile,
++ virtual BOOL CreateFontSubset( const rtl::OUString& rToFile,
+ ImplFontData* pFont,
+- long* pGlyphIDs,
++ sal_Int32* pGlyphIDs,
+ sal_uInt8* pEncoding,
+ sal_Int32* pWidths,
+ int nGlyphs,
+ FontSubsetInfo& rInfo // out parameter
+- );
++ ) = 0;
+
+ // GetFontEncodingVector: a method to get the encoding map Unicode
+ // to font encoded character; this is only used for type1 fonts and
+@@ -208,7 +274,7 @@ public:
+ // glyphs with only a name) exist it is set to the corresponding
+ // map for non encoded glyphs; the encoding vector contains -1
+ // as encoding for these cases
+- const std::map< sal_Unicode, sal_Int32 >* GetFontEncodingVector( ImplFontData* pFont, const std::map< sal_Unicode, rtl::OString >** ppNonEncoded );
++ virtual const std::map< sal_Unicode, sal_Int32 >* GetFontEncodingVector( ImplFontData* pFont, const std::map< sal_Unicode, rtl::OString >** ppNonEncoded ) = 0;
+
+ // GetEmbedFontData: gets the font data for a font marked
+ // embeddable by GetDevFontList or NULL in case of error
+@@ -219,130 +285,146 @@ public:
+ // pWidths MUST support at least 256 members;
+ // rInfo: additional outgoing information
+ // pDataLen: out parameter, contains the byte length of the returned buffer
+- const void* GetEmbedFontData( ImplFontData* pFont,
+- const sal_Unicode* pUnicodes,
+- sal_Int32* pWidths,
+- FontSubsetInfo& rInfo,
+- long* pDataLen );
++ virtual const void* GetEmbedFontData( ImplFontData* pFont,
++ const sal_Unicode* pUnicodes,
++ sal_Int32* pWidths,
++ FontSubsetInfo& rInfo,
++ long* pDataLen ) = 0;
+ // frees the font data again
+- void FreeEmbedFontData( const void* pData, long nDataLen );
++ virtual void FreeEmbedFontData( const void* pData, long nDataLen ) = 0;
+
+- virtual BOOL GetGlyphBoundRect( long nIndex, Rectangle&, const OutputDevice *pOutDev );
+- virtual BOOL GetGlyphOutline( long nIndex, PolyPolygon&, const OutputDevice *pOutDev );
++ virtual BOOL GetGlyphBoundRect( long nIndex, Rectangle& ) = 0;
++ virtual BOOL GetGlyphOutline( long nIndex, PolyPolygon& ) = 0;
+
+- virtual SalLayout* GetTextLayout( ImplLayoutArgs&, int nFallbackLevel );
++ virtual SalLayout* GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) = 0;
++ virtual void DrawServerFontLayout( const ServerFontLayout& ) = 0;
+
+- // draw --> LineColor and FillColor and RasterOp and ClipRegion
+- virtual void DrawPixel( long nX, long nY, const OutputDevice *pOutDev );
+- virtual void DrawPixel( long nX, long nY, SalColor nSalColor, const OutputDevice *pOutDev );
+- virtual void DrawLine( long nX1, long nY1, long nX2, long nY2, const OutputDevice *pOutDev );
+- virtual void DrawRect( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
+- virtual void DrawPolyLine( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev );
+- virtual void DrawPolygon( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev );
+- virtual void DrawPolyPolygon( ULONG nPoly, const ULONG* pPoints,
+- PCONSTSALPOINT* pPtAry, const OutputDevice *pOutDev );
+- virtual sal_Bool DrawPolyLineBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry, const OutputDevice *pOutDev );
+- virtual sal_Bool DrawPolygonBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry, const OutputDevice *pOutDev );
+- virtual sal_Bool DrawPolyPolygonBezier( ULONG nPoly, const ULONG* pPoints,
+- const SalPoint* const* pPtAry, const BYTE* const* pFlgAry, const OutputDevice *pOutDev );
++ // mirroring specifica
++ int GetLayout() { return m_nLayout; }
++ void SetLayout( int aLayout ) { m_nLayout = aLayout;}
+
++ void mirror( long& nX, const OutputDevice *pOutDev );
++ void mirror( long& nX, long& nWidth, const OutputDevice *pOutDev );
++ BOOL mirror( sal_uInt32 nPoints, const SalPoint *pPtAry, SalPoint *pPtAry2, const OutputDevice *pOutDev );
++ void mirror( Region& rRgn, const OutputDevice *pOutDev );
++
++ // non virtual methods; these do eventual coordinate mirroring and
++ // then delegate to protected virtual methods
++ BOOL UnionClipRegion( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
++ // draw --> LineColor and FillColor and RasterOp and ClipRegion
++ void DrawPixel( long nX, long nY, const OutputDevice *pOutDev );
++ void DrawPixel( long nX, long nY, SalColor nSalColor, const OutputDevice *pOutDev );
++ void DrawLine( long nX1, long nY1, long nX2, long nY2, const OutputDevice *pOutDev );
++ void DrawRect( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
++ void DrawPolyLine( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev );
++ void DrawPolygon( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev );
++ void DrawPolyPolygon( ULONG nPoly,
++ const ULONG* pPoints,
++ PCONSTSALPOINT* pPtAry,
++ const OutputDevice *pOutDev );
++ sal_Bool DrawPolyLineBezier( ULONG nPoints,
++ const SalPoint* pPtAry,
++ const BYTE* pFlgAry,
++ const OutputDevice *pOutDev );
++ sal_Bool DrawPolygonBezier( ULONG nPoints,
++ const SalPoint* pPtAry,
++ const BYTE* pFlgAry,
++ const OutputDevice *pOutDev );
++ sal_Bool DrawPolyPolygonBezier( ULONG nPoly,
++ const ULONG* pPoints,
++ const SalPoint* const* pPtAry,
++ const BYTE* const* pFlgAry,
++ const OutputDevice *pOutDev );
++
+ // CopyArea --> No RasterOp, but ClipRegion
+- virtual void CopyArea( long nDestX, long nDestY,
+- long nSrcX, long nSrcY,
+- long nSrcWidth, long nSrcHeight,
+- USHORT nFlags, const OutputDevice *pOutDev );
++ void CopyArea( long nDestX,
++ long nDestY,
++ long nSrcX,
++ long nSrcY,
++ long nSrcWidth,
++ long nSrcHeight,
++ USHORT nFlags,
++ const OutputDevice *pOutDev );
+
+ // CopyBits and DrawBitmap --> RasterOp and ClipRegion
+ // CopyBits() --> pSrcGraphics == NULL, then CopyBits on same Graphics
+- virtual void CopyBits( const SalTwoRect* pPosAry,
+- SalGraphics* pSrcGraphics, const OutputDevice *pOutDev, const OutputDevice *pSrcOutDev );
+- virtual void DrawBitmap( const SalTwoRect* pPosAry,
+- const SalBitmap& rSalBitmap, const OutputDevice *pOutDev );
+- virtual void DrawBitmap( const SalTwoRect* pPosAry,
++ void CopyBits( const SalTwoRect* pPosAry,
++ SalGraphics* pSrcGraphics,
++ const OutputDevice *pOutDev,
++ const OutputDevice *pSrcOutDev );
++ void DrawBitmap( const SalTwoRect* pPosAry,
+ const SalBitmap& rSalBitmap,
+- SalColor nTransparentColor, const OutputDevice *pOutDev );
+- virtual void DrawBitmap( const SalTwoRect* pPosAry,
++ const OutputDevice *pOutDev );
++ void DrawBitmap( const SalTwoRect* pPosAry,
+ const SalBitmap& rSalBitmap,
+- const SalBitmap& rTransparentBitmap, const OutputDevice *pOutDev );
++ SalColor nTransparentColor,
++ const OutputDevice *pOutDev );
++ void DrawBitmap( const SalTwoRect* pPosAry,
++ const SalBitmap& rSalBitmap,
++ const SalBitmap& rTransparentBitmap,
++ const OutputDevice *pOutDev );
+
+- virtual void DrawMask( const SalTwoRect* pPosAry,
++ void DrawMask( const SalTwoRect* pPosAry,
+ const SalBitmap& rSalBitmap,
+- SalColor nMaskColor, const OutputDevice *pOutDev );
++ SalColor nMaskColor,
++ const OutputDevice *pOutDev );
+
+- virtual SalBitmap* GetBitmap( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
+- virtual SalColor GetPixel( long nX, long nY, const OutputDevice *pOutDev );
++ SalBitmap* GetBitmap( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
++ SalColor GetPixel( long nX, long nY, const OutputDevice *pOutDev );
+
+ // invert --> ClipRegion (only Windows)
+- virtual void Invert( long nX, long nY, long nWidth, long nHeight, SalInvert nFlags, const OutputDevice *pOutDev );
+- virtual void Invert( ULONG nPoints, const SalPoint* pPtAry, SalInvert nFlags, const OutputDevice *pOutDev );
+-
+- virtual BOOL DrawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize, const OutputDevice *pOutDev );
+-};
+-
+-
+-// ---------------------
+-// - SalGraphicsLayout -
+-// ---------------------
+-
+-// extend SalGraphics for RTL
+-
+-class SalGraphicsLayout : public SalGraphics
+-{
+- friend class SalFrame;
+- friend class SalVirtualDevice;
+- friend class SalPrinter;
+-
+-private:
+- int mnLayout;
+-
+-public:
+- SalGraphicsLayout();
+- ~SalGraphicsLayout();
+-
+- int GetLayout() { return mnLayout; }
+- void SetLayout( int aLayout) { mnLayout = aLayout;}
+-
+- void mirror( long& nX, const OutputDevice *pOutDev );
+- void mirror( long& nX, long& nWidth, const OutputDevice *pOutDev );
+- BOOL mirror( sal_uInt32 nPoints, const SalPoint *pPtAry, SalPoint *pPtAry2, const OutputDevice *pOutDev );
+-
+- // overwrite those SalGraphics methods that require mirroring
+- // note: text methods will not be mirrored here, this is handled in outdev3.cxx
+- BOOL UnionClipRegion( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
+- void DrawPixel( long nX, long nY, const OutputDevice *pOutDev );
+- void DrawPixel( long nX, long nY, SalColor nSalColor, const OutputDevice *pOutDev );
+- void DrawLine( long nX1, long nY1, long nX2, long nY2, const OutputDevice *pOutDev );
+- void DrawRect( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
+- void DrawPolyLine( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev );
+- void DrawPolygon( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev );
+- void DrawPolyPolygon( ULONG nPoly, const ULONG* pPoints,
+- PCONSTSALPOINT* pPtAry, const OutputDevice *pOutDev );
+- sal_Bool DrawPolyLineBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry, const OutputDevice *pOutDev );
+- sal_Bool DrawPolygonBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry, const OutputDevice *pOutDev );
+- sal_Bool DrawPolyPolygonBezier( ULONG nPoly, const ULONG* pPoints,
+- const SalPoint* const* pPtAry, const BYTE* const* pFlgAry, const OutputDevice *pOutDev );
+- void CopyArea( long nDestX, long nDestY,
+- long nSrcX, long nSrcY,
+- long nSrcWidth, long nSrcHeight,
+- USHORT nFlags, const OutputDevice *pOutDev );
+- void CopyBits( const SalTwoRect* pPosAry,
+- SalGraphics* pSrcGraphics, const OutputDevice *pOutDev, const OutputDevice *pSrcOutDev );
+- void DrawBitmap( const SalTwoRect* pPosAry,
+- const SalBitmap& rSalBitmap, const OutputDevice *pOutDev );
+- void DrawBitmap( const SalTwoRect* pPosAry,
+- const SalBitmap& rSalBitmap,
+- SalColor nTransparentColor, const OutputDevice *pOutDev );
+- void DrawBitmap( const SalTwoRect* pPosAry,
+- const SalBitmap& rSalBitmap,
+- const SalBitmap& rTransparentBitmap, const OutputDevice *pOutDev );
+- void DrawMask( const SalTwoRect* pPosAry,
+- const SalBitmap& rSalBitmap,
+- SalColor nMaskColor, const OutputDevice *pOutDev );
+- SalBitmap* GetBitmap( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
+- SalColor GetPixel( long nX, long nY, const OutputDevice *pOutDev );
+- void Invert( long nX, long nY, long nWidth, long nHeight, SalInvert nFlags, const OutputDevice *pOutDev );
+- void Invert( ULONG nPoints, const SalPoint* pPtAry, SalInvert nFlags, const OutputDevice *pOutDev );
+- BOOL DrawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize, const OutputDevice *pOutDev );
++ void Invert( long nX, long nY, long nWidth, long nHeight, SalInvert nFlags, const OutputDevice *pOutDev );
++ void Invert( ULONG nPoints, const SalPoint* pPtAry, SalInvert nFlags, const OutputDevice *pOutDev );
++
++ BOOL DrawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize, const OutputDevice *pOutDev );
++
++ //-------------------------------------
++ // Native Widget Rendering functions
++ //-------------------------------------
++
++ // Query the platform layer for control support
++ virtual BOOL IsNativeControlSupported( ControlType nType, ControlPart nPart );
++
++ // Query the native control to determine if it was acted upon
++ BOOL HitTestNativeControl( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ const Point& aPos,
++ SalControlHandle& rControlHandle,
++ BOOL& rIsInside,
++ const OutputDevice *pOutDev );
++
++ // Request rendering of a particular control and/or part
++ BOOL DrawNativeControl( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ ControlState nState,
++ const ImplControlValue& aValue,
++ SalControlHandle& rControlHandle,
++ rtl::OUString aCaption,
++ const OutputDevice *pOutDev );
++
++ // Request rendering of a caption string for a control
++ BOOL DrawNativeControlText( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ ControlState nState,
++ const ImplControlValue& aValue,
++ SalControlHandle& rControlHandle,
++ rtl::OUString aCaption,
++ const OutputDevice *pOutDev );
++
++ // Query the native control's actual drawing region (including adornment)
++ BOOL GetNativeControlRegion( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ ControlState nState,
++ const ImplControlValue& aValue,
++ SalControlHandle& rControlHandle,
++ rtl::OUString aCaption,
++ Region &rNativeBoundingRegion,
++ Region &rNativeContentRegion,
++ const OutputDevice *pOutDev );
+ };
+
+ #endif // _SV_SALGDI_HXX
+Index: vcl/inc/salimestatus.hxx
+===================================================================
+RCS file: vcl/inc/salimestatus.hxx
+diff -N vcl/inc/salimestatus.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salimestatus.hxx 18 Nov 2003 14:29:06 -0000 1.2
+@@ -0,0 +1,77 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * The Contents of this file are made available subject to the terms of
++ * either of the following licenses
++ *
++ * - GNU Lesser General Public License Version 2.1
++ * - Sun Industry Standards Source License Version 1.1
++ *
++ * Sun Microsystems Inc., October, 2000
++ *
++ * GNU Lesser General Public License Version 2.1
++ * =============================================
++ * Copyright 2000 by Sun Microsystems, Inc.
++ * 901 San Antonio Road, Palo Alto, CA 94303, USA
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License version 2.1, as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ *
++ * Sun Industry Standards Source License Version 1.1
++ * =================================================
++ * The contents of this file are subject to the Sun Industry Standards
++ * Source License Version 1.1 (the "License"); You may not use this file
++ * except in compliance with the License. You may obtain a copy of the
++ * License at http://www.openoffice.org/license.html.
++ *
++ * Software provided under this License is provided on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
++ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
++ * See the License for the specific provisions governing your rights and
++ * obligations concerning the Software.
++ *
++ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
++ *
++ * Copyright: 2000 by Sun Microsystems, Inc.
++ *
++ * All Rights Reserved.
++ *
++ * Contributor(s): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_SALIMESTATUS_HXX
++#define _SV_SALIMESTATUS_HXX
++
++class SalI18NImeStatus
++{
++public:
++ SalI18NImeStatus() {}
++ virtual ~SalI18NImeStatus();
++
++ // asks whether there is a status window available
++ // to toggle into menubar
++ virtual bool canToggle() = 0;
++ virtual void toggle() = 0;
++};
++
++#endif
+Index: vcl/inc/salinst.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salinst.hxx,v
+retrieving revision 1.6.280.1
+retrieving revision 1.10
+diff -u -p -u -r1.6.280.1 -r1.10
+--- vcl/inc/salinst.hxx 2 Mar 2004 10:00:22 -0000 1.6.280.1
++++ vcl/inc/salinst.hxx 18 May 2004 10:49:17 -0000 1.10
+@@ -67,15 +67,11 @@
+ #ifndef _STRING_HXX
+ #include <tools/string.hxx>
+ #endif
+-
+ #endif // __cplusplus
+
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_SALINST_H
+-#include <salinst.h>
+-#endif
+
+ #ifdef __cplusplus
+
+@@ -86,10 +82,19 @@ struct ImplJobSetup;
+ class SalGraphics;
+ class SalFrame;
+ class SalObject;
++class SalSound;
++class SalOpenGL;
++class SalMenu;
++class SalMenuItem;
+ class SalVirtualDevice;
+ class SalInfoPrinter;
+ class SalPrinter;
++class SalTimer;
+ class ImplPrnQueueList;
++class SalI18NImeStatus;
++class SalSystem;
++class SalBitmap;
++struct SalItemParams;
+ class SalSession;
+
+ namespace vos { class IMutex; }
+@@ -100,67 +105,88 @@ namespace vos { class IMutex; }
+
+ class SalInstance
+ {
+- friend SalInstance* CreateSalInstance();
+- friend void DestroySalInstance( SalInstance* );
+-
++public:
++ typedef bool(*Callback)(void*,void*,int);
+ private:
+- SalInstance();
+- ~SalInstance();
+-
+-public: // public for Sal Implementation
+- SalInstanceData maInstData;
+-
+-#ifdef _INCL_SAL_SALINST_IMP
+-#include <salinst.imp>
+-#endif
+-
++ void* m_pEventInst;
++ void* m_pErrorInst;
++ Callback m_pEventCallback;
++ Callback m_pErrorCallback;
++
+ public:
+- // Frame
+- // DisplayName for Unix ???
+- SalFrame* CreateChildFrame( SystemParentData* pParent, ULONG nStyle );
+- SalFrame* CreateFrame( SalFrame* pParent, ULONG nStyle );
+- void DestroyFrame( SalFrame* pFrame );
+-
+- // Object (System Child Window)
+- SalObject* CreateObject( SalFrame* pParent );
+- void DestroyObject( SalObject* pObject );
+-
+- // VirtualDevice
+- // nDX and nDY in Pixeln
+- // nBitCount: 0 == Default / 1 == Mono
+- SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics,
+- long nDX, long nDY,
+- USHORT nBitCount );
+- void DestroyVirtualDevice( SalVirtualDevice* pDevice );
+-
+- // Printer
+- // pSetupData->mpDriverData can be 0
+- // pSetupData must be updatet with the current
+- // JobSetup
+- SalInfoPrinter* CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo,
+- ImplJobSetup* pSetupData );
+- void DestroyInfoPrinter( SalInfoPrinter* pPrinter );
+- SalPrinter* CreatePrinter( SalInfoPrinter* pInfoPrinter );
+- void DestroyPrinter( SalPrinter* pPrinter );
+-
+- void GetPrinterQueueInfo( ImplPrnQueueList* pList );
+- void GetPrinterQueueState( SalPrinterQueueInfo* pInfo );
+- void DeletePrinterQueueInfo( SalPrinterQueueInfo* pInfo );
+- XubString GetDefaultPrinter();
++ SalInstance() :
++ m_pEventInst( NULL ),
++ m_pErrorInst( NULL ),
++ m_pEventCallback( NULL ),
++ m_pErrorCallback( NULL )
++ {}
++ virtual ~SalInstance();
++
++ // Frame
++ // DisplayName for Unix ???
++ virtual SalFrame* CreateChildFrame( SystemParentData* pParent, ULONG nStyle ) = 0;
++ virtual SalFrame* CreateFrame( SalFrame* pParent, ULONG nStyle ) = 0;
++ virtual void DestroyFrame( SalFrame* pFrame ) = 0;
++
++ // Object (System Child Window)
++ virtual SalObject* CreateObject( SalFrame* pParent ) = 0;
++ virtual void DestroyObject( SalObject* pObject ) = 0;
++
++ // VirtualDevice
++ // nDX and nDY in Pixel
++ // nBitCount: 0 == Default(=as window) / 1 == Mono
++ virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics,
++ long nDX, long nDY,
++ USHORT nBitCount ) = 0;
++ virtual void DestroyVirtualDevice( SalVirtualDevice* pDevice ) = 0;
++
++ // Printer
++ // pSetupData->mpDriverData can be 0
++ // pSetupData must be updatet with the current
++ // JobSetup
++ virtual SalInfoPrinter* CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo,
++ ImplJobSetup* pSetupData ) = 0;
++ virtual void DestroyInfoPrinter( SalInfoPrinter* pPrinter ) = 0;
++ virtual SalPrinter* CreatePrinter( SalInfoPrinter* pInfoPrinter ) = 0;
++ virtual void DestroyPrinter( SalPrinter* pPrinter ) = 0;
++
++ virtual void GetPrinterQueueInfo( ImplPrnQueueList* pList ) = 0;
++ virtual void GetPrinterQueueState( SalPrinterQueueInfo* pInfo ) = 0;
++ virtual void DeletePrinterQueueInfo( SalPrinterQueueInfo* pInfo ) = 0;
++ virtual String GetDefaultPrinter() = 0;
++
++ // SalSound
++ virtual SalSound* CreateSalSound() = 0;
++ // SalTimer
++ virtual SalTimer* CreateSalTimer() = 0;
++ // SalOpenGL
++ virtual SalOpenGL* CreateSalOpenGL( SalGraphics* pGraphics ) = 0;
++ // SalI18NImeStatus
++ virtual SalI18NImeStatus* CreateI18NImeStatus() = 0;
++ // SalSystem
++ virtual SalSystem* CreateSalSystem() = 0;
++ // SalBitmap
++ virtual SalBitmap* CreateSalBitmap() = 0;
++
++ // YieldMutex
++ virtual vos::IMutex* GetYieldMutex() = 0;
++ virtual ULONG ReleaseYieldMutex() = 0;
++ virtual void AcquireYieldMutex( ULONG nCount ) = 0;
++
++ // wait next event and dispatch
++ // must returned by UserEvent (SalFrame::PostEvent)
++ // and timer
++ virtual void Yield( BOOL bWait ) = 0;
++ virtual bool AnyInput( USHORT nType ) = 0;
++
++ // Menues
++ virtual SalMenu* CreateMenu( BOOL bMenuBar ) = 0;
++ virtual void DestroyMenu( SalMenu* pMenu) = 0;
++ virtual SalMenuItem* CreateMenuItem( const SalItemParams* pItemData ) = 0;
++ virtual void DestroyMenuItem( SalMenuItem* pItem ) = 0;
+
+ // may return NULL to disable session management
+- SalSession* CreateSalSession();
+-
+- // YieldMutex
+- vos::IMutex* GetYieldMutex();
+- ULONG ReleaseYieldMutex();
+- void AcquireYieldMutex( ULONG nCount );
+-
+- // wait next event and dispatch
+- // must returned by UserEvent (SalFrame::PostEvent)
+- // and timer
+- void Yield( BOOL bWait );
+- static BOOL AnyInput( USHORT nType );
++ virtual SalSession* CreateSalSession() = 0;
+
+ // methods for XDisplayConnection
+
+@@ -168,11 +194,21 @@ public:
+ // void* pInst: pInstance form the SetCallback call
+ // void* pEvent: address of the system specific event structure
+ // int nBytes: length of the system specific event structure
+- void SetEventCallback( void* pInstance, bool(*pCallback)(void*,void*,int));
+- void SetErrorEventCallback( void* pInstance, bool(*pCallback)(void*,void*,int));
++ void SetEventCallback( void* pInstance, Callback pCallback )
++ { m_pEventInst = pInstance; m_pEventCallback = pCallback; }
++ Callback GetEventCallback() const
++ { return m_pEventCallback; }
++ bool CallEventCallback( void* pEvent, int nBytes )
++ { return m_pEventCallback ? m_pEventCallback( m_pEventInst, pEvent, nBytes ) : false; }
++ void SetErrorEventCallback( void* pInstance, Callback pCallback )
++ { m_pErrorInst = pInstance; m_pErrorCallback = pCallback; }
++ Callback GetErrorEventCallback() const
++ { return m_pErrorCallback; }
++ bool CallErrorCallback( void* pEvent, int nBytes )
++ { return m_pErrorCallback ? m_pErrorCallback( m_pErrorInst, pEvent, nBytes ) : false; }
+
+ enum ConnectionIdentifierType { AsciiCString, Blob };
+- void* GetConnectionIdentifier( ConnectionIdentifierType& rReturnedType, int& rReturnedBytes );
++ virtual void* GetConnectionIdentifier( ConnectionIdentifierType& rReturnedType, int& rReturnedBytes ) = 0;
+ };
+
+ // called from SVMain
+@@ -185,6 +221,8 @@ void DestroySalInstance( SalInstance* pI
+
+ void SalAbort( const XubString& rErrorText );
+
++const ::rtl::OUString& SalGetDesktopEnvironment();
++
+ #endif // __cplusplus
+
+ // -----------
+@@ -193,7 +231,6 @@ void SalAbort( const XubString& rErrorTe
+
+ void InitSalData(); // called from Application-Ctor
+ void DeInitSalData(); // called from Application-Dtor
+-void SetFilterCallback( void* pCallback, void* pInst );
+
+ void InitSalMain();
+ void DeInitSalMain();
+Index: vcl/inc/sallayout.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/sallayout.hxx,v
+retrieving revision 1.31.68.1
+retrieving revision 1.36
+diff -u -p -u -r1.31.68.1 -r1.36
+--- vcl/inc/sallayout.hxx 9 Jan 2004 18:13:41 -0000 1.31.68.1
++++ vcl/inc/sallayout.hxx 17 Jun 2004 12:07:38 -0000 1.36
+@@ -63,10 +63,10 @@
+ #define _SV_SALLAYOUT_HXX
+
+ #ifndef _SV_GEN_HXX
+-#include <gen.hxx>
+-#endif // _SV_GEN_HXX
+-#ifndef _SV_POLY_HXX
+-#include <poly.hxx>
++#include <tools/gen.hxx>
++#endif
++#ifndef _TL_POLY_HXX
++#include <tools/poly.hxx>
+ #endif
+
+ #ifndef _TOOLS_LANG_HXX
+@@ -76,11 +76,6 @@ typedef unsigned short LanguageType;
+ #include <vector>
+ #include <list>
+
+-#ifdef REMOTE_APPSERVER
+-// TODO: better solution: derive ImpServerGraphics from SalGraphics
+-#define SalGraphics ImplServerGraphics
+-#endif
+-
+ class SalGraphics;
+ struct ImplFontData;
+
+@@ -113,7 +108,7 @@ private:
+ std::vector<int> maRuns;
+
+ public:
+- ImplLayoutRuns() { mnRunIndex = 0; }
++ ImplLayoutRuns() { mnRunIndex = 0; maRuns.reserve(8); }
+
+ void Clear() { maRuns.clear(); }
+ bool AddPos( int nCharPos, bool bRTL );
+@@ -140,7 +135,7 @@ public:
+ const xub_Unicode* mpStr;
+
+ // positioning related inputs
+- const long* mpDXArray; // in pixel units
++ const sal_Int32* mpDXArray; // in pixel units
+ long mnLayoutWidth; // in pixel units
+ int mnOrientation; // in 0-3600 system
+
+@@ -153,7 +148,7 @@ public:
+ int nMinCharPos, int nEndCharPos, int nFlags );
+
+ void SetLayoutWidth( long nWidth ) { mnLayoutWidth = nWidth; }
+- void SetDXArray( const long* pDXArray ) { mpDXArray = pDXArray; }
++ void SetDXArray( const sal_Int32* pDXArray ) { mpDXArray = pDXArray; }
+ void SetOrientation( int nOrientation ) { mnOrientation = nOrientation; }
+
+ void ResetPos()
+@@ -220,13 +215,13 @@ public:
+
+ // methods using string indexing
+ virtual int GetTextBreak( long nMaxWidth, long nCharExtra=0, int nFactor=1 ) const = 0;
+- virtual long FillDXArray( long* pDXArray ) const = 0;
++ virtual long FillDXArray( sal_Int32* pDXArray ) const = 0;
+ virtual long GetTextWidth() const { return FillDXArray( NULL ); }
+- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const = 0;
++ virtual void GetCaretPositions( int nArraySize, sal_Int32* pCaretXArray ) const = 0;
+
+ // methods using glyph indexing
+- virtual int GetNextGlyphs( int nLen, long* pGlyphIdxAry, Point& rPos, int&,
+- long* pGlyphAdvAry = NULL, int* pCharPosAry = NULL ) const = 0;
++ virtual int GetNextGlyphs( int nLen, sal_Int32* pGlyphIdxAry, Point& rPos, int&,
++ sal_Int32* pGlyphAdvAry = NULL, int* pCharPosAry = NULL ) const = 0;
+ virtual bool GetOutline( SalGraphics&, PolyPolyVector& ) const;
+ virtual bool GetBoundRect( SalGraphics&, Rectangle& ) const;
+
+@@ -280,10 +275,10 @@ class MultiSalLayout : public SalLayout
+ public:
+ virtual void DrawText( SalGraphics& ) const;
+ virtual int GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const;
+- virtual long FillDXArray( long* pDXArray ) const;
+- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const;
+- virtual int GetNextGlyphs( int nLen, long* pGlyphIdxAry, Point& rPos,
+- int&, long* pGlyphAdvAry, int* pCharPosAry ) const;
++ virtual long FillDXArray( sal_Int32* pDXArray ) const;
++ virtual void GetCaretPositions( int nArraySize, sal_Int32* pCaretXArray ) const;
++ virtual int GetNextGlyphs( int nLen, sal_Int32* pGlyphIdxAry, Point& rPos,
++ int&, sal_Int32* pGlyphAdvAry, int* pCharPosAry ) const;
+ virtual bool GetOutline( SalGraphics&, PolyPolyVector& ) const;
+ virtual bool GetBoundRect( SalGraphics&, Rectangle& ) const;
+
+@@ -364,13 +359,13 @@ public:
+
+ // used by upper layers
+ virtual long GetTextWidth() const;
+- virtual long FillDXArray( long* pDXArray ) const;
++ virtual long FillDXArray( sal_Int32* pDXArray ) const;
+ virtual int GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const;
+- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const;
++ virtual void GetCaretPositions( int nArraySize, sal_Int32* pCaretXArray ) const;
+
+ // used by display layers
+- virtual int GetNextGlyphs( int nLen, long* pGlyphIdxAry, Point& rPos, int&,
+- long* pGlyphAdvAry = NULL, int* pCharPosAry = NULL ) const;
++ virtual int GetNextGlyphs( int nLen, sal_Int32* pGlyphIdxAry, Point& rPos, int&,
++ sal_Int32* pGlyphAdvAry = NULL, int* pCharPosAry = NULL ) const;
+
+ protected:
+ GenericSalLayout();
+@@ -381,7 +376,7 @@ protected:
+ virtual void DropGlyph( int nStart );
+ virtual void Simplify( bool bIsBase );
+
+- bool GetCharWidths( long* pCharWidths ) const;
++ bool GetCharWidths( sal_Int32* pCharWidths ) const;
+
+ private:
+ GlyphItem* mpGlyphItems; // TODO: change to GlyphList
+Index: vcl/inc/salmenu.hxx
+===================================================================
+RCS file: vcl/inc/salmenu.hxx
+diff -N vcl/inc/salmenu.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salmenu.hxx 7 Jan 2004 09:17:01 -0000 1.4
+@@ -0,0 +1,122 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * The Contents of this file are made available subject to the terms of
++ * either of the following licenses
++ *
++ * - GNU Lesser General Public License Version 2.1
++ * - Sun Industry Standards Source License Version 1.1
++ *
++ * Sun Microsystems Inc., October, 2000
++ *
++ * GNU Lesser General Public License Version 2.1
++ * =============================================
++ * Copyright 2000 by Sun Microsystems, Inc.
++ * 901 San Antonio Road, Palo Alto, CA 94303, USA
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License version 2.1, as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ *
++ * Sun Industry Standards Source License Version 1.1
++ * =================================================
++ * The contents of this file are subject to the Sun Industry Standards
++ * Source License Version 1.1 (the "License"); You may not use this file
++ * except in compliance with the License. You may obtain a copy of the
++ * License at http://www.openoffice.org/license.html.
++ *
++ * Software provided under this License is provided on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
++ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
++ * See the License for the specific provisions governing your rights and
++ * obligations concerning the Software.
++ *
++ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
++ *
++ * Copyright: 2000 by Sun Microsystems, Inc.
++ *
++ * All Rights Reserved.
++ *
++ * Contributor(s): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_SALMENU_HXX
++#define _SV_SALMENU_HXX
++
++#ifndef _SV_SV_H
++#include <sv.h>
++#endif
++#ifndef _SV_MENU_HXX
++#include <menu.hxx>
++#endif
++#ifndef _SV_KEYCODE_HXX
++#include <keycod.hxx>
++#endif
++#ifndef _SV_IMAGE_HXX
++#include <image.hxx>
++#endif
++
++struct SystemMenuData;
++class SalFrame;
++
++struct SalItemParams
++{
++ USHORT nId; // item Id
++ MenuItemType eType; // MenuItem-Type
++ MenuItemBits nBits; // MenuItem-Bits
++ Menu* pMenu; // Pointer to Menu
++ XubString aText; // Menu-Text
++ Image aImage; // Image
++};
++
++
++class SalMenuItem
++{
++public:
++ SalMenuItem() {}
++ virtual ~SalMenuItem();
++};
++
++class SalMenu
++{
++public:
++ SalMenu() {}
++ virtual ~SalMenu();
++
++ virtual BOOL VisibleMenuBar() = 0; // must return TRUE to actually DISPLAY native menu bars
++ // otherwise only menu messages are processed (eg, OLE on Windows)
++
++ virtual void InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ) = 0;
++ virtual void RemoveItem( unsigned nPos ) = 0;
++ virtual void SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos ) = 0;
++ virtual void SetFrame( const SalFrame* pFrame ) = 0;
++ virtual void CheckItem( unsigned nPos, BOOL bCheck ) = 0;
++ virtual void EnableItem( unsigned nPos, BOOL bEnable ) = 0;
++ virtual void SetItemText( unsigned nPos, SalMenuItem* pSalMenuItem, const XubString& rText )= 0;
++ virtual void SetItemImage( unsigned nPos, SalMenuItem* pSalMenuItem, const Image& rImage ) = 0;
++ virtual void SetAccelerator( unsigned nPos, SalMenuItem* pSalMenuItem, const KeyCode& rKeyCode, const XubString& rKeyName ) = 0;
++ virtual void GetSystemMenuData( SystemMenuData* pData ) = 0;
++};
++
++
++#endif // _SV_SALMENU_HXX
++
+Index: vcl/inc/salnativewidgets.hxx
+===================================================================
+RCS file: vcl/inc/salnativewidgets.hxx
+diff -N vcl/inc/salnativewidgets.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salnativewidgets.hxx 10 May 2004 15:42:51 -0000 1.2
+@@ -0,0 +1,367 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * The Contents of this file are made available subject to the terms of
++ * either of the following licenses
++ *
++ * - GNU Lesser General Public License Version 2.1
++ * - Sun Industry Standards Source License Version 1.1
++ *
++ * Sun Microsystems Inc., October, 2000
++ *
++ * GNU Lesser General Public License Version 2.1
++ * =============================================
++ * Copyright 2000 by Sun Microsystems, Inc.
++ * 901 San Antonio Road, Palo Alto, CA 94303, USA
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License version 2.1, as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ *
++ * Sun Industry Standards Source License Version 1.1
++ * =================================================
++ * The contents of this file are subject to the Sun Industry Standards
++ * Source License Version 1.1 (the "License"); You may not use this file
++ * except in compliance with the License. You may obtain a copy of the
++ * License at http://www.openoffice.org/license.html.
++ *
++ * Software provided under this License is provided on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
++ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
++ * See the License for the specific provisions governing your rights and
++ * obligations concerning the Software.
++ *
++ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
++ *
++ * Copyright: 2000 by Sun Microsystems, Inc.
++ *
++ * All Rights Reserved.
++ *
++ * Contributor(s): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_NATIVEWIDGETS_HXX
++#define _SV_NATIVEWIDGETS_HXX
++
++#ifndef _RTL_USTRING_HXX_
++#include <rtl/ustring.hxx>
++#endif
++
++/* Control Types:
++ *
++ * Specify the overall, whole control
++ * type (as opposed to parts of the
++ * control if it were composite).
++ */
++
++typedef sal_uInt32 ControlType;
++
++// Normal PushButton/Command Button
++#define CTRL_PUSHBUTTON 1
++
++// Normal single radio button
++#define CTRL_RADIOBUTTON 2
++
++// Normal single checkbox
++#define CTRL_CHECKBOX 10
++
++// Combobox, i.e. a ListBox
++// that allows data entry by user
++#define CTRL_COMBOBOX 20
++
++// Control that allows text entry
++#define CTRL_EDITBOX 30
++
++// Control that allows text entry, but without the usual border
++// Has to be handled separately, because this one cannot handle
++// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box'es
++// border window.
++#define CTRL_EDITBOX_NOBORDER 31
++
++// Control that pops up a menu,
++// but does NOT allow data entry
++#define CTRL_LISTBOX 35
++
++// An edit field together with two little
++// buttons on the side (aka spin field)
++#define CTRL_SPINBOX 40
++
++// Two standalone spin buttons
++// without an edit field
++#define CTRL_SPINBUTTONS 45
++
++// A single tab
++#define CTRL_TAB_ITEM 50
++
++// The border around a tab area,
++// but without the tabs themselves.
++// May have a gap at the top for
++// the active tab
++#define CTRL_TAB_PANE 55
++
++// Background of a Tab Pane
++#define CTRL_TAB_BODY 56
++
++// Normal scrollbar, including
++// all parts like slider, buttons
++#define CTRL_SCROLLBAR 60
++
++// Border around a group of related
++// items, perhaps also displaying
++// a label of identification
++#define CTRL_GROUPBOX 70
++
++// A separator line
++#define CTRL_FIXEDLINE 80
++
++// A rectangular border, like a
++// Tab Pane, but without the
++// possible gap for a tab
++#define CTRL_FIXEDBORDER 90
++
++
++
++/* Control Parts:
++ *
++ * Uniquely identify a part of a control,
++ * for example the slider of a scroll bar.
++ */
++
++typedef sal_uInt32 ControlPart;
++
++#define PART_ENTIRE_CONTROL 1
++#define PART_WINDOW 5 // the static listbox window containing the list
++#define PART_BUTTON 100
++#define PART_BUTTON_UP 101
++#define PART_BUTTON_DOWN 102 // Also for ComboBoxes/ListBoxes
++#define PART_BUTTON_LEFT 103
++#define PART_BUTTON_RIGHT 104
++#define PART_ALL_BUTTONS 105
++#define PART_TRACK_HORZ_LEFT 200
++#define PART_TRACK_VERT_UPPER 201
++#define PART_TRACK_HORZ_RIGHT 202
++#define PART_TRACK_VERT_LOWER 203
++#define PART_THUMB_HORZ 210
++#define PART_THUMB_VERT 211
++
++/** The edit field part of a control, e.g. of the combo box.
++
++ Currently used just for combo boxes and just for GetNativeControlRegion().
++ It is valid only if GetNativeControlRegion() supports PART_BUTTON_DOWN as
++ well.
++*/
++#define PART_SUB_EDIT 300
++
++// For controls that require the entire background
++// to be drawn first, and then other pieces over top.
++// (GTK+ scrollbars for example). Control region passed
++// in to draw this part is expected to be the entire
++// area of the control.
++// A control may respond to one or both.
++#define PART_DRAW_BACKGROUND_HORZ 1000
++#define PART_DRAW_BACKGROUND_VERT 1001
++
++// GTK+ also draws tabs right->left since there is a
++// hardcoded 2 pixel overlap between adjacent tabs
++#define PART_TABS_DRAW_RTL 3000
++
++// For themes that do not want to have the focus
++// rectangle part drawn by VCL but take care of the
++// whole inner control part by themselves
++// eg, listboxes or comboboxes or spinbuttons
++#define HAS_BACKGROUND_TEXTURE 4000
++
++// For scrollbars that have 3 buttons (most KDE themes)
++#define HAS_THREE_BUTTONS 5000
++
++/* Control State:
++ *
++ * Specify how a particular part of the control
++ * is to be drawn. Constants are bitwise OR-ed
++ * together to compose a final drawing state.
++ * A _disabled_ state is assumed by the drawing
++ * functions until an ENABLED or HIDDEN is passed
++ * in the ControlState.
++ */
++
++typedef sal_uInt32 ControlState;
++
++#define CTRL_STATE_ENABLED 0x0001
++#define CTRL_STATE_FOCUSED 0x0002
++#define CTRL_STATE_PRESSED 0x0004
++#define CTRL_STATE_ROLLOVER 0x0008
++#define CTRL_STATE_HIDDEN 0x0010
++#define CTRL_STATE_DEFAULT 0x0020
++#define CTRL_STATE_SELECTED 0x0040
++#define CTRL_CACHING_ALLOWED 0x8000 // set when the control is completely visible (i.e. not clipped)
++
++/* ButtonValue:
++ *
++ * Identifies the tri-state value options
++ * that buttons allow
++ */
++
++enum ButtonValue {
++ BUTTONVALUE_DONTKNOW,
++ BUTTONVALUE_ON,
++ BUTTONVALUE_OFF,
++ BUTTONVALUE_MIXED
++};
++
++
++#ifdef __cplusplus
++
++
++/* ScrollbarValue:
++ *
++ * Value container for scrollbars.
++ */
++class ScrollbarValue
++{
++ public:
++ long mnMin;
++ long mnMax;
++ long mnCur;
++ long mnVisibleSize;
++ Rectangle maThumbRect;
++ Rectangle maButton1Rect;
++ Rectangle maButton2Rect;
++ ControlState mnButton1State;
++ ControlState mnButton2State;
++ ControlState mnThumbState;
++ ControlState mnPage1State;
++ ControlState mnPage2State;
++
++ inline ScrollbarValue()
++ {
++ mnMin = 0; mnMax = 0; mnCur = 0; mnVisibleSize = 0;
++ mnButton1State = 0; mnButton2State = 0;
++ mnThumbState = 0; mnPage1State = 0; mnPage2State = 0;
++ };
++ inline ~ScrollbarValue() {};
++};
++
++/* TabitemValue:
++ *
++ * Value container for tabitems.
++ */
++
++/* TABITEM constants are OR-ed together */
++#define TABITEM_NOTALIGNED 0x000 // the tabitem is an inner item
++#define TABITEM_LEFTALIGNED 0x001 // the tabitem is aligned with the left border of the TabControl
++#define TABITEM_RIGHTALIGNED 0x002 // the tabitem is aligned with the right border of the TabControl
++#define TABITEM_FIRST_IN_GROUP 0x004 // the tabitem is the first in group of tabitems
++#define TABITEM_LAST_IN_GROUP 0x008 // the tabitem is the last in group of tabitems
++
++class TabitemValue
++{
++ public:
++ unsigned int mnAlignment;
++
++ inline TabitemValue()
++ {
++ mnAlignment = 0;
++ };
++ inline ~TabitemValue() {};
++
++ BOOL isLeftAligned() { return (mnAlignment & TABITEM_LEFTALIGNED) != 0; }
++ BOOL isRightAligned() { return (mnAlignment & TABITEM_RIGHTALIGNED) != 0; }
++ BOOL isBothAligned() { return isLeftAligned() && isRightAligned(); }
++ BOOL isNotAligned() { return (mnAlignment & (TABITEM_LEFTALIGNED | TABITEM_RIGHTALIGNED)) == 0; }
++ BOOL isFirst() { return (mnAlignment & TABITEM_FIRST_IN_GROUP) != 0; }
++ BOOL isLast() { return (mnAlignment & TABITEM_LAST_IN_GROUP) != 0; }
++};
++
++
++/* SpinbuttonValue:
++ *
++ * Value container for spinbuttons to paint both buttons at once.
++ * Note: the other parameters of DrawNativeControl will have no meaning
++ * all parameters for spinbuttons are carried here
++ */
++class SpinbuttonValue
++{
++ public:
++ Rectangle maUpperRect;
++ Rectangle maLowerRect;
++ ControlState mnUpperState;
++ ControlState mnLowerState;
++ int mnUpperPart;
++ int mnLowerPart;
++
++ inline SpinbuttonValue()
++ {
++ mnUpperState = mnLowerState = 0;
++ };
++ inline ~SpinbuttonValue() {};
++};
++
++/* ImplControlValue:
++ *
++ * Generic value container for all control parts.
++ */
++
++class ImplControlValue
++{
++ friend class SalFrame;
++
++ private:
++ ButtonValue mTristate; // Tristate value: on, off, mixed
++ rtl::OUString mString; // string value
++ long mNumber; // numeric value
++ void * mOptionalVal; // optional control-specific value
++
++ public:
++ inline ImplControlValue( ButtonValue nTristate, rtl::OUString sString, long nNumeric, void * aOptVal ) \
++ { mTristate = nTristate; mString = sString; mNumber = nNumeric; mOptionalVal = aOptVal; };
++ inline ImplControlValue( ButtonValue nTristate, rtl::OUString sString, long nNumeric ) \
++ { mTristate = nTristate; mString = sString; mNumber = nNumeric; mOptionalVal = NULL; };
++ inline ImplControlValue( ButtonValue nTristate ) { mTristate = nTristate; mOptionalVal = NULL; };
++ inline ImplControlValue( rtl::OUString sString ) { mString = sString; mOptionalVal = NULL; };
++ inline ImplControlValue( long nNumeric ) { mNumber = nNumeric; mOptionalVal = NULL; };
++ inline ImplControlValue( void * aOptVal ) { mOptionalVal = aOptVal; };
++ inline ImplControlValue() { mTristate = BUTTONVALUE_DONTKNOW; mNumber = 0; mOptionalVal = NULL; };
++ inline ~ImplControlValue() { mOptionalVal = NULL; };
++
++ inline ButtonValue getTristateVal( void ) const { return mTristate; }
++ inline void setTristateVal( ButtonValue nTristate ) { mTristate = nTristate; }
++
++ inline const rtl::OUString& getStringVal( void ) const { return mString; }
++ inline void setStringVal( rtl::OUString sString ) { mString = sString; }
++
++ inline long getNumericVal( void ) const { return mNumber; }
++ inline void setNumericVal( long nNumeric ) { mNumber = nNumeric; }
++
++ inline void * getOptionalVal( void ) const { return mOptionalVal; }
++ inline void setOptionalVal( void * aOptVal ) { mOptionalVal = aOptVal; }
++};
++
++#endif /* __cplusplus */
++
++#endif
++
++
++
++
++
++
++
+Index: vcl/inc/salobj.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salobj.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/salobj.hxx 19 Sep 2000 10:23:06 -0000 1.1.1.1
++++ vcl/inc/salobj.hxx 18 Nov 2003 14:29:32 -0000 1.2
+@@ -71,9 +71,6 @@
+ #ifndef _SV_SALWTYPE_HXX
+ #include <salwtype.hxx>
+ #endif
+-#ifndef _SV_SALOBJ_H
+-#include <salobj.h>
+-#endif
+
+ struct SystemEnvData;
+
+@@ -91,37 +88,32 @@ struct SystemEnvData;
+
+ class SalObject
+ {
+-public: // public for Sal Implementation
+- SalObject();
+- ~SalObject();
+-
+-public: // public for Sal Implementation
+- SalObjectData maObjectData;
+-
+-#ifdef _INCL_SAL_SALOBJ_IMP
+-#include <salobj.imp>
+-#endif
+-
++ void* m_pInst;
++ SALOBJECTPROC m_pCallback;
+ public:
+- void ResetClipRegion();
+- USHORT GetClipRegionType();
+- void BeginSetClipRegion( ULONG nRects );
+- void UnionClipRegion( long nX, long nY, long nWidth, long nHeight );
+- void EndSetClipRegion();
+-
+- void SetPosSize( long nX, long nY, long nWidth, long nHeight );
+- void Show( BOOL bVisible );
+- void Enable( BOOL nEnable );
+- void GrabFocus();
+-
+- void SetBackground();
+- void SetBackground( SalColor nSalColor );
+-
+- const SystemEnvData* GetSystemData() const;
+-
+- // Callbacks (indepen in \vcl\source\window\winproc.cxx)
+- // for default message handling return 0
+- void SetCallback( void* pInst, SALOBJECTPROC pProc );
++ SalObject() : m_pInst( NULL ), m_pCallback( NULL ) {}
++ virtual ~SalObject();
++
++ virtual void ResetClipRegion() = 0;
++ virtual USHORT GetClipRegionType() = 0;
++ virtual void BeginSetClipRegion( ULONG nRects ) = 0;
++ virtual void UnionClipRegion( long nX, long nY, long nWidth, long nHeight ) = 0;
++ virtual void EndSetClipRegion() = 0;
++
++ virtual void SetPosSize( long nX, long nY, long nWidth, long nHeight ) = 0;
++ virtual void Show( BOOL bVisible ) = 0;
++ virtual void Enable( BOOL nEnable ) = 0;
++ virtual void GrabFocus() = 0;
++
++ virtual void SetBackground() = 0;
++ virtual void SetBackground( SalColor nSalColor ) = 0;
++
++ virtual const SystemEnvData* GetSystemData() const = 0;
++
++ void SetCallback( void* pInst, SALOBJECTPROC pProc )
++ { m_pInst = pInst; m_pCallback = pProc; }
++ long CallCallback( USHORT nEvent, const void* pEvent )
++ { return m_pCallback ? m_pCallback( m_pInst, this, nEvent, pEvent ) : 0; }
+ };
+
+ #endif // _SV_SALOBJ_HXX
+Index: vcl/inc/salogl.hxx
+===================================================================
+RCS file: vcl/inc/salogl.hxx
+diff -N vcl/inc/salogl.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salogl.hxx 18 Nov 2003 14:29:40 -0000 1.2
+@@ -0,0 +1,109 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * The Contents of this file are made available subject to the terms of
++ * either of the following licenses
++ *
++ * - GNU Lesser General Public License Version 2.1
++ * - Sun Industry Standards Source License Version 1.1
++ *
++ * Sun Microsystems Inc., October, 2000
++ *
++ * GNU Lesser General Public License Version 2.1
++ * =============================================
++ * Copyright 2000 by Sun Microsystems, Inc.
++ * 901 San Antonio Road, Palo Alto, CA 94303, USA
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License version 2.1, as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ *
++ * Sun Industry Standards Source License Version 1.1
++ * =================================================
++ * The contents of this file are subject to the Sun Industry Standards
++ * Source License Version 1.1 (the "License"); You may not use this file
++ * except in compliance with the License. You may obtain a copy of the
++ * License at http://www.openoffice.org/license.html.
++ *
++ * Software provided under this License is provided on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
++ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
++ * See the License for the specific provisions governing your rights and
++ * obligations concerning the Software.
++ *
++ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
++ *
++ * Copyright: 2000 by Sun Microsystems, Inc.
++ *
++ * All Rights Reserved.
++ *
++ * Contributor(s): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_SALOGL_HXX
++#define _SV_SALOGL_HXX
++
++#define _OPENGL_EXT
++
++#ifndef _GEN_HXX
++#include <tools/gen.hxx>
++#endif
++
++#define _SVUNX_H
++
++#ifndef _SV_SV_H
++#include <sv.h>
++#endif
++#ifndef _SV_SALOTYPE_HXX
++#include <salotype.hxx>
++#endif
++
++// -----------------
++// - State defines -
++// -----------------
++
++#define OGL_STATE_UNLOADED (0x00000000)
++#define OGL_STATE_INVALID (0x00000001)
++#define OGL_STATE_VALID (0x00000002)
++
++// -------------
++// - SalOpenGL -
++// -------------
++
++class SalGraphics;
++
++class SalOpenGL
++{
++public:
++
++ SalOpenGL() {}
++ virtual ~SalOpenGL();
++
++ virtual bool IsValid() = 0;
++ virtual void* GetOGLFnc( const char * ) = 0;
++ virtual void OGLEntry( SalGraphics* pGraphics ) = 0;
++ virtual void OGLExit( SalGraphics* pGraphics ) = 0;
++ virtual void StartScene( SalGraphics* pGraphics ) = 0;
++ virtual void StopScene() = 0;
++};
++
++#endif
+Index: vcl/inc/salprn.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salprn.hxx,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -p -u -r1.4 -r1.5
+--- vcl/inc/salprn.hxx 20 Nov 2002 12:03:33 -0000 1.4
++++ vcl/inc/salprn.hxx 18 Nov 2003 14:29:49 -0000 1.5
+@@ -69,9 +69,6 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_SALPRN_H
+-#include <salprn.h>
+-#endif
+ #ifndef _SV_PRNTYPES_HXX
+ #include <prntypes.hxx>
+ #endif
+@@ -107,49 +104,39 @@ struct SalPrinterQueueInfo
+
+ class SalInfoPrinter
+ {
+- friend class SalInstance;
+-
+ public:
+ std::vector< vcl::PaperInfo > m_aPaperFormats; // all printer supported formats
+ bool m_bPapersInit; // set to true after InitPaperFormats
++
++ SalInfoPrinter() {}
++ virtual ~SalInfoPrinter();
+
+- SalInfoPrinter();
+- ~SalInfoPrinter();
+-
+-public: // public for Sal Implementation
+- SalInfoPrinterData maPrinterData;
+-
+-#ifdef _INCL_SAL_SALIPRN_IMP
+-#include <saliprn.imp>
+-#endif
+-
+-public:
+ // SalGraphics or NULL, but two Graphics for all SalFrames
+ // must be returned
+- SalGraphics* GetGraphics();
+- void ReleaseGraphics( SalGraphics* pGraphics );
++ virtual SalGraphics* GetGraphics() = 0;
++ virtual void ReleaseGraphics( SalGraphics* pGraphics ) = 0;
+
+- BOOL Setup( SalFrame* pFrame, ImplJobSetup* pSetupData );
+- // This function set the driver data and
+- // set the new indepen data in pSetupData
+- BOOL SetPrinterData( ImplJobSetup* pSetupData );
+- // This function merged the indepen driver data
+- // and set the new indepen data in pSetupData
+- // Only the data must changed, where the bit
+- // in nFlags is set
+- BOOL SetData( ULONG nFlags, ImplJobSetup* pSetupData );
+-
+- void GetPageInfo( const ImplJobSetup* pSetupData,
+- long& rOutWidth, long& rOutHeight,
+- long& rPageOffX, long& rPageOffY,
+- long& rPageWidth, long& rPageHeight );
+- ULONG GetCapabilities( const ImplJobSetup* pSetupData, USHORT nType );
+- ULONG GetPaperBinCount( const ImplJobSetup* pSetupData );
+- XubString GetPaperBinName( const ImplJobSetup* pSetupData, ULONG nPaperBin );
++ virtual BOOL Setup( SalFrame* pFrame, ImplJobSetup* pSetupData ) = 0;
++ // This function set the driver data and
++ // set the new indepen data in pSetupData
++ virtual BOOL SetPrinterData( ImplJobSetup* pSetupData ) = 0;
++ // This function merged the indepen driver data
++ // and set the new indepen data in pSetupData
++ // Only the data must changed, where the bit
++ // in nFlags is set
++ virtual BOOL SetData( ULONG nFlags, ImplJobSetup* pSetupData ) = 0;
++
++ virtual void GetPageInfo( const ImplJobSetup* pSetupData,
++ long& rOutWidth, long& rOutHeight,
++ long& rPageOffX, long& rPageOffY,
++ long& rPageWidth, long& rPageHeight ) = 0;
++ virtual ULONG GetCapabilities( const ImplJobSetup* pSetupData, USHORT nType ) = 0;
++ virtual ULONG GetPaperBinCount( const ImplJobSetup* pSetupData ) = 0;
++ virtual String GetPaperBinName( const ImplJobSetup* pSetupData, ULONG nPaperBin ) = 0;
+ // fills m_aPaperFormats and sets m_bPapersInit to true
+- void InitPaperFormats( const ImplJobSetup* pSetupData );
++ virtual void InitPaperFormats( const ImplJobSetup* pSetupData ) = 0;
+ // returns angle that a landscape page will be turned counterclockwise wrt to portrait
+- int GetLandscapeAngle( const ImplJobSetup* pSetupData );
++ virtual int GetLandscapeAngle( const ImplJobSetup* pSetupData ) = 0;
+ };
+
+
+@@ -159,30 +146,20 @@ public:
+
+ class SalPrinter
+ {
+- friend class SalInstance;
+-
+-private:
+- SalPrinter();
+- ~SalPrinter();
+-
+ public: // public for Sal Implementation
+- SalPrinterData maPrinterData;
++ SalPrinter() {}
++ virtual ~SalPrinter();
+
+-#ifdef _INCL_SAL_SALPRN_IMP
+-#include <salprn.imp>
+-#endif
+-
+-public:
+- BOOL StartJob( const XubString* pFileName,
+- const XubString& rJobName,
+- const XubString& rAppName,
+- ULONG nCopies, BOOL bCollate,
+- ImplJobSetup* pSetupData );
+- BOOL EndJob();
+- BOOL AbortJob();
+- SalGraphics* StartPage( ImplJobSetup* pSetupData, BOOL bNewJobData );
+- BOOL EndPage();
+- ULONG GetErrorCode();
++ virtual BOOL StartJob( const XubString* pFileName,
++ const XubString& rJobName,
++ const XubString& rAppName,
++ ULONG nCopies, BOOL bCollate,
++ ImplJobSetup* pSetupData ) = 0;
++ virtual BOOL EndJob() = 0;
++ virtual BOOL AbortJob() = 0;
++ virtual SalGraphics* StartPage( ImplJobSetup* pSetupData, BOOL bNewJobData ) = 0;
++ virtual BOOL EndPage() = 0;
++ virtual ULONG GetErrorCode() = 0;
+ };
+
+ #endif // _SV_SALPRN_HXX
+
+Index: vcl/inc/salsound.hxx
+===================================================================
+RCS file: vcl/inc/salsound.hxx
+diff -N vcl/inc/salsound.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salsound.hxx 18 Nov 2003 14:29:57 -0000 1.2
+@@ -0,0 +1,119 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * The Contents of this file are made available subject to the terms of
++ * either of the following licenses
++ *
++ * - GNU Lesser General Public License Version 2.1
++ * - Sun Industry Standards Source License Version 1.1
++ *
++ * Sun Microsystems Inc., October, 2000
++ *
++ * GNU Lesser General Public License Version 2.1
++ * =============================================
++ * Copyright 2000 by Sun Microsystems, Inc.
++ * 901 San Antonio Road, Palo Alto, CA 94303, USA
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License version 2.1, as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ *
++ * Sun Industry Standards Source License Version 1.1
++ * =================================================
++ * The contents of this file are subject to the Sun Industry Standards
++ * Source License Version 1.1 (the "License"); You may not use this file
++ * except in compliance with the License. You may obtain a copy of the
++ * License at http://www.openoffice.org/license.html.
++ *
++ * Software provided under this License is provided on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
++ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
++ * See the License for the specific provisions governing your rights and
++ * obligations concerning the Software.
++ *
++ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
++ *
++ * Copyright: 2000 by Sun Microsystems, Inc.
++ *
++ * All Rights Reserved.
++ *
++ * Contributor(s): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_SALSOUND_HXX
++#define _SV_SALSOUND_HXX
++
++#ifndef _GEN_HXX
++#include <tools/gen.hxx>
++#endif
++#ifndef _SV_SV_H
++#include <sv.h>
++#endif
++#ifndef _STRING_HXX
++#include <tools/string.hxx>
++#endif
++#ifndef _SV_SALSTYPE_HXX
++#include <salstype.hxx>
++#endif
++
++class SalSound
++{
++ // for notification
++ void* m_pInst;
++ SALSOUNDPROC m_aPROC;
++public:
++ SalSound() : m_pInst( NULL ), m_aPROC( NULL ) {}
++ virtual ~SalSound();
++
++ // checks whether sound system is ready for input and hence
++ // SalSound can be initialized
++ virtual bool IsValid() = 0;
++ // initialize with sound file name, returns success and // FIXME: rSoundLen ?
++ virtual bool Init( const String& rSoundName,
++ ULONG& rSoundLen ) = 0;
++ // play the sound, start at nStartTime (ms), play for nPlayTime (ms),
++ // loop = true/false
++ virtual void Play( ULONG nStartTime, ULONG nPlayTime, bool bLoop ) = 0;
++ // stop playing
++ virtual void Stop() = 0;
++ // pause playing
++ virtual void Pause() = 0;
++ // continue a paused play
++ virtual void Continue() = 0;
++ // is looping ?
++ virtual bool IsLoopMode() const = 0;
++ // is playing ?
++ virtual bool IsPlaying() const = 0;
++ // is paused ?
++ virtual bool IsPaused() const = 0;
++
++ // register a callback to be called when state changes
++ void SetNotifyProc( void* pInst, SALSOUNDPROC pProc )
++ { m_pInst = pInst; m_aPROC = pProc; }
++ void CallNotifyProc( SoundNotification eNotification, ULONG nError )
++ {
++ if( m_aPROC )
++ m_aPROC( m_pInst, eNotification, nError );
++ }
++};
++
++#endif
+Index: vcl/inc/salsys.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salsys.hxx,v
+retrieving revision 1.7
+retrieving revision 1.9
+diff -u -p -u -r1.7 -r1.9
+--- vcl/inc/salsys.hxx 20 Nov 2002 15:45:04 -0000 1.7
++++ vcl/inc/salsys.hxx 7 Jan 2004 09:17:24 -0000 1.9
+@@ -65,44 +65,9 @@
+ #ifndef _STRING_HXX
+ #include <tools/string.hxx>
+ #endif
+-#ifndef _LIST_HXX
+-#include <tools/list.hxx>
+-#endif
+-
+-#ifndef _SV_SV_H
+-#include <sv.h>
+-#endif
+-
+-#ifndef _SV_SYSTEM_HXX
+-#include <system.hxx>
+-#endif
+-
+-#include <list>
+-
+-// -------------------
+-// - SalSystem-Types -
+-// -------------------
+-
+-// Must be the same values like in VCLSystemInfo
+-#define SALSYSTEM_GETSYSTEMINFO_STACK ((ULONG)0x00000001)
+-#define SALSYSTEM_GETSYSTEMINFO_MODULES ((ULONG)0x00000002)
+-#define SALSYSTEM_GETSYSTEMINFO_SYSTEMVERSION ((ULONG)0x00000004)
+-#define SALSYSTEM_GETSYSTEMINFO_CPUTYPE ((ULONG)0x00000008)
+-#define SALSYSTEM_GETSYSTEMINFO_MEMORYINFO ((ULONG)0x00000010)
+-#define SALSYSTEM_GETSYSTEMINFO_LOCALVOLUMES ((ULONG)0x00000020)
+-#define SALSYSTEM_GETSYSTEMINFO_SYSTEMDIRS ((ULONG)0x00000040)
+-#define SALSYSTEM_GETSYSTEMINFO_MOUSEINFO ((ULONG)0x00000080)
+-#define SALSYSTEM_GETSYSTEMINFO_GRAPHICSSYSTEM ((ULONG)0x00000100)
+-
+-// -------------
+-// - SalSystem -
+-// -------------
+
+-String GetSalSummarySystemInfos( ULONG nFlags );
+
+-bool GetSalSystemDisplayInfo( System::DisplayInfo& rInfo );
+-
+-/* Button combinations for ImplShowNativeMessageBox
++/* Button combinations for ShowNativeMessageBox
+ */
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK = 0;
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL = 1;
+@@ -111,7 +76,7 @@ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTN
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_YES_NO = 4;
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_RETRY_CANCEL = 5;
+
+-/* Button identifier for ImplShowNativeMessageBox
++/* Button identifier for ShowNativeMessageBox
+ */
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK = 1;
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL = 2;
+@@ -121,29 +86,57 @@ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTN
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTN_YES = 6;
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTN_NO = 7;
+
+-/* Shows a native message box with the specified title, message and button
+- combination.
++
++
++// -------------
++// - SalSystem -
++// -------------
++
++struct DisplayInfo
++{
++ int nWidth, nHeight, nDepth;
++};
++
++
++class SalSystem
++{
++public:
++ SalSystem() {}
++ virtual ~SalSystem();
++
++ // get info about the display
++ virtual bool GetSalSystemDisplayInfo( DisplayInfo& rInfo ) = 0;
++
++
++ /* Shows a native message box with the specified title, message and button
++ combination.
+
+- @param rTitle
+- The title to be shown by the dialog box.
++ @param rTitle
++ The title to be shown by the dialog box.
+
+- @param rMessage
+- The message to be shown by the dialog box.
++ @param rMessage
++ The message to be shown by the dialog box.
+
+- @param nButtonCombination
+- Specify which button combination the message box should display.
+- See button combinations above.
++ @param nButtonCombination
++ Specify which button combination the message box should display.
++ See button combinations above.
+
+- @param nDefaultButton
+- Specifies which button has the focus initially.
+- See button identifiers above.
+- The effect of specifying a button that doesn't belong
+- to the specified button combination is undefined.
++ @param nDefaultButton
++ Specifies which button has the focus initially.
++ See button identifiers above.
++ The effect of specifying a button that doesn't belong
++ to the specified button combination is undefined.
+
+- @returns the identifier of the button that was pressed by the user.
+- See button identifier above. If the function fails the
+- return value is 0.
+-*/
+-int ImplShowNativeMessageBox(const String& rTitle, const String& rMessage, int nButtonCombination, int nDefaultButton);
++ @returns the identifier of the button that was pressed by the user.
++ See button identifier above. If the function fails the
++ return value is 0.
++ */
++ virtual int ShowNativeMessageBox( const String& rTitle,
++ const String& rMessage,
++ int nButtonCombination,
++ int nDefaultButton) = 0;
++};
++
++SalSystem* ImplGetSalSystem();
+
+ #endif // _SV_SALSYS_HXX
+Index: vcl/inc/saltimer.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/saltimer.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/saltimer.hxx 19 Sep 2000 10:23:06 -0000 1.1.1.1
++++ vcl/inc/saltimer.hxx 18 Nov 2003 14:30:19 -0000 1.2
+@@ -73,15 +73,34 @@
+ // - SalTimer -
+ // ------------
+
++/*
++ * note: there will be only a single instance of SalTimer
++ * SalTimer originally had only static methods, but
++ * this needed to be virtualized for the sal plugin migration
++ */
++
+ class SalTimer
+ {
++ SALTIMERPROC m_pProc;
+ public:
+- // AutoRepeat and Restart
+- static void Start( ULONG nMS );
+- static void Stop();
++ SalTimer() : m_pProc( NULL ) {}
++ virtual ~SalTimer();
++
++ // AutoRepeat and Restart
++ virtual void Start( ULONG nMS ) = 0;
++ virtual void Stop() = 0;
+
+ // Callbacks (indepen in \sv\source\app\timer.cxx)
+- static void SetCallback( SALTIMERPROC pProc );
++ void SetCallback( SALTIMERPROC pProc )
++ {
++ m_pProc = pProc;
++ }
++
++ void CallCallback()
++ {
++ if( m_pProc )
++ m_pProc();
++ }
+ };
+
+ #endif // _SV_SALTIMER_HXX
+Index: vcl/inc/salvd.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salvd.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/salvd.hxx 19 Sep 2000 10:23:06 -0000 1.1.1.1
++++ vcl/inc/salvd.hxx 18 Nov 2003 14:30:29 -0000 1.2
+@@ -65,9 +65,6 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_SALVD_H
+-#include <salvd.h>
+-#endif
+
+ class SalGraphics;
+
+@@ -77,27 +74,17 @@ class SalGraphics;
+
+ class SalVirtualDevice
+ {
+- friend class SalInstance;
+-
+-private:
+- SalVirtualDevice();
+- ~SalVirtualDevice();
+-
+ public: // public for Sal Implementation
+- SalVirDevData maVirDevData;
+-
+-#ifdef _INCL_SAL_SALVD_IMP
+-#include <salvd.imp>
+-#endif
++ SalVirtualDevice() {}
++ virtual ~SalVirtualDevice();
+
+-public:
+ // SalGraphics or NULL, but two Graphics for all SalVirtualDevices
+ // must be returned
+- SalGraphics* GetGraphics();
+- void ReleaseGraphics( SalGraphics* pGraphics );
++ virtual SalGraphics* GetGraphics() = 0;
++ virtual void ReleaseGraphics( SalGraphics* pGraphics ) = 0;
+
+ // Set new size, without saving the old contents
+- BOOL SetSize( long nNewDX, long nNewDY );
++ virtual BOOL SetSize( long nNewDX, long nNewDY ) = 0;
+ };
+
+ #endif // _SV_SALVD_HXX
+Index: vcl/inc/salwtype.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salwtype.hxx,v
+retrieving revision 1.11
+retrieving revision 1.12
+diff -u -p -u -r1.11 -r1.12
+--- vcl/inc/salwtype.hxx 27 Mar 2003 17:57:31 -0000 1.11
++++ vcl/inc/salwtype.hxx 18 Nov 2003 14:56:54 -0000 1.12
+@@ -147,7 +147,11 @@ struct ImplFontSelectData;
+ #define SALEVENT_CLOSEPOPUPS ((USHORT)30)
+ #define SALEVENT_EXTERNALKEYINPUT ((USHORT)31)
+ #define SALEVENT_EXTERNALKEYUP ((USHORT)32)
+-#define SALEVENT_COUNT ((USHORT)32)
++#define SALEVENT_MENUCOMMAND ((USHORT)33)
++#define SALEVENT_MENUHIGHLIGHT ((USHORT)34)
++#define SALEVENT_MENUACTIVATE ((USHORT)35)
++#define SALEVENT_MENUDEACTIVATE ((USHORT)36)
++#define SALEVENT_COUNT ((USHORT)36)
+
+ // MOUSELEAVE must send, when the pointer leave the client area and
+ // the mouse is not captured
+@@ -169,6 +173,13 @@ struct SalKeyEvent
+ USHORT mnCode; // SV-KeyCode (KEY_xxx | KEY_SHIFT | KEY_MOD1 | KEY_MOD2)
+ USHORT mnCharCode; // SV-CharCode
+ USHORT mnRepeat; // Repeat-Count (KeyInputs-1)
++};
++
++// MENUEVENT
++struct SalMenuEvent
++{
++ USHORT mnId; // Menu item ID
++ void* mpMenu; // pointer to VCL menu (class Menu)
+ };
+
+ // KEYMODCHANGE
+Index: vcl/inc/scrbar.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/scrbar.hxx,v
+retrieving revision 1.5
+retrieving revision 1.10
+diff -u -p -u -r1.5 -r1.10
+--- vcl/inc/scrbar.hxx 25 Jul 2001 11:39:21 -0000 1.5
++++ vcl/inc/scrbar.hxx 10 May 2004 15:43:03 -0000 1.10
+@@ -69,6 +69,8 @@
+ #include <ctrl.hxx>
+ #endif
+
++class AutoTimer;
++
+ // -------------------
+ // - ScrollBar-Types -
+ // -------------------
+@@ -79,6 +81,7 @@ enum ScrollType { SCROLL_DONTKNOW, SCROL
+ // -------------
+ // - ScrollBar -
+ // -------------
++struct ImplScrollBarData;
+
+ class ScrollBar : public Control
+ {
+@@ -88,7 +91,7 @@ private:
+ Rectangle maPage1Rect;
+ Rectangle maPage2Rect;
+ Rectangle maThumbRect;
+- void* mpDummy;
++ ImplScrollBarData* mpData;
+ long mnStartPos;
+ long mnMouseOff;
+ long mnThumbPixRange;
+@@ -107,14 +110,26 @@ private:
+ ScrollType meDDScrollType;
+ BOOL mbCalcSize;
+ BOOL mbFullDrag;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+ Link maScrollHdl;
+ Link maEndScrollHdl;
++ Rectangle* ImplFindPartRect( const Point& rPt );
+
+-#ifdef _SV_SCRBAR_CXX
+-#include <scrbar.imp>
+-#endif
++ void ImplInit( Window* pParent, WinBits nStyle );
++ void ImplInitStyle( WinBits nStyle );
++ void ImplLoadRes( const ResId& rResId );
++ BOOL ImplUpdateThumbRect( const Rectangle& rOldRect );
++ void ImplUpdateRects( BOOL bUpdate = TRUE );
++ long ImplCalcThumbPos( long nPixPos );
++ long ImplCalcThumbPosPix( long nPos );
++ void ImplCalc( BOOL bUpdate = TRUE );
++ void ImplDraw( USHORT nDrawFlags, OutputDevice* pOutDev );
++ long ImplScroll( long nNewPos, BOOL bCallEndScroll );
++ long ImplDoAction( BOOL bCallEndScroll );
++ void ImplDoMouseAction( const Point& rPos, BOOL bCallAction = TRUE );
++ void ImplInvert();
++ BOOL ImplDrawNative( USHORT nDrawFlags );
++ DECL_LINK( ImplTimerHdl, Timer* );
++ DECL_LINK( ImplAutoTimerHdl, AutoTimer* );
+
+ public:
+ ScrollBar( Window* pParent, WinBits nStyle = WB_VERT );
+@@ -125,9 +140,13 @@ public:
+ virtual void Tracking( const TrackingEvent& rTEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void Paint( const Rectangle& rRect );
++ virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, ULONG nFlags );
+ virtual void Resize();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
++ virtual long PreNotify( NotifyEvent& rNEvt );
++ virtual void GetFocus();
++ virtual void LoseFocus();
+
+ virtual void Scroll();
+ virtual void EndScroll();
+@@ -169,11 +188,9 @@ public:
+
+ class ScrollBarBox : public Window
+ {
+-#ifdef _SV_SCRBAR_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplInitSettings();
+-#endif
+
+ public:
+ ScrollBarBox( Window* pParent, WinBits nStyle = 0 );
+Index: vcl/inc/settings.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/settings.hxx,v
+retrieving revision 1.19
+retrieving revision 1.23
+diff -u -p -u -r1.19 -r1.23
+--- vcl/inc/settings.hxx 17 Apr 2003 15:16:59 -0000 1.19
++++ vcl/inc/settings.hxx 10 Jun 2004 17:17:43 -0000 1.23
+@@ -69,8 +69,8 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+ #ifndef _SV_FONT_HXX
+ #include <font.hxx>
+@@ -99,10 +99,8 @@ class ImplMachineData
+ {
+ friend class MachineSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplMachineData();
+ ImplMachineData( const ImplMachineData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+@@ -161,10 +159,8 @@ class ImplMouseData
+ {
+ friend class MouseSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplMouseData();
+ ImplMouseData( const ImplMouseData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+@@ -187,10 +183,6 @@ private:
+ ULONG mnActionDelay;
+ ULONG mnMenuDelay;
+ ULONG mnFollow;
+- ULONG mnDummy1;
+- ULONG mnDummy2;
+- ULONG mnDummy3;
+- ULONG mnDummy4;
+ USHORT mnMiddleButtonAction;
+ USHORT mnAlign1;
+ };
+@@ -324,10 +316,8 @@ class ImplKeyboardData
+ {
+ friend class KeyboardSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplKeyboardData();
+ ImplKeyboardData( const ImplKeyboardData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+@@ -378,74 +368,56 @@ class ImplStyleData
+ {
+ friend class StyleSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplStyleData();
+ ImplStyleData( const ImplStyleData& rData );
+ void SetStandardStyles();
+- void SetStandardWinStyles();
+- void SetStandardOS2Styles();
+- void SetStandardMacStyles();
+- void SetStandardUnixStyles();
+-#endif
+
+ private:
+ USHORT mnRefCount;
+- Color maFaceColor;
+- Color maCheckedColor;
+- Color maLightColor;
+- Color maLightBorderColor;
+- Color maShadowColor;
+- Color maDarkShadowColor;
+- Color maButtonTextColor;
+- Color maRadioCheckTextColor;
+- Color maLabelTextColor;
+- Color maInfoTextColor;
+- Color maWindowColor;
+- Color maWindowTextColor;
+- Color maDialogColor;
+- Color maDialogTextColor;
+- Color maWorkspaceColor;
+- Color maFieldColor;
+- Color maFieldTextColor;
++
++ void* mpStyleData_NotUsedYet;
++
++ Color maActiveBorderColor;
+ Color maActiveColor;
+ Color maActiveColor2;
+ Color maActiveTextColor;
+- Color maActiveBorderColor;
++ Color maButtonTextColor;
++ Color maCheckedColor;
++ Color maDarkShadowColor;
++ Color maDeactiveBorderColor;
+ Color maDeactiveColor;
+ Color maDeactiveColor2;
+ Color maDeactiveTextColor;
+- Color maDeactiveBorderColor;
++ Color maDialogColor;
++ Color maDialogTextColor;
++ Color maDisableColor;
++ Color maFaceColor;
++ Color maFieldColor;
++ Color maFieldTextColor;
++ Color maFontColor;
++ Color maGroupTextColor;
++ Color maHelpColor;
+ Color maHelpTextColor;
+- Color maMenuColor;
+ Color maHighlightColor;
++ Color maHighlightLinkColor;
+ Color maHighlightTextColor;
++ Color maInfoTextColor;
++ Color maLabelTextColor;
++ Color maLightBorderColor;
++ Color maLightColor;
++ Color maLinkColor;
++ Color maMenuBarColor;
++ Color maMenuBorderColor;
++ Color maMenuColor;
+ Color maMenuHighlightColor;
+ Color maMenuHighlightTextColor;
+- Color maDisableColor;
+- Color maHelpColor;
+- Color maGroupTextColor;
+ Color maMenuTextColor;
+- Color maLinkColor;
++ Color maRadioCheckTextColor;
++ Color maShadowColor;
+ Color maVisitedLinkColor;
+- Color maHighlightLinkColor;
+- Color maFontColor;
+- Color maDummyColor2;
+- Color maDummyColor3;
+- Color maDummyColor4;
+- Color maDummyColor5;
+- Color maDummyColor6;
+- Color maDummyColor7;
+- Color maDummyColor8;
+- Color maDummyColor9;
+- Color maDummyColor10;
+- Color maDummyColor11;
+- Color maDummyColor12;
+- Color maDummyColor13;
+- Color maDummyColor14;
+- Color maDummyColor15;
+- Color maDummyColor16;
+- Color maMenuBorderColor;
+- Color maMenuBarColor;
++ Color maWindowColor;
++ Color maWindowTextColor;
++ Color maWorkspaceColor;
+ Font maAppFont;
+ Font maHelpFont;
+ Font maTitleFont;
+@@ -459,8 +431,6 @@ private:
+ Font maFieldFont;
+ Font maIconFont;
+ Font maGroupFont;
+- Font maDummyFont1;
+- Font maDummyFont2;
+ long mnBorderSize;
+ long mnTitleHeight;
+ long mnFloatTitleHeight;
+@@ -473,11 +443,6 @@ private:
+ long mnIconHorzSpace;
+ long mnIconVertSpace;
+ long mnAntialiasedMin;
+- long mnDummySize2;
+- long mnDummySize3;
+- long mnDummySize4;
+- long mnDummySize5;
+- long mnDummySize6;
+ ULONG mnCursorBlinkTime;
+ ULONG mnDragFullOptions;
+ ULONG mnAnimationOptions;
+@@ -485,8 +450,6 @@ private:
+ ULONG mnLogoDisplayTime;
+ ULONG mnDisplayOptions;
+ ULONG mnToolbarIconSize;
+- ULONG mnDummyOption3;
+- ULONG mnDummyOption4;
+ ULONG mnUseFlatMenues;
+ ULONG mnOptions;
+ USHORT mnScreenZoom;
+@@ -499,6 +462,7 @@ private:
+ USHORT mnUseSystemUIFonts;
+ USHORT mnAutoMnemonic;
+ USHORT mnUseImagesInMenus;
++ ULONG mnUseFlatBorders;
+ };
+
+ // -----------------
+@@ -750,10 +714,15 @@ public:
+ { CopyData(); mpData->mnHighContrast = bHighContrast; }
+ BOOL GetHighContrastMode() const
+ { return (BOOL) mpData->mnHighContrast; }
++ BOOL IsHighContrastBlackAndWhite() const;
+ void SetUseSystemUIFonts( BOOL bUseSystemUIFonts )
+ { CopyData(); mpData->mnUseSystemUIFonts = bUseSystemUIFonts; }
+ BOOL GetUseSystemUIFonts() const
+ { return (BOOL) mpData->mnUseSystemUIFonts; }
++ void SetUseFlatBorders( BOOL bUseFlatBorders )
++ { CopyData(); mpData->mnUseFlatBorders = bUseFlatBorders; }
++ BOOL GetUseFlatBorders() const
++ { return (BOOL) mpData->mnUseFlatBorders; }
+ void SetUseFlatMenues( BOOL bUseFlatMenues )
+ { CopyData(); mpData->mnUseFlatMenues = bUseFlatMenues; }
+ BOOL GetUseFlatMenues() const
+@@ -962,17 +931,14 @@ class ImplMiscData
+ {
+ friend class MiscSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplMiscData();
+ ImplMiscData( const ImplMiscData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+ USHORT mnTwoDigitYearStart;
+ USHORT mnEnableATT;
+- USHORT mnDummy1;
+- USHORT mnDummy2;
++ BOOL mbEnableLocalizedDecimalSep;
+ };
+
+ // ----------------
+@@ -997,6 +963,8 @@ public:
+ { return mpData->mnTwoDigitYearStart; }
+ void SetEnableATToolSupport( BOOL bEnable );
+ BOOL GetEnableATToolSupport() const;
++ void SetEnableLocalizedDecimalSep( BOOL bEnable );
++ BOOL GetEnableLocalizedDecimalSep() const;
+ const MiscSettings& operator =( const MiscSettings& rSet );
+
+ BOOL operator ==( const MiscSettings& rSet ) const;
+@@ -1012,10 +980,8 @@ class ImplSoundData
+ {
+ friend class SoundSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplSoundData();
+ ImplSoundData( const ImplSoundData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+@@ -1063,10 +1029,8 @@ class ImplNotificationData
+ {
+ friend class NotificationSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplNotificationData();
+ ImplNotificationData( const ImplNotificationData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+@@ -1109,10 +1073,8 @@ class ImplHelpData
+ {
+ friend class HelpSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplHelpData();
+ ImplHelpData( const ImplHelpData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+@@ -1171,13 +1133,11 @@ public:
+
+ class ImplAllSettingsData
+ {
+- friend class AllSettings;
++ friend class AllSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+- ImplAllSettingsData();
+- ImplAllSettingsData( const ImplAllSettingsData& rData );
+- ~ImplAllSettingsData();
+-#endif
++ ImplAllSettingsData();
++ ImplAllSettingsData( const ImplAllSettingsData& rData );
++ ~ImplAllSettingsData();
+
+ private:
+ USHORT mnRefCount;
+@@ -1202,9 +1162,6 @@ private:
+ CollatorWrapper* mpUICollatorWrapper;
+ vcl::I18nHelper* mpI18nHelper;
+ vcl::I18nHelper* mpUII18nHelper;
+-
+- void* mpDummy1;
+- void* mpDummy2;
+ };
+
+ // ---------------
+Index: vcl/inc/slider.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/slider.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/slider.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/slider.hxx 7 Jan 2004 09:18:32 -0000 1.2
+@@ -106,7 +106,6 @@ private:
+ Link maSlideHdl;
+ Link maEndSlideHdl;
+
+-#ifdef _SV_SLIDER_CXX
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplInitStyle( WinBits nStyle );
+ void ImplLoadRes( const ResId& rResId );
+@@ -123,7 +122,6 @@ private:
+ void ImplDoMouseAction( const Point& rPos, BOOL bCallAction = TRUE );
+ long ImplDoSlide( long nNewPos );
+ long ImplDoSlideAction( ScrollType eScrollType );
+-#endif
+
+ public:
+ Slider( Window* pParent, WinBits nStyle = WB_HORZ );
+Index: vcl/inc/sound.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/sound.hxx,v
+retrieving revision 1.3
+retrieving revision 1.5
+diff -u -p -u -r1.3 -r1.5
+--- vcl/inc/sound.hxx 13 Jun 2001 10:52:47 -0000 1.3
++++ vcl/inc/sound.hxx 7 Jan 2004 09:19:13 -0000 1.5
+@@ -92,15 +92,10 @@ class Sound
+ {
+ private:
+
+-#ifndef REMOTE_APPSERVER
+ SalSound* mpSound;
+-#else
+- RMSound* mpSound;
+-#endif
+-
+ XubString maSoundName;
+ Window* mpWindow;
+- BYTE* mpSoundData;
++ BYTE* mpSoundData_NOTUSED;
+ ULONG mnDataLen;
+ ULONG mnSoundLen;
+ ULONG mnStartTime;
+@@ -124,7 +119,7 @@ public:
+
+ public:
+ Sound( Window* pWindow = NULL );
+- ~Sound();
++ virtual ~Sound();
+
+ virtual void Notify();
+
+@@ -132,8 +127,6 @@ public:
+ Window* GetWindow() const { return mpWindow; }
+ BOOL SetSoundName( const XubString& rSoundName );
+ const XubString& GetSoundName() const { return maSoundName; }
+- BOOL SetSoundData( const BYTE* pSoundData, ULONG nDataLen );
+- BYTE* GetSoundData() const { return mpSoundData; }
+ ULONG GetSoundLen() const { return mnSoundLen; }
+
+ void Play();
+Index: vcl/inc/spin.h
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/spin.h,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/spin.h 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/spin.h 11 Dec 2003 11:51:45 -0000 1.2
+@@ -82,6 +82,6 @@ void ImplDrawSpinButton( OutputDevice* p
+ BOOL bUpperIn, BOOL bLowerIn,
+ BOOL bUpperEnabled = TRUE,
+ BOOL bLowerEnabled = TRUE,
+- BOOL bHorz = FALSE );
++ BOOL bHorz = FALSE, BOOL bMirrorHorz = FALSE );
+
+ #endif // _SV_SPIN_H
+Index: vcl/inc/spin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/spin.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.4
+diff -u -p -u -r1.1.1.1 -r1.4
+--- vcl/inc/spin.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/spin.hxx 10 May 2004 15:43:29 -0000 1.4
+@@ -82,19 +82,24 @@ private:
+ AutoTimer maRepeatTimer;
+ Rectangle maUpperRect;
+ Rectangle maLowerRect;
+- BOOL mbRepeat : 1;
+- BOOL mbUpperIn : 1;
+- BOOL mbLowerIn : 1;
+- BOOL mbInitialUp : 1;
+- BOOL mbInitialDown : 1;
+- BOOL mbHorz : 1;
++ Rectangle maFocusRect;
++ BOOL mbRepeat : 1;
++ BOOL mbUpperIn : 1;
++ BOOL mbLowerIn : 1;
++ BOOL mbInitialUp : 1;
++ BOOL mbInitialDown : 1;
++ BOOL mbHorz : 1;
++ BOOL mbUpperIsFocused : 1;
+ Link maUpHdlLink;
+ Link maDownHdlLink;
++ long mnMinRange;
++ long mnMaxRange;
++ long mnValue;
++ long mnValueStep;
++ Rectangle* ImplFindPartRect( const Point& rPt );
+
+-#ifdef _SV_SPIN_CXX
+ void ImplInit( Window* pParent, WinBits nStyle );
+ DECL_LINK( ImplTimeout, Timer* );
+-#endif
+
+ public:
+ SpinButton( Window* pParent, WinBits nStyle = 0 );
+@@ -106,16 +111,45 @@ public:
+
+ virtual void Resize();
+ virtual void Paint( const Rectangle& rRect );
++ virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, ULONG nFlags );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void StateChanged( StateChangedType nStateChange );
++ virtual void GetFocus();
++ virtual void LoseFocus();
++
++ void SetRangeMin( long nNewRange );
++ long GetRangeMin() const { return mnMinRange; }
++ void SetRangeMax( long nNewRange );
++ long GetRangeMax() const { return mnMaxRange; }
++ void SetRange( const Range& rRange );
++ Range GetRange() const { return Range( GetRangeMin(), GetRangeMax() ); }
++ void SetValue( long nValue );
++ long GetValue() const { return mnValue; }
++ void SetValueStep( long nNewStep ) { mnValueStep = nNewStep; }
++ long GetValueStep() const { return mnValueStep; }
++ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ void SetUpHdl( const Link& rLink ) { maUpHdlLink = rLink; }
+ const Link& GetUpHdl() const { return maUpHdlLink; }
+ void SetDownHdl( const Link& rLink ) { maDownHdlLink = rLink; }
+ const Link& GetDownHdl() const { return maDownHdlLink; }
++
++private:
++ // moves the focus to the upper or lower rect. Return TRUE if the focus rect actually changed.
++ BOOL ImplMoveFocus( BOOL _bUpper );
++ void ImplCalcFocusRect( BOOL _bUpper );
++
++ inline BOOL ImplIsUpperEnabled( ) const
++ {
++ return mnValue + mnValueStep <= mnMaxRange;
++ }
++ inline BOOL ImplIsLowerEnabled( ) const
++ {
++ return mnValue >= mnMinRange + mnValueStep;
++ }
+ };
+
+ #endif // _SV_SPIN_HXX
+Index: vcl/inc/spinfld.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/spinfld.hxx,v
+retrieving revision 1.3
+retrieving revision 1.6
+diff -u -p -u -r1.3 -r1.6
+--- vcl/inc/spinfld.hxx 3 May 2002 13:04:10 -0000 1.3
++++ vcl/inc/spinfld.hxx 10 May 2004 15:43:41 -0000 1.6
+@@ -97,16 +97,12 @@ protected:
+ mbLowerIn:1,
+ mbInDropDown:1;
+
+-#if _SOLAR__PRIVATE
+ void ImplInit( Window* pParent, WinBits nStyle );
+
+-#ifdef _SV_SPINFLD_CXX
+ private:
+ DECL_LINK( ImplTimeout, Timer* );
+ void ImplInitData();
+ void ImplCalcButtonAreas( OutputDevice* pDev, const Size& rOutSz, Rectangle& rDDArea, Rectangle& rSpinUpArea, Rectangle& rSpinDownArea );
+-#endif
+-#endif
+
+ protected:
+ SpinField( WindowType nTyp );
+@@ -117,6 +113,7 @@ protected:
+ void EndDropDown();
+
+ virtual void FillLayoutData() const;
++ Rectangle * ImplFindPartRect( const Point& rPt );
+ public:
+ SpinField( Window* pParent, WinBits nWinStyle = 0 );
+ SpinField( Window* pParent, const ResId& rResId );
+@@ -137,6 +134,7 @@ public:
+ virtual void Resize();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
++ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ void SetUpHdl( const Link& rLink ) { maUpHdlLink = rLink; }
+ const Link& GetUpHdl() const { return maUpHdlLink; }
+Index: vcl/inc/split.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/split.hxx,v
+retrieving revision 1.7
+retrieving revision 1.8
+diff -u -p -u -r1.7 -r1.8
+--- vcl/inc/split.hxx 14 Aug 2002 14:06:39 -0000 1.7
++++ vcl/inc/split.hxx 7 Jan 2004 09:20:22 -0000 1.8
+@@ -92,7 +92,6 @@ private:
+ Link maStartSplitHdl;
+ Link maSplitHdl;
+
+-#ifdef _SV_SPLIT_CXX
+ void ImplInitData();
+ void ImplDrawSplitter();
+ void ImplSplitMousePos( Point& rPos );
+@@ -101,7 +100,6 @@ private:
+ BOOL ImplSplitterActive();
+ Splitter* ImplFindSibling();
+ void ImplRestoreSplitter();
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nWinStyle );
+Index: vcl/inc/splitwin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/splitwin.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/splitwin.hxx 27 Mar 2003 17:57:33 -0000 1.2
++++ vcl/inc/splitwin.hxx 7 Jan 2004 09:20:41 -0000 1.3
+@@ -141,10 +141,7 @@ private:
+ mbFadeInPressed:1,
+ mbFadeOutPressed:1,
+ mbFadeNoButtonMode:1,
+- mbNoAlign:1,
+- mbDummy2:1,
+- mbDummy3:1,
+- mbDummy4:1;
++ mbNoAlign:1;
+ Link maStartSplitHdl;
+ Link maSplitHdl;
+ Link maSplitResizeHdl;
+@@ -152,7 +149,6 @@ private:
+ Link maFadeInHdl;
+ Link maFadeOutHdl;
+
+-#ifdef _SV_SPLITWIN_CXX
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplInitSettings();
+ void ImplCalcLayout();
+@@ -169,7 +165,6 @@ private:
+ void ImplDrawFadeIn( BOOL bInPaint );
+ void ImplDrawFadeOut( BOOL bInPaint );
+ void ImplNewAlign();
+-#endif
+
+ public:
+ SplitWindow( Window* pParent, WinBits nStyle = 0 );
+Index: vcl/inc/status.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/status.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/status.hxx 27 Mar 2003 17:57:33 -0000 1.3
++++ vcl/inc/status.hxx 7 Jan 2004 09:20:58 -0000 1.4
+@@ -128,23 +128,17 @@ private:
+ long mnCalcHeight;
+ long mnTextY;
+ long mnItemY;
+- long mnDummyLong;
+ USHORT mnCurItemId;
+ USHORT mnPercent;
+ USHORT mnPercentCount;
+- USHORT mnDummy1;
+ BOOL mbVisibleItems;
+ BOOL mbFormat;
+ BOOL mbProgressMode;
+ BOOL mbInUserDraw;
+ BOOL mbBottomBorder;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+- BOOL mbDummy3;
+ Link maClickHdl;
+ Link maDoubleClickHdl;
+
+-#ifdef _SV_STATUS_CXX
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+ void ImplFormat();
+@@ -155,7 +149,6 @@ private:
+ USHORT nOldPerc, USHORT nNewPerc );
+ void ImplCalcProgressRect();
+ Rectangle ImplGetItemRectPos( USHORT nPos ) const;
+-#endif
+
+ public:
+ StatusBar( Window* pParent,
+Index: vcl/inc/svapp.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/svapp.hxx,v
+retrieving revision 1.27
+retrieving revision 1.30
+diff -u -p -u -r1.27 -r1.30
+--- vcl/inc/svapp.hxx 10 Jun 2003 14:29:14 -0000 1.27
++++ vcl/inc/svapp.hxx 10 May 2004 12:57:43 -0000 1.30
+@@ -74,9 +74,6 @@
+ #ifndef _UNQID_HXX
+ #include <tools/unqid.hxx>
+ #endif
+-#ifndef _RTTI_HXX
+-#include <tools/rtti.hxx>
+-#endif
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+@@ -100,13 +97,8 @@ class Window;
+ class Reflection;
+ class KeyCode;
+ class NotifyEvent;
+ class KeyEvent;
+
+-#ifndef NOOLDSV
+-class Font;
+-class ApplicationAddress;
+-class ApplicationEvent;
+-#endif
+ namespace vos { class IMutex; }
+
+ #ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
+@@ -327,7 +291,7 @@ class Application
+ {
+ public:
+ Application();
+- ~Application();
++ virtual ~Application();
+
+ virtual void Main() = 0;
+
+@@ -406,8 +370,9 @@ public:
+
+ #ifndef NO_GETAPPWINDOW
+ static WorkWindow* GetAppWindow();
+ #endif
+- static Window* GetFocusWindow();
++
++ static Window* GetFocusWindow();
+ static OutputDevice* GetDefaultDevice();
+
+ static Window* GetFirstTopLevelWindow();
+@@ -562,6 +482,11 @@ public:
+ Can be called without the Solar mutex locked.
+ */
+ static bool GetShowImeStatusWindowDefault();
++
++ /** Returns a string representing the desktop environment
++ the process is currently running in.
++ */
++ static const ::rtl::OUString& GetDesktopEnvironment();
+ };
+
+ Application* GetpApp();
+Index: vcl/inc/svdata.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/svdata.hxx,v
+retrieving revision 1.38.88.2
+retrieving revision 1.45
+diff -u -p -u -r1.38.88.2 -r1.45
+--- vcl/inc/svdata.hxx 2 Mar 2004 10:00:45 -0000 1.38.88.2
++++ vcl/inc/svdata.hxx 25 Jun 2004 17:08:32 -0000 1.45
+@@ -147,80 +147,13 @@ class ImplVDevCache;
+ class UnoWrapperBase;
+ class GraphicConverter;
+ class ImplWheelWindow;
++class SalTimer;
++class SalI18NImeStatus;
+
+ namespace vos { class OMutex; }
+ namespace vos { class OCondition; }
+ namespace vcl { class DisplayConnection; class DefaultFontConfigItem; class FontSubstConfigItem; class SettingsConfigItem;}
+
+-// ----------
+-// - Remote -
+-// ----------
+-
+-#ifdef REMOTE_APPSERVER
+-class VclOTimer;
+-class RmEventQueue;
+-class UNODispatchThread;
+-
+-// see unotools/atom.hxx
+-namespace utl {
+- class AtomClient;
+-}
+-
+-// needed for server side drag and drop
+-namespace com { namespace sun { namespace star { namespace datatransfer { namespace dnd {
+- class XDragSource;
+-} } } } }
+-
+-#include <tools/table.hxx>
+-#include <vos/mutex.hxx>
+-#include <vos/thread.hxx>
+-#include <vos/semaphor.hxx>
+-#include "rvp.hxx"
+-
+-#define CHECK_FOR_RVPSYNC_NORMAL() ImplGetSVData()->mpRVPNormalSync->CheckForRVPSync( NULL );
+-#define CHECK_FOR_RVPSYNC_SOUND() ImplGetSVData()->mpRVPSoundSync->CheckForRVPSync( NULL );
+-
+-void rvpExceptionHandler();
+-
+-DECLARE_TABLE( KeyNames, String* );
+-
+-class ImplRemoteYieldMutex : public vos::OMutex
+-{
+- ULONG mnCount;
+- vos::OThread::TThreadIdentifier mnThreadId;
+- vos::OThread::TThreadIdentifier mnMainThreadId;
+-
+-public:
+- ImplRemoteYieldMutex();
+-
+- virtual void SAL_CALL acquire();
+- virtual void SAL_CALL release();
+- virtual sal_Bool SAL_CALL tryToAcquire();
+-
+- ULONG GetAcquireCount() const { return mnCount; }
+- vos::OThread::TThreadIdentifier GetThreadId() const { return mnThreadId; }
+- vos::OThread::TThreadIdentifier GetMainThreadId() const { return mnMainThreadId; }
+-
+-};
+-
+-// sync uno rvp call packages
+-class RVPSync
+-{
+- vos::OThread::TThreadIdentifier mnLastThreadId;
+- oslInterlockedCount mnRVPCount;
+- REF( NMSP_CLIENT::XRmSync ) mxRVPSync;
+- vos::OMutex maMutex;
+- sal_uInt32 mnForceSyncCount;
+- sal_uInt32 mnSyncCount;
+-
+-public:
+- RVPSync( const REF( NMSP_CLIENT::XRmSync )& xRVPSync );
+-
+- void CheckForRVPSync( const char* );
+-};
+-
+-#endif
+-
+ // -----------------
+ // - ImplSVAppData -
+ // -----------------
+@@ -234,9 +167,6 @@ struct ImplSVAppData
+ ImeStatusWindowMode_SHOW
+ };
+
+-#ifdef REMOTE_APPSERVER
+- ImplRemoteYieldMutex* mpSolarMutex; // Solar-Mutex
+-#endif
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxMSF;
+ String* mpMSFTempFileName;
+ AllSettings* mpSettings; // Application settings
+@@ -337,7 +266,6 @@ struct ImplSVWinData
+ USHORT mnAutoScrollFlags; // auto scroll flags
+ BOOL mbNoDeactivate; // TRUE: keine Deactivate durchfuehren
+ BOOL mbNoSaveFocus; // TRUE: menues must not save/restore focus
+- BOOL mbDummy1;
+ };
+
+
+@@ -387,17 +315,6 @@ struct ImplSVHelpData
+ };
+
+
+-// --------------------
+-// - ImplSVSystemData -
+-// --------------------
+-
+-struct ImplSVSystemData
+-{
+-#ifndef REMOTE_APPSERVER
+- SalSystem* mpDefSystem; // Default-System-Instance
+-#endif
+-};
+-
+ // --------------
+ // - ImplSVData -
+ // --------------
+@@ -412,6 +329,9 @@ struct ImplSVData
+ ULONG mnThreadCount; // is VCL MultiThread enabled
+ ImplConfigData* mpFirstConfigData; // Zeiger auf ersten Config-Block
+ ImplTimerData* mpFirstTimerData; // list of all running timers
++ SalTimer* mpSalTimer; // interface to sal event loop/timers
++ SalI18NImeStatus* mpImeStatus; // interface to ime status window
++ SalSystem* mpSalSystem; // SalSystem interface
+ ResMgr* mpResMgr; // SV-Resource-Manager
+ ULONG mnTimerPeriod; // current timer period
+ ULONG mnTimerUpdate; // TimerCallbackProcs on stack
+@@ -422,35 +342,12 @@ struct ImplSVData
+ ImplSVWinData maWinData; // indepen data for Windows classes
+ ImplSVCtrlData maCtrlData; // indepen data for Control classes
+ ImplSVHelpData maHelpData; // indepen data for Help classes
+- ImplSVSystemData maSystemData; // indepen data for class System
+ UnoWrapperBase* mpUnoWrapper;
+ Window* mpIntroWindow; // the splash screen
+
+ vos::OThread::TThreadIdentifier mnMainThreadId;
+ ::vcl::DisplayConnection* mpDisplayConnection;
+
+-#ifdef REMOTE_APPSERVER
+- VclOTimer* mpOTimer; // VOS-Timer
+- RmEventQueue* mpRmEventQueue; // Remote-EventQueue
+- REF( NMSP_CLIENT::XRmStatus ) mxStatus; // Remote-Status
+- REF( NMSP_LANG::XMultiServiceFactory ) mxClientFactory; // XFactory zum erzeugen der UNO-Objekte statt ueber UNO_createObject
+- REF( NMSP_CLIENT::XMultiInstanceFactory ) mxMultiFactory; // XFactory zum erzeugen der UNO-Objekte statt ueber UNO_createObject
+- RVPSync* mpRVPNormalSync; // sync interfaces for rvp normal-calls
+- RVPSync* mpRVPSoundSync; // sync interfaces for rvp sound-calls
+- long mnRemoteVersion; // remote version of client
+- ::utl::AtomClient* mpAtoms; // Atoms for client connection
+- ::vos::OMutex* mpWindowObjectMutex;
+- ::vos::OCondition* mpStartUpCond;
+- void* mhRemoteEnv; // not needed anymore
+- String* mpConnectionName;
+- KeyNames* mpKeyNames;
+- REF( NMSP_CLIENT::XRmPrinterEnvironment ) mxRmPrinterEnvironment;
+- NMSP_CLIENT::PrinterEnvironment* mpPrinterEnvironment;
+-// UNO_Server mhRemotePrinter; // UNO-PrinterServer
+-// XRmPrinterEnvironment* mpRmPrinterEnv; // UNO-Printer-Environment
+- ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::dnd::XDragSource > mxServerDragSource;
+- Rectangle maWorkArea; // the remote screen size in pixels
+-#endif
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxAccessBridge;
+ com::sun::star::uno::Reference< com::sun::star::frame::XSessionManagerClient > xSMClient;
+ ::vcl::SettingsConfigItem* mpSettingsConfigItem;
+@@ -465,10 +362,8 @@ ResMgr* ImplGetResMgr();
+ void ImplWindowAutoMnemonic( Window* pWindow );
+ void ImplTimerCallbackProc();
+
+-#ifndef REMOTE_APPSERVER
+ void ImplUpdateSystemProcessWindow();
+ Window* ImplFindWindow( const SalFrame* pFrame, Point& rSalFramePos );
+-#endif
+
+ // SVAPP.CXX
+ BOOL ImplCallHotKey( const KeyCode& rKeyCode );
+Index: vcl/inc/sysdata.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/sysdata.hxx,v
+retrieving revision 1.2
+retrieving revision 1.4
+diff -u -p -u -r1.2 -r1.4
+--- vcl/inc/sysdata.hxx 9 Feb 2001 14:51:45 -0000 1.2
++++ vcl/inc/sysdata.hxx 7 Jan 2004 09:22:49 -0000 1.4
+@@ -69,11 +69,8 @@
+ struct SystemEnvData
+ {
+ unsigned long nSize; // size in bytes of this structure
+-#ifndef SYSDATA_ONLY_BASETYPE
+-#if defined( WIN ) || defined( WNT )
++#if defined( WNT )
+ HWND hWnd; // the window hwnd
+-#elif defined( OS2 )
+- HWND hWnd; // the client hwnd
+ #elif defined( UNX )
+ void* pDisplay; // the relevant display connection
+ long aWindow; // the window of the object
+@@ -86,7 +83,6 @@ struct SystemEnvData
+ long aShellWindow; // the window of the frame's shell
+ void* pShellWidget; // the frame's shell widget
+ #endif
+-#endif
+ };
+
+ #define SystemChildData SystemEnvData
+@@ -98,14 +94,24 @@ struct SystemEnvData
+ struct SystemParentData
+ {
+ unsigned long nSize; // size in bytes of this structure
+-#ifndef SYSDATA_ONLY_BASETYPE
+-#if defined( WIN ) || defined( WNT )
++#if defined( WNT )
+ HWND hWnd; // the window hwnd
+-#elif defined( OS2 )
+- HWND hWnd; // the client hwnd
+ #elif defined( UNX )
+ long aWindow; // the window of the object
+ #endif
++};
++
++// --------------------
++// - SystemMenuData -
++// --------------------
++
++struct SystemMenuData
++{
++ unsigned long nSize; // size in bytes of this structure
++#if defined( WNT )
++ HMENU hMenu; // the menu handle of the menu bar
++#elif defined( UNX )
++ long aMenu; // ???
+ #endif
+ };
+
+Index: vcl/inc/syswin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/syswin.hxx,v
+retrieving revision 1.12
+retrieving revision 1.13
+diff -u -p -u -r1.12 -r1.13
+--- vcl/inc/syswin.hxx 27 Mar 2003 17:57:34 -0000 1.12
++++ vcl/inc/syswin.hxx 7 Jan 2004 09:23:35 -0000 1.13
+@@ -219,12 +219,9 @@ private:
+ BOOL mbDockBtn;
+ BOOL mbHideBtn;
+ BOOL mbSysChild;
+- BOOL mbDummy2;
+- BOOL mbDummy3;
+ USHORT mnMenuBarMode;
+ USHORT mnIcon;
+ TaskPaneList* mpTaskPaneList;
+- void* mpDummy;
+
+ protected:
+ SystemWindow( WindowType nType );
+Index: vcl/inc/tabctrl.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/tabctrl.hxx,v
+retrieving revision 1.4
+retrieving revision 1.7
+diff -u -p -u -r1.4 -r1.7
+--- vcl/inc/tabctrl.hxx 4 Jun 2003 11:21:18 -0000 1.4
++++ vcl/inc/tabctrl.hxx 10 May 2004 15:43:53 -0000 1.7
+@@ -110,8 +110,6 @@ private:
+ Link maActivateHdl;
+ Link maDeactivateHdl;
+
+-#ifdef _SV_TABCTRL_CXX
+-private:
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+ ImplTabItem* ImplGetItem( USHORT nId ) const;
+ void ImplScrollBtnsColor();
+@@ -124,16 +122,17 @@ private:
+ void ImplActivateTabPage( BOOL bNext );
+ void ImplSetFirstPagePos( USHORT nPagePos );
+ void ImplShowFocus();
+- void ImplDrawItem( ImplTabItem* pItem, const Rectangle& rCurRect, bool bLayout = false );
++ void ImplDrawItem( ImplTabItem* pItem, const Rectangle& rCurRect, bool bLayout = false, bool bFirstInGroup = false, bool bLastInGroup = false, bool bIsCurrentItem = false );
+ void ImplPaint( const Rectangle& rRect, bool bLayout = false );
+ void ImplFreeLayoutData();
+ DECL_LINK( ImplScrollBtnHdl, PushButton* pBtn );
+-#endif
++
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplLoadRes( const ResId& rResId );
+
+ virtual void FillLayoutData() const;
++ Rectangle* ImplFindPartRect( const Point& rPt );
+
+ public:
+ TabControl( Window* pParent,
+@@ -152,6 +151,7 @@ public:
+ virtual long Notify( NotifyEvent& rNEvt );
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
++ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ virtual void ActivatePage();
+ virtual long DeactivatePage();
+Index: vcl/inc/tabdlg.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/tabdlg.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/tabdlg.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/tabdlg.hxx 7 Jan 2004 09:24:21 -0000 1.2
+@@ -83,10 +83,8 @@ private:
+ WindowAlign meViewAlign;
+ BOOL mbPosControls;
+
+-#ifdef _SV_TABDLG_CXX
+ void ImplInitData();
+ void ImplPosControls();
+-#endif
+
+ public:
+ TabDialog( Window* pParent,
+Index: vcl/inc/tabpage.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/tabpage.hxx,v
+retrieving revision 1.3
+retrieving revision 1.5
+diff -u -p -u -r1.3 -r1.5
+--- vcl/inc/tabpage.hxx 24 Apr 2003 16:30:10 -0000 1.3
++++ vcl/inc/tabpage.hxx 20 Feb 2004 08:49:19 -0000 1.5
+@@ -75,15 +75,15 @@
+
+ class TabPage : public Window
+ {
+-#ifdef _SV_TABPAGE_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplInitSettings();
+-#endif
+
+ public:
+ TabPage( Window* pParent, WinBits nStyle = 0 );
+ TabPage( Window* pParent, const ResId& rResId );
++
++ virtual void Paint( const Rectangle& rRect );
+
+ virtual void StateChanged( StateChangedType nStateChange );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+Index: vcl/inc/threadex.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/threadex.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/threadex.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/threadex.hxx 7 Jan 2004 09:24:56 -0000 1.2
+@@ -74,7 +74,7 @@ namespace vcl
+ static void SAL_CALL worker( void* );
+ public:
+ ThreadExecutor();
+- ~ThreadExecutor();
++ virtual ~ThreadExecutor();
+
+ virtual long doIt() = 0;
+ long execute();
+@@ -88,7 +88,7 @@ namespace vcl
+ DECL_LINK( worker, void* );
+ public:
+ SolarThreadExecutor();
+- ~SolarThreadExecutor();
++ virtual ~SolarThreadExecutor();
+
+ virtual long doIt() = 0;
+ long execute();
+Index: vcl/inc/timer.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/timer.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/timer.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/timer.hxx 7 Jan 2004 09:25:18 -0000 1.2
+@@ -89,7 +89,7 @@ protected:
+ public:
+ Timer();
+ Timer( const Timer& rTimer );
+- ~Timer();
++ virtual ~Timer();
+
+ virtual void Timeout();
+
+Index: vcl/inc/toolbox.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/toolbox.hxx,v
+retrieving revision 1.24
+retrieving revision 1.26
+diff -u -p -u -r1.24 -r1.26
+--- vcl/inc/toolbox.hxx 17 Apr 2003 15:17:11 -0000 1.24
++++ vcl/inc/toolbox.hxx 20 Jan 2004 11:55:53 -0000 1.26
+@@ -202,7 +201,6 @@ private:
+ Rectangle maPaintRect;
+ FloatingWindow* mpFloatWin;
+ USHORT mnKeyModifier;
+- USHORT mnDummy2;
+ long mnDX;
+ long mnDY;
+ long mnItemWidth;
+@@ -250,10 +248,9 @@ private:
+ mbDragging:1,
+ mbHideStatusText:1,
+ mbMenuStrings:1,
+- mbDummy1_Shift:1,
+- mbDummy2_KeyEvt:1,
+- mbDummy3_ChangingHighlight:1,
+- mbDummy4:1;
++ mbIsShift:1,
++ mbIsKeyEvent:1,
++ mbChangingHighlight:1;
+ WindowAlign meAlign;
+ WindowAlign meDockAlign;
+ ButtonType meButtonType;
+@@ -267,8 +264,6 @@ private:
+ Link maSelectHdl;
+ Link maNextToolBoxHdl;
+
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_TOOLBOX_CXX
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+ void ImplLoadRes( const ResId& rResId );
+@@ -298,12 +293,16 @@ private:
+ void ImplUpdateInputEnable();
+ void ImplFillLayoutData() const;
+ DECL_LINK( ImplUpdateHdl, void* );
+-#endif
++
++#if _SOLAR__PRIVATE
+ public:
+ void ImplFloatControl( BOOL bStart, FloatingWindow* pWindow = NULL );
+ void ImplDisableFlatButtons();
+ #endif
+
++protected:
++ void SetCurItemId(USHORT nSet) { mnCurItemId = nSet; }
++
+ public:
+ ToolBox( Window* pParent, WinBits nStyle = 0 );
+ ToolBox( Window* pParent, const ResId& rResId );
+@@ -510,9 +509,9 @@ public:
+ void GetAccessObject( AccessObjectRef& rAcc ) const;
+
+ // allow Click Handler to detect special key
+- BOOL IsShift() const { return mbDummy1_Shift; }
++ BOOL IsShift() const { return mbIsShift; }
+ // allow Click Handler to distinguish between mouse and key input
+- BOOL IsKeyEvent() const { return mbDummy2_KeyEvt; }
++ BOOL IsKeyEvent() const { return mbIsKeyEvent; }
+
+ // accessibility helpers
+
+Index: vcl/inc/unobrok.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/unobrok.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/unobrok.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/unobrok.hxx 1 Dec 2003 13:02:17 -0000 1.2
+@@ -62,62 +62,8 @@
+ #ifndef _UNOBROK_HXX
+ #define _UNOBROK_HXX
+
+-#include "rvp.hxx"
+-
+ #include <svdata.hxx>
+ #include <vos/thread.hxx>
+-
+-// #include <com/sun/star/connection/XAcceptor.hpp>
+-
+-// class UnoBrokerThread : public ::vos::OThread
+-// {
+-// public:
+-
+-// UnoBrokerThread(
+-// const ::com::sun::star::uno::Reference<
+-// ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
+-// const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > &rInitialObject );
+-
+-// ~UnoBrokerThread();
+-// protected:
+-
+-// virtual void SAL_CALL run();
+-// virtual void SAL_CALL onTerminated();
+-
+-// private:
+-
+-// ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_rSMgr;
+-// ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_rInitialObject;
+-// };
+-
+-
+-// /*****************
+-// * This thread is used, when application is started as appserver
+-// * Note : No security is checked, every user may connect to the application !
+-// *****************/
+-// class vcl_AcceptorThread : public ::vos::OThread
+-// {
+-// public:
+-
+-// vcl_AcceptorThread(
+-// const ::com::sun::star::uno::Reference<
+-// ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
+-// const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > &rInitialObject,
+-// const ::rtl::OUString &sAcceptorParameter);
+-
+-// protected:
+-
+-// virtual void SAL_CALL run();
+-// virtual void SAL_CALL onTerminated();
+-
+-// virtual void SAL_CALL terminate();
+-// private:
+-
+-// ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_rSMgr;
+-// ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_rInitialObject;
+-// ::com::sun::star::uno::Reference< ::com::sun::star::connection::XAcceptor > m_rAcceptor;
+-// ::rtl::OUString m_sAcceptorDescription;
+-// };
+
+ namespace vcl_accept
+ {
+Index: vcl/inc/unohelp2.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/unohelp2.hxx,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1 -r1.2
+--- vcl/inc/unohelp2.hxx 18 Mar 2002 17:34:51 -0000 1.1
++++ vcl/inc/unohelp2.hxx 7 Jan 2004 09:25:54 -0000 1.2
+@@ -74,6 +74,9 @@
+ #include <tools/string.hxx>
+ #endif
+
++#ifndef _OSL_MUTEX_HXX_
++#include <osl/mutex.hxx>
++#endif
+
+ namespace vcl { namespace unohelper {
+
+@@ -98,6 +101,14 @@ namespace vcl { namespace unohelper {
+ ::com::sun::star::uno::Any SAL_CALL getTransferData( const ::com::sun::star::datatransfer::DataFlavor& aFlavor ) throw(::com::sun::star::datatransfer::UnsupportedFlavorException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Sequence< ::com::sun::star::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors( ) throw(::com::sun::star::uno::RuntimeException);
+ sal_Bool SAL_CALL isDataFlavorSupported( const ::com::sun::star::datatransfer::DataFlavor& aFlavor ) throw(::com::sun::star::uno::RuntimeException);
++ };
++
++ struct MutexHelper
++ {
++ private:
++ ::osl::Mutex maMutex;
++ public:
++ ::osl::Mutex& GetMutex() { return maMutex; }
+ };
+
+ }} // namespace vcl::unohelper
+Index: vcl/inc/vclevent.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/vclevent.hxx,v
+retrieving revision 1.30
+retrieving revision 1.31
+diff -u -p -u -r1.30 -r1.31
+--- vcl/inc/vclevent.hxx 12 Jun 2003 07:50:37 -0000 1.30
++++ vcl/inc/vclevent.hxx 19 May 2004 13:50:40 -0000 1.31
+@@ -178,6 +178,7 @@ class Menu;
+ #define VCLEVENT_TOOLBOX_ITEMENABLED 1168 // pData = itempos
+ #define VCLEVENT_TOOLBOX_ITEMDISABLED 1169 // pData = itempos
+ #define VCLEVENT_TABPAGE_PAGETEXTCHANGED 1170 // pData = pageid
++#define VCLEVENT_ROADMAP_ITEMSELECTED 1171
+
+ // VclMenuEvent
+ #define VCLEVENT_MENU_ACTIVATE 1200
+@@ -203,8 +204,8 @@ class VclSimpleEvent
+ {
+ private:
+ ULONG nId;
+-
+-public:
++
++public:
+ VclSimpleEvent( ULONG n ) { nId = n; }
+ TYPEINFO();
+
+@@ -216,11 +217,11 @@ class VclWindowEvent : public VclSimpleE
+ private:
+ Window* pWindow;
+ void* pData;
+-
+-public:
++
++public:
+ VclWindowEvent( Window* pWin, ULONG n, void* pDat = NULL ) : VclSimpleEvent(n) { pWindow = pWin; pData = pDat; }
+ TYPEINFO();
+-
++
+ Window* GetWindow() const { return pWindow; }
+ void* GetData() const { return pData; }
+ };
+@@ -230,11 +231,11 @@ class VclMouseEvent : public VclWindowEv
+ {
+ private:
+ MouseEvent aEvent;
+-
+-public:
++
++public:
+ VclMouseEvent( Window* pWin, ULONG n, const MouseEvent& rEvent ) : VclWindowEvent( pWin, n ), aEvent(rEvent) { ; }
+ TYPEINFO();
+-
++
+ const MouseEvent& GetEvent() const { return aEvent; }
+ };
+ */
+@@ -244,11 +245,11 @@ class VclMenuEvent : public VclSimpleEve
+ private:
+ Menu* pMenu;
+ USHORT mnPos;
+-
+-public:
++
++public:
+ VclMenuEvent( Menu* pM, ULONG n, USHORT nPos ) : VclSimpleEvent(n) { pMenu = pM; mnPos = nPos; }
+ TYPEINFO();
+-
++
+ Menu* GetMenu() const { return pMenu; }
+ USHORT GetItemPos() const { return mnPos; }
+ };
+@@ -261,7 +262,7 @@ public:
+
+ // stops notifying when any handler has processed the event
+ // and returns TRUE in that case
+- // a handler must return TRUE to signal that it has processed the event
++ // a handler must return TRUE to signal that it has processed the event
+ BOOL Process( VclSimpleEvent* pEvent ) const;
+ };
+
+Index: vcl/inc/virdev.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/virdev.hxx,v
+retrieving revision 1.3
+retrieving revision 1.7
+diff -u -p -u -r1.3 -r1.7
+--- vcl/inc/virdev.hxx 1 Apr 2003 09:43:53 -0000 1.3
++++ vcl/inc/virdev.hxx 7 Jan 2004 09:26:54 -0000 1.7
+@@ -78,40 +78,52 @@ class RmVirtualDevice;
+
+ class VirtualDevice : public OutputDevice
+ {
+-private:
++ friend class Application;
++ friend class OutputDevice;
+
+-#ifndef REMOTE_APPSERVER
++private:
+ SalVirtualDevice* mpVirDev;
+-#else
+- RmVirtualDevice* mpVirDev;
+-#endif
+ VirtualDevice* mpPrev;
+ VirtualDevice* mpNext;
+ USHORT mnBitCount;
+ BOOL mbScreenComp;
+- BOOL mbDummyAlign;
++ sal_Int8 mnAlphaDepth;
++ BYTE meRefDevMode;
+
+-#if _SOLAR__PRIVATE
+- friend class Application;
+- friend class OutputDevice;
+-#ifdef _SV_VIRDEV_CXX
+ void ImplInitVirDev( const OutputDevice* pOutDev, long nDX, long nDY, USHORT nBitCount );
+-#endif
+-#ifdef REMOTE_APPSERVER
+- RmVirtualDevice* ImplGetRemoteVirDev() const { return mpVirDev; }
+-#endif
+-#endif
++ BOOL ImplSetOutputSizePixel( const Size& rNewSize, BOOL bErase );
+
+ public:
+ VirtualDevice( USHORT nBitCount = 0 );
+ VirtualDevice( const OutputDevice& rCompDev,
+ USHORT nBitCount = 0 );
++ /** Create a virtual device with alpha channel
++
++ @param rCompDev
++ The generated vdev will be compatible to this device. By
++ default, Application::GetDefaultDevice() is used here.
++
++ @param nBitCount
++ Bit depth of the generated virtual device. Use 0 here, to
++ indicate: take default screen depth. Currently, only 0 and 1
++ are allowed here, with 1 denoting binary mask.
++
++ @param nAlphaBitCount
++ Bit depth of the generated virtual device. Use 0 here, to
++ indicate: take default screen depth. Currently, only 0 and 1
++ are allowed here, with 1 denoting binary mask.
++ */
++ VirtualDevice( const OutputDevice& rCompDev,
++ USHORT nBitCount, USHORT nAlphaBitCount );
+ virtual ~VirtualDevice();
+
+- void SetReferenceDevice();
+ BOOL SetOutputSizePixel( const Size& rNewSize, BOOL bErase = TRUE );
+ BOOL SetOutputSize( const Size& rNewSize, BOOL bErase = TRUE )
+ { return SetOutputSizePixel( LogicToPixel( rNewSize ), bErase ); }
++
++ // reference device modes for different compatibility levels
++ enum RefDevMode { REFDEV_NONE=0, REFDEV_MODE06, REFDEV_MODE48, REFDEV_MODE96 };
++ void SetReferenceDevice( RefDevMode eMode = VirtualDevice::REFDEV_MODE06 );
+ };
+
+ #endif // _SV_VIRDEV_HXX
+Index: vcl/inc/wall.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/wall.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/wall.hxx 19 Sep 2000 10:23:08 -0000 1.1.1.1
++++ vcl/inc/wall.hxx 7 Jan 2004 09:27:34 -0000 1.2
+@@ -65,13 +65,14 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+
+ class Rectangle;
+ class Gradient;
+ class BitmapEx;
++class ImplWallpaper;
+
+ // -------------------
+ // - Wallpaper-Types -
+@@ -113,40 +114,6 @@ enum WallpaperStyle
+
+ #endif
+
+-// -----------------
+-// - ImplWallpaper -
+-// -----------------
+-
+-class SvStream;
+-
+-class ImplWallpaper
+-{
+- friend class Wallpaper;
+-
+-private:
+- Color maColor;
+- BitmapEx* mpBitmap;
+- Gradient* mpGradient;
+- Rectangle* mpRect;
+- WallpaperStyle meStyle;
+- USHORT mnRefCount;
+- BitmapEx* mpCache;
+-
+- friend SvStream& operator>>( SvStream& rIStm, ImplWallpaper& rImplWallpaper );
+- friend SvStream& operator<<( SvStream& rOStm, const ImplWallpaper& rImplWallpaper );
+-
+-#ifdef _SV_WALL_CXX
+-public:
+- ImplWallpaper();
+- ImplWallpaper( const ImplWallpaper& rImplWallpaper );
+- ~ImplWallpaper();
+-
+- void ImplSetCachedBitmap( BitmapEx& rBmp );
+- const BitmapEx* ImplGetCachedBitmap() { return mpCache; }
+- void ImplReleaseCachedBitmap();
+-#endif
+-};
+-
+ // -------------
+ // - Wallpaper -
+ // -------------
+@@ -156,8 +123,9 @@ class Wallpaper
+ private:
+ ImplWallpaper* mpImplWallpaper;
+
+-#ifdef _SV_WALL_CXX
+ void ImplMakeUnique( BOOL bReleaseCache = TRUE );
++
++#if _SOLAR__PRIVATE
+ public:
+ ImplWallpaper* ImplGetImpWallpaper() const { return mpImplWallpaper; }
+ #endif
+@@ -171,25 +139,25 @@ public:
+ ~Wallpaper();
+
+ void SetColor( const Color& rColor );
+- const Color& GetColor() const { return mpImplWallpaper->maColor; }
++ const Color& GetColor() const;
+
+ void SetStyle( WallpaperStyle eStyle );
+- WallpaperStyle GetStyle() const { return mpImplWallpaper->meStyle; }
++ WallpaperStyle GetStyle() const;
+
+ void SetBitmap( const BitmapEx& rBitmap );
+ void SetBitmap();
+ BitmapEx GetBitmap() const;
+- BOOL IsBitmap() const { return (mpImplWallpaper->mpBitmap != 0); }
++ BOOL IsBitmap() const;
+
+ void SetGradient( const Gradient& rGradient );
+ void SetGradient();
+ Gradient GetGradient() const;
+- BOOL IsGradient() const { return (mpImplWallpaper->mpGradient != 0); }
++ BOOL IsGradient() const;
+
+ void SetRect( const Rectangle& rRect );
+ void SetRect();
+ Rectangle GetRect() const;
+- BOOL IsRect() const { return (mpImplWallpaper->mpRect != 0); }
++ BOOL IsRect() const;
+
+ BOOL IsFixed() const;
+ BOOL IsScrollable() const;
+Index: vcl/inc/wall2.hxx
+===================================================================
+RCS file: vcl/inc/wall2.hxx
+diff -N vcl/inc/wall2.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/wall2.hxx 7 Jan 2004 09:27:49 -0000 1.2
+@@ -0,0 +1,96 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * The Contents of this file are made available subject to the terms of
++ * either of the following licenses
++ *
++ * - GNU Lesser General Public License Version 2.1
++ * - Sun Industry Standards Source License Version 1.1
++ *
++ * Sun Microsystems Inc., October, 2000
++ *
++ * GNU Lesser General Public License Version 2.1
++ * =============================================
++ * Copyright 2000 by Sun Microsystems, Inc.
++ * 901 San Antonio Road, Palo Alto, CA 94303, USA
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License version 2.1, as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ *
++ *
++ * Sun Industry Standards Source License Version 1.1
++ * =================================================
++ * The contents of this file are subject to the Sun Industry Standards
++ * Source License Version 1.1 (the "License"); You may not use this file
++ * except in compliance with the License. You may obtain a copy of the
++ * License at http://www.openoffice.org/license.html.
++ *
++ * Software provided under this License is provided on an "AS IS" basis,
++ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
++ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
++ * See the License for the specific provisions governing your rights and
++ * obligations concerning the Software.
++ *
++ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
++ *
++ * Copyright: 2000 by Sun Microsystems, Inc.
++ *
++ * All Rights Reserved.
++ *
++ * Contributor(s): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_WALL2_HXX
++#define _SV_WALL2_HXX
++
++#ifndef _SV_WALL_HXX
++#include <wall.hxx>
++#endif
++
++class ImplWallpaper
++{
++ friend class Wallpaper;
++
++private:
++ Color maColor;
++ BitmapEx* mpBitmap;
++ Gradient* mpGradient;
++ Rectangle* mpRect;
++ WallpaperStyle meStyle;
++ USHORT mnRefCount;
++ BitmapEx* mpCache;
++
++ friend SvStream& operator>>( SvStream& rIStm, ImplWallpaper& rImplWallpaper );
++ friend SvStream& operator<<( SvStream& rOStm, const ImplWallpaper& rImplWallpaper );
++
++public:
++ ImplWallpaper();
++ ImplWallpaper( const ImplWallpaper& rImplWallpaper );
++ ~ImplWallpaper();
++
++ void ImplSetCachedBitmap( BitmapEx& rBmp );
++ const BitmapEx* ImplGetCachedBitmap() { return mpCache; }
++ void ImplReleaseCachedBitmap();
++};
++
++
++#endif // _SV_WALL2_HXX
+Index: vcl/inc/windata.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/windata.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/windata.hxx 27 Jun 2001 08:23:42 -0000 1.2
++++ vcl/inc/windata.hxx 1 Dec 2003 13:02:52 -0000 1.3
+@@ -72,15 +72,7 @@ class SalFrame;
+ // - Prototypes -
+ // --------------
+
+-#ifndef REMOTE_APPSERVER
+- long ImplWindowFrameProc( void* pInst, SalFrame* pFrame,
+- USHORT nEvent, const void* pEvent );
+-#else
+- class ExtRmEvent;
+- class Window;
+- void ImplRemoteWindowFrameProc( ExtRmEvent* pEvent );
+- void ImplUpdateCursorRect( Window *pWindow );
+-#endif
++long ImplWindowFrameProc( void* pInst, SalFrame* pFrame, USHORT nEvent, const void* pEvent );
+
+ // -----------
+ // - HitTest -
+Index: vcl/inc/window.h
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/window.h,v
+retrieving revision 1.11.136.1
+retrieving revision 1.15
+diff -u -p -u -r1.11.136.1 -r1.15
+--- vcl/inc/window.h 9 Jan 2004 18:13:41 -0000 1.11.136.1
++++ vcl/inc/window.h 17 Jun 2004 12:10:38 -0000 1.15
+@@ -86,6 +86,7 @@ class VirtualDevice;
+ struct SalPaintEvent;
+ class ImplDevFontList;
+ class ImplFontCache;
++class SalControlHandle;
+
+ namespace com {
+ namespace sun {
+@@ -113,6 +114,10 @@ struct ImplWinData
+ Rectangle* mpFocusRect;
+ Rectangle* mpTrackRect;
+ USHORT mnTrackFlags;
++ USHORT mnIsTopWindow;
++ BOOL mbMouseOver; // tracks mouse over for native widget paint effect
++ SalControlHandle* mpSalControlHandle; // native data for NWF
++ BOOL mbEnableNativeWidget; // toggle native widget rendering
+ };
+
+ // -------------------
+@@ -145,16 +150,18 @@ struct ImplFrameData
+ Window* mpFirstBackWin; // Erstes Overlap-Window mit Hintergrund-Sicherung
+ ImplDevFontList* mpFontList; // Font-List for this frame
+ ImplFontCache* mpFontCache; // Font-Cache for this frame
+- long mnDPIX; // Original Screen Resolution
+- long mnDPIY; // Original Screen Resolution
+- long mnFontDPIX; // Original Font Resolution
+- long mnFontDPIY; // Original Font Resolution
++ sal_Int32 mnDPIX; // Original Screen Resolution
++ sal_Int32 mnDPIY; // Original Screen Resolution
++ sal_Int32 mnFontDPIX; // Original Font Resolution
++ sal_Int32 mnFontDPIY; // Original Font Resolution
+ ImplMapRes maMapUnitRes; // for LogicUnitToPixel
+ ULONG mnAllSaveBackSize; // Groesse aller Bitmaps fuer Hintergrund-Sicherung
+ ULONG mnFocusId; // FocusId for PostUserLink
+ ULONG mnMouseMoveId; // MoveId for PostUserLink
+ long mnLastMouseX; // last x mouse position
+ long mnLastMouseY; // last y mouse position
++ long mnBeforeLastMouseX; // last but one x mouse position
++ long mnBeforeLastMouseY; // last but one y mouse position
+ long mnFirstMouseX; // first x mouse position by mousebuttondown
+ long mnFirstMouseY; // first y mouse position by mousebuttondown
+ long mnLastMouseWinX; // last x mouse position, rel. to pMouseMoveWin
+Index: vcl/inc/window.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/window.hxx,v
+retrieving revision 1.47.112.1
+retrieving revision 1.55
+diff -u -p -u -r1.47.112.1 -r1.55
+--- vcl/inc/window.hxx 26 Jan 2004 17:20:36 -0000 1.47.112.1
++++ vcl/inc/window.hxx 17 Jun 2004 12:10:54 -0000 1.55
+@@ -68,8 +68,8 @@
+ #ifndef _SV_OUTDEV_HXX
+ #include <outdev.hxx>
+ #endif
+-#ifndef _SV_RESID_HXX
+-#include <resid.hxx>
++#ifndef _TOOLS_RESID_HXX
++#include <tools/resid.hxx>
+ #endif
+ #ifndef _SV_POINTR_HXX
+ #include <pointr.hxx>
+@@ -91,12 +91,20 @@
+ #include <event.hxx>
+ #endif
+
+-#ifndef _COM_SUN_STAR_UNO_REFERENCE_HXX_
+-#include <com/sun/star/uno/Reference.hxx>
++#ifndef _SV_REGION_HXX
++#include <region.hxx>
++#endif
++
++#ifndef _SV_NATIVEWIDGETS_HXX
++#include <salnativewidgets.hxx>
++#endif
++
++#ifndef _RTL_USTRING_HXX_
++#include <rtl/ustring.hxx>
+ #endif
+
+-#ifdef REMOTE_APPSERVER
+-#include "rvp.hxx"
++#ifndef _COM_SUN_STAR_UNO_REFERENCE_HXX_
++#include <com/sun/star/uno/Reference.hxx>
+ #endif
+
+ class VirtualDevice;
+@@ -144,6 +151,7 @@ namespace sun {
+ namespace star {
+ namespace awt {
+ class XWindowPeer;
++ class XWindow;
+ }
+ namespace uno {
+ class Any;
+@@ -335,26 +351,55 @@ typedef USHORT StateChangedType;
+ #define EXTTEXTINPUT_END_COMPLETE ((USHORT)0x0001)
+ #define EXTTEXTINPUT_END_CANCEL ((USHORT)0x0002)
+
++#if _SOLAR__PRIVATE
++#define IMPL_MINSIZE_BUTTON_WIDTH 70
++#define IMPL_MINSIZE_BUTTON_HEIGHT 22
++#define IMPL_EXTRA_BUTTON_WIDTH 18
++#define IMPL_EXTRA_BUTTON_HEIGHT 10
++#define IMPL_SEP_BUTTON_X 5
++#define IMPL_SEP_BUTTON_Y 5
++#define IMPL_MINSIZE_MSGBOX_WIDTH 150
++#define IMPL_MINSIZE_MSGBOX_HEIGHT 80
++#define IMPL_DIALOG_OFFSET 5
++#define IMPL_DIALOG_BAR_OFFSET 3
++#define IMPL_MSGBOX_OFFSET_EXTRA_X 0
++#define IMPL_MSGBOX_OFFSET_EXTRA_Y 2
++#define IMPL_SEP_MSGBOX_IMAGE 8
++#define IMPL_SEP_BUTTON_IMAGE 4
++
++#define DLGWINDOW_PREV 0
++#define DLGWINDOW_NEXT 1
++#define DLGWINDOW_FIRST 2
++#endif
++
+ // ----------
+ // - Window -
+ // ----------
+
+ class Window : public OutputDevice
+ {
++ friend class Cursor;
++ friend class OutputDevice;
++ friend class Application;
++ friend class SystemWindow;
++ friend class WorkWindow;
++ friend class Dialog;
++ friend class MessBox;
++ friend class DockingWindow;
++ friend class FloatingWindow;
++ friend class GroupBox;
++ friend class PushButton;
++ friend class RadioButton;
++ friend class SystemChildWindow;
++ friend class ImplBorderWindow;
++
+ private:
+ ImplWinData* mpWinData;
+ ImplOverlapData* mpOverlapData;
+ ImplFrameData* mpFrameData;
+-#ifndef REMOTE_APPSERVER
+ SalFrame* mpFrame;
+ SalObject* mpSysObj;
+ void* mpRmEvents;
+-#else
+- friend class ExtRmEvent;
+- RmFrameWindow* mpFrame;
+- void* mpSysObj;
+- ExtRmEvent* mpRmEvents;
+-#endif
+ Window* mpFrameWindow;
+ Window* mpOverlapWindow;
+ Window* mpBorderWindow;
+@@ -385,14 +433,13 @@ private:
+ Font* mpControlFont;
+ Color maControlForeground;
+ Color maControlBackground;
+- long mnLeftBorder;
+- long mnTopBorder;
+- long mnRightBorder;
+- long mnBottomBorder;
++ sal_Int32 mnLeftBorder;
++ sal_Int32 mnTopBorder;
++ sal_Int32 mnRightBorder;
++ sal_Int32 mnBottomBorder;
+ long mnX;
+ long mnY;
+ long mnAbsScreenX;
+- long mnDummy2;
+ Point maPos;
+ ULONG mnHelpId;
+ ULONG mnUniqId;
+@@ -413,8 +460,6 @@ private:
+ WinBits mnExtendedStyle;
+ WinBits mnPrevExtendedStyle;
+ WindowType mnType;
+- LanguageType meDummy1;
+- CharSet meDummy2;
+ USHORT mnWaitCount;
+ USHORT mnPaintFlags;
+ USHORT mnGetFocusFlags;
+@@ -422,8 +467,6 @@ private:
+ USHORT mnActivateMode;
+ USHORT mnDlgCtrlFlags;
+ USHORT mnLockCount;
+- USHORT mnDummy3;
+- USHORT mnIsTopWindow;
+ BOOL mbFrame:1,
+ mbBorderWin:1,
+ mbOverlapWin:1,
+@@ -490,9 +533,176 @@ private:
+ mbDrawSelectionBackground:1;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxDNDListenerContainer;
++ void ImplInitData( WindowType nType );
++
+
+ #if _SOLAR__PRIVATE
+-#include <window.imp>
++
++#ifdef DBG_UTIL
++ friend const char* ImplDbgCheckWindow( const void* pObj );
++#endif
++
++public:
++ void ImplInit( Window* pParent, WinBits nStyle, SystemParentData* pSystemParentData );
++ void ImplInit( Window* pParent, WinBits nStyle, const ::com::sun::star::uno::Any& aSystemWorkWindowToken );
++ WinBits ImplInitRes( const ResId& rResId );
++ void ImplLoadRes( const ResId& rResId );
++ void ImplWindowRes( const ResId& rResId );
++ void ImplSetFrameParent( const Window* pParent );
++ void ImplInsertWindow( Window* pParent );
++ void ImplRemoveWindow( BOOL bRemoveFrameData );
++ Window* ImplGetWindow() { if ( mpClientWindow ) return mpClientWindow; else return this; }
++ ImplFrameData* ImplGetFrameData() { return mpFrameData; }
++ SalFrame* ImplGetFrame() const { return mpFrame; }
++ ImplWinData* ImplGetWinData() const;
++ SalGraphics* ImplGetFrameGraphics() const;
++ void ImplCallFocusChangeActivate( Window* pNewOverlapWindow, Window* pOldOverlapWindow );
++ Window* ImplFindWindow( const Point& rFramePos );
++ USHORT ImplHitTest( const Point& rFramePos );
++ Window* ImplGetParent() const { return mpParent; }
++ Window* ImplGetClientWindow() const { return mpClientWindow; }
++ Window* ImplGetBorderWindow() const { return mpBorderWindow; }
++ Window* ImplGetFirstOverlapWindow() { if ( mbOverlapWin ) return this; else return mpOverlapWindow; }
++ const Window* ImplGetFirstOverlapWindow() const { if ( mbOverlapWin ) return this; else return mpOverlapWindow; }
++ Window* ImplGetFrameWindow() const { return mpFrameWindow; }
++ BOOL ImplIsRealParentPath( const Window* pWindow ) const;
++ BOOL ImplIsChild( const Window* pWindow, BOOL bSystemWindow = FALSE ) const;
++ BOOL ImplIsWindowOrChild( const Window* pWindow, BOOL bSystemWindow = FALSE ) const;
++ Window* ImplGetSameParent( const Window* pWindow ) const;
++ BOOL ImplIsDockingWindow() const { return mbDockWin; }
++ BOOL ImplIsFloatingWindow() const { return mbFloatWin; }
++ BOOL ImplIsToolbox() const { return mbToolBox; }
++ BOOL ImplIsSplitter() const { return mbSplitter; }
++ BOOL ImplIsPushButton() const { return mbPushButton; }
++ BOOL ImplIsOverlapWindow() const { return mbOverlapWin; }
++ void ImplSetActive( BOOL bActive ) { mbActive = bActive; }
++ BOOL ImplIsMouseTransparent() const { return mbMouseTransparent; }
++ void ImplSetMouseTransparent( BOOL bTransparent ) { mbMouseTransparent = bTransparent; }
++ int ImplTestMousePointerSet();
++ PointerStyle ImplGetMousePointer() const;
++ void ImplResetReallyVisible();
++ void ImplSetReallyVisible();
++ void ImplCallInitShow();
++ void ImplAddDel( ImplDelData* pDel );
++ void ImplRemoveDel( ImplDelData* pDel );
++ void ImplInitResolutionSettings();
++ void ImplPointToLogic( Font& rFont ) const;
++ void ImplLogicToPoint( Font& rFont ) const;
++ Point ImplOutputToFrame( const Point& rPos )
++ { return Point( rPos.X()+mnOutOffX, rPos.Y()+mnOutOffY ); }
++ Point ImplFrameToOutput( const Point& rPos )
++ { return Point( rPos.X()-mnOutOffX, rPos.Y()-mnOutOffY ); }
++ void ImplOutputToFrame( Rectangle& rRect )
++ { rRect.Left()+=mnOutOffX; rRect.Top()+=mnOutOffY;
++ rRect.Right()+=mnOutOffX; rRect.Bottom()+=mnOutOffY; }
++ void ImplFrameToOutput( Rectangle& rRect )
++ { rRect.Left()-=mnOutOffX; rRect.Top()-=mnOutOffY;
++ rRect.Right()-=mnOutOffX; rRect.Bottom()-=mnOutOffY; }
++ BOOL ImplSysObjClip( const Region* pOldRegion );
++ void ImplUpdateSysObjChildsClip();
++ void ImplUpdateSysObjOverlapsClip();
++ void ImplUpdateSysObjClip();
++ BOOL ImplSetClipFlagChilds( BOOL bSysObjOnlySmaller = FALSE );
++ BOOL ImplSetClipFlagOverlapWindows( BOOL bSysObjOnlySmaller = FALSE );
++ BOOL ImplSetClipFlag( BOOL bSysObjOnlySmaller = FALSE );
++ void ImplIntersectWindowClipRegion( Region& rRegion );
++ void ImplIntersectWindowRegion( Region& rRegion );
++ void ImplExcludeWindowRegion( Region& rRegion );
++ void ImplExcludeOverlapWindows( Region& rRegion );
++ void ImplExcludeOverlapWindows2( Region& rRegion );
++ void ImplClipBoundaries( Region& rRegion, BOOL bThis, BOOL bOverlaps );
++ BOOL ImplClipChilds( Region& rRegion );
++ void ImplClipAllChilds( Region& rRegion );
++ void ImplClipSiblings( Region& rRegion );
++ void ImplInitWinClipRegion();
++ void ImplInitWinChildClipRegion();
++ Region* ImplGetWinChildClipRegion();
++ void ImplIntersectAndUnionOverlapWindows( const Region& rInterRegion, Region& rRegion );
++ void ImplIntersectAndUnionOverlapWindows2( const Region& rInterRegion, Region& rRegion );
++ void ImplCalcOverlapRegionOverlaps( const Region& rInterRegion, Region& rRegion );
++ void ImplCalcOverlapRegion( const Rectangle& rSourceRect, Region& rRegion,
++ BOOL bChilds, BOOL bParent, BOOL bSiblings );
++ void ImplCallPaint( const Region* pRegion, USHORT nPaintFlags );
++ void ImplCallOverlapPaint();
++ void ImplPostPaint();
++ void ImplInvalidateFrameRegion( const Region* pRegion, USHORT nFlags );
++ void ImplInvalidateOverlapFrameRegion( const Region& rRegion );
++ void ImplInvalidateParentFrameRegion( Region& rRegion );
++ void ImplInvalidate( const Region* rRegion, USHORT nFlags );
++ void ImplValidateFrameRegion( const Region* rRegion, USHORT nFlags );
++ void ImplValidate( const Region* rRegion, USHORT nFlags );
++ void ImplMoveInvalidateRegion( const Rectangle& rRect, long nHorzScroll, long nVertScroll, BOOL bChilds );
++ void ImplMoveAllInvalidateRegions( const Rectangle& rRect, long nHorzScroll, long nVertScroll, BOOL bChilds );
++ void ImplScroll( const Rectangle& rRect, long nHorzScroll, long nVertScroll, USHORT nFlags );
++ void ImplUpdateAll( BOOL bOverlapWindows = TRUE );
++ void ImplUpdateWindowPtr( Window* pWindow );
++ void ImplUpdateWindowPtr();
++ void ImplUpdateOverlapWindowPtr( BOOL bNewFrame );
++ BOOL ImplUpdatePos();
++ void ImplUpdateSysObjPos();
++ void ImplUpdateGlobalSettings( AllSettings& rSettings, BOOL bCallHdl = TRUE );
++ void ImplAlignChilds();
++ void ImplPosSizeWindow( long nX, long nY, long nWidth, long nHeight, USHORT nFlags );
++ void ImplToBottomChild();
++ void ImplCalcToTop( ImplCalcToTopData* pPrevData );
++ void ImplCalcChildOverlapToTop( ImplCalcToTopData* pPrevData );
++ void ImplToTop( USHORT nFlags );
++ void ImplStartToTop( USHORT nFlags );
++ void ImplFocusToTop( USHORT nFlags, BOOL bReallyVisible );
++ void ImplShowAllOverlaps();
++ void ImplHideAllOverlaps();
++ void ImplNotifyKeyMouseCommandEventListeners( NotifyEvent& rNEvt );
++ void ImplCallMouseMove( USHORT nMouseCode, BOOL bModChanged = FALSE );
++ void ImplGenerateMouseMove();
++ void ImplGrabFocus( USHORT nFlags );
++ void ImplInvertFocus( const Rectangle& rRect );
++ void ImplControlFocus( USHORT nFlags = 0 );
++ Window* ImplGetDlgWindow( USHORT n, USHORT nType, USHORT nStart = 0, USHORT nEnd = 0xFFFF, USHORT* pIndex = NULL );
++ BOOL ImplDlgCtrl( const KeyEvent& rKEvt, BOOL bKeyInput );
++ BOOL ImplHasDlgCtrl();
++ void ImplDlgCtrlNextWindow();
++ void ImplDlgCtrlFocusChanged( Window* pWindow, BOOL bGetFocus );
++ Window* ImplFindDlgCtrlWindow( Window* pWindow );
++ long ImplLogicUnitToPixelX( long nX, MapUnit eUnit );
++ long ImplLogicUnitToPixelY( long nY, MapUnit eUnit );
++ BOOL ImplIsWindowInFront( const Window* pTestWindow ) const;
++ void ImplSaveOverlapBackground();
++ BOOL ImplRestoreOverlapBackground( Region& rInvRegion );
++ void ImplDeleteOverlapBackground();
++ void ImplInvalidateAllOverlapBackgrounds();
++ static void ImplNewInputContext();
++ void ImplCallActivateListeners(Window*);
++ void ImplCallDeactivateListeners(Window*);
++ DECL_LINK( ImplHandlePaintHdl, void* );
++ DECL_LINK( ImplGenerateMouseMoveHdl, void* );
++ DECL_LINK( ImplTrackTimerHdl, Timer* );
++ DECL_LINK( ImplAsyncFocusHdl, void* );
++ DECL_LINK( ImplAsyncStateChangedHdl, void* );
++
++ static void ImplCalcSymbolRect( Rectangle& rRect );
++ void ImplHandleScroll( ScrollBar* pHScrl, long nX, ScrollBar* pVScrl, long nY );
++ BOOL ImplGetCurrentBackgroundColor( Color& rCol );
++ BOOL ImplIsAccessibleCandidate() const;
++ BOOL ImplIsAccessibleNativeFrame() const;
++ USHORT ImplGetAccessibleCandidateChildWindowCount( USHORT nFirstWindowType ) const;
++ Window* ImplGetAccessibleCandidateChild( USHORT nChild, USHORT& rChildCount, USHORT nFirstWindowType, BOOL bTopLevel = TRUE ) const;
++ BOOL ImplRegisterAccessibleNativeFrame();
++ void ImplRevokeAccessibleNativeFrame();
++ void ImplCallResize();
++ void ImplCallMove();
++ Rectangle ImplOutputToUnmirroredAbsoluteScreenPixel( const Rectangle& rRect ) const;
++ void ImplMirrorFramePos( Point &pt ) const;
++ long ImplGetUnmirroredOutOffX();
++ void ImplIncModalCount();
++ void ImplDecModalCount();
++
++ Rectangle ImplGetWindowExtentsRelative( Window *pRelativeWindow, BOOL bClientOnly );
++ void ImplNotifyIconifiedState( BOOL bIconified );
++ bool ImplStopDnd();
++ void ImplStartDnd();
++
++ static void ImplInitAppFontData( Window* pWindow );
++ void ImplInitSalControlHandle();
+ #endif
+
+ protected:
+@@ -573,8 +783,8 @@ public:
+
+ void SetBorderStyle( USHORT nBorderStyle );
+ USHORT GetBorderStyle() const;
+- void GetBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const;
++ void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+ Size CalcWindowSize( const Size& rOutSz ) const;
+ Size CalcOutputSize( const Size& rWinSz ) const;
+ long CalcTitleWidth() const;
+@@ -594,6 +804,8 @@ public:
+ void SetDialogControlFlags( USHORT nFlags ) { mnDlgCtrlFlags = nFlags; }
+ USHORT GetDialogControlFlags() const { return mnDlgCtrlFlags; }
+
++ BOOL IsMouseOver();
++
+ ULONG GetCurrentModButtons();
+
+ void SetInputContext( const InputContext& rInputContext );
+@@ -616,7 +828,7 @@ public:
+ void SetZoomedPointFont( const Font& rFont );
+ long GetDrawPixel( OutputDevice* pDev, long nPixels ) const;
+ Font GetDrawPixelFont( OutputDevice* pDev ) const;
+- void GetFontResolution( long& nDPIX, long& nDPIY ) const;
++ void GetFontResolution( sal_Int32& nDPIX, sal_Int32& nDPIY ) const;
+
+ void SetControlFont();
+ void SetControlFont( const Font& rFont );
+@@ -641,6 +853,10 @@ public:
+ Region GetWindowClipRegionPixel( USHORT nFlags = 0 ) const;
+ Region GetPaintRegion() const;
+ BOOL IsInPaint() const { return mbInPaint; }
++ // while IsInPaint returns true ExpandPaintClipRegion adds the
++ // submitted region to the paint clip region so you can
++ // paint additional parts of your window if necessary
++ void ExpandPaintClipRegion( const Region& rRegion );
+
+ void SetParent( Window* pNewParent );
+ Window* GetParent() const { return mpRealParent; }
+@@ -687,8 +903,12 @@ public:
+ BOOL IsDefaultPos() const { return mbDefPos; }
+ BOOL IsDefaultSize() const { return mbDefSize; }
+
++ // those conversion routines might deliver different results during UI mirroring
+ Point OutputToScreenPixel( const Point& rPos ) const;
+ Point ScreenToOutputPixel( const Point& rPos ) const;
++ // the normalized screen methods work independent from UI mirroring
++ Point OutputToNormalizedScreenPixel( const Point& rPos ) const;
++ Point NormalizedScreenToOutputPixel( const Point& rPos ) const;
+ Point OutputToAbsoluteScreenPixel( const Point& rPos ) const;
+ Point AbsoluteScreenToOutputPixel( const Point& rPos ) const;
+ Rectangle GetDesktopRectPixel() const;
+@@ -753,6 +964,7 @@ public:
+ BOOL IsChildPointerOverwrite() const { return mbChildPtrOverwrite; }
+ void SetPointerPosPixel( const Point& rPos );
+ Point GetPointerPosPixel();
++ Point GetLastPointerPosPixel();
+ void ShowPointer( BOOL bVisible );
+ BOOL IsPointerVisible() const { return !mbNoPtrVisible; }
+ void EnterWait();
+@@ -852,11 +1060,11 @@ public:
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetAccessible( BOOL bCreate = TRUE );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
+ void SetAccessible( ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > );
+-
++
+ Window* GetAccessibleParentWindow() const;
+ USHORT GetAccessibleChildWindowCount();
+ Window* GetAccessibleChildWindow( USHORT n );
+-
++
+ void SetAccessibleRole( USHORT nRole );
+ USHORT GetAccessibleRole() const;
+
+@@ -900,6 +1114,52 @@ public:
+ // Clipboard/Selection interfaces
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard > GetClipboard();
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard > GetSelection();
++
++ //-------------------------------------
++ // Native Widget Rendering functions
++ //-------------------------------------
++
++ // form controls must never use native widgets, this can be toggled here
++ void EnableNativeWidget( BOOL bEnable = TRUE );
++ BOOL IsNativeWidgetEnabled() const;
++
++ // These all just call through to the private mpFrame functions of the same name.
++
++ // Query the platform layer for control support
++ BOOL IsNativeControlSupported( ControlType nType, ControlPart nPart );
++
++ // Query the native control to determine if it was acted upon
++ BOOL HitTestNativeControl( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ const Point& aPos,
++ BOOL& rIsInside );
++
++ // Request rendering of a particular control and/or part
++ BOOL DrawNativeControl( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ ControlState nState,
++ const ImplControlValue& aValue,
++ rtl::OUString aCaption );
++
++ // Request rendering of a caption string for a control
++ BOOL DrawNativeControlText( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ ControlState nState,
++ const ImplControlValue& aValue,
++ rtl::OUString aCaption );
++
++ // Query the native control's actual drawing region (including adornment)
++ BOOL GetNativeControlRegion( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ ControlState nState,
++ const ImplControlValue& aValue,
++ rtl::OUString aCaption,
++ Region &rNativeBoundingRegion,
++ Region &rNativeContentRegion );
+ };
+
+ inline void Window::SetPosPixel( const Point& rNewPos )
+Index: vcl/inc/wintypes.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/wintypes.hxx,v
+retrieving revision 1.14
+retrieving revision 1.17
+diff -u -p -u -r1.14 -r1.17
+--- vcl/inc/wintypes.hxx 11 Apr 2003 17:27:04 -0000 1.14
++++ vcl/inc/wintypes.hxx 10 May 2004 15:44:37 -0000 1.17
+@@ -154,14 +154,15 @@ typedef USHORT WindowType;
+ #define WINDOW_TREELISTBOX (WINDOW_FIRST + 0x4d)
+ #define WINDOW_HELPTEXTWINDOW (WINDOW_FIRST + 0x4e)
+ #define WINDOW_INTROWINDOW (WINDOW_FIRST + 0x4f)
+-#define WINDOW_LAST (WINDOW_INTROWINDOW)
++#define WINDOW_LISTBOXWINDOW (WINDOW_FIRST + 0x50)
++#define WINDOW_LAST (WINDOW_LISTBOXWINDOW)
+
+
+ // ---------------
+ // - Window-Bits -
+ // ---------------
+
+-// By changes you must also change: tools/vclrsc.hxx
++// By changes you must also change: rsc/vclrsc.hxx
+ typedef sal_Int64 WinBits;
+
+ // Window-Bits fuer Window
+Index: vcl/inc/wrkwin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/wrkwin.hxx,v
+retrieving revision 1.7
+retrieving revision 1.9
+diff -u -p -u -r1.7 -r1.9
+--- vcl/inc/wrkwin.hxx 11 Apr 2003 17:27:14 -0000 1.7
++++ vcl/inc/wrkwin.hxx 17 Jun 2004 11:43:45 -0000 1.9
+@@ -96,20 +92,10 @@ private:
+ BOOL mbPresentationMode:1,
+ mbPresentationVisible:1,
+ mbPresentationFull:1,
+- mbFullScreenMode:1,
+- mbDummy0:1,
+- mbDummy1:1,
+- mbDummy2:1,
+- mbDummy3:1,
+- mbDummy4:1,
+- mbDummy5:1,
+- mbDummy6:1,
+- mbDummy7:1;
++ mbFullScreenMode:1;
+
+-#ifdef _SV_WRKWIN_CXX
+ void ImplInitData();
+ void ImplInit( Window* pParent, WinBits nStyle, const ::com::sun::star::uno::Any& aSystemWorkWindowToken );
+-#endif
+
+ protected:
+ WorkWindow( WindowType nType );
+@@ -124,6 +110,8 @@ public:
+ WorkWindow( SystemParentData* pParent ); // Not in the REMOTE-Version
+ ~WorkWindow();
+
++ virtual BOOL Close();
++
+ void ShowFullScreenMode( BOOL bFullScreenMode = TRUE );
+ void EndFullScreenMode() { ShowFullScreenMode( FALSE ); }
+ BOOL IsFullScreenMode() const { return mbFullScreenMode; }
+@@ -136,16 +124,14 @@ public:
+
+ BOOL SetPluginParent( SystemParentData* pParent );
+
+-#ifndef NOOLDSV
+ void Minimize();
+- void Maximize();
+ void Restore();
+
+- BOOL IsMaximized() const;
+
+ void SetOptOutputSizePixel( const Size& ) {}
+ Size GetOptOutputSizePixel() const { return Size(); }
+-#endif
++ void Maximize( BOOL bMaximize = TRUE );
++ BOOL IsMaximized();
+ };
+
+ #endif // _SV_WRKWIN_HXX
+Index: vcl/inc/xconnection.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/xconnection.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/xconnection.hxx 11 Sep 2001 15:52:21 -0000 1.2
++++ vcl/inc/xconnection.hxx 6 Jan 2004 13:08:25 -0000 1.3
+@@ -78,7 +78,7 @@
+ #include <com/sun/star/uno/Reference.hxx>
+ #endif
+
+-#ifndef __SGI_STL_LIST
++#ifndef _STLP_LIST
+ #include <list>
+ #endif
+