[Libreoffice-commits] .: svtools/inc svtools/source
Joseph Powers
jpowers at kemper.freedesktop.org
Sat Feb 5 16:21:07 PST 2011
svtools/inc/svtools/headbar.hxx | 6 -
svtools/source/control/headbar.cxx | 175 +++++++++++++++++++------------------
2 files changed, 94 insertions(+), 87 deletions(-)
New commits:
commit d3db3ae7565d18acbda68dc1e7ca95b8646a2c6d
Author: Joseph Powers <jpowers27 at cox.net>
Date: Sat Feb 5 12:26:26 2011 -0800
Remove DECLARE_LIST( ImplHeadItemList, ImplHeadItem* )
diff --git a/svtools/inc/svtools/headbar.hxx b/svtools/inc/svtools/headbar.hxx
index 02a83e4..f20c2ee 100644
--- a/svtools/inc/svtools/headbar.hxx
+++ b/svtools/inc/svtools/headbar.hxx
@@ -2,7 +2,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -187,7 +187,9 @@ nicht HIB_CLICKABLE setzen und dafuer HIB_FIXEDPOS.
*************************************************************************/
class Accelerator;
-class ImplHeadItemList;
+class ImplHeadItem;
+
+typedef ::std::vector< ImplHeadItem* > ImplHeadItemList;
// -----------
// - WinBits -
diff --git a/svtools/source/control/headbar.cxx b/svtools/source/control/headbar.cxx
index 6f041ca..78c5ad0 100644
--- a/svtools/source/control/headbar.cxx
+++ b/svtools/source/control/headbar.cxx
@@ -2,7 +2,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
@@ -54,8 +54,6 @@ struct ImplHeadItem
void* mpUserData;
};
-DECLARE_LIST( ImplHeadItemList, ImplHeadItem* )
-
// =======================================================================
#define HEAD_ARROWSIZE1 4
@@ -137,13 +135,10 @@ HeaderBar::HeaderBar( Window* pParent, const ResId& rResId ) :
HeaderBar::~HeaderBar()
{
// Alle Items loeschen
- ImplHeadItem* pItem = mpItemList->First();
- while ( pItem )
- {
- delete pItem;
- pItem = mpItemList->Next();
+ for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) {
+ delete (*mpItemList)[ i ];
}
-
+ mpItemList->clear();
delete mpItemList;
}
@@ -190,8 +185,8 @@ void HeaderBar::ImplInitSettings( BOOL bFont,
long HeaderBar::ImplGetItemPos( USHORT nPos ) const
{
long nX = -mnOffset;
- for ( USHORT i = 0; i < nPos; i++ )
- nX += mpItemList->GetObject( i )->mnSize;
+ for ( size_t i = 0; i < nPos; i++ )
+ nX += (*mpItemList)[ i ]->mnSize;
return nX;
}
@@ -200,7 +195,7 @@ long HeaderBar::ImplGetItemPos( USHORT nPos ) const
Rectangle HeaderBar::ImplGetItemRect( USHORT nPos ) const
{
Rectangle aRect( ImplGetItemPos( nPos ), 0, 0, mnDY-1 );
- aRect.Right() = aRect.Left() + mpItemList->GetObject( nPos )->mnSize - 1;
+ aRect.Right() = aRect.Left() + (*mpItemList)[ nPos ]->mnSize - 1;
// Gegen Ueberlauf auf einigen Systemen testen
if ( aRect.Right() > 16000 )
aRect.Right() = 16000;
@@ -213,13 +208,13 @@ USHORT HeaderBar::ImplHitTest( const Point& rPos,
long& nMouseOff, USHORT& nPos ) const
{
ImplHeadItem* pItem;
- USHORT nCount = (USHORT)mpItemList->Count();
+ size_t nCount = (USHORT)mpItemList->size();
BOOL bLastFixed = TRUE;
long nX = -mnOffset;
- for ( USHORT i = 0; i < nCount; i++ )
+ for ( size_t i = 0; i < nCount; i++ )
{
- pItem = mpItemList->GetObject( i );
+ pItem = (*mpItemList)[ i ];
if ( rPos.X() < (nX+pItem->mnSize) )
{
@@ -260,7 +255,7 @@ USHORT HeaderBar::ImplHitTest( const Point& rPos,
if ( !bLastFixed )
{
- pItem = mpItemList->GetObject( nCount-1 );
+ pItem = (*mpItemList)[ nCount-1 ];
if ( (pItem->mnSize < 4) && (rPos.X() < (nX+HEADERBAR_SPLITOFF)) )
{
nPos = nCount-1;
@@ -350,7 +345,7 @@ void HeaderBar::ImplDrawItem( OutputDevice* pDev,
return;
}
- ImplHeadItem* pItem = mpItemList->GetObject( nPos );
+ ImplHeadItem* pItem = (*mpItemList)[ nPos ];
HeaderBarItemBits nBits = pItem->mnBits;
const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
@@ -651,8 +646,8 @@ void HeaderBar::ImplUpdate( USHORT nPos, BOOL bEnd, BOOL bDirect )
{
if ( !bDirect )
{
- Rectangle aRect;
- USHORT nItemCount = (USHORT)(mpItemList->Count());
+ Rectangle aRect;
+ size_t nItemCount = mpItemList->size();
if ( nPos < nItemCount )
aRect = ImplGetItemRect( nPos );
else
@@ -669,11 +664,11 @@ void HeaderBar::ImplUpdate( USHORT nPos, BOOL bEnd, BOOL bDirect )
}
else
{
- for ( USHORT i = nPos; i < mpItemList->Count(); i++ )
+ for ( size_t i = nPos; i < mpItemList->size(); i++ )
ImplDrawItem( i );
if ( bEnd )
{
- Rectangle aRect = ImplGetItemRect( (USHORT)mpItemList->Count() );
+ Rectangle aRect = ImplGetItemRect( (USHORT)mpItemList->size() );
aRect.Left() = aRect.Right();
aRect.Right() = mnDX-1;
if ( aRect.Left() < aRect.Right() )
@@ -696,7 +691,7 @@ void HeaderBar::ImplStartDrag( const Point& rMousePos, BOOL bCommand )
if ( nHitTest )
{
mbDrag = FALSE;
- ImplHeadItem* pItem = mpItemList->GetObject( nPos );
+ ImplHeadItem* pItem = (*mpItemList)[ nPos ];
if ( nHitTest & HEAD_HITTEST_DIVIDER )
mbDrag = TRUE;
else
@@ -768,7 +763,7 @@ void HeaderBar::ImplDrag( const Point& rMousePos )
// Evt. ItemDrag anschalten
if ( bNewOutDrag && mbDragable && !mbItemDrag &&
- !(mpItemList->GetObject(nPos)->mnBits & HIB_FIXEDPOS) )
+ !((*mpItemList)[ nPos ]->mnBits & HIB_FIXEDPOS) )
{
if ( (rMousePos.Y() >= aItemRect.Top()) && (rMousePos.Y() <= aItemRect.Bottom()) )
{
@@ -803,13 +798,13 @@ void HeaderBar::ImplDrag( const Point& rMousePos )
// Nicht verschiebbare Items aussparen
if ( mnItemDragPos < nPos )
{
- while ( (mpItemList->GetObject(mnItemDragPos)->mnBits & HIB_FIXEDPOS) &&
+ while ( ((*mpItemList)[ mnItemDragPos ]->mnBits & HIB_FIXEDPOS) &&
(mnItemDragPos < nPos) )
mnItemDragPos++;
}
else if ( mnItemDragPos > nPos )
{
- while ( (mpItemList->GetObject(mnItemDragPos)->mnBits & HIB_FIXEDPOS) &&
+ while ( ((*mpItemList)[ mnItemDragPos ]->mnBits & HIB_FIXEDPOS) &&
(mnItemDragPos > nPos) )
mnItemDragPos--;
}
@@ -902,7 +897,7 @@ void HeaderBar::ImplEndDrag( BOOL bCancel )
long nDelta = mnDragPos - mnStartPos;
if ( nDelta )
{
- ImplHeadItem* pItem = mpItemList->GetObject( nPos );
+ ImplHeadItem* pItem = (*mpItemList)[ nPos ];
pItem->mnSize += nDelta;
ImplUpdate( nPos, TRUE );
}
@@ -931,7 +926,7 @@ void HeaderBar::MouseButtonDown( const MouseEvent& rMEvt )
USHORT nHitTest = ImplHitTest( rMEvt.GetPosPixel(), nTemp, nPos );
if ( nHitTest )
{
- ImplHeadItem* pItem = mpItemList->GetObject( nPos );
+ ImplHeadItem* pItem = (*mpItemList)[ nPos ];
if ( nHitTest & HEAD_HITTEST_DIVIDER )
mbItemMode = FALSE;
else
@@ -998,7 +993,7 @@ void HeaderBar::Paint( const Rectangle& rRect )
nCurItemPos = GetItemPos( mnCurItemId );
else
nCurItemPos = HEADERBAR_ITEM_NOTFOUND;
- USHORT nItemCount = (USHORT)mpItemList->Count();
+ USHORT nItemCount = (USHORT)mpItemList->size();
for ( USHORT i = 0; i < nItemCount; i++ )
ImplDrawItem( i, (i == nCurItemPos) ? TRUE : FALSE, FALSE, &rRect );
}
@@ -1036,18 +1031,17 @@ void HeaderBar::Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize,
if ( mnBorderOff1 && mnBorderOff2 )
{
pDev->DrawLine( aRect.TopLeft(), Point( aRect.Left(), aRect.Bottom() ) );
- pDev->DrawLine( Point( aRect.Right(), aRect.Top() ), Point( aRect.Right(), aRect.Bottom() ) );
+ pDev->DrawLine( Point( aRect.Right(), aRect.Top() ), Point( aRect.Right(), aRect.Bottom() ) );
}
}
}
Rectangle aItemRect( aRect );
-// aItemRect.Bottom()--;
- USHORT nItemCount = (USHORT)mpItemList->Count();
- for ( USHORT i = 0; i < nItemCount; i++ )
+ size_t nItemCount = mpItemList->size();
+ for ( size_t i = 0; i < nItemCount; i++ )
{
aItemRect.Left() = aRect.Left()+ImplGetItemPos( i );
- aItemRect.Right() = aItemRect.Left() + mpItemList->GetObject( i )->mnSize - 1;
+ aItemRect.Right() = aItemRect.Left() + (*mpItemList)[ i ]->mnSize - 1;
// Gegen Ueberlauf auf einigen Systemen testen
if ( aItemRect.Right() > 16000 )
aItemRect.Right() = 16000;
@@ -1104,7 +1098,7 @@ void HeaderBar::RequestHelp( const HelpEvent& rHEvt )
XubString aStr = GetHelpText( nItemId );
if ( !aStr.Len() || !(rHEvt.GetMode() & HELPMODE_BALLOON) )
{
- ImplHeadItem* pItem = mpItemList->GetObject( GetItemPos( nItemId ) );
+ ImplHeadItem* pItem = (*mpItemList)[ GetItemPos( nItemId ) ];
// Wir zeigen die Quick-Hilfe nur an, wenn Text nicht
// vollstaendig sichtbar, ansonsten zeigen wir den Hilfetext
// an, wenn das Item keinen Text besitzt
@@ -1239,7 +1233,13 @@ void HeaderBar::InsertItem( USHORT nItemId, const Image& rImage,
pItem->mnSize = nSize;
pItem->maImage = rImage;
pItem->mpUserData = 0;
- mpItemList->Insert( pItem, nPos );
+ if ( nPos < mpItemList->size() ) {
+ ImplHeadItemList::iterator it = mpItemList->begin();
+ ::std::advance( it, nPos );
+ mpItemList->insert( it, pItem );
+ } else {
+ mpItemList->push_back( pItem );
+ }
// Ausgabe updaten
ImplUpdate( nPos, TRUE );
@@ -1262,7 +1262,13 @@ void HeaderBar::InsertItem( USHORT nItemId, const XubString& rText,
pItem->mnHelpId = 0;
pItem->maText = rText;
pItem->mpUserData = 0;
- mpItemList->Insert( pItem, nPos );
+ if ( nPos < mpItemList->size() ) {
+ ImplHeadItemList::iterator it = mpItemList->begin();
+ ::std::advance( it, nPos );
+ mpItemList->insert( it, pItem );
+ } else {
+ mpItemList->push_back( pItem );
+ }
// Ausgabe updaten
ImplUpdate( nPos, TRUE );
@@ -1288,7 +1294,13 @@ void HeaderBar::InsertItem( USHORT nItemId,
pItem->maImage = rImage;
pItem->maText = rText;
pItem->mpUserData = 0;
- mpItemList->Insert( pItem, nPos );
+ if ( nPos < mpItemList->size() ) {
+ ImplHeadItemList::iterator it = mpItemList->begin();
+ ::std::advance( it, nPos );
+ mpItemList->insert( it, pItem );
+ } else {
+ mpItemList->push_back( pItem );
+ }
// Ausgabe updaten
ImplUpdate( nPos, TRUE );
@@ -1301,8 +1313,12 @@ void HeaderBar::RemoveItem( USHORT nItemId )
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
{
- ImplHeadItem* pItem = mpItemList->Remove( nPos );
- delete pItem;
+ if ( nPos < mpItemList->size() ) {
+ ImplHeadItemList::iterator it = mpItemList->begin();
+ ::std::advance( it, nPos );
+ delete *it;
+ mpItemList->erase( it );
+ }
ImplUpdate( nPos, TRUE );
}
}
@@ -1316,10 +1332,15 @@ void HeaderBar::MoveItem( USHORT nItemId, USHORT nNewPos )
{
if ( nPos != nNewPos )
{
- ImplHeadItem* pItem = mpItemList->Remove( nPos );
+ ImplHeadItemList::iterator it = mpItemList->begin();
+ ::std::advance( it, nPos );
+ ImplHeadItem* pItem = *it;
+ mpItemList->erase( it );
if ( nNewPos < nPos )
nPos = nNewPos;
- mpItemList->Insert( pItem, nNewPos );
+ it = mpItemList->begin();
+ ::std::advance( it, nPos );
+ mpItemList->insert( it, pItem );
ImplUpdate( nPos, TRUE );
}
}
@@ -1330,13 +1351,10 @@ void HeaderBar::MoveItem( USHORT nItemId, USHORT nNewPos )
void HeaderBar::Clear()
{
// Alle Items loeschen
- ImplHeadItem* pItem = mpItemList->First();
- while ( pItem )
- {
- delete pItem;
- pItem = mpItemList->Next();
+ for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) {
+ delete (*mpItemList)[ i ];
}
- mpItemList->Clear();
+ mpItemList->clear();
ImplUpdate( 0, TRUE );
}
@@ -1345,10 +1363,6 @@ void HeaderBar::Clear()
void HeaderBar::SetOffset( long nNewOffset )
{
- // Hier erstmal neu zeichnen, damit mit alten Offset noch das
- // richtige gemalt wird
- //Update();
-
// Bereich verschieben
Rectangle aRect( 0, mnBorderOff1, mnDX-1, mnDY-mnBorderOff1-mnBorderOff2-1 );
long nDelta = mnOffset-nNewOffset;
@@ -1360,21 +1374,18 @@ void HeaderBar::SetOffset( long nNewOffset )
USHORT HeaderBar::GetItemCount() const
{
- return (USHORT)mpItemList->Count();
+ return (USHORT)mpItemList->size();
}
// -----------------------------------------------------------------------
USHORT HeaderBar::GetItemPos( USHORT nItemId ) const
{
- ImplHeadItem* pItem = mpItemList->First();
- while ( pItem )
- {
+ for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) {
+ ImplHeadItem* pItem = (*mpItemList)[ i ];
if ( pItem->mnId == nItemId )
- return (USHORT)mpItemList->GetCurPos();
- pItem = mpItemList->Next();
+ return (USHORT)i;
}
-
return HEADERBAR_ITEM_NOTFOUND;
}
@@ -1382,7 +1393,7 @@ USHORT HeaderBar::GetItemPos( USHORT nItemId ) const
USHORT HeaderBar::GetItemId( USHORT nPos ) const
{
- ImplHeadItem* pItem = mpItemList->GetObject( nPos );
+ ImplHeadItem* pItem = (nPos < mpItemList->size() ) ? (*mpItemList)[ nPos ] : NULL;
if ( pItem )
return pItem->mnId;
else
@@ -1393,15 +1404,11 @@ USHORT HeaderBar::GetItemId( USHORT nPos ) const
USHORT HeaderBar::GetItemId( const Point& rPos ) const
{
- USHORT nPos = 0;
- while ( nPos < mpItemList->Count() )
- {
- if ( ImplGetItemRect( nPos ).IsInside( rPos ) )
- return GetItemId( nPos );
-
- nPos++;
+ for ( size_t i = 0, n = mpItemList->size(); i < n; ++i ) {
+ if ( ImplGetItemRect( i ).IsInside( rPos ) ) {
+ return GetItemId( i );
+ }
}
-
return 0;
}
@@ -1423,7 +1430,7 @@ void HeaderBar::SetItemSize( USHORT nItemId, long nNewSize )
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
{
- ImplHeadItem* pItem = mpItemList->GetObject( nPos );
+ ImplHeadItem* pItem = (*mpItemList)[ nPos ];
if ( pItem->mnSize != nNewSize )
{
pItem->mnSize = nNewSize;
@@ -1438,7 +1445,7 @@ long HeaderBar::GetItemSize( USHORT nItemId ) const
{
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
- return mpItemList->GetObject( nPos )->mnSize;
+ return (*mpItemList)[ nPos ]->mnSize;
else
return 0;
}
@@ -1450,7 +1457,7 @@ void HeaderBar::SetItemBits( USHORT nItemId, HeaderBarItemBits nNewBits )
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
{
- ImplHeadItem* pItem = mpItemList->GetObject( nPos );
+ ImplHeadItem* pItem = (*mpItemList)[ nPos ];
if ( pItem->mnBits != nNewBits )
{
pItem->mnBits = nNewBits;
@@ -1465,7 +1472,7 @@ HeaderBarItemBits HeaderBar::GetItemBits( USHORT nItemId ) const
{
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
- return mpItemList->GetObject( nPos )->mnBits;
+ return (*mpItemList)[ nPos ]->mnBits;
else
return 0;
}
@@ -1477,7 +1484,7 @@ void HeaderBar::SetItemData( USHORT nItemId, void* pNewData )
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
{
- mpItemList->GetObject( nPos )->mpUserData = pNewData;
+ (*mpItemList)[ nPos ]->mpUserData = pNewData;
ImplUpdate( nPos );
}
}
@@ -1488,7 +1495,7 @@ void* HeaderBar::GetItemData( USHORT nItemId ) const
{
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
- return mpItemList->GetObject( nPos )->mpUserData;
+ return (*mpItemList)[ nPos ]->mpUserData;
else
return NULL;
}
@@ -1500,7 +1507,7 @@ void HeaderBar::SetItemImage( USHORT nItemId, const Image& rImage )
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
{
- mpItemList->GetObject( nPos )->maImage = rImage;
+ (*mpItemList)[ nPos ]->maImage = rImage;
ImplUpdate( nPos );
}
}
@@ -1511,7 +1518,7 @@ Image HeaderBar::GetItemImage( USHORT nItemId ) const
{
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
- return mpItemList->GetObject( nPos )->maImage;
+ return (*mpItemList)[ nPos ]->maImage;
else
return Image();
}
@@ -1523,7 +1530,7 @@ void HeaderBar::SetItemText( USHORT nItemId, const XubString& rText )
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
{
- mpItemList->GetObject( nPos )->maText = rText;
+ (*mpItemList)[ nPos ]->maText = rText;
ImplUpdate( nPos );
}
}
@@ -1534,7 +1541,7 @@ XubString HeaderBar::GetItemText( USHORT nItemId ) const
{
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
- return mpItemList->GetObject( nPos )->maText;
+ return (*mpItemList)[ nPos ]->maText;
else
return String();
}
@@ -1545,7 +1552,7 @@ void HeaderBar::SetHelpText( USHORT nItemId, const XubString& rText )
{
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
- mpItemList->GetObject( nPos )->maHelpText = rText;
+ (*mpItemList)[ nPos ]->maHelpText = rText;
}
// -----------------------------------------------------------------------
@@ -1555,7 +1562,7 @@ XubString HeaderBar::GetHelpText( USHORT nItemId ) const
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
{
- ImplHeadItem* pItem = mpItemList->GetObject( nPos );
+ ImplHeadItem* pItem = (*mpItemList)[ nPos ];
if ( !pItem->maHelpText.Len() && pItem->mnHelpId )
{
Help* pHelp = Application::GetHelp();
@@ -1575,7 +1582,7 @@ void HeaderBar::SetHelpId( USHORT nItemId, ULONG nHelpId )
{
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
- mpItemList->GetObject( nPos )->mnHelpId = nHelpId;
+ (*mpItemList)[ nPos ]->mnHelpId = nHelpId;
}
// -----------------------------------------------------------------------
@@ -1584,7 +1591,7 @@ ULONG HeaderBar::GetHelpId( USHORT nItemId ) const
{
USHORT nPos = GetItemPos( nItemId );
if ( nPos != HEADERBAR_ITEM_NOTFOUND )
- return mpItemList->GetObject( nPos )->mnHelpId;
+ return (*mpItemList)[ nPos ]->mnHelpId;
else
return 0;
}
@@ -1596,9 +1603,9 @@ Size HeaderBar::CalcWindowSizePixel() const
long nMaxImageSize = 0;
Size aSize( 0, GetTextHeight() );
- ImplHeadItem* pItem = mpItemList->First();
- while ( pItem )
+ for ( size_t i = 0, n = mpItemList->size(); i < n; ++i )
{
+ ImplHeadItem* pItem = (*mpItemList)[ i ];
// Image-Groessen beruecksichtigen
long nImageHeight = pItem->maImage.GetSizePixel().Height();
if ( !(pItem->mnBits & (HIB_LEFTIMAGE | HIB_RIGHTIMAGE)) && pItem->maText.Len() )
@@ -1608,8 +1615,6 @@ Size HeaderBar::CalcWindowSizePixel() const
// Breite aufaddieren
aSize.Width() += pItem->mnSize;
-
- pItem = mpItemList->Next();
}
if ( nMaxImageSize > aSize.Height() )
More information about the Libreoffice-commits
mailing list