summaryrefslogtreecommitdiff
path: root/toolkit
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2005-01-21 15:46:46 +0000
committerKurt Zenker <kz@openoffice.org>2005-01-21 15:46:46 +0000
commit65d177a59711dae990ee1132f5a2dad6d7b02806 (patch)
treea68ee13f5ae2725700e9c3eef7294f2912601dff /toolkit
parent31e7264ac796ec1e465eeb40b1e3eb0281105d28 (diff)
INTEGRATION: CWS dba22 (1.49.20); FILE MERGED
2004/12/29 11:10:57 fs 1.49.20.2: #i34551# vertical alignment 2004/12/03 12:55:39 fs 1.49.20.1: #i37023# #i36007# draw: Use Window::Draw when print/previewing, else PaintToDevice / draw: paint visible controls by updating them, if they should be painted onto their parent
Diffstat (limited to 'toolkit')
-rw-r--r--toolkit/source/awt/vclxwindow.cxx76
1 files changed, 65 insertions, 11 deletions
diff --git a/toolkit/source/awt/vclxwindow.cxx b/toolkit/source/awt/vclxwindow.cxx
index 37ddb382562d..897ced7e905d 100644
--- a/toolkit/source/awt/vclxwindow.cxx
+++ b/toolkit/source/awt/vclxwindow.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: vclxwindow.cxx,v $
*
- * $Revision: 1.49 $
+ * $Revision: 1.50 $
*
- * last change: $Author: hr $ $Date: 2004-10-13 08:20:37 $
+ * last change: $Author: kz $ $Date: 2005-01-21 16:46:46 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -92,6 +92,9 @@
#ifndef _COM_SUN_STAR_AWT_ENDPOPUPMODEEVENT_HPP_
#include <com/sun/star/awt/EndPopupModeEvent.hpp>
#endif
+#ifndef _COM_SUN_STAR_STYLE_VERTICALALIGNMENT_HPP_
+#include <com/sun/star/style/VerticalAlignment.hpp>
+#endif
#ifndef _TOOLKIT_AWT_VCLXWINDOW_HXX_
#include <toolkit/awt/vclxwindow.hxx>
@@ -149,6 +152,12 @@
#include <vcl/dockwin.hxx>
#endif
+using ::com::sun::star::style::VerticalAlignment;
+using ::com::sun::star::style::VerticalAlignment_TOP;
+using ::com::sun::star::style::VerticalAlignment_MIDDLE;
+using ::com::sun::star::style::VerticalAlignment_BOTTOM;
+using ::com::sun::star::style::VerticalAlignment_MAKE_FIXED_SIZE;
+
// Mit Out-Parameter besser als Rueckgabewert, wegen Ref-Objekt...
void ImplInitWindowEvent( ::com::sun::star::awt::WindowEvent& rEvent, Window* pWindow )
@@ -1393,6 +1402,28 @@ void VCLXWindow::setProperty( const ::rtl::OUString& PropertyName, const ::com::
pWindow->SetStyle( nStyle );
}
break;
+ case BASEPROPERTY_VERTICALALIGN:
+ {
+ VerticalAlignment eAlign = VerticalAlignment_MAKE_FIXED_SIZE;
+ WinBits nStyle = pWindow->GetStyle();
+ nStyle &= ~(WB_TOP|WB_VCENTER|WB_BOTTOM);
+ if ( !bVoid )
+ Value >>= eAlign;
+ switch ( eAlign )
+ {
+ case VerticalAlignment_TOP:
+ nStyle |= WB_TOP;
+ break;
+ case VerticalAlignment_MIDDLE:
+ nStyle |= WB_VCENTER;
+ break;
+ case VerticalAlignment_BOTTOM:
+ nStyle |= WB_BOTTOM;
+ break;
+ }
+ pWindow->SetStyle( nStyle );
+ }
+ break;
case BASEPROPERTY_ALIGN:
{
sal_Int16 nAlign = PROPERTY_ALIGN_LEFT;
@@ -1617,6 +1648,17 @@ void VCLXWindow::setProperty( const ::rtl::OUString& PropertyName, const ::com::
case BASEPROPERTY_TABSTOP:
aProp <<= (sal_Bool) ( GetWindow()->GetStyle() & WB_TABSTOP ) ? sal_True : sal_False;
break;
+ case BASEPROPERTY_VERTICALALIGN:
+ {
+ WinBits nStyle = GetWindow()->GetStyle();
+ if ( nStyle & WB_TOP )
+ aProp <<= VerticalAlignment_TOP;
+ else if ( nStyle & WB_VCENTER )
+ aProp <<= VerticalAlignment_MIDDLE;
+ else if ( nStyle & WB_BOTTOM )
+ aProp <<= VerticalAlignment_BOTTOM;
+ }
+ break;
case BASEPROPERTY_ALIGN:
{
switch ( eWinType )
@@ -1813,10 +1855,17 @@ void VCLXWindow::draw( sal_Int32 nX, sal_Int32 nY ) throw(::com::sun::star::uno:
if ( !pDev )
pDev = pWindow->GetParent();
- if ( pWindow->GetParent() && !pWindow->IsVisible()
- && !pWindow->IsSystemWindow() && ( pWindow->GetParent() == pDev ) )
+ if ( pWindow->GetParent() && !pWindow->IsSystemWindow() && ( pWindow->GetParent() == pDev ) )
{
+ BOOL bWasVisible = pWindow->IsVisible();
Point aOldPos( pWindow->GetPosPixel() );
+
+ if ( bWasVisible && aOldPos == aPos )
+ {
+ pWindow->Update();
+ return;
+ }
+
pWindow->SetPosPixel( aPos );
// Erstmal ein Update auf den Parent, damit nicht beim Update
@@ -1832,6 +1881,8 @@ void VCLXWindow::draw( sal_Int32 nX, sal_Int32 nY ) throw(::com::sun::star::uno:
pWindow->SetParentUpdateMode( sal_True );
pWindow->SetPosPixel( aOldPos );
+ if ( bWasVisible )
+ pWindow->Show( TRUE );
}
else if ( pDev )
{
@@ -1839,13 +1890,16 @@ void VCLXWindow::draw( sal_Int32 nX, sal_Int32 nY ) throw(::com::sun::star::uno:
aSz = pDev->PixelToLogic( aSz );
Point aP = pDev->PixelToLogic( aPos );
- ULONG nFlags = WINDOW_DRAW_NOCONTROLS;
-
- // #80064# Why only Mono?
- // if ( pDev->GetOutDevType() == OUTDEV_PRINTER )
- // nFlags |= WINDOW_DRAW_MONO;
-
- pWindow->Draw( pDev, aP, aSz, nFlags );
+ bool bDrawSimple = ( pDev->GetOutDevType() == OUTDEV_PRINTER ) || ( pDev->GetOutDevViewType() == OUTDEV_VIEWTYPE_PRINTPREVIEW );
+ if ( bDrawSimple )
+ {
+ ULONG nFlags = WINDOW_DRAW_NOCONTROLS;
+ pWindow->Draw( pDev, aP, aSz, nFlags );
+ }
+ else
+ {
+ pWindow->PaintToDevice( pDev, aP, aSz );
+ }
}
}
}