Files
libreoffice/svx/source/dialog/frmsel.cxx

1234 lines
45 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2000-09-18 16:07:07 +00:00
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
2000-09-18 16:07:07 +00:00
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
2000-09-18 16:07:07 +00:00
*
* OpenOffice.org - a multi-platform office productivity suite
2000-09-18 16:07:07 +00:00
*
* This file is part of OpenOffice.org.
2000-09-18 16:07:07 +00:00
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
2000-09-18 16:07:07 +00:00
*
* OpenOffice.org 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 version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
2000-09-18 16:07:07 +00:00
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
2000-09-18 16:07:07 +00:00
*
************************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_svx.hxx"
#include <svx/frmsel.hxx>
2000-09-18 16:07:07 +00:00
#include <algorithm>
#include <math.h>
#include "frmselimpl.hxx"
#include "AccessibleFrameSelector.hxx"
#include <svx/dialmgr.hxx>
#include <svx/dialogs.hrc>
#include "frmsel.hrc"
#include <tools/rcid.h>
namespace svx {
using ::com::sun::star::uno::Reference;
using ::com::sun::star::accessibility::XAccessible;
// ============================================================================
// global functions from framebordertype.hxx
2000-09-18 16:07:07 +00:00
FrameBorderType GetFrameBorderTypeFromIndex( size_t nIndex )
{
DBG_ASSERT( nIndex < (size_t)FRAMEBORDERTYPE_COUNT,
"svx::GetFrameBorderTypeFromIndex - invalid index" );
return static_cast< FrameBorderType >( nIndex + 1 );
}
size_t GetIndexFromFrameBorderType( FrameBorderType eBorder )
{
DBG_ASSERT( eBorder != FRAMEBORDER_NONE,
"svx::GetIndexFromFrameBorderType - invalid frame border type" );
return static_cast< size_t >( eBorder ) - 1;
}
// ============================================================================
namespace {
/** Space between outer control border and any graphical element of the control. */
const long FRAMESEL_GEOM_OUTER = 2;
/** Space between arrows and usable inner area. */
const long FRAMESEL_GEOM_INNER = 3;
/** Maximum width to draw a frame border style. */
const long FRAMESEL_GEOM_WIDTH = 9;
/** Additional margin for click area of outer lines. */
const long FRAMESEL_GEOM_ADD_CLICK_OUTER = 5;
/** Additional margin for click area of inner lines. */
const long FRAMESEL_GEOM_ADD_CLICK_INNER = 2;
// ----------------------------------------------------------------------------
2010-11-06 19:23:59 +01:00
static const frame::Style OBJ_FRAMESTYLE_DONTCARE( 3, 0, 0, SOLID );
static const FrameBorder OBJ_FRAMEBORDER_NONE( FRAMEBORDER_NONE );
// ----------------------------------------------------------------------------
/** Returns the corresponding flag for a frame border. */
FrameSelFlags lclGetFlagFromType( FrameBorderType eBorder )
{
switch( eBorder )
{
case FRAMEBORDER_LEFT: return FRAMESEL_LEFT;
case FRAMEBORDER_RIGHT: return FRAMESEL_RIGHT;
case FRAMEBORDER_TOP: return FRAMESEL_TOP;
case FRAMEBORDER_BOTTOM: return FRAMESEL_BOTTOM;
case FRAMEBORDER_HOR: return FRAMESEL_INNER_HOR;
case FRAMEBORDER_VER: return FRAMESEL_INNER_VER;
case FRAMEBORDER_TLBR: return FRAMESEL_DIAG_TLBR;
case FRAMEBORDER_BLTR: return FRAMESEL_DIAG_BLTR;
case FRAMEBORDER_NONE : break;
}
return FRAMESEL_NONE;
}
/** Converts an SvxBorderLine line width (in twips) to a pixel line width. */
inline sal_uInt16 lclGetPixel( sal_uInt16 nWidth )
{
// convert all core styles expect 0 to a visible UI style (at least 1 pixel), map 1pt to 1pixel
return nWidth ? std::min< sal_uInt16 >( std::max< sal_uInt16 >( (nWidth + 5) / 20, 1 ), FRAMESEL_GEOM_WIDTH ) : 0;
}
/** Merges the rSource polypolygon into the rDest polypolygon. */
inline void lclPolyPolyUnion( PolyPolygon& rDest, const PolyPolygon& rSource )
{
const PolyPolygon aTmp( rDest );
aTmp.GetUnion( rSource, rDest );
}
} // namespace
// ============================================================================
// FrameBorder
// ============================================================================
FrameBorder::FrameBorder( FrameBorderType eType ) :
meType( eType ),
meState( FRAMESTATE_HIDE ),
meKeyLeft( FRAMEBORDER_NONE ),
meKeyRight( FRAMEBORDER_NONE ),
meKeyTop( FRAMEBORDER_NONE ),
meKeyBottom( FRAMEBORDER_NONE ),
mbEnabled( false ),
mbSelected( false )
{
}
void FrameBorder::Enable( FrameSelFlags nFlags )
{
mbEnabled = (nFlags & lclGetFlagFromType( meType )) != 0;
if( !mbEnabled )
SetState( FRAMESTATE_HIDE );
}
void FrameBorder::SetCoreStyle( const SvxBorderLine* pStyle )
{
if( pStyle )
maCoreStyle = *pStyle;
else
maCoreStyle = SvxBorderLine();
// from twips to points
maUIStyle.Set( maCoreStyle, 0.05, FRAMESEL_GEOM_WIDTH );
meState = maUIStyle.Prim() ? FRAMESTATE_SHOW : FRAMESTATE_HIDE;
}
void FrameBorder::SetState( FrameBorderState eState )
{
meState = eState;
switch( meState )
2002-03-08 10:14:19 +00:00
{
case FRAMESTATE_SHOW:
DBG_ERRORFILE( "svx::FrameBorder::SetState - use SetCoreStyle to make border visible" );
break;
case FRAMESTATE_HIDE:
maCoreStyle = SvxBorderLine();
maUIStyle.Clear();
break;
case FRAMESTATE_DONTCARE:
maCoreStyle = SvxBorderLine();
maUIStyle = OBJ_FRAMESTYLE_DONTCARE;
break;
2002-03-08 10:14:19 +00:00
}
}
void FrameBorder::AddFocusPolygon( const Polygon& rFocus )
{
lclPolyPolyUnion( maFocusArea, rFocus );
}
void FrameBorder::MergeFocusToPolyPolygon( PolyPolygon& rPPoly ) const
{
lclPolyPolyUnion( rPPoly, maFocusArea );
}
void FrameBorder::AddClickRect( const Rectangle& rRect )
{
lclPolyPolyUnion( maClickArea, Polygon( rRect ) );
}
bool FrameBorder::ContainsClickPoint( const Point& rPos ) const
{
return Region( maClickArea ).IsInside( rPos );
}
void FrameBorder::MergeClickAreaToPolyPolygon( PolyPolygon& rPPoly ) const
{
lclPolyPolyUnion( rPPoly, maClickArea );
}
Rectangle FrameBorder::GetClickBoundRect() const
{
return maClickArea.GetBoundRect();
}
void FrameBorder::SetKeyboardNeighbors(
FrameBorderType eLeft, FrameBorderType eRight, FrameBorderType eTop, FrameBorderType eBottom )
{
meKeyLeft = eLeft;
meKeyRight = eRight;
meKeyTop = eTop;
meKeyBottom = eBottom;
}
FrameBorderType FrameBorder::GetKeyboardNeighbor( sal_uInt16 nKeyCode ) const
{
FrameBorderType eBorder = FRAMEBORDER_NONE;
switch( nKeyCode )
{
case KEY_LEFT: eBorder = meKeyLeft; break;
case KEY_RIGHT: eBorder = meKeyRight; break;
case KEY_UP: eBorder = meKeyTop; break;
case KEY_DOWN: eBorder = meKeyBottom; break;
default: DBG_ERRORFILE( "svx::FrameBorder::GetKeyboardNeighbor - unknown key code" );
}
return eBorder;
}
// ============================================================================
// FrameSelectorImpl
// ============================================================================
FrameSelectorImpl::FrameSelectorImpl( FrameSelector& rFrameSel ) :
Resource( SVX_RES( RID_SVXSTR_BORDER_CONTROL ) ),
mrFrameSel( rFrameSel ),
maILArrows( 16 ),
maLeft( FRAMEBORDER_LEFT ),
maRight( FRAMEBORDER_RIGHT ),
maTop( FRAMEBORDER_TOP ),
maBottom( FRAMEBORDER_BOTTOM ),
maHor( FRAMEBORDER_HOR ),
maVer( FRAMEBORDER_VER ),
maTLBR( FRAMEBORDER_TLBR ),
maBLTR( FRAMEBORDER_BLTR ),
mnFlags( FRAMESEL_OUTER ),
mbHor( false ),
mbVer( false ),
mbTLBR( false ),
mbBLTR( false ),
mbFullRepaint( true ),
mbAutoSelect( true ),
mbClicked( false ),
mbHCMode( false ),
mpAccess( 0 ),
maChildVec( 8, static_cast< a11y::AccFrameSelector* >( 0 ) ),
mxChildVec( 8 )
{
FreeResource();
maAllBorders.resize( FRAMEBORDERTYPE_COUNT, 0 );
maAllBorders[ GetIndexFromFrameBorderType( FRAMEBORDER_LEFT ) ] = &maLeft;
maAllBorders[ GetIndexFromFrameBorderType( FRAMEBORDER_RIGHT ) ] = &maRight;
maAllBorders[ GetIndexFromFrameBorderType( FRAMEBORDER_TOP ) ] = &maTop;
maAllBorders[ GetIndexFromFrameBorderType( FRAMEBORDER_BOTTOM ) ] = &maBottom;
maAllBorders[ GetIndexFromFrameBorderType( FRAMEBORDER_HOR ) ] = &maHor;
maAllBorders[ GetIndexFromFrameBorderType( FRAMEBORDER_VER ) ] = &maVer;
maAllBorders[ GetIndexFromFrameBorderType( FRAMEBORDER_TLBR ) ] = &maTLBR;
maAllBorders[ GetIndexFromFrameBorderType( FRAMEBORDER_BLTR ) ] = &maBLTR;
#if OSL_DEBUG_LEVEL >= 2
{
bool bOk = true;
for( FrameBorderCIter aIt( maAllBorders ); bOk && aIt.Is(); bOk = (*aIt != 0), ++aIt );
DBG_ASSERT( bOk, "svx::FrameSelectorImpl::FrameSelectorImpl - missing entry in maAllBorders" );
}
#endif
// left neighbor right neighbor upper neighbor lower neighbor
maLeft.SetKeyboardNeighbors( FRAMEBORDER_NONE, FRAMEBORDER_TLBR, FRAMEBORDER_TOP, FRAMEBORDER_BOTTOM );
maRight.SetKeyboardNeighbors( FRAMEBORDER_BLTR, FRAMEBORDER_NONE, FRAMEBORDER_TOP, FRAMEBORDER_BOTTOM );
maTop.SetKeyboardNeighbors( FRAMEBORDER_LEFT, FRAMEBORDER_RIGHT, FRAMEBORDER_NONE, FRAMEBORDER_TLBR );
maBottom.SetKeyboardNeighbors( FRAMEBORDER_LEFT, FRAMEBORDER_RIGHT, FRAMEBORDER_BLTR, FRAMEBORDER_NONE );
maHor.SetKeyboardNeighbors( FRAMEBORDER_LEFT, FRAMEBORDER_RIGHT, FRAMEBORDER_TLBR, FRAMEBORDER_BLTR );
maVer.SetKeyboardNeighbors( FRAMEBORDER_TLBR, FRAMEBORDER_BLTR, FRAMEBORDER_TOP, FRAMEBORDER_BOTTOM );
maTLBR.SetKeyboardNeighbors( FRAMEBORDER_LEFT, FRAMEBORDER_VER, FRAMEBORDER_TOP, FRAMEBORDER_HOR );
maBLTR.SetKeyboardNeighbors( FRAMEBORDER_VER, FRAMEBORDER_RIGHT, FRAMEBORDER_HOR, FRAMEBORDER_BOTTOM );
}
FrameSelectorImpl::~FrameSelectorImpl()
{
if( mpAccess )
mpAccess->Invalidate();
for( AccessibleImplVec::iterator aIt = maChildVec.begin(), aEnd = maChildVec.end(); aIt != aEnd; ++aIt )
if( *aIt )
(*aIt)->Invalidate();
}
// initialization -------------------------------------------------------------
void FrameSelectorImpl::Initialize( FrameSelFlags nFlags )
{
mnFlags = nFlags;
maEnabBorders.clear();
for( FrameBorderIter aIt( maAllBorders ); aIt.Is(); ++aIt )
{
(*aIt)->Enable( mnFlags );
if( (*aIt)->IsEnabled() )
maEnabBorders.push_back( *aIt );
}
mbHor = maHor.IsEnabled();
mbVer = maVer.IsEnabled();
mbTLBR = maTLBR.IsEnabled();
mbBLTR = maBLTR.IsEnabled();
InitVirtualDevice();
}
void FrameSelectorImpl::InitColors()
{
const StyleSettings& rSett = mrFrameSel.GetSettings().GetStyleSettings();
maBackCol = rSett.GetFieldColor();
mbHCMode = rSett.GetHighContrastMode();
maArrowCol = rSett.GetFieldTextColor();
maMarkCol.operator=( maBackCol ).Merge( maArrowCol, mbHCMode ? 0x80 : 0xC0 );
maHCLineCol = rSett.GetLabelTextColor();
}
void FrameSelectorImpl::InitArrowImageList()
{
/* Build the arrow images bitmap with current colors. */
Color pColorAry1[3];
Color pColorAry2[3];
pColorAry1[0] = Color( 0, 0, 0 );
pColorAry2[0] = maArrowCol; // black -> arrow color
pColorAry1[1] = Color( 0, 255, 0 );
pColorAry2[1] = maMarkCol; // green -> marker color
pColorAry1[2] = Color( 255, 0, 255 );
pColorAry2[2] = maBackCol; // magenta -> background
GetRes( SVX_RES( RID_SVXSTR_BORDER_CONTROL ).SetRT( RSC_RESOURCE ) );
maILArrows.InsertFromHorizontalBitmap(
SVX_RES( BMP_FRMSEL_ARROWS ), 16, NULL, pColorAry1, pColorAry2, 3);
FreeResource();
DBG_ASSERT( maILArrows.GetImageSize().Height() == maILArrows.GetImageSize().Width(),
"svx::FrameSelectorImpl::InitArrowImageList - images are not squarish" );
mnArrowSize = maILArrows.GetImageSize().Height();
}
void FrameSelectorImpl::InitGlobalGeometry()
{
Size aCtrlSize( mrFrameSel.CalcOutputSize( mrFrameSel.GetSizePixel() ) );
/* nMinSize is the lower of width and height (control will always be squarish).
FRAMESEL_GEOM_OUTER is the minimal distance between inner control border
and any element. */
long nMinSize = Min( aCtrlSize.Width(), aCtrlSize.Height() ) - 2 * FRAMESEL_GEOM_OUTER;
/* nFixedSize is the size all existing elements need in one direction:
the diag. arrow, space betw. arrow and frame border, outer frame border,
inner frame border, other outer frame border, space betw. frame border
and arrow, the other arrow. */
long nFixedSize = 2 * mnArrowSize + 2 * FRAMESEL_GEOM_INNER + 3 * FRAMESEL_GEOM_WIDTH;
/* nBetwBordersSize contains the size between an outer and inner frame border (made odd). */
long nBetwBordersSize = (((nMinSize - nFixedSize) / 2) - 1) | 1;
/* The final size of the usable area. */
mnCtrlSize = 2 * nBetwBordersSize + nFixedSize;
maVirDev.SetOutputSizePixel( Size( mnCtrlSize, mnCtrlSize ) );
/* Center the virtual device in the control. */
maVirDevPos = Point( (aCtrlSize.Width() - mnCtrlSize) / 2, (aCtrlSize.Height() - mnCtrlSize) / 2 );
}
void FrameSelectorImpl::InitBorderGeometry()
{
size_t nCol, nCols, nRow, nRows;
// Global border geometry values ------------------------------------------
/* mnLine* is the middle point inside a frame border (i.e. mnLine1 is mid X inside left border). */
mnLine1 = mnArrowSize + FRAMESEL_GEOM_INNER + FRAMESEL_GEOM_WIDTH / 2;
mnLine2 = mnCtrlSize / 2;
mnLine3 = 2 * mnLine2 - mnLine1;
// Frame helper array -----------------------------------------------------
maArray.Initialize( mbVer ? 2 : 1, mbHor ? 2 : 1 );
maArray.SetUseDiagDoubleClipping( true );
maArray.SetXOffset( mnLine1 );
maArray.SetAllColWidths( (mbVer ? mnLine2 : mnLine3) - mnLine1 );
maArray.SetYOffset( mnLine1 );
maArray.SetAllRowHeights( (mbHor ? mnLine2 : mnLine3) - mnLine1 );
Rectangle aTLRect( maArray.GetCellRect( 0, 0 ) );
// Focus polygons ---------------------------------------------------------
/* Width for focus rectangles from center of frame borders. */
mnFocusOffs = FRAMESEL_GEOM_WIDTH / 2 + 1;
maLeft.AddFocusPolygon( Rectangle( mnLine1 - mnFocusOffs, mnLine1 - mnFocusOffs, mnLine1 + mnFocusOffs, mnLine3 + mnFocusOffs ) );
maVer.AddFocusPolygon( Rectangle( mnLine2 - mnFocusOffs, mnLine1 - mnFocusOffs, mnLine2 + mnFocusOffs, mnLine3 + mnFocusOffs ) );
maRight.AddFocusPolygon( Rectangle( mnLine3 - mnFocusOffs, mnLine1 - mnFocusOffs, mnLine3 + mnFocusOffs, mnLine3 + mnFocusOffs ) );
maTop.AddFocusPolygon( Rectangle( mnLine1 - mnFocusOffs, mnLine1 - mnFocusOffs, mnLine3 + mnFocusOffs, mnLine1 + mnFocusOffs ) );
maHor.AddFocusPolygon( Rectangle( mnLine1 - mnFocusOffs, mnLine2 - mnFocusOffs, mnLine3 + mnFocusOffs, mnLine2 + mnFocusOffs ) );
maBottom.AddFocusPolygon( Rectangle( mnLine1 - mnFocusOffs, mnLine3 - mnFocusOffs, mnLine3 + mnFocusOffs, mnLine3 + mnFocusOffs ) );
for( nCol = 0, nCols = maArray.GetColCount(); nCol < nCols; ++nCol )
2002-03-08 10:14:19 +00:00
{
for( nRow = 0, nRows = maArray.GetRowCount(); nRow < nRows; ++nRow )
2002-03-08 10:14:19 +00:00
{
Rectangle aRect( maArray.GetCellRect( nCol, nRow ) );
long nDiagFocusOffsX = frame::GetTLDiagOffset( -mnFocusOffs, mnFocusOffs, maArray.GetHorDiagAngle( nCol, nRow ) );
long nDiagFocusOffsY = frame::GetTLDiagOffset( -mnFocusOffs, mnFocusOffs, maArray.GetVerDiagAngle( nCol, nRow ) );
std::vector< Point > aFocusVec;
aFocusVec.push_back( Point( aRect.Left() - mnFocusOffs, aRect.Top() + nDiagFocusOffsY ) );
aFocusVec.push_back( Point( aRect.Left() - mnFocusOffs, aRect.Top() - mnFocusOffs ) );
aFocusVec.push_back( Point( aRect.Left() + nDiagFocusOffsX, aRect.Top() - mnFocusOffs ) );
aFocusVec.push_back( Point( aRect.Right() + mnFocusOffs, aRect.Bottom() - nDiagFocusOffsY ) );
aFocusVec.push_back( Point( aRect.Right() + mnFocusOffs, aRect.Bottom() + mnFocusOffs ) );
aFocusVec.push_back( Point( aRect.Right() - nDiagFocusOffsX, aRect.Bottom() + mnFocusOffs ) );
maTLBR.AddFocusPolygon( Polygon( static_cast< sal_uInt16 >( aFocusVec.size() ), &aFocusVec[ 0 ] ) );
aFocusVec.clear();
aFocusVec.push_back( Point( aRect.Right() + mnFocusOffs, aRect.Top() + nDiagFocusOffsY ) );
aFocusVec.push_back( Point( aRect.Right() + mnFocusOffs, aRect.Top() - mnFocusOffs ) );
aFocusVec.push_back( Point( aRect.Right() - nDiagFocusOffsX, aRect.Top() - mnFocusOffs ) );
aFocusVec.push_back( Point( aRect.Left() - mnFocusOffs, aRect.Bottom() - nDiagFocusOffsY ) );
aFocusVec.push_back( Point( aRect.Left() - mnFocusOffs, aRect.Bottom() + mnFocusOffs ) );
aFocusVec.push_back( Point( aRect.Left() + nDiagFocusOffsX, aRect.Bottom() + mnFocusOffs ) );
maBLTR.AddFocusPolygon( Polygon( static_cast< sal_uInt16 >( aFocusVec.size() ), &aFocusVec[ 0 ] ) );
}
}
// Click areas ------------------------------------------------------------
for( FrameBorderIter aIt( maAllBorders ); aIt.Is(); ++aIt )
(*aIt)->ClearClickArea();
/* Additional space for click area: is added to the space available to draw
the frame borders. For instance left frame border:
- To left, top, and bottom always big additional space (outer area).
- To right: Dependent on existence of inner vertical frame border
(if enabled, use less space).
*/
long nClO = FRAMESEL_GEOM_WIDTH / 2 + FRAMESEL_GEOM_ADD_CLICK_OUTER;
long nClI = (mbTLBR && mbBLTR) ? (FRAMESEL_GEOM_WIDTH / 2 + FRAMESEL_GEOM_ADD_CLICK_INNER) : nClO;
long nClH = mbHor ? nClI : nClO; // additional space dependent of horizontal inner border
long nClV = mbVer ? nClI : nClO; // additional space dependent of vertical inner border
maLeft.AddClickRect( Rectangle( mnLine1 - nClO, mnLine1 - nClO, mnLine1 + nClV, mnLine3 + nClO ) );
maVer.AddClickRect( Rectangle( mnLine2 - nClI, mnLine1 - nClO, mnLine2 + nClI, mnLine3 + nClO ) );
maRight.AddClickRect( Rectangle( mnLine3 - nClV, mnLine1 - nClO, mnLine3 + nClO, mnLine3 + nClO ) );
maTop.AddClickRect( Rectangle( mnLine1 - nClO, mnLine1 - nClO, mnLine3 + nClO, mnLine1 + nClH ) );
maHor.AddClickRect( Rectangle( mnLine1 - nClO, mnLine2 - nClI, mnLine3 + nClO, mnLine2 + nClI ) );
maBottom.AddClickRect( Rectangle( mnLine1 - nClO, mnLine3 - nClH, mnLine3 + nClO, mnLine3 + nClO ) );
/* Diagonal frame borders use the remaining space between outer and inner frame borders. */
if( mbTLBR || mbBLTR )
{
for( nCol = 0, nCols = maArray.GetColCount(); nCol < nCols; ++nCol )
{
for( nRow = 0, nRows = maArray.GetRowCount(); nRow < nRows; ++nRow )
2002-03-08 10:14:19 +00:00
{
// the usable area between horizonal/vertical frame borders of current quadrant
Rectangle aRect( maArray.GetCellRect( nCol, nRow ) );
aRect.Left() += nClV + 1;
aRect.Right() -= nClV + 1;
aRect.Top() += nClH + 1;
aRect.Bottom() -= nClH + 1;
/* Both diagonal frame borders enabled. */
if( mbTLBR && mbBLTR )
2002-03-08 10:14:19 +00:00
{
// single areas
Point aMid( aRect.Center() );
maTLBR.AddClickRect( Rectangle( aRect.TopLeft(), aMid ) );
maTLBR.AddClickRect( Rectangle( aMid + Point( 1, 1 ), aRect.BottomRight() ) );
maBLTR.AddClickRect( Rectangle( aRect.Left(), aMid.Y() + 1, aMid.X(), aRect.Bottom() ) );
maBLTR.AddClickRect( Rectangle( aMid.X() + 1, aRect.Top(), aRect.Right(), aMid.Y() ) );
// centered rectangle for both frame borders
Rectangle aMidRect( aRect.TopLeft(), Size( aRect.GetWidth() / 3, aRect.GetHeight() / 3 ) );
aMidRect.Move( (aRect.GetWidth() - aMidRect.GetWidth()) / 2, (aRect.GetHeight() - aMidRect.GetHeight()) / 2 );
maTLBR.AddClickRect( aMidRect );
maBLTR.AddClickRect( aMidRect );
2002-03-08 10:14:19 +00:00
}
/* One of the diagonal frame borders enabled - use entire rectangle. */
else if( mbTLBR && !mbBLTR ) // top-left to bottom-right only
maTLBR.AddClickRect( aRect );
else if( !mbTLBR && mbBLTR ) // bottom-left to top-right only
maBLTR.AddClickRect( aRect );
2002-03-08 10:14:19 +00:00
}
}
}
}
void FrameSelectorImpl::InitVirtualDevice()
{
// initialize resources
InitColors();
InitArrowImageList();
// initialize geometry
InitGlobalGeometry();
InitBorderGeometry();
// correct background around the used area
mrFrameSel.SetBackground( Wallpaper( maBackCol ) );
DoInvalidate( true );
}
// frame border access --------------------------------------------------------
const FrameBorder& FrameSelectorImpl::GetBorder( FrameBorderType eBorder ) const
{
size_t nIndex = GetIndexFromFrameBorderType( eBorder );
if( nIndex < maAllBorders.size() )
return *maAllBorders[ nIndex ];
DBG_ERRORFILE( "svx::FrameSelectorImpl::GetBorder - unknown border type" );
return maTop;
}
FrameBorder& FrameSelectorImpl::GetBorderAccess( FrameBorderType eBorder )
{
return const_cast< FrameBorder& >( GetBorder( eBorder ) );
}
// drawing --------------------------------------------------------------------
void FrameSelectorImpl::DrawBackground()
{
// clear the area
maVirDev.SetLineColor();
maVirDev.SetFillColor( maBackCol );
maVirDev.DrawRect( Rectangle( Point( 0, 0 ), maVirDev.GetOutputSizePixel() ) );
// draw the inner gray (or whatever color) rectangle
maVirDev.SetLineColor();
maVirDev.SetFillColor( maMarkCol );
maVirDev.DrawRect( Rectangle(
mnLine1 - mnFocusOffs, mnLine1 - mnFocusOffs, mnLine3 + mnFocusOffs, mnLine3 + mnFocusOffs ) );
// draw the white space for enabled frame borders
PolyPolygon aPPoly;
for( FrameBorderCIter aIt( maEnabBorders ); aIt.Is(); ++aIt )
(*aIt)->MergeFocusToPolyPolygon( aPPoly );
aPPoly.Optimize( POLY_OPTIMIZE_CLOSE );
maVirDev.SetLineColor( maBackCol );
maVirDev.SetFillColor( maBackCol );
maVirDev.DrawPolyPolygon( aPPoly );
}
void FrameSelectorImpl::DrawArrows( const FrameBorder& rBorder )
{
DBG_ASSERT( rBorder.IsEnabled(), "svx::FrameSelectorImpl::DrawArrows - access to disabled border" );
long nLinePos = 0;
switch( rBorder.GetType() )
{
case FRAMEBORDER_LEFT:
case FRAMEBORDER_TOP: nLinePos = mnLine1; break;
case FRAMEBORDER_VER:
case FRAMEBORDER_HOR: nLinePos = mnLine2; break;
case FRAMEBORDER_RIGHT:
case FRAMEBORDER_BOTTOM: nLinePos = mnLine3; break;
default: ; //prevent warning
}
nLinePos -= mnArrowSize / 2;
long nTLPos = 0;
long nBRPos = mnCtrlSize - mnArrowSize;
Point aPos1, aPos2;
sal_uInt16 nImgId1 = 0, nImgId2 = 0;
switch( rBorder.GetType() )
{
case FRAMEBORDER_LEFT:
case FRAMEBORDER_RIGHT:
case FRAMEBORDER_VER:
aPos1 = Point( nLinePos, nTLPos ); nImgId1 = 1;
aPos2 = Point( nLinePos, nBRPos ); nImgId2 = 2;
break;
case FRAMEBORDER_TOP:
case FRAMEBORDER_BOTTOM:
case FRAMEBORDER_HOR:
aPos1 = Point( nTLPos, nLinePos ); nImgId1 = 3;
aPos2 = Point( nBRPos, nLinePos ); nImgId2 = 4;
break;
case FRAMEBORDER_TLBR:
aPos1 = Point( nTLPos, nTLPos ); nImgId1 = 5;
aPos2 = Point( nBRPos, nBRPos ); nImgId2 = 6;
break;
case FRAMEBORDER_BLTR:
aPos1 = Point( nTLPos, nBRPos ); nImgId1 = 7;
aPos2 = Point( nBRPos, nTLPos ); nImgId2 = 8;
break;
default: ; //prevent warning
}
// Arrow or marker? Do not draw arrows into disabled control.
sal_uInt16 nSelectAdd = (mrFrameSel.IsEnabled() && rBorder.IsSelected()) ? 0 : 8;
maVirDev.DrawImage( aPos1, maILArrows.GetImage( nImgId1 + nSelectAdd ) );
maVirDev.DrawImage( aPos2, maILArrows.GetImage( nImgId2 + nSelectAdd ) );
2000-09-18 16:07:07 +00:00
}
void FrameSelectorImpl::DrawAllArrows()
{
for( FrameBorderCIter aIt( maEnabBorders ); aIt.Is(); ++aIt )
DrawArrows( **aIt );
}
2000-09-18 16:07:07 +00:00
Color FrameSelectorImpl::GetDrawLineColor( const Color& rColor ) const
{
Color aColor( mbHCMode ? maHCLineCol : rColor );
if( aColor == maBackCol )
aColor.Invert();
return aColor;
}
2000-09-18 16:07:07 +00:00
void FrameSelectorImpl::DrawAllFrameBorders()
2000-09-18 16:07:07 +00:00
{
// Translate core colors to current UI colors (regards current background and HC mode).
for( FrameBorderIter aIt( maEnabBorders ); aIt.Is(); ++aIt )
2000-09-18 16:07:07 +00:00
{
2010-11-06 19:23:59 +01:00
Color aCoreColorPrim = ((*aIt)->GetState() == FRAMESTATE_DONTCARE) ? maMarkCol : (*aIt)->GetCoreStyle().GetColorOut();
Color aCoreColorSecn = ((*aIt)->GetState() == FRAMESTATE_DONTCARE) ? maMarkCol : (*aIt)->GetCoreStyle().GetColorIn();
(*aIt)->SetUIColorPrim( GetDrawLineColor( aCoreColorPrim ) );
(*aIt)->SetUIColorSecn( GetDrawLineColor( aCoreColorSecn ) );
2000-09-18 16:07:07 +00:00
}
// Copy all frame border styles to the helper array
maArray.SetColumnStyleLeft( 0, maLeft.GetUIStyle() );
if( mbVer ) maArray.SetColumnStyleLeft( 1, maVer.GetUIStyle() );
// Invert the style for the right line
const frame::Style rRightStyle = maRight.GetUIStyle( );
2010-11-06 19:23:59 +01:00
frame::Style rInvertedRight( rRightStyle.GetColorPrim(),
rRightStyle.GetColorSecn(), rRightStyle.GetColorGap(),
rRightStyle.UseGapColor(),
rRightStyle.Secn(), rRightStyle.Dist(), rRightStyle.Prim( ),
2010-11-06 19:23:59 +01:00
rRightStyle.Type( ) );
maArray.SetColumnStyleRight( mbVer ? 1 : 0, rInvertedRight );
2000-09-18 16:07:07 +00:00
maArray.SetRowStyleTop( 0, maTop.GetUIStyle() );
if( mbHor )
{
// Invert the style for the hor line to match the real borders
const frame::Style rHorStyle = maHor.GetUIStyle();
2010-11-06 19:23:59 +01:00
frame::Style rInvertedHor( rHorStyle.GetColorPrim(),
rHorStyle.GetColorSecn(), rHorStyle.GetColorGap(),
rHorStyle.UseGapColor(),
rHorStyle.Secn(), rHorStyle.Dist(), rHorStyle.Prim( ),
2010-11-06 19:23:59 +01:00
rHorStyle.Type() );
maArray.SetRowStyleTop( 1, rInvertedHor );
}
// Invert the style for the bottom line
const frame::Style rBottomStyle = maBottom.GetUIStyle( );
2010-11-06 19:23:59 +01:00
frame::Style rInvertedBottom( rBottomStyle.GetColorPrim(),
rBottomStyle.GetColorSecn(), rBottomStyle.GetColorGap(),
rBottomStyle.UseGapColor(),
rBottomStyle.Secn(), rBottomStyle.Dist(), rBottomStyle.Prim( ),
2010-11-06 19:23:59 +01:00
rBottomStyle.Type() );
maArray.SetRowStyleBottom( mbHor ? 1 : 0, rInvertedBottom );
2000-09-18 16:07:07 +00:00
for( size_t nCol = 0; nCol < maArray.GetColCount(); ++nCol )
for( size_t nRow = 0; nRow < maArray.GetRowCount(); ++nRow )
maArray.SetCellStyleDiag( nCol, nRow, maTLBR.GetUIStyle(), maBLTR.GetUIStyle() );
2000-09-18 16:07:07 +00:00
// Let the helper array draw itself
maArray.DrawArray( maVirDev );
2000-09-18 16:07:07 +00:00
}
void FrameSelectorImpl::DrawVirtualDevice()
{
DrawBackground();
DrawAllArrows();
DrawAllFrameBorders();
mbFullRepaint = false;
}
void FrameSelectorImpl::CopyVirDevToControl()
{
if( mbFullRepaint )
DrawVirtualDevice();
mrFrameSel.DrawBitmap( maVirDevPos, maVirDev.GetBitmap( Point( 0, 0 ), maVirDev.GetOutputSizePixel() ) );
}
void FrameSelectorImpl::DrawAllTrackingRects()
{
PolyPolygon aPPoly;
if( mrFrameSel.IsAnyBorderSelected() )
{
for( SelFrameBorderCIter aIt( maEnabBorders ); aIt.Is(); ++aIt )
(*aIt)->MergeFocusToPolyPolygon( aPPoly );
aPPoly.Move( maVirDevPos.X(), maVirDevPos.Y() );
}
else
// no frame border selected -> draw tracking rectangle around entire control
aPPoly.Insert( Polygon( Rectangle( maVirDevPos, maVirDev.GetOutputSizePixel() ) ) );
aPPoly.Optimize( POLY_OPTIMIZE_CLOSE );
for( sal_uInt16 nIdx = 0, nCount = aPPoly.Count(); nIdx < nCount; ++nIdx )
mrFrameSel.InvertTracking( aPPoly.GetObject( nIdx ), SHOWTRACK_SMALL | SHOWTRACK_WINDOW );
}
Point FrameSelectorImpl::GetDevPosFromMousePos( const Point& rMousePos ) const
2002-02-04 08:32:08 +00:00
{
return rMousePos - maVirDevPos;
2002-02-04 08:32:08 +00:00
}
void FrameSelectorImpl::DoInvalidate( bool bFullRepaint )
2002-02-04 08:32:08 +00:00
{
mbFullRepaint |= bFullRepaint;
mrFrameSel.Invalidate( INVALIDATE_NOERASE );
2002-02-04 08:32:08 +00:00
}
// frame border state and style -----------------------------------------------
void FrameSelectorImpl::SetBorderState( FrameBorder& rBorder, FrameBorderState eState )
2000-09-18 16:07:07 +00:00
{
DBG_ASSERT( rBorder.IsEnabled(), "svx::FrameSelectorImpl::SetBorderState - access to disabled border" );
if( eState == FRAMESTATE_SHOW )
SetBorderCoreStyle( rBorder, &maCurrStyle );
else
rBorder.SetState( eState );
DoInvalidate( true );
2000-09-18 16:07:07 +00:00
}
void FrameSelectorImpl::SetBorderCoreStyle( FrameBorder& rBorder, const SvxBorderLine* pStyle )
2000-09-18 16:07:07 +00:00
{
DBG_ASSERT( rBorder.IsEnabled(), "svx::FrameSelectorImpl::SetBorderCoreStyle - access to disabled border" );
rBorder.SetCoreStyle( pStyle );
DoInvalidate( true );
}
2000-09-18 16:07:07 +00:00
void FrameSelectorImpl::ToggleBorderState( FrameBorder& rBorder )
{
bool bDontCare = mrFrameSel.SupportsDontCareState();
switch( rBorder.GetState() )
2000-09-18 16:07:07 +00:00
{
// same order as tristate check box: visible -> don't care -> hidden
case FRAMESTATE_SHOW:
SetBorderState( rBorder, bDontCare ? FRAMESTATE_DONTCARE : FRAMESTATE_HIDE );
break;
case FRAMESTATE_HIDE:
SetBorderState( rBorder, FRAMESTATE_SHOW );
break;
case FRAMESTATE_DONTCARE:
SetBorderState( rBorder, FRAMESTATE_HIDE );
break;
2000-09-18 16:07:07 +00:00
}
}
// frame border selection -----------------------------------------------------
2000-09-18 16:07:07 +00:00
void FrameSelectorImpl::SelectBorder( FrameBorder& rBorder, bool bSelect )
2000-09-18 16:07:07 +00:00
{
DBG_ASSERT( rBorder.IsEnabled(), "svx::FrameSelectorImpl::SelectBorder - access to disabled border" );
rBorder.Select( bSelect );
DrawArrows( rBorder );
DoInvalidate( false );
maSelectHdl.Call( this );
}
2000-09-18 16:07:07 +00:00
void FrameSelectorImpl::SilentGrabFocus()
{
bool bOldAuto = mbAutoSelect;
mbAutoSelect = false;
mrFrameSel.GrabFocus();
mbAutoSelect = bOldAuto;
}
2000-09-18 16:07:07 +00:00
bool FrameSelectorImpl::SelectedBordersEqual() const
{
bool bEqual = true;
SelFrameBorderCIter aIt( maEnabBorders );
if( aIt.Is() )
2000-09-18 16:07:07 +00:00
{
const SvxBorderLine& rFirstStyle = (*aIt)->GetCoreStyle();
for( ++aIt; bEqual && aIt.Is(); ++aIt )
bEqual = ((*aIt)->GetCoreStyle() == rFirstStyle);
2000-09-18 16:07:07 +00:00
}
return bEqual;
}
2000-09-18 16:07:07 +00:00
// ============================================================================
// FrameSelector
// ============================================================================
2000-09-18 16:07:07 +00:00
FrameSelector::FrameSelector( Window* pParent, const ResId& rResId ) :
Control( pParent, rResId )
{
// not in c'tor init list (avoid warning about usage of *this)
mxImpl.reset( new FrameSelectorImpl( *this ) );
EnableRTL( false ); // #107808# don't mirror the mouse handling
}
2000-09-18 16:07:07 +00:00
FrameSelector::~FrameSelector()
{
}
2000-09-18 16:07:07 +00:00
void FrameSelector::Initialize( FrameSelFlags nFlags )
{
mxImpl->Initialize( nFlags );
Show();
}
2000-09-18 16:07:07 +00:00
// enabled frame borders ------------------------------------------------------
2000-09-18 16:07:07 +00:00
bool FrameSelector::IsBorderEnabled( FrameBorderType eBorder ) const
{
return mxImpl->GetBorder( eBorder ).IsEnabled();
}
2000-09-18 16:07:07 +00:00
sal_Int32 FrameSelector::GetEnabledBorderCount() const
{
return static_cast< sal_Int32 >( mxImpl->maEnabBorders.size() );
}
2000-09-18 16:07:07 +00:00
FrameBorderType FrameSelector::GetEnabledBorderType( sal_Int32 nIndex ) const
{
FrameBorderType eBorder = FRAMEBORDER_NONE;
if( nIndex >= 0 )
2000-09-18 16:07:07 +00:00
{
size_t nVecIdx = static_cast< size_t >( nIndex );
if( nVecIdx < mxImpl->maEnabBorders.size() )
eBorder = mxImpl->maEnabBorders[ nVecIdx ]->GetType();
2000-09-18 16:07:07 +00:00
}
return eBorder;
}
2000-09-18 16:07:07 +00:00
sal_Int32 FrameSelector::GetEnabledBorderIndex( FrameBorderType eBorder ) const
{
sal_Int32 nIndex = 0;
for( FrameBorderCIter aIt( mxImpl->maEnabBorders ); aIt.Is(); ++aIt, ++nIndex )
if( (*aIt)->GetType() == eBorder )
return nIndex;
return -1;
}
2000-09-18 16:07:07 +00:00
// frame border state and style -----------------------------------------------
2000-09-18 16:07:07 +00:00
bool FrameSelector::SupportsDontCareState() const
{
return (mxImpl->mnFlags & FRAMESEL_DONTCARE) != 0;
2000-09-18 16:07:07 +00:00
}
FrameBorderState FrameSelector::GetFrameBorderState( FrameBorderType eBorder ) const
2000-09-18 16:07:07 +00:00
{
return mxImpl->GetBorder( eBorder ).GetState();
}
2002-02-04 08:32:08 +00:00
const SvxBorderLine* FrameSelector::GetFrameBorderStyle( FrameBorderType eBorder ) const
{
const SvxBorderLine& rStyle = mxImpl->GetBorder( eBorder ).GetCoreStyle();
// rest of the world uses null pointer for invisible frame border
return rStyle.GetOutWidth() ? &rStyle : 0;
2000-09-18 16:07:07 +00:00
}
void FrameSelector::ShowBorder( FrameBorderType eBorder, const SvxBorderLine* pStyle )
{
mxImpl->SetBorderCoreStyle( mxImpl->GetBorderAccess( eBorder ), pStyle );
}
2000-09-18 16:07:07 +00:00
void FrameSelector::SetBorderDontCare( FrameBorderType eBorder )
2000-09-18 16:07:07 +00:00
{
mxImpl->SetBorderState( mxImpl->GetBorderAccess( eBorder ), FRAMESTATE_DONTCARE );
}
2002-02-04 08:32:08 +00:00
bool FrameSelector::IsAnyBorderVisible() const
{
bool bIsSet = false;
for( FrameBorderCIter aIt( mxImpl->maEnabBorders ); !bIsSet && aIt.Is(); ++aIt )
bIsSet = ((*aIt)->GetState() == FRAMESTATE_SHOW);
return bIsSet;
2000-09-18 16:07:07 +00:00
}
void FrameSelector::HideAllBorders()
{
for( FrameBorderIter aIt( mxImpl->maEnabBorders ); aIt.Is(); ++aIt )
mxImpl->SetBorderState( **aIt, FRAMESTATE_HIDE );
}
2000-09-18 16:07:07 +00:00
Merge commit 'ooo/DEV300_m101' into integration/dev300_m101 Conflicts: avmedia/inc/avmedia/mediaitem.hxx avmedia/prj/build.lst avmedia/source/framework/mediaitem.cxx avmedia/source/gstreamer/gstcommon.hxx avmedia/source/gstreamer/gstframegrabber.cxx avmedia/source/gstreamer/gstframegrabber.hxx avmedia/source/gstreamer/gstmanager.cxx avmedia/source/gstreamer/gstmanager.hxx avmedia/source/gstreamer/gstplayer.cxx avmedia/source/gstreamer/gstplayer.hxx avmedia/source/gstreamer/gstuno.cxx avmedia/source/gstreamer/gstwindow.cxx avmedia/source/gstreamer/gstwindow.hxx avmedia/source/gstreamer/makefile.mk avmedia/source/quicktime/quicktimeuno.cxx avmedia/source/viewer/mediawindow.cxx avmedia/source/viewer/mediawindow_impl.cxx avmedia/source/viewer/mediawindow_impl.hxx avmedia/source/viewer/mediawindowbase_impl.cxx avmedia/source/win/winuno.cxx basic/inc/basic/basmgr.hxx basic/inc/basic/mybasic.hxx basic/inc/basic/process.hxx basic/inc/basic/sbmeth.hxx basic/inc/basic/sbmod.hxx basic/inc/basic/sbxdef.hxx basic/inc/basic/sbxvar.hxx basic/source/app/app.cxx basic/source/app/app.hxx basic/source/app/appbased.cxx basic/source/app/appedit.cxx basic/source/app/appwin.cxx basic/source/app/appwin.hxx basic/source/app/brkpnts.cxx basic/source/app/brkpnts.hxx basic/source/app/dialogs.cxx basic/source/app/dialogs.hxx basic/source/app/msgedit.cxx basic/source/app/mybasic.cxx basic/source/app/process.cxx basic/source/app/processw.hxx basic/source/app/textedit.cxx basic/source/basmgr/basicmanagerrepository.cxx basic/source/basmgr/basmgr.cxx basic/source/classes/disas.cxx basic/source/classes/eventatt.cxx basic/source/classes/image.cxx basic/source/classes/sb.cxx basic/source/classes/sbunoobj.cxx basic/source/classes/sbxmod.cxx basic/source/comp/codegen.cxx basic/source/comp/dim.cxx basic/source/comp/exprgen.cxx basic/source/comp/exprnode.cxx basic/source/comp/exprtree.cxx basic/source/comp/sbcomp.cxx basic/source/inc/expr.hxx basic/source/inc/object.hxx basic/source/inc/sbunoobj.hxx basic/source/runtime/dllmgr-x86.cxx basic/source/runtime/iosys.cxx basic/source/runtime/makefile.mk basic/source/runtime/methods.cxx basic/source/runtime/methods1.cxx basic/source/runtime/runtime.cxx basic/source/runtime/stdobj.cxx basic/source/runtime/step0.cxx basic/source/runtime/step1.cxx basic/source/runtime/step2.cxx basic/source/sbx/sbxarray.cxx basic/source/sbx/sbxbase.cxx basic/source/sbx/sbxbool.cxx basic/source/sbx/sbxbyte.cxx basic/source/sbx/sbxcoll.cxx basic/source/sbx/sbxconv.hxx basic/source/sbx/sbxcurr.cxx basic/source/sbx/sbxexec.cxx basic/source/sbx/sbxint.cxx basic/source/sbx/sbxobj.cxx basic/source/sbx/sbxscan.cxx basic/source/sbx/sbxstr.cxx basic/source/sbx/sbxvals.cxx basic/source/sbx/sbxvalue.cxx basic/source/sbx/sbxvar.cxx basic/workben/mgrtest.cxx configmgr/prj/build.lst configmgr/source/access.cxx configmgr/source/configurationprovider.cxx configmgr/source/defaultprovider.cxx configmgr/source/pad.cxx configmgr/source/services.cxx configmgr/source/update.cxx configmgr/source/xmlreader.cxx configmgr/source/xmlreader.hxx connectivity/prj/build.lst connectivity/qa/complex/connectivity/TestCase.java connectivity/source/cpool/Zregistration.cxx connectivity/source/drivers/adabas/Bservices.cxx connectivity/source/drivers/ado/Aservices.cxx connectivity/source/drivers/calc/Cservices.cxx connectivity/source/drivers/calc/makefile.mk connectivity/source/drivers/dbase/DIndex.cxx connectivity/source/drivers/dbase/DIndexIter.cxx connectivity/source/drivers/dbase/DNoException.cxx connectivity/source/drivers/dbase/DTable.cxx connectivity/source/drivers/dbase/Dservices.cxx connectivity/source/drivers/dbase/dindexnode.cxx connectivity/source/drivers/evoab/LNoException.cxx connectivity/source/drivers/evoab/LServices.cxx connectivity/source/drivers/evoab2/NServices.cxx connectivity/source/drivers/file/FNoException.cxx connectivity/source/drivers/file/FPreparedStatement.cxx connectivity/source/drivers/file/FResultSet.cxx connectivity/source/drivers/file/FStatement.cxx connectivity/source/drivers/file/quotedstring.cxx connectivity/source/drivers/flat/ETable.cxx connectivity/source/drivers/flat/Eservices.cxx connectivity/source/drivers/hsqldb/Hservices.cxx connectivity/source/drivers/jdbc/jservices.cxx connectivity/source/drivers/kab/KServices.cxx connectivity/source/drivers/macab/MacabServices.cxx connectivity/source/drivers/mozab/MResultSet.cxx connectivity/source/drivers/mozab/bootstrap/MNSFolders.cxx connectivity/source/drivers/mozab/bootstrap/MNSProfileDiscover.cxx connectivity/source/drivers/mysql/Yservices.cxx connectivity/source/drivers/odbc/OFunctions.cxx connectivity/source/drivers/odbc/oservices.cxx connectivity/source/inc/dbase/DIndexPage.hxx connectivity/source/inc/file/FTable.hxx connectivity/source/manager/mregistration.cxx connectivity/source/parse/PColumn.cxx desktop/prj/build.lst desktop/qa/deployment_misc/test_dp_version.cxx desktop/source/app/app.cxx desktop/source/app/appfirststart.cxx desktop/source/app/cmdlineargs.cxx desktop/source/app/cmdlineargs.hxx desktop/source/app/sofficemain.cxx desktop/source/deployment/gui/dp_gui.hrc desktop/source/deployment/gui/dp_gui_dialog2.cxx desktop/source/deployment/gui/dp_gui_dialog2.hxx desktop/source/deployment/gui/dp_gui_updatedialog.cxx desktop/source/deployment/gui/dp_gui_updatedialog.hxx desktop/source/deployment/manager/dp_extensionmanager.cxx desktop/source/deployment/manager/dp_extensionmanager.hxx desktop/source/deployment/misc/dp_misc.src desktop/source/deployment/registry/component/dp_component.cxx desktop/source/deployment/registry/configuration/dp_configuration.cxx desktop/source/deployment/registry/dp_backend.cxx desktop/source/deployment/registry/help/dp_help.cxx desktop/source/deployment/registry/script/dp_script.cxx desktop/source/migration/pages.cxx desktop/source/migration/pages.hxx desktop/source/migration/wizard.cxx desktop/source/migration/wizard.hrc desktop/source/migration/wizard.hxx desktop/source/migration/wizard.src desktop/source/pkgchk/unopkg/unopkg_shared.h desktop/source/so_comp/services.cxx desktop/source/splash/makefile.mk desktop/source/splash/services_spl.cxx desktop/source/splash/splash.cxx drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx editeng/inc/editeng/adjitem.hxx editeng/inc/editeng/bolnitem.hxx editeng/inc/editeng/borderline.hxx editeng/inc/editeng/boxitem.hxx editeng/inc/editeng/brkitem.hxx editeng/inc/editeng/brshitem.hxx editeng/inc/editeng/bulitem.hxx editeng/inc/editeng/charreliefitem.hxx editeng/inc/editeng/charrotateitem.hxx editeng/inc/editeng/charscaleitem.hxx editeng/inc/editeng/cmapitem.hxx editeng/inc/editeng/colritem.hxx editeng/inc/editeng/crsditem.hxx editeng/inc/editeng/editdata.hxx editeng/inc/editeng/editeng.hxx editeng/inc/editeng/editobj.hxx editeng/inc/editeng/editstat.hxx editeng/inc/editeng/editview.hxx editeng/inc/editeng/emphitem.hxx editeng/inc/editeng/escpitem.hxx editeng/inc/editeng/fhgtitem.hxx editeng/inc/editeng/flstitem.hxx editeng/inc/editeng/fontitem.hxx editeng/inc/editeng/frmdiritem.hxx editeng/inc/editeng/fwdtitem.hxx editeng/inc/editeng/hyznitem.hxx editeng/inc/editeng/kernitem.hxx editeng/inc/editeng/langitem.hxx editeng/inc/editeng/lrspitem.hxx editeng/inc/editeng/lspcitem.hxx editeng/inc/editeng/numitem.hxx editeng/inc/editeng/outliner.hxx editeng/inc/editeng/paravertalignitem.hxx editeng/inc/editeng/pmdlitem.hxx editeng/inc/editeng/postitem.hxx editeng/inc/editeng/protitem.hxx editeng/inc/editeng/shaditem.hxx editeng/inc/editeng/sizeitem.hxx editeng/inc/editeng/svxacorr.hxx editeng/inc/editeng/svxfont.hxx editeng/inc/editeng/svxrtf.hxx editeng/inc/editeng/swafopt.hxx editeng/inc/editeng/tstpitem.hxx editeng/inc/editeng/twolinesitem.hxx editeng/inc/editeng/txtrange.hxx editeng/inc/editeng/udlnitem.hxx editeng/inc/editeng/ulspitem.hxx editeng/inc/editeng/wghtitem.hxx editeng/inc/editeng/writingmodeitem.hxx editeng/inc/editeng/xmlcnitm.hxx editeng/inc/helpid.hrc editeng/inc/pch/precompiled_editeng.hxx editeng/source/editeng/editdbg.cxx editeng/source/editeng/editdoc.cxx editeng/source/editeng/editdoc.hxx editeng/source/editeng/editdoc2.cxx editeng/source/editeng/editeng.cxx editeng/source/editeng/editobj.cxx editeng/source/editeng/editobj2.hxx editeng/source/editeng/editsel.cxx editeng/source/editeng/editundo.cxx editeng/source/editeng/editundo.hxx editeng/source/editeng/editview.cxx editeng/source/editeng/edtspell.hxx editeng/source/editeng/eehtml.cxx editeng/source/editeng/eehtml.hxx editeng/source/editeng/eeobj.cxx editeng/source/editeng/eerdll.cxx editeng/source/editeng/eertfpar.cxx editeng/source/editeng/impedit.cxx editeng/source/editeng/impedit.hxx editeng/source/editeng/impedit2.cxx editeng/source/editeng/impedit3.cxx editeng/source/editeng/impedit4.cxx editeng/source/editeng/impedit5.cxx editeng/source/editeng/makefile.mk editeng/source/items/bulitem.cxx editeng/source/items/charhiddenitem.cxx editeng/source/items/flditem.cxx editeng/source/items/frmitems.cxx editeng/source/items/makefile.mk editeng/source/items/numitem.cxx editeng/source/items/paraitem.cxx editeng/source/items/svxfont.cxx editeng/source/items/textitem.cxx editeng/source/items/writingmodeitem.cxx editeng/source/items/xmlcnitm.cxx editeng/source/misc/SvXMLAutoCorrectImport.cxx editeng/source/misc/svxacorr.cxx editeng/source/misc/txtrange.cxx editeng/source/misc/unolingu.cxx editeng/source/outliner/outleeng.cxx editeng/source/outliner/outliner.cxx editeng/source/outliner/outlundo.hxx editeng/source/outliner/outlvw.cxx editeng/source/outliner/paralist.cxx editeng/source/outliner/paralist.hxx editeng/source/rtf/rtfgrf.cxx editeng/source/rtf/rtfitem.cxx editeng/source/rtf/svxrtf.cxx editeng/source/uno/unoipset.cxx editeng/util/makefile.mk embeddedobj/prj/build.lst embeddedobj/source/commonembedding/miscobj.cxx eventattacher/prj/build.lst fileaccess/source/FileAccess.cxx formula/inc/formula/FormulaCompiler.hxx formula/inc/formula/token.hxx formula/inc/formula/tokenarray.hxx formula/source/core/api/FormulaCompiler.cxx formula/source/core/api/token.cxx formula/source/ui/dlg/FormulaHelper.cxx formula/source/ui/dlg/formula.cxx formula/source/ui/dlg/parawin.cxx formula/source/ui/dlg/structpg.cxx fpicker/prj/d.lst fpicker/source/aqua/FPentry.cxx fpicker/source/office/OfficeControlAccess.cxx fpicker/source/office/iodlg.cxx fpicker/source/office/iodlg.hxx fpicker/source/office/iodlg.src fpicker/source/office/iodlgimp.cxx fpicker/source/unx/gnome/FPentry.cxx fpicker/source/unx/gnome/SalGtkFilePicker.cxx fpicker/source/unx/gnome/SalGtkPicker.cxx fpicker/source/unx/kde4/KDE4FPEntry.cxx fpicker/source/win32/filepicker/FPentry.cxx framework/AllLangResTarget_fwe.mk framework/inc/dispatch/interaction.hxx framework/inc/framework/addonmenu.hxx framework/inc/framework/addonsoptions.hxx framework/inc/framework/bmkmenu.hxx framework/inc/framework/imageproducer.hxx framework/inc/framework/sfxhelperfunctions.hxx framework/inc/framework/statusbarconfiguration.hxx framework/inc/framework/titlehelper.hxx framework/inc/framework/toolboxconfiguration.hxx framework/inc/threadhelp/lockhelper.hxx framework/inc/xml/eventsdocumenthandler.hxx framework/inc/xml/statusbardocumenthandler.hxx framework/inc/xml/toolboxconfiguration.hxx framework/inc/xml/toolboxconfigurationdefines.hxx framework/inc/xml/toolboxdocumenthandler.hxx framework/prj/build.lst framework/qa/complex/ModuleManager/makefile.mk framework/qa/complex/accelerators/makefile.mk framework/qa/complex/framework/recovery/makefile.mk framework/qa/complex/imageManager/_XInitialization.java framework/source/classes/menumanager.cxx framework/source/dispatch/interaction.cxx framework/source/fwe/classes/bmkmenu.cxx framework/source/fwe/helper/actiontriggerhelper.cxx framework/source/fwe/helper/imageproducer.cxx framework/source/fwe/xml/menuconfiguration.cxx framework/source/fwe/xml/toolboxdocumenthandler.cxx framework/source/helper/uiconfigelementwrapperbase.cxx framework/source/helper/uielementwrapperbase.cxx framework/source/inc/pattern/window.hxx framework/source/jobs/jobdata.cxx framework/source/layoutmanager/layoutmanager.cxx framework/source/layoutmanager/panel.hxx framework/source/loadenv/loadenv.cxx framework/source/register/registerservices.cxx framework/source/services/menudocumenthandler.cxx framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx framework/source/uiconfiguration/uiconfigurationmanager.cxx framework/source/uiconfiguration/uiconfigurationmanagerimpl.cxx framework/source/uielement/addonstoolbarmanager.cxx framework/source/uielement/controlmenucontroller.cxx framework/source/uielement/fontsizemenucontroller.cxx framework/source/uielement/imagebuttontoolbarcontroller.cxx framework/source/uielement/macrosmenucontroller.cxx framework/source/uielement/menubarmanager.cxx framework/source/uielement/newmenucontroller.cxx framework/source/uielement/togglebuttontoolbarcontroller.cxx framework/source/uielement/toolbarmanager.cxx framework/source/uielement/toolbarsmenucontroller.cxx framework/test/makefile.mk framework/test/threadtest/makefile.mk framework/test/typecfg/makefile.mk framework/util/guiapps/makefile.mk framework/util/makefile.mk idl/inc/bastype.hxx idl/inc/hash.hxx idl/inc/lex.hxx idl/inc/module.hxx idl/inc/object.hxx idl/inc/slot.hxx idl/inc/types.hxx idl/source/cmptools/hash.cxx idl/source/cmptools/lex.cxx idl/source/objects/basobj.cxx idl/source/objects/bastype.cxx idl/source/objects/module.cxx idl/source/objects/object.cxx idl/source/objects/slot.cxx idl/source/objects/types.cxx idl/source/prj/command.cxx idl/source/prj/database.cxx idl/source/prj/globals.cxx idl/source/prj/svidl.cxx linguistic/inc/linguistic/misc.hxx linguistic/prj/build.lst linguistic/source/convdic.cxx linguistic/source/convdiclist.cxx linguistic/source/dicimp.cxx linguistic/source/dlistimp.cxx linguistic/source/gciterator.cxx linguistic/source/iprcache.cxx linguistic/source/lngopt.cxx linguistic/source/lngprophelp.cxx linguistic/source/lngsvcmgr.cxx linguistic/source/lngsvcmgr.hxx linguistic/source/misc2.cxx linguistic/workben/sprophelp.cxx officecfg/registry/data/org/openoffice/VCL.xcu officecfg/util/makefile.mk oovbaapi/ooo/vba/XApplicationBase.idl oovbaapi/ooo/vba/XVBAAppService.idl oovbaapi/ooo/vba/XVBADocService.idl oovbaapi/ooo/vba/excel/XApplication.idl oovbaapi/ooo/vba/excel/XRange.idl oovbaapi/ooo/vba/excel/XWorkbook.idl oovbaapi/ooo/vba/excel/XWorksheet.idl oovbaapi/ooo/vba/word/XApplication.idl oovbaapi/ooo/vba/word/XGlobals.idl oovbaapi/ooo/vba/word/XTableOfContents.idl readlicense_oo/prj/build.lst scripting/prj/build.lst scripting/prj/d.lst scripting/source/basprov/basprov.cxx scripting/source/basprov/basscript.cxx scripting/source/basprov/basscript.hxx scripting/source/dlgprov/dlgprov.cxx scripting/source/inc/util/util.hxx scripting/source/protocolhandler/scripthandler.cxx scripting/source/provider/ProviderCache.cxx scripting/source/pyprov/makefile.mk scripting/source/runtimemgr/ScriptNameResolverImpl.cxx scripting/source/runtimemgr/ScriptRuntimeManager.cxx scripting/source/runtimemgr/StorageBridge.cxx scripting/source/storage/ScriptMetadataImporter.cxx scripting/source/storage/ScriptSecurityManager.cxx scripting/source/storage/ScriptStorage.cxx scripting/source/storage/ScriptStorageManager.cxx sfx2/inc/about.hxx sfx2/inc/brokenpackageint.hxx sfx2/inc/docvor.hxx sfx2/inc/pch/precompiled_sfx2.hxx sfx2/inc/sfx2/app.hxx sfx2/inc/sfx2/basmgr.hxx sfx2/inc/sfx2/bindings.hxx sfx2/inc/sfx2/childwin.hxx sfx2/inc/sfx2/ctrlitem.hxx sfx2/inc/sfx2/dinfdlg.hxx sfx2/inc/sfx2/dispatch.hxx sfx2/inc/sfx2/docfilt.hxx sfx2/inc/sfx2/evntconf.hxx sfx2/inc/sfx2/fcontnr.hxx sfx2/inc/sfx2/frame.hxx sfx2/inc/sfx2/imagemgr.hxx sfx2/inc/sfx2/imgmgr.hxx sfx2/inc/sfx2/linksrc.hxx sfx2/inc/sfx2/macrconf.hxx sfx2/inc/sfx2/macropg.hxx sfx2/inc/sfx2/mnuitem.hxx sfx2/inc/sfx2/mnumgr.hxx sfx2/inc/sfx2/module.hxx sfx2/inc/sfx2/msg.hxx sfx2/inc/sfx2/objsh.hxx sfx2/inc/sfx2/passwd.hxx sfx2/inc/sfx2/prnmon.hxx sfx2/inc/sfx2/request.hxx sfx2/inc/sfx2/sfx.hrc sfx2/inc/sfx2/sfxbasemodel.hxx sfx2/inc/sfx2/sfxhtml.hxx sfx2/inc/sfx2/sfxresid.hxx sfx2/inc/sfx2/sfxsids.hrc sfx2/inc/sfx2/sfxuno.hxx sfx2/inc/sfx2/shell.hxx sfx2/inc/sfx2/stbitem.hxx sfx2/inc/sfx2/styfitem.hxx sfx2/inc/sfx2/tabdlg.hxx sfx2/inc/sfx2/tbxctrl.hxx sfx2/inc/sfx2/tplpitem.hxx sfx2/inc/sfx2/viewfrm.hxx sfx2/inc/sfx2/viewsh.hxx sfx2/inc/sfxbasic.hxx sfx2/inc/sorgitm.hxx sfx2/prj/build.lst sfx2/qa/complex/docinfo/makefile.mk sfx2/qa/cppunit/makefile.mk sfx2/sdi/makefile.mk sfx2/source/appl/app.cxx sfx2/source/appl/app.hrc sfx2/source/appl/app.src sfx2/source/appl/appbas.cxx sfx2/source/appl/appcfg.cxx sfx2/source/appl/appchild.cxx sfx2/source/appl/appmain.cxx sfx2/source/appl/appmisc.cxx sfx2/source/appl/appopen.cxx sfx2/source/appl/appquit.cxx sfx2/source/appl/appserv.cxx sfx2/source/appl/appuno.cxx sfx2/source/appl/childwin.cxx sfx2/source/appl/fileobj.cxx sfx2/source/appl/helpinterceptor.cxx sfx2/source/appl/imagemgr.cxx sfx2/source/appl/impldde.cxx sfx2/source/appl/impldde.hxx sfx2/source/appl/linkmgr2.cxx sfx2/source/appl/lnkbase2.cxx sfx2/source/appl/makefile.mk sfx2/source/appl/module.cxx sfx2/source/appl/newhelp.cxx sfx2/source/appl/opengrf.cxx sfx2/source/appl/sfxdll.cxx sfx2/source/appl/sfxhelp.cxx sfx2/source/appl/shutdownicon.cxx sfx2/source/appl/shutdowniconunx.cxx sfx2/source/appl/workwin.cxx sfx2/source/bastyp/fltfnc.cxx sfx2/source/bastyp/frmhtml.cxx sfx2/source/bastyp/frmhtmlw.cxx sfx2/source/bastyp/helper.cxx sfx2/source/bastyp/minarray.cxx sfx2/source/bastyp/progress.cxx sfx2/source/bastyp/sfxhtml.cxx sfx2/source/config/evntconf.cxx sfx2/source/control/bindings.cxx sfx2/source/control/ctrlitem.cxx sfx2/source/control/dispatch.cxx sfx2/source/control/macrconf.cxx sfx2/source/control/macro.cxx sfx2/source/control/makefile.mk sfx2/source/control/minfitem.cxx sfx2/source/control/msg.cxx sfx2/source/control/msgpool.cxx sfx2/source/control/objface.cxx sfx2/source/control/request.cxx sfx2/source/control/shell.cxx sfx2/source/control/sorgitm.cxx sfx2/source/dialog/about.cxx sfx2/source/dialog/basedlgs.cxx sfx2/source/dialog/dinfdlg.cxx sfx2/source/dialog/dinfedt.cxx sfx2/source/dialog/dockwin.cxx sfx2/source/dialog/filedlghelper.cxx sfx2/source/dialog/mailmodel.cxx sfx2/source/dialog/mailmodelapi.cxx sfx2/source/dialog/makefile.mk sfx2/source/dialog/mgetempl.cxx sfx2/source/dialog/passwd.cxx sfx2/source/dialog/passwd.hrc sfx2/source/dialog/printopt.cxx sfx2/source/dialog/securitypage.cxx sfx2/source/dialog/splitwin.cxx sfx2/source/dialog/styfitem.cxx sfx2/source/dialog/tabdlg.cxx sfx2/source/dialog/taskpane.cxx sfx2/source/dialog/templdlg.cxx sfx2/source/dialog/tplpitem.cxx sfx2/source/dialog/versdlg.cxx sfx2/source/doc/QuerySaveDocument.cxx sfx2/source/doc/SfxDocumentMetaData.cxx sfx2/source/doc/applet.cxx sfx2/source/doc/doc.hrc sfx2/source/doc/doc.src sfx2/source/doc/docfile.cxx sfx2/source/doc/docinf.cxx sfx2/source/doc/doctempl.cxx sfx2/source/doc/doctemplates.cxx sfx2/source/doc/docvor.cxx sfx2/source/doc/guisaveas.cxx sfx2/source/doc/makefile.mk sfx2/source/doc/objcont.cxx sfx2/source/doc/objitem.cxx sfx2/source/doc/objmisc.cxx sfx2/source/doc/objserv.cxx sfx2/source/doc/printhelper.cxx sfx2/source/doc/sfxacldetect.cxx sfx2/source/doc/sfxbasemodel.cxx sfx2/source/inc/applet.hxx sfx2/source/inc/fltoptint.hxx sfx2/source/inc/sfxlocal.hrc sfx2/source/inc/virtmenu.hxx sfx2/source/inc/workwin.hxx sfx2/source/menu/mnuitem.cxx sfx2/source/menu/objmnctl.cxx sfx2/source/menu/virtmenu.cxx sfx2/source/notify/eventsupplier.cxx sfx2/source/notify/makefile.mk sfx2/source/toolbox/imgmgr.cxx sfx2/source/toolbox/tbxitem.cxx sfx2/source/view/frame.cxx sfx2/source/view/orgmgr.cxx sfx2/source/view/printer.cxx sfx2/source/view/prnmon.cxx sfx2/source/view/viewfrm.cxx sfx2/source/view/viewprn.cxx sfx2/source/view/viewsh.cxx sfx2/util/makefile.mk sfx2/workben/custompanel/makefile.mk shell/source/backends/desktopbe/desktopbackend.cxx shell/source/backends/gconfbe/gconfbackend.cxx shell/source/backends/kde4be/kde4backend.cxx shell/source/backends/kdebe/kdebackend.cxx shell/source/win32/SysShentry.cxx shell/source/win32/shlxthandler/propsheets/propsheets.cxx shell/source/win32/simplemail/smplmailentry.cxx svx/inc/float3d.hrc svx/inc/fmhelp.hrc svx/inc/globlmn_tmpl.hrc svx/inc/helpid.hrc svx/inc/pch/precompiled_svx.hxx svx/inc/sjctrl.hxx svx/inc/srchitem.hxx svx/inc/svdibrow.hxx svx/inc/svx/SmartTagItem.hxx svx/inc/svx/algitem.hxx svx/inc/svx/camera3d.hxx svx/inc/svx/chrtitem.hxx svx/inc/svx/clipfmtitem.hxx svx/inc/svx/ctredlin.hxx svx/inc/svx/dbtoolsclient.hxx svx/inc/svx/deflt3d.hxx svx/inc/svx/dialogs.hrc svx/inc/svx/drawitem.hxx svx/inc/svx/e3ditem.hxx svx/inc/svx/extrud3d.hxx svx/inc/svx/flagsdef.hxx svx/inc/svx/float3d.hxx svx/inc/svx/frmsel.hxx svx/inc/svx/gallery.hxx svx/inc/svx/gallery1.hxx svx/inc/svx/galtheme.hxx svx/inc/svx/grfcrop.hxx svx/inc/svx/hdft.hxx svx/inc/svx/hlnkitem.hxx svx/inc/svx/hyprlink.hxx svx/inc/svx/itemwin.hxx svx/inc/svx/lathe3d.hxx svx/inc/svx/linkwarn.hxx svx/inc/svx/modctrl.hxx svx/inc/svx/msdffdef.hxx svx/inc/svx/obj3d.hxx svx/inc/svx/optgenrl.hxx svx/inc/svx/optgrid.hxx svx/inc/svx/pageitem.hxx svx/inc/svx/paraprev.hxx svx/inc/svx/postattr.hxx svx/inc/svx/rotmodit.hxx svx/inc/svx/ruler.hxx svx/inc/svx/rulritem.hxx svx/inc/svx/scene3d.hxx svx/inc/svx/sdasaitm.hxx svx/inc/svx/sdasitm.hxx svx/inc/svx/sdggaitm.hxx svx/inc/svx/sdmetitm.hxx svx/inc/svx/sdtaaitm.hxx svx/inc/svx/sdtaditm.hxx svx/inc/svx/sdtaitm.hxx svx/inc/svx/sdtakitm.hxx svx/inc/svx/sdtfchim.hxx svx/inc/svx/sdtfsitm.hxx svx/inc/svx/srchdlg.hxx svx/inc/svx/svddrag.hxx svx/inc/svx/svdetc.hxx svx/inc/svx/svdglue.hxx svx/inc/svx/svdhlpln.hxx svx/inc/svx/svdlayer.hxx svx/inc/svx/svdmark.hxx svx/inc/svx/svdmodel.hxx svx/inc/svx/svdoashp.hxx svx/inc/svx/svdobj.hxx svx/inc/svx/svdocirc.hxx svx/inc/svx/svdoedge.hxx svx/inc/svx/svdogrp.hxx svx/inc/svx/svdomeas.hxx svx/inc/svx/svdoole2.hxx svx/inc/svx/svdorect.hxx svx/inc/svx/svdotable.hxx svx/inc/svx/svdotext.hxx svx/inc/svx/svdovirt.hxx svx/inc/svx/svdpage.hxx svx/inc/svx/svdsnpv.hxx svx/inc/svx/svdtrans.hxx svx/inc/svx/svdundo.hxx svx/inc/svx/svimbase.hxx svx/inc/svx/svx3ditems.hxx svx/inc/svx/svxdlg.hxx svx/inc/svx/sxcikitm.hxx svx/inc/svx/sxekitm.hxx svx/inc/svx/sxelditm.hxx svx/inc/svx/sxenditm.hxx svx/inc/svx/sxmkitm.hxx svx/inc/svx/sxmtpitm.hxx svx/inc/svx/sxmuitm.hxx svx/inc/svx/tabarea.hxx svx/inc/svx/tabline.hxx svx/inc/svx/unoprov.hxx svx/inc/svx/viewlayoutitem.hxx svx/inc/svx/xbitmap.hxx svx/inc/svx/xbtmpit.hxx svx/inc/svx/xcolit.hxx svx/inc/svx/xfillit0.hxx svx/inc/svx/xflclit.hxx svx/inc/svx/xflftrit.hxx svx/inc/svx/xflgrit.hxx svx/inc/svx/xflhtit.hxx svx/inc/svx/xftadit.hxx svx/inc/svx/xftsfit.hxx svx/inc/svx/xftshit.hxx svx/inc/svx/xlineit0.hxx svx/inc/svx/xlinjoit.hxx svx/inc/svx/xlnclit.hxx svx/inc/svx/xlndsit.hxx svx/inc/svx/xlnedcit.hxx svx/inc/svx/xlnedit.hxx svx/inc/svx/xlnedwit.hxx svx/inc/svx/xlnstcit.hxx svx/inc/svx/xlnstit.hxx svx/inc/svx/xlnstwit.hxx svx/inc/svx/xlnwtit.hxx svx/inc/svx/xtextit0.hxx svx/inc/svx/zoomitem.hxx svx/inc/svx/zoomslideritem.hxx svx/inc/xpolyimp.hxx svx/inc/zoom_def.hxx svx/prj/d.lst svx/source/accessibility/AccessibleShape.cxx svx/source/accessibility/DescriptionGenerator.cxx svx/source/customshapes/EnhancedCustomShapeEngine.cxx svx/source/customshapes/EnhancedCustomShapeFontWork.cxx svx/source/dialog/_bmpmask.cxx svx/source/dialog/_contdlg.cxx svx/source/dialog/connctrl.cxx svx/source/dialog/contwnd.cxx svx/source/dialog/ctredlin.cxx svx/source/dialog/ctredlin.hrc svx/source/dialog/ctredlin.src svx/source/dialog/dialcontrol.cxx svx/source/dialog/dlgctrl.cxx svx/source/dialog/docrecovery.cxx svx/source/dialog/fntctrl.cxx svx/source/dialog/fontwork.cxx svx/source/dialog/frmsel.cxx svx/source/dialog/graphctl.cxx svx/source/dialog/grfflt.cxx svx/source/dialog/hdft.cxx svx/source/dialog/hyperdlg.cxx svx/source/dialog/hyprdlg.hxx svx/source/dialog/hyprlink.cxx svx/source/dialog/hyprlink.hxx svx/source/dialog/hyprlink.src svx/source/dialog/imapdlg.cxx svx/source/dialog/imapwnd.cxx svx/source/dialog/linkwarn.hrc svx/source/dialog/makefile.mk svx/source/dialog/optgrid.cxx svx/source/dialog/orienthelper.cxx svx/source/dialog/pagectrl.cxx svx/source/dialog/prtqry.cxx svx/source/dialog/rlrcitem.cxx svx/source/dialog/rubydialog.cxx svx/source/dialog/rulritem.cxx svx/source/dialog/simptabl.cxx svx/source/dialog/srchdlg.cxx svx/source/dialog/svxbmpnumvalueset.cxx svx/source/dialog/svxruler.cxx svx/source/dialog/swframeexample.cxx svx/source/engine3d/float3d.cxx svx/source/engine3d/float3d.src svx/source/engine3d/svx3ditems.cxx svx/source/fmcomp/gridctrl.cxx svx/source/fmcomp/trace.cxx svx/source/form/ParseContext.cxx svx/source/form/datanavi.cxx svx/source/form/filtnav.cxx svx/source/form/fmexch.cxx svx/source/form/fmexpl.cxx svx/source/form/fmobjfac.cxx svx/source/form/fmpage.cxx svx/source/form/fmshell.cxx svx/source/form/fmshimp.cxx svx/source/form/fmsrcimp.cxx svx/source/form/fmvwimp.cxx svx/source/form/makefile.mk svx/source/form/tabwin.cxx svx/source/form/tbxform.cxx svx/source/form/typemap.cxx svx/source/gallery2/galbrws1.cxx svx/source/gallery2/galbrws2.cxx svx/source/gallery2/galexpl.cxx svx/source/gallery2/gallery1.cxx svx/source/gallery2/galtheme.cxx svx/source/gallery2/makefile.mk svx/source/gengal/gengal.cxx svx/source/gengal/makefile.mk svx/source/inc/fmgroup.hxx svx/source/intro/about_ooo.hrc svx/source/intro/iso.src svx/source/intro/ooo.src svx/source/items/SmartTagItem.cxx svx/source/items/algitem.cxx svx/source/items/chrtitem.cxx svx/source/items/clipfmtitem.cxx svx/source/items/customshapeitem.cxx svx/source/items/drawitem.cxx svx/source/items/e3ditem.cxx svx/source/items/grfitem.cxx svx/source/items/hlnkitem.cxx svx/source/items/makefile.mk svx/source/items/pageitem.cxx svx/source/items/rotmodit.cxx svx/source/items/viewlayoutitem.cxx svx/source/items/zoomitem.cxx svx/source/items/zoomslideritem.cxx svx/source/src/app.hrc svx/source/stbctrls/makefile.mk svx/source/stbctrls/modctrl.cxx svx/source/stbctrls/xmlsecctrl.cxx svx/source/stbctrls/zoomctrl.cxx svx/source/svdraw/clonelist.cxx svx/source/svdraw/svdattr.cxx svx/source/svdraw/svdcrtv.cxx svx/source/svdraw/svdedtv1.cxx svx/source/svdraw/svdedtv2.cxx svx/source/svdraw/svdedxv.cxx svx/source/svdraw/svdetc.cxx svx/source/svdraw/svdfmtf.cxx svx/source/svdraw/svdfmtf.hxx svx/source/svdraw/svdglue.cxx svx/source/svdraw/svdhdl.cxx svx/source/svdraw/svdhlpln.cxx svx/source/svdraw/svdibrow.cxx svx/source/svdraw/svdlayer.cxx svx/source/svdraw/svdmodel.cxx svx/source/svdraw/svdoashp.cxx svx/source/svdraw/svdobj.cxx svx/source/svdraw/svdocapt.cxx svx/source/svdraw/svdocirc.cxx svx/source/svdraw/svdoedge.cxx svx/source/svdraw/svdograf.cxx svx/source/svdraw/svdogrp.cxx svx/source/svdraw/svdomeas.cxx svx/source/svdraw/svdomedia.cxx svx/source/svdraw/svdopath.cxx svx/source/svdraw/svdotext.cxx svx/source/svdraw/svdotxdr.cxx svx/source/svdraw/svdotxed.cxx svx/source/svdraw/svdotxfl.cxx svx/source/svdraw/svdotxln.cxx svx/source/svdraw/svdotxtr.cxx svx/source/svdraw/svdoutl.cxx svx/source/svdraw/svdpage.cxx svx/source/svdraw/svdpagv.cxx svx/source/svdraw/svdpntv.cxx svx/source/svdraw/svdpoev.cxx svx/source/svdraw/svdsnpv.cxx svx/source/svdraw/svdstr.src svx/source/svdraw/svdtrans.cxx svx/source/svdraw/svdundo.cxx svx/source/svdraw/svdview.cxx svx/source/svdraw/svdxcgv.cxx svx/source/table/svdotable.cxx svx/source/tbxctrls/colorwindow.hxx svx/source/tbxctrls/extrusioncontrols.cxx svx/source/tbxctrls/fillctrl.cxx svx/source/tbxctrls/grafctrl.cxx svx/source/tbxctrls/itemwin.cxx svx/source/tbxctrls/layctrl.cxx svx/source/tbxctrls/lboxctrl.cxx svx/source/tbxctrls/linectrl.cxx svx/source/tbxctrls/tbcontrl.cxx svx/source/tbxctrls/verttexttbxctrl.cxx svx/source/unodraw/unomod.cxx svx/source/unodraw/unopage.cxx svx/source/unodraw/unoprov.cxx svx/source/unodraw/unoshape.cxx svx/source/unodraw/unoshtxt.cxx svx/source/xml/xmlxtexp.cxx svx/source/xoutdev/_xpoly.cxx svx/source/xoutdev/xattr.cxx svx/source/xoutdev/xattr2.cxx svx/source/xoutdev/xattrbmp.cxx svx/source/xoutdev/xtabcolr.cxx svx/util/makefile.mk svx/workben/edittest.cxx sysui/desktop/productversion.mk ucb/prj/build.lst ucb/source/cacher/cacheserv.cxx ucb/source/core/ucb1.component ucb/source/core/ucbserv.cxx ucb/source/core/ucbstore.cxx ucb/source/core/ucbstore.hxx ucb/source/sorter/sortmain.cxx ucb/source/ucp/file/prov.cxx ucb/source/ucp/file/shell.cxx ucb/source/ucp/ftp/ftpservices.cxx ucb/source/ucp/gio/gio_provider.cxx ucb/source/ucp/gvfs/gvfs_provider.cxx ucb/source/ucp/hierarchy/hierarchyservices.cxx ucb/source/ucp/odma/odma_lib.cxx ucb/source/ucp/odma/odma_services.cxx ucb/source/ucp/package/pkgservices.cxx ucb/source/ucp/tdoc/tdoc_services.cxx ucb/source/ucp/webdav/ContentProperties.cxx ucb/source/ucp/webdav/NeonHeadRequest.cxx ucb/source/ucp/webdav/webdavcontent.cxx ucb/source/ucp/webdav/webdavservices.cxx uui/source/iahndl.cxx uui/source/iahndl.hxx uui/source/loginerr.hxx uui/source/nameclashdlg.hxx uui/source/passcrtdlg.cxx uui/source/passworddlg.cxx uui/source/passworddlg.hxx uui/source/services.cxx vbahelper/inc/vbahelper/vbahelper.hxx vbahelper/prj/build.lst vbahelper/prj/d.lst vbahelper/source/msforms/makefile.mk vbahelper/source/msforms/vbauserform.cxx vbahelper/source/vbahelper/makefile.mk vbahelper/source/vbahelper/vbaapplicationbase.cxx vbahelper/source/vbahelper/vbacommandbarcontrol.cxx vbahelper/source/vbahelper/vbadocumentbase.cxx vbahelper/source/vbahelper/vbadocumentsbase.cxx vbahelper/source/vbahelper/vbahelper.cxx vbahelper/util/makefile.mk xmlhelp/source/cxxhelp/provider/databases.cxx xmlhelp/source/cxxhelp/provider/services.cxx xmlhelp/source/treeview/tvfactory.cxx xmloff/JunitTest_xmloff_unoapi.mk xmloff/inc/functional.hxx xmloff/inc/xmloff/formlayerexport.hxx xmloff/inc/xmloff/formlayerimport.hxx xmloff/inc/xmloff/functional.hxx xmloff/inc/xmloff/shapeimport.hxx xmloff/inc/xmloff/xmlcnitm.hxx xmloff/inc/xmloff/xmlnumfi.hxx xmloff/prj/build.lst xmloff/source/chart/SchXMLChartContext.cxx xmloff/source/chart/SchXMLExport.cxx xmloff/source/chart/SchXMLImport.cxx xmloff/source/chart/SchXMLLegendContext.hxx xmloff/source/chart/SchXMLPlotAreaContext.cxx xmloff/source/core/xmluconv.cxx xmloff/source/draw/sdxmlexp.cxx xmloff/source/draw/shapeexport4.cxx xmloff/source/draw/ximp3dobject.cxx xmloff/source/draw/ximp3dscene.cxx xmloff/source/forms/formlayerexport.cxx xmloff/source/forms/formlayerimport.cxx xmloff/source/forms/handler/vcl_time_handler.hxx xmloff/source/forms/layerimport.cxx xmloff/source/forms/layerimport.hxx xmloff/source/forms/property_meta_data.hxx xmloff/source/style/PageHeaderFooterContext.cxx xmloff/source/style/PageMasterStyleMap.cxx xmloff/source/style/prstylei.cxx xmloff/source/style/xmlimppr.cxx xmloff/source/style/xmlnumfi.cxx xmloff/source/style/xmlstyle.cxx xmloff/source/table/tabledesignsimporter.cxx xmloff/source/text/XMLTextNumRuleInfo.cxx xmloff/source/text/XMLTextShapeStyleContext.cxx xmloff/source/text/txtstyle.cxx xmloff/source/transform/ChartOOoTContext.cxx xmloff/source/transform/EventOOoTContext.cxx xmloff/source/transform/TransformerBase.cxx xmloff/util/makefile.mk xmlscript/util/xcr.component
2011-03-12 02:42:58 +01:00
bool FrameSelector::GetVisibleWidth( sal_uInt16& rnPrim, sal_uInt16& rnDist, sal_uInt16& rnSecn,
SvxBorderStyle& rnStyle ) const
2000-09-18 16:07:07 +00:00
{
VisFrameBorderCIter aIt( mxImpl->maEnabBorders );
if( !aIt.Is() )
return false;
const SvxBorderLine& rStyle = (*aIt)->GetCoreStyle();
bool bFound = true;
for( ++aIt; bFound && aIt.Is(); ++aIt )
bFound =
(rStyle.GetOutWidth() == (*aIt)->GetCoreStyle().GetOutWidth()) &&
(rStyle.GetDistance() == (*aIt)->GetCoreStyle().GetDistance()) &&
(rStyle.GetInWidth() == (*aIt)->GetCoreStyle().GetInWidth()) &&
(rStyle.GetStyle() == (*aIt)->GetCoreStyle().GetStyle());
if( bFound )
2000-09-18 16:07:07 +00:00
{
rnPrim = rStyle.GetOutWidth();
rnDist = rStyle.GetDistance();
rnSecn = rStyle.GetInWidth();
rnStyle = rStyle.GetStyle();
2000-09-18 16:07:07 +00:00
}
return bFound;
2000-09-18 16:07:07 +00:00
}
bool FrameSelector::GetVisibleColor( Color& rColor ) const
2000-09-18 16:07:07 +00:00
{
VisFrameBorderCIter aIt( mxImpl->maEnabBorders );
if( !aIt.Is() )
return false;
2002-01-28 12:06:09 +00:00
const SvxBorderLine& rStyle = (*aIt)->GetCoreStyle();
bool bFound = true;
for( ++aIt; bFound && aIt.Is(); ++aIt )
bFound = (rStyle.GetColor() == (*aIt)->GetCoreStyle().GetColor());
2002-01-28 12:06:09 +00:00
if( bFound )
rColor = rStyle.GetColor();
return bFound;
}
2000-09-18 16:07:07 +00:00
// frame border selection -----------------------------------------------------
2000-09-18 16:07:07 +00:00
const Link& FrameSelector::GetSelectHdl() const
{
return mxImpl->maSelectHdl;
}
2000-09-18 16:07:07 +00:00
void FrameSelector::SetSelectHdl( const Link& rHdl )
{
mxImpl->maSelectHdl = rHdl;
}
2000-09-18 16:07:07 +00:00
bool FrameSelector::IsBorderSelected( FrameBorderType eBorder ) const
{
return mxImpl->GetBorder( eBorder ).IsSelected();
}
2000-09-18 16:07:07 +00:00
void FrameSelector::SelectBorder( FrameBorderType eBorder, bool bSelect )
{
mxImpl->SelectBorder( mxImpl->GetBorderAccess( eBorder ), bSelect );
}
2000-09-18 16:07:07 +00:00
bool FrameSelector::IsAnyBorderSelected() const
{
// Construct an iterator for selected borders. If it is valid, there is a selected border.
return SelFrameBorderCIter( mxImpl->maEnabBorders ).Is();
}
2000-09-18 16:07:07 +00:00
void FrameSelector::SelectAllBorders( bool bSelect )
{
for( FrameBorderIter aIt( mxImpl->maEnabBorders ); aIt.Is(); ++aIt )
mxImpl->SelectBorder( **aIt, bSelect );
}
2000-09-18 16:07:07 +00:00
void FrameSelector::SelectAllVisibleBorders( bool bSelect )
{
for( VisFrameBorderIter aIt( mxImpl->maEnabBorders ); aIt.Is(); ++aIt )
mxImpl->SelectBorder( **aIt, bSelect );
}
2000-09-18 16:07:07 +00:00
void FrameSelector::SetStyleToSelection( long nWidth, SvxBorderStyle nStyle )
{
mxImpl->maCurrStyle.SetStyle( nStyle );
mxImpl->maCurrStyle.SetWidth( nWidth );
for( SelFrameBorderIter aIt( mxImpl->maEnabBorders ); aIt.Is(); ++aIt )
mxImpl->SetBorderState( **aIt, FRAMESTATE_SHOW );
2000-09-18 16:07:07 +00:00
}
void FrameSelector::SetColorToSelection( const Color& rColor )
{
mxImpl->maCurrStyle.SetColor( rColor );
for( SelFrameBorderIter aIt( mxImpl->maEnabBorders ); aIt.Is(); ++aIt )
mxImpl->SetBorderState( **aIt, FRAMESTATE_SHOW );
}
2000-09-18 16:07:07 +00:00
// accessibility --------------------------------------------------------------
2000-09-18 16:07:07 +00:00
Reference< XAccessible > FrameSelector::CreateAccessible()
2000-09-18 16:07:07 +00:00
{
if( !mxImpl->mxAccess.is() )
mxImpl->mxAccess = mxImpl->mpAccess =
new a11y::AccFrameSelector( *this, FRAMEBORDER_NONE );
return mxImpl->mxAccess;
}
2000-09-18 16:07:07 +00:00
Reference< XAccessible > FrameSelector::GetChildAccessible( FrameBorderType eBorder )
{
Reference< XAccessible > xRet;
size_t nVecIdx = static_cast< size_t >( eBorder );
if( IsBorderEnabled( eBorder ) && (1 <= nVecIdx) && (nVecIdx <= mxImpl->maChildVec.size()) )
2000-09-18 16:07:07 +00:00
{
--nVecIdx;
if( !mxImpl->maChildVec[ nVecIdx ] )
mxImpl->mxChildVec[ nVecIdx ] = mxImpl->maChildVec[ nVecIdx ] =
new a11y::AccFrameSelector( *this, eBorder );
xRet = mxImpl->mxChildVec[ nVecIdx ];
2000-09-18 16:07:07 +00:00
}
return xRet;
2000-09-18 16:07:07 +00:00
}
Reference< XAccessible > FrameSelector::GetChildAccessible( sal_Int32 nIndex )
2000-09-18 16:07:07 +00:00
{
return GetChildAccessible( GetEnabledBorderType( nIndex ) );
2000-09-18 16:07:07 +00:00
}
Reference< XAccessible > FrameSelector::GetChildAccessible( const Point& rPos )
2000-09-18 16:07:07 +00:00
{
Reference< XAccessible > xRet;
for( FrameBorderCIter aIt( mxImpl->maEnabBorders ); !xRet.is() && aIt.Is(); ++aIt )
if( (*aIt)->ContainsClickPoint( rPos ) )
xRet = GetChildAccessible( (*aIt)->GetType() );
return xRet;
2000-09-18 16:07:07 +00:00
}
bool FrameSelector::ContainsClickPoint( const Point& rPos ) const
{
bool bContains = false;
for( FrameBorderCIter aIt( mxImpl->maEnabBorders ); !bContains && aIt.Is(); ++aIt )
bContains = (*aIt)->ContainsClickPoint( rPos );
return bContains;
}
2000-09-18 16:07:07 +00:00
Rectangle FrameSelector::GetClickBoundRect( FrameBorderType eBorder ) const
2000-09-18 16:07:07 +00:00
{
Rectangle aRect;
const FrameBorder& rBorder = mxImpl->GetBorder( eBorder );
if( rBorder.IsEnabled() )
aRect = rBorder.GetClickBoundRect();
return aRect;
2000-09-18 16:07:07 +00:00
}
// virtual functions from base class ------------------------------------------
2000-09-18 16:07:07 +00:00
void FrameSelector::Paint( const Rectangle& )
2000-09-18 16:07:07 +00:00
{
mxImpl->CopyVirDevToControl();
if( HasFocus() )
mxImpl->DrawAllTrackingRects();
}
2000-09-18 16:07:07 +00:00
void FrameSelector::MouseButtonDown( const MouseEvent& rMEvt )
{
/* Mouse handling:
* Click on an unselected frame border:
Set current style/color, make frame border visible, deselect all
other frame borders.
* Click on a selected frame border:
Toggle state of the frame border (visible -> don't care -> hidden),
deselect all other frame borders.
* SHIFT+Click or CTRL+Click on an unselected frame border:
Extend selection, set current style/color to all selected frame
borders independent of the state/style/color of the borders.
* SHIFT+Click or CTRL+Click on a selected frame border:
If all frame borders have same style/color, toggle state of all
borders (see above), otherwise set current style/color to all
borders.
* Click on unused area: Do not modify selection and selected frame
borders.
*/
// #107394# do not auto-select a frame border
mxImpl->SilentGrabFocus();
if( rMEvt.IsLeft() )
2000-09-18 16:07:07 +00:00
{
Point aPos( mxImpl->GetDevPosFromMousePos( rMEvt.GetPosPixel() ) );
FrameBorderPtrVec aDeselectBorders;
bool bAnyClicked = false; // Any frame border clicked?
bool bNewSelected = false; // Any unselected frame border selected?
/* If frame borders are set to "don't care" and the control does not
support this state, hide them on first mouse click.
DR 2004-01-30: Why are the borders set to "don't care" then?!? */
bool bHideDontCare = !mxImpl->mbClicked && !SupportsDontCareState();
2000-09-18 16:07:07 +00:00
for( FrameBorderIter aIt( mxImpl->maEnabBorders ); aIt.Is(); ++aIt )
2000-09-18 16:07:07 +00:00
{
if( (*aIt)->ContainsClickPoint( aPos ) )
2000-09-18 16:07:07 +00:00
{
// frame border is clicked
bAnyClicked = true;
if( !(*aIt)->IsSelected() )
{
bNewSelected = true;
mxImpl->SelectBorder( **aIt, true );
}
2000-09-18 16:07:07 +00:00
}
else
2000-09-18 16:07:07 +00:00
{
// hide a "don't care" frame border only if it is not clicked
if( bHideDontCare && ((*aIt)->GetState() == FRAMESTATE_DONTCARE) )
mxImpl->SetBorderState( **aIt, FRAMESTATE_HIDE );
2000-09-18 16:07:07 +00:00
// deselect frame borders not clicked (if SHIFT or CTRL are not pressed)
if( !rMEvt.IsShift() && !rMEvt.IsMod1() )
aDeselectBorders.push_back( *aIt );
2000-09-18 16:07:07 +00:00
}
}
if( bAnyClicked )
2000-09-18 16:07:07 +00:00
{
// any valid frame border clicked? -> deselect other frame borders
for( FrameBorderIter aIt( aDeselectBorders ); aIt.Is(); ++aIt )
mxImpl->SelectBorder( **aIt, false );
2000-09-18 16:07:07 +00:00
if( bNewSelected || !mxImpl->SelectedBordersEqual() )
2002-03-20 14:05:32 +00:00
{
// new frame border selected, selection extended, or selected borders different? -> show
for( SelFrameBorderIter aIt( mxImpl->maEnabBorders ); aIt.Is(); ++aIt )
// SetBorderState() sets current style and color to the frame border
mxImpl->SetBorderState( **aIt, FRAMESTATE_SHOW );
}
else
{
// all selected frame borders are equal -> toggle state
for( SelFrameBorderIter aIt( mxImpl->maEnabBorders ); aIt.Is(); ++aIt )
mxImpl->ToggleBorderState( **aIt );
2002-03-20 14:05:32 +00:00
}
}
}
}
void FrameSelector::KeyInput( const KeyEvent& rKEvt )
{
bool bHandled = false;
2002-02-04 08:32:08 +00:00
KeyCode aKeyCode = rKEvt.GetKeyCode();
if( !aKeyCode.GetModifier() )
2002-02-04 08:32:08 +00:00
{
sal_uInt16 nCode = aKeyCode.GetCode();
switch( nCode )
2002-02-04 08:32:08 +00:00
{
case KEY_SPACE:
2002-03-20 14:05:32 +00:00
{
for( SelFrameBorderIter aIt( mxImpl->maEnabBorders ); aIt.Is(); ++aIt )
mxImpl->ToggleBorderState( **aIt );
bHandled = true;
}
break;
case KEY_UP:
case KEY_DOWN:
case KEY_LEFT:
case KEY_RIGHT:
{
if( !mxImpl->maEnabBorders.empty() )
2002-03-20 14:05:32 +00:00
{
// start from first selected frame border
SelFrameBorderCIter aIt( mxImpl->maEnabBorders );
FrameBorderType eBorder = aIt.Is() ? (*aIt)->GetType() : mxImpl->maEnabBorders.front()->GetType();
// search for next enabled frame border
do
{
eBorder = mxImpl->GetBorder( eBorder ).GetKeyboardNeighbor( nCode );
}
while( (eBorder != FRAMEBORDER_NONE) && !IsBorderEnabled( eBorder ) );
// select the frame border
if( eBorder != FRAMEBORDER_NONE )
{
DeselectAllBorders();
SelectBorder( eBorder );
}
2002-03-20 14:05:32 +00:00
}
}
break;
2002-02-04 08:32:08 +00:00
}
}
if( !bHandled )
2002-02-04 08:32:08 +00:00
Window::KeyInput(rKEvt);
}
void FrameSelector::GetFocus()
2002-02-04 08:32:08 +00:00
{
// auto-selection of a frame border, if focus reaches control, and nothing is selected
if( mxImpl->mbAutoSelect && !IsAnyBorderSelected() && !mxImpl->maEnabBorders.empty() )
mxImpl->SelectBorder( *mxImpl->maEnabBorders.front(), true );
mxImpl->DoInvalidate( false );
if( mxImpl->mxAccess.is() )
mxImpl->mpAccess->NotifyFocusListeners( sal_True );
2002-02-04 08:32:08 +00:00
Control::GetFocus();
}
void FrameSelector::LoseFocus()
2002-02-04 08:32:08 +00:00
{
mxImpl->DoInvalidate( false );
if( mxImpl->mxAccess.is() )
mxImpl->mpAccess->NotifyFocusListeners( sal_False );
2002-02-04 08:32:08 +00:00
Control::LoseFocus();
}
void FrameSelector::DataChanged( const DataChangedEvent& rDCEvt )
{
Control::DataChanged( rDCEvt );
if( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
mxImpl->InitVirtualDevice();
}
// ============================================================================
template< typename Cont, typename Iter, typename Pred >
FrameBorderIterBase< Cont, Iter, Pred >::FrameBorderIterBase( container_type& rCont ) :
maIt( rCont.begin() ),
maEnd( rCont.end() )
{
while( Is() && !maPred( *maIt ) ) ++maIt;
}
template< typename Cont, typename Iter, typename Pred >
FrameBorderIterBase< Cont, Iter, Pred >& FrameBorderIterBase< Cont, Iter, Pred >::operator++()
{
do { ++maIt; } while( Is() && !maPred( *maIt ) );
return *this;
}
// ============================================================================
2002-02-04 08:32:08 +00:00
} // namespace svx
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */