summaryrefslogtreecommitdiff
path: root/svtools/source/contnr/svtabbx.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svtools/source/contnr/svtabbx.cxx')
-rw-r--r--svtools/source/contnr/svtabbx.cxx1302
1 files changed, 0 insertions, 1302 deletions
diff --git a/svtools/source/contnr/svtabbx.cxx b/svtools/source/contnr/svtabbx.cxx
deleted file mode 100644
index 8a85a93734..0000000000
--- a/svtools/source/contnr/svtabbx.cxx
+++ /dev/null
@@ -1,1302 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * 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
- *
- * This file is part of OpenOffice.org.
- *
- * 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.
- *
- * 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).
- *
- * 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.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svtools.hxx"
-#include <svtools/svtabbx.hxx>
-#include <svtools/headbar.hxx>
-#include <svtools/svtdata.hxx>
-#include <svtools/svtools.hrc>
-#include <com/sun/star/accessibility/AccessibleStateType.hpp>
-#include <com/sun/star/accessibility/AccessibleEventId.hpp>
-#include "svtaccessiblefactory.hxx"
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::accessibility;
-
-#define MYTABMASK \
- ( SV_LBOXTAB_ADJUST_RIGHT | SV_LBOXTAB_ADJUST_LEFT | SV_LBOXTAB_ADJUST_CENTER | SV_LBOXTAB_ADJUST_NUMERIC )
-
-// SvTreeListBox-Callback
-
-void SvTabListBox::SetTabs()
-{
- SvTreeListBox::SetTabs();
- if( nTabCount )
- {
- DBG_ASSERT(pTabList,"TabList ?");
-
- // die TreeListBox hat jetzt ihre Tabulatoren in die Liste eingefuegt.
- // jetzt plustern wir die Liste mit zusaetzlichen Tabulatoren auf,
- // und passen den ganz rechten Tab der Treelistbox an.
-
- // den ganz rechten Tab nehmen
- // HACK fuer den Explorer! Wenn der ViewParent != 0 ist, dann wird
- // der erste Tab der TreeListBox von der TreelistBox berechnet!
- // Dies wird fuer ButtonsOnRoot benoetigt, da der Explorer nicht
- // weiss, welchen zusaetzlichen Offset er in diesem Modus auf
- // den Tabulator addieren muss. Die TreeListBox weiss es!
- /*
- if( !pViewParent )
- {
- SvLBoxTab* pFirstTab = (SvLBoxTab*)aTabs.GetObject( aTabs.Count()-1 );
- pFirstTab->SetPos( pTabList[0].GetPos() );
- pFirstTab->nFlags &= ~MYTABMASK;
- pFirstTab->nFlags |= pTabList[0].nFlags;
- }
- */
-
- // alle anderen Tabs an Liste haengen
- for( sal_uInt16 nCurTab = 1; nCurTab < nTabCount; nCurTab++ )
- {
- SvLBoxTab* pTab = pTabList+nCurTab;
- AddTab( pTab->GetPos(), pTab->nFlags );
- }
- }
-}
-
-void SvTabListBox::InitEntry( SvLBoxEntry* pEntry, const XubString& rStr,
- const Image& rColl, const Image& rExp, SvLBoxButtonKind eButtonKind )
-{
- SvTreeListBox::InitEntry( pEntry, rStr, rColl, rExp, eButtonKind );
- XubString aToken;
-
- const xub_Unicode* pCurToken = aCurEntry.GetBuffer();
- sal_uInt16 nCurTokenLen;
- const xub_Unicode* pNextToken = GetToken( pCurToken, nCurTokenLen );
- sal_uInt16 nCount = nTabCount; nCount--;
- for( sal_uInt16 nToken = 0; nToken < nCount; nToken++ )
- {
- if( pCurToken && nCurTokenLen )
- // aToken.Assign( pCurToken, nCurTokenLen );
- aToken = XubString( pCurToken, nCurTokenLen );
- else
- aToken.Erase();
- SvLBoxString* pStr = new SvLBoxString( pEntry, 0, aToken );
- pEntry->AddItem( pStr );
- pCurToken = pNextToken;
- if( pCurToken )
- pNextToken = GetToken( pCurToken, nCurTokenLen );
- else
- nCurTokenLen = 0;
- }
-}
-
-
-SvTabListBox::SvTabListBox( Window* pParent, WinBits nBits )
- : SvTreeListBox( pParent, nBits )
-{
- pTabList = 0;
- nTabCount = 0;
- pViewParent = 0;
- SetHighlightRange(); // ueber volle Breite selektieren
-}
-
-SvTabListBox::SvTabListBox( Window* pParent, const ResId& rResId )
- : SvTreeListBox( pParent, rResId )
-{
- pTabList = 0;
- nTabCount = 0;
- pViewParent = 0;
- SvTabListBox::Resize();
- SetHighlightRange();
-}
-
-SvTabListBox::~SvTabListBox()
-{
- // array-delete
- delete [] pTabList;
-#ifdef DBG_UTIL
- pTabList = 0;
- nTabCount = 0;
-#endif
-}
-
-void SvTabListBox::SetTabs( long* pTabs, MapUnit eMapUnit )
-{
- DBG_ASSERT(pTabs,"SetTabs:NULL-Ptr");
- if( !pTabs )
- return;
-
- delete [] pTabList;
- sal_uInt16 nCount = (sal_uInt16)(*pTabs);
- pTabList = new SvLBoxTab[ nCount ];
- nTabCount = nCount;
-
- MapMode aMMSource( eMapUnit );
- MapMode aMMDest( MAP_PIXEL );
-
- pTabs++;
- for( sal_uInt16 nIdx = 0; nIdx < nCount; nIdx++, pTabs++ )
- {
- Size aSize( *pTabs, 0 );
- aSize = LogicToLogic( aSize, &aMMSource, &aMMDest );
- long nNewTab = aSize.Width();
- pTabList[nIdx].SetPos( nNewTab );
- pTabList[nIdx].nFlags=(SV_LBOXTAB_ADJUST_LEFT| SV_LBOXTAB_INV_ALWAYS);
- }
- SvTreeListBox::nTreeFlags |= TREEFLAG_RECALCTABS;
- if( IsUpdateMode() )
- Invalidate();
-}
-
-void SvTabListBox::SetTab( sal_uInt16 nTab,long nValue,MapUnit eMapUnit )
-{
- DBG_ASSERT(nTab<nTabCount,"Invalid Tab-Pos");
- if( nTab < nTabCount )
- {
- DBG_ASSERT(pTabList,"TabList?");
- MapMode aMMSource( eMapUnit );
- MapMode aMMDest( MAP_PIXEL );
- Size aSize( nValue, 0 );
- aSize = LogicToLogic( aSize, &aMMSource, &aMMDest );
- nValue = aSize.Width();
- pTabList[ nTab ].SetPos( nValue );
- SvTreeListBox::nTreeFlags |= TREEFLAG_RECALCTABS;
- if( IsUpdateMode() )
- Invalidate();
- }
-}
-
-SvLBoxEntry* SvTabListBox::InsertEntry( const XubString& rText, SvLBoxEntry* pParent,
- sal_Bool /*bChildsOnDemand*/,
- sal_uLong nPos, void* pUserData,
- SvLBoxButtonKind )
-{
- return InsertEntryToColumn( rText, pParent, nPos, 0xffff, pUserData );
-}
-
-SvLBoxEntry* SvTabListBox::InsertEntry( const XubString& rText,
- const Image& rExpandedEntryBmp,
- const Image& rCollapsedEntryBmp,
- SvLBoxEntry* pParent,
- sal_Bool /*bChildsOnDemand*/,
- sal_uLong nPos, void* pUserData,
- SvLBoxButtonKind )
-{
- return InsertEntryToColumn( rText, rExpandedEntryBmp, rCollapsedEntryBmp,
- pParent, nPos, 0xffff, pUserData );
-}
-
-SvLBoxEntry* SvTabListBox::InsertEntryToColumn(const XubString& rStr,SvLBoxEntry* pParent,sal_uLong nPos,sal_uInt16 nCol,
- void* pUser )
-{
- XubString aStr;
- if( nCol != 0xffff )
- {
- while( nCol )
- {
- aStr += '\t';
- nCol--;
- }
- }
- aStr += rStr;
- XubString aFirstStr( aStr );
- sal_uInt16 nEnd = aFirstStr.Search( '\t' );
- if( nEnd != STRING_NOTFOUND )
- {
- aFirstStr.Erase( nEnd );
- aCurEntry = aStr;
- aCurEntry.Erase( 0, ++nEnd );
- }
- else
- aCurEntry.Erase();
- return SvTreeListBox::InsertEntry( aFirstStr, pParent, sal_False, nPos, pUser );
-}
-
-SvLBoxEntry* SvTabListBox::InsertEntryToColumn( const XubString& rStr,
- const Image& rExpandedEntryBmp, const Image& rCollapsedEntryBmp,
- SvLBoxEntry* pParent,sal_uLong nPos,sal_uInt16 nCol, void* pUser )
-{
- XubString aStr;
- if( nCol != 0xffff )
- {
- while( nCol )
- {
- aStr += '\t';
- nCol--;
- }
- }
- aStr += rStr;
- XubString aFirstStr( aStr );
- sal_uInt16 nEnd = aFirstStr.Search( '\t' );
- if( nEnd != STRING_NOTFOUND )
- {
- aFirstStr.Erase( nEnd );
- aCurEntry = aStr;
- aCurEntry.Erase( 0, ++nEnd );
- }
- else
- aCurEntry.Erase();
-
- return SvTreeListBox::InsertEntry(
- aFirstStr,
- rExpandedEntryBmp, rCollapsedEntryBmp,
- pParent, sal_False, nPos, pUser );
-}
-
-SvLBoxEntry* SvTabListBox::InsertEntryToColumn( const XubString& rStr, sal_uLong nPos,
- sal_uInt16 nCol, void* pUser )
-{
- return InsertEntryToColumn( rStr,0,nPos, nCol, pUser );
-}
-
-String SvTabListBox::GetEntryText( SvLBoxEntry* pEntry ) const
-{
- return GetEntryText( pEntry, 0xffff );
-}
-
-String SvTabListBox::GetEntryText( SvLBoxEntry* pEntry, sal_uInt16 nCol ) const
-{
- DBG_ASSERT(pEntry,"GetEntryText:Invalid Entry");
- XubString aResult;
- if( pEntry )
- {
- sal_uInt16 nCount = pEntry->ItemCount();
- sal_uInt16 nCur = 0;
- while( nCur < nCount )
- {
- SvLBoxItem* pStr = pEntry->GetItem( nCur );
- if( pStr->IsA() == SV_ITEM_ID_LBOXSTRING )
- {
- if( nCol == 0xffff )
- {
- if( aResult.Len() )
- aResult += '\t';
- aResult += static_cast<SvLBoxString*>( pStr )->GetText();
- }
- else
- {
- if( nCol == 0 )
- return static_cast<SvLBoxString*>( pStr )->GetText();
- nCol--;
- }
- }
- nCur++;
- }
- }
- return aResult;
-}
-
-String SvTabListBox::GetEntryText( sal_uLong nPos, sal_uInt16 nCol ) const
-{
- SvLBoxEntry* pEntry = GetEntryOnPos( nPos );
- return GetEntryText( pEntry, nCol );
-}
-
-void SvTabListBox::SetEntryText( const XubString& rStr, sal_uLong nPos, sal_uInt16 nCol )
-{
- SvLBoxEntry* pEntry = SvTreeListBox::GetEntry( nPos );
- SetEntryText( rStr, pEntry, nCol );
-}
-
-void SvTabListBox::SetEntryText( const XubString& rStr, SvLBoxEntry* pEntry, sal_uInt16 nCol )
-{
- DBG_ASSERT(pEntry,"SetEntryText:Invalid Entry");
- if( !pEntry )
- return;
-
- String sOldText = GetEntryText( pEntry, nCol );
- if ( sOldText == rStr )
- return;
-
- sal_uInt16 nTextColumn = nCol;
- const xub_Unicode* pCurToken = rStr.GetBuffer();
- sal_uInt16 nCurTokenLen;
- const xub_Unicode* pNextToken = GetToken( pCurToken, nCurTokenLen );
-
- XubString aTemp;
- sal_uInt16 nCount = pEntry->ItemCount();
- sal_uInt16 nCur = 0;
- while( nCur < nCount )
- {
- SvLBoxItem* pStr = pEntry->GetItem( nCur );
- if( pStr && pStr->IsA() == SV_ITEM_ID_LBOXSTRING )
- {
- if( nCol == 0xffff )
- {
- if( pCurToken )
- aTemp = XubString( pCurToken, nCurTokenLen );
- else
- aTemp.Erase(); // alle Spalten ohne Token loeschen
- ((SvLBoxString*)pStr)->SetText( pEntry, aTemp );
- pCurToken = pNextToken;
- pNextToken = GetToken( pCurToken, nCurTokenLen );
- }
- else
- {
- if( !nCol )
- {
- aTemp = XubString( pCurToken, nCurTokenLen );
- ((SvLBoxString*)pStr)->SetText( pEntry, aTemp );
- if( !pNextToken )
- break;
- pCurToken = pNextToken;
- pNextToken = GetToken( pCurToken, nCurTokenLen );
- }
- else
- nCol--;
- }
- }
- nCur++;
- }
- GetModel()->InvalidateEntry( pEntry );
-
- TabListBoxEventData* pData = new TabListBoxEventData( pEntry, nTextColumn, sOldText );
- ImplCallEventListeners( VCLEVENT_TABLECELL_NAMECHANGED, pData );
- delete pData;
-}
-
-String SvTabListBox::GetCellText( sal_uLong nPos, sal_uInt16 nCol ) const
-{
- SvLBoxEntry* pEntry = GetEntryOnPos( nPos );
- DBG_ASSERT( pEntry, "SvTabListBox::GetCellText(): Invalid Entry" );
- XubString aResult;
- if ( pEntry && pEntry->ItemCount() > ( nCol + 1 ) )
- {
- SvLBoxItem* pStr = pEntry->GetItem( nCol + 1 );
- if ( pStr && pStr->IsA() == SV_ITEM_ID_LBOXSTRING )
- aResult = static_cast< SvLBoxString* >( pStr )->GetText();
- }
- return aResult;
-}
-
-sal_uLong SvTabListBox::GetEntryPos( const XubString& rStr, sal_uInt16 nCol )
-{
- sal_uLong nPos = 0;
- SvLBoxEntry* pEntry = First();
- while( pEntry )
- {
- XubString aStr( GetEntryText( pEntry, nCol ));
- if( aStr == rStr )
- return nPos;
- pEntry = Next( pEntry );
- nPos++;
- }
- return 0xffffffff;
-}
-
-sal_uLong SvTabListBox::GetEntryPos( const SvLBoxEntry* pEntry ) const
-{
- sal_uLong nPos = 0;
- SvLBoxEntry* pTmpEntry = First();
- while( pTmpEntry )
- {
- if ( pTmpEntry == pEntry )
- return nPos;
- pTmpEntry = Next( pTmpEntry );
- ++nPos;
- }
- return 0xffffffff;
-}
-
-void SvTabListBox::Resize()
-{
- SvTreeListBox::Resize();
-}
-
-// static
-const xub_Unicode* SvTabListBox::GetToken( const xub_Unicode* pPtr, sal_uInt16& rLen )
-{
- if( !pPtr || *pPtr == 0 )
- {
- rLen = 0;
- return 0;
- }
- xub_Unicode c = *pPtr;
- sal_uInt16 nLen = 0;
- while( c != '\t' && c != 0 )
- {
- pPtr++;
- nLen++;
- c = *pPtr;
- }
- if( c )
- pPtr++; // Tab ueberspringen
- else
- pPtr = 0;
- rLen = nLen;
- return pPtr;
-}
-
-String SvTabListBox::GetTabEntryText( sal_uLong nPos, sal_uInt16 nCol ) const
-{
- SvLBoxEntry* pEntry = SvTreeListBox::GetEntry( nPos );
- DBG_ASSERT( pEntry, "GetTabEntryText(): Invalid entry " );
- XubString aResult;
- if ( pEntry )
- {
- sal_uInt16 nCount = pEntry->ItemCount();
- sal_uInt16 nCur = ( 0 == nCol && IsCellFocusEnabled() ) ? GetCurrentTabPos() : 0;
- while( nCur < nCount )
- {
- SvLBoxItem* pStr = pEntry->GetItem( nCur );
- if ( pStr->IsA() == SV_ITEM_ID_LBOXSTRING )
- {
- if ( nCol == 0xffff )
- {
- if ( aResult.Len() )
- aResult += '\t';
- aResult += static_cast<SvLBoxString*>( pStr )->GetText();
- }
- else
- {
- if ( nCol == 0 )
- {
- String sRet = static_cast<SvLBoxString*>( pStr )->GetText();
- if ( sRet.Len() == 0 )
- sRet = String( SvtResId( STR_SVT_ACC_EMPTY_FIELD ) );
- return sRet;
- }
- --nCol;
- }
- }
- ++nCur;
- }
- }
- return aResult;
-}
-
-SvLBoxEntry* SvTabListBox::GetEntryOnPos( sal_uLong _nEntryPos ) const
-{
- SvLBoxEntry* pEntry = NULL;
- sal_uLong i, nPos = 0, nCount = GetLevelChildCount( NULL );
- for ( i = 0; i < nCount; ++i )
- {
- SvLBoxEntry* pParent = GetEntry(i);
- if ( nPos == _nEntryPos )
- {
- pEntry = pParent;
- break;
- }
- else
- {
- nPos++;
- pEntry = GetChildOnPos( pParent, _nEntryPos, nPos );
- if ( pEntry )
- break;
- }
- }
-
- return pEntry;
-}
-
-SvLBoxEntry* SvTabListBox::GetChildOnPos( SvLBoxEntry* _pParent, sal_uLong _nEntryPos, sal_uLong& _rPos ) const
-{
- sal_uLong i, nCount = GetLevelChildCount( _pParent );
- for ( i = 0; i < nCount; ++i )
- {
- SvLBoxEntry* pParent = GetEntry( _pParent, i );
- if ( _rPos == _nEntryPos )
- return pParent;
- else
- {
- _rPos++;
- SvLBoxEntry* pEntry = GetChildOnPos( pParent, _nEntryPos, _rPos );
- if ( pEntry )
- return pEntry;
- }
- }
-
- return NULL;
-}
-
-void SvTabListBox::SetTabJustify( sal_uInt16 nTab, SvTabJustify eJustify)
-{
- if( nTab >= nTabCount )
- return;
- SvLBoxTab* pTab = &(pTabList[ nTab ]);
- sal_uInt16 nFlags = pTab->nFlags;
- nFlags &= (~MYTABMASK);
- nFlags |= (sal_uInt16)eJustify;
- pTab->nFlags = nFlags;
- SvTreeListBox::nTreeFlags |= TREEFLAG_RECALCTABS;
- if( IsUpdateMode() )
- Invalidate();
-}
-
-SvTabJustify SvTabListBox::GetTabJustify( sal_uInt16 nTab ) const
-{
- SvTabJustify eResult = AdjustLeft;
- if( nTab >= nTabCount )
- return eResult;
- SvLBoxTab* pTab = &(pTabList[ nTab ]);
- sal_uInt16 nFlags = pTab->nFlags;
- nFlags &= MYTABMASK;
- eResult = (SvTabJustify)nFlags;
- return eResult;
-}
-
-long SvTabListBox::GetLogicTab( sal_uInt16 nTab )
-{
- if( SvTreeListBox::nTreeFlags & TREEFLAG_RECALCTABS )
- ((SvTabListBox*)this)->SetTabs();
-
- DBG_ASSERT(nTab<nTabCount,"GetTabPos:Invalid Tab");
- return ((SvLBoxTab*)aTabs.GetObject( nTab ))->GetPos();
-}
-
-// class SvHeaderTabListBoxImpl ------------------------------------------
-
-namespace svt
-{
- struct SvHeaderTabListBoxImpl
- {
- HeaderBar* m_pHeaderBar;
- AccessibleFactoryAccess m_aFactoryAccess;
-
- SvHeaderTabListBoxImpl() : m_pHeaderBar( NULL ) { }
- };
-}
-
-// class SvHeaderTabListBox ----------------------------------------------
-
-SvHeaderTabListBox::SvHeaderTabListBox( Window* pParent, WinBits nWinStyle ) :
-
- SvTabListBox( pParent, nWinStyle ),
-
- m_bFirstPaint ( sal_True ),
- m_pImpl ( new ::svt::SvHeaderTabListBoxImpl ),
- m_pAccessible ( NULL )
-{
-}
-
-// -----------------------------------------------------------------------
-
-SvHeaderTabListBox::SvHeaderTabListBox( Window* pParent, const ResId& rResId ) :
-
- SvTabListBox( pParent, rResId ),
-
- m_bFirstPaint ( sal_True ),
- m_pImpl ( new ::svt::SvHeaderTabListBoxImpl ),
- m_pAccessible ( NULL )
-{
-}
-
-// -----------------------------------------------------------------------
-
-SvHeaderTabListBox::~SvHeaderTabListBox()
-{
- delete m_pImpl;
-}
-
-// -----------------------------------------------------------------------
-
-void SvHeaderTabListBox::Paint( const Rectangle& rRect )
-{
- if ( m_bFirstPaint )
- {
- m_bFirstPaint = sal_False;
- RepaintScrollBars();
- }
- SvTabListBox::Paint( rRect );
-}
-
-// -----------------------------------------------------------------------
-
-void SvHeaderTabListBox::InitHeaderBar( HeaderBar* pHeaderBar )
-{
- DBG_ASSERT( !m_pImpl->m_pHeaderBar, "header bar already initialized" );
- DBG_ASSERT( pHeaderBar, "invalid header bar initialization" );
- m_pImpl->m_pHeaderBar = pHeaderBar;
- SetScrolledHdl( LINK( this, SvHeaderTabListBox, ScrollHdl_Impl ) );
- m_pImpl->m_pHeaderBar->SetCreateAccessibleHdl( LINK( this, SvHeaderTabListBox, CreateAccessibleHdl_Impl ) );
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool SvHeaderTabListBox::IsItemChecked( SvLBoxEntry* pEntry, sal_uInt16 nCol ) const
-{
- SvButtonState eState = SV_BUTTON_UNCHECKED;
- SvLBoxButton* pItem = (SvLBoxButton*)( pEntry->GetItem( nCol + 1 ) );
-
- if ( pItem && ( (SvLBoxItem*)pItem )->IsA() == SV_ITEM_ID_LBOXBUTTON )
- {
- sal_uInt16 nButtonFlags = pItem->GetButtonFlags();
- eState = pCheckButtonData->ConvertToButtonState( nButtonFlags );
- }
-
- return ( eState == SV_BUTTON_CHECKED );
-}
-
-// -----------------------------------------------------------------------
-
-SvLBoxEntry* SvHeaderTabListBox::InsertEntryToColumn(
- const XubString& rStr, sal_uLong nPos, sal_uInt16 nCol, void* pUserData )
-{
- SvLBoxEntry* pEntry = SvTabListBox::InsertEntryToColumn( rStr, nPos, nCol, pUserData );
- RecalculateAccessibleChildren();
- return pEntry;
-}
-
-// -----------------------------------------------------------------------
-
-SvLBoxEntry* SvHeaderTabListBox::InsertEntryToColumn(
- const XubString& rStr, SvLBoxEntry* pParent, sal_uLong nPos, sal_uInt16 nCol, void* pUserData )
-{
- SvLBoxEntry* pEntry = SvTabListBox::InsertEntryToColumn( rStr, pParent, nPos, nCol, pUserData );
- RecalculateAccessibleChildren();
- return pEntry;
-}
-
-// -----------------------------------------------------------------------
-
-SvLBoxEntry* SvHeaderTabListBox::InsertEntryToColumn(
- const XubString& rStr, const Image& rExpandedEntryBmp, const Image& rCollapsedEntryBmp,
- SvLBoxEntry* pParent, sal_uLong nPos, sal_uInt16 nCol, void* pUserData )
-{
- SvLBoxEntry* pEntry = SvTabListBox::InsertEntryToColumn(
- rStr, rExpandedEntryBmp, rCollapsedEntryBmp, pParent, nPos, nCol, pUserData );
- RecalculateAccessibleChildren();
- return pEntry;
-}
-
-// -----------------------------------------------------------------------
-
-sal_uLong SvHeaderTabListBox::Insert(
- SvLBoxEntry* pEnt, SvLBoxEntry* pPar, sal_uLong nPos )
-{
- sal_uLong n = SvTabListBox::Insert( pEnt, pPar, nPos );
- RecalculateAccessibleChildren();
- return n;
-}
-
-// -----------------------------------------------------------------------
-
-sal_uLong SvHeaderTabListBox::Insert( SvLBoxEntry* pEntry, sal_uLong nRootPos )
-{
- sal_uLong nPos = SvTabListBox::Insert( pEntry, nRootPos );
- RecalculateAccessibleChildren();
- return nPos;
-}
-
-// -----------------------------------------------------------------------
-
-void SvHeaderTabListBox::RemoveEntry( SvLBoxEntry* _pEntry )
-{
- GetModel()->Remove( _pEntry );
- m_aAccessibleChildren.clear();
-}
-
-// -----------------------------------------------------------------------
-
-void SvHeaderTabListBox::Clear()
-{
- SvTabListBox::Clear();
- m_aAccessibleChildren.clear();
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvHeaderTabListBox, ScrollHdl_Impl, SvTabListBox*, EMPTYARG )
-{
- m_pImpl->m_pHeaderBar->SetOffset( -GetXOffset() );
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SvHeaderTabListBox, CreateAccessibleHdl_Impl, HeaderBar*, EMPTYARG )
-{
- Window* pParent = m_pImpl->m_pHeaderBar->GetAccessibleParentWindow();
- DBG_ASSERT( pParent, "SvHeaderTabListBox..CreateAccessibleHdl_Impl - accessible parent not found" );
- if ( pParent )
- {
- ::com::sun::star::uno::Reference< XAccessible > xAccParent = pParent->GetAccessible();
- if ( xAccParent.is() )
- {
- Reference< XAccessible > xAccessible = m_pImpl->m_aFactoryAccess.getFactory().createAccessibleBrowseBoxHeaderBar(
- xAccParent, *this, ::svt::BBTYPE_COLUMNHEADERBAR );
- m_pImpl->m_pHeaderBar->SetAccessible( xAccessible );
- }
- }
- return 0;
-}
-
-// -----------------------------------------------------------------------
-
-void SvHeaderTabListBox::RecalculateAccessibleChildren()
-{
- if ( !m_aAccessibleChildren.empty() )
- {
- sal_uInt32 nCount = ( GetRowCount() + 1 ) * GetColumnCount();
- if ( m_aAccessibleChildren.size() < nCount )
- m_aAccessibleChildren.resize( nCount );
- else
- {
- DBG_ASSERT( m_aAccessibleChildren.size() == nCount, "wrong children count" );
- }
- }
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool SvHeaderTabListBox::IsCellCheckBox( long _nRow, sal_uInt16 _nColumn, TriState& _rState )
-{
- sal_Bool bRet = sal_False;
- SvLBoxEntry* pEntry = GetEntry( _nRow );
- if ( pEntry )
- {
- sal_uInt16 nItemCount = pEntry->ItemCount();
- if ( nItemCount > ( _nColumn + 1 ) )
- {
- SvLBoxButton* pItem = (SvLBoxButton*)( pEntry->GetItem( _nColumn + 1 ) );
- if ( pItem && ( (SvLBoxItem*)pItem )->IsA() == SV_ITEM_ID_LBOXBUTTON )
- {
- bRet = sal_True;
- _rState = ( ( pItem->GetButtonFlags() & SV_ITEMSTATE_UNCHECKED ) == 0 )
- ? STATE_CHECK : STATE_NOCHECK;
- }
- }
- else
- {
- DBG_ERRORFILE( "SvHeaderTabListBox::IsCellCheckBox(): column out of range" );
- }
- }
- return bRet;
-}
-
-// -----------------------------------------------------------------------
-long SvHeaderTabListBox::GetRowCount() const
-{
- return GetEntryCount();
-}
-// -----------------------------------------------------------------------
-sal_uInt16 SvHeaderTabListBox::GetColumnCount() const
-{
- return m_pImpl->m_pHeaderBar->GetItemCount();
-}
-// -----------------------------------------------------------------------
-sal_Int32 SvHeaderTabListBox::GetCurrRow() const
-{
- sal_Int32 nRet = -1;
- SvLBoxEntry* pEntry = GetCurEntry();
- if ( pEntry )
- {
- sal_uLong nCount = GetEntryCount();
- for ( sal_uLong i = 0; i < nCount; ++i )
- {
- if ( pEntry == GetEntry(i) )
- {
- nRet = i;
- break;
- }
- }
- }
-
- return nRet;
-}
-// -----------------------------------------------------------------------
-sal_uInt16 SvHeaderTabListBox::GetCurrColumn() const
-{
- sal_uInt16 nPos = GetCurrentTabPos() - 1;
- return nPos;
-}
-// -----------------------------------------------------------------------
-::rtl::OUString SvHeaderTabListBox::GetRowDescription( sal_Int32 _nRow ) const
-{
- return ::rtl::OUString( GetEntryText( _nRow ) );
-}
-// -----------------------------------------------------------------------
-::rtl::OUString SvHeaderTabListBox::GetColumnDescription( sal_uInt16 _nColumn ) const
-{
- return ::rtl::OUString( m_pImpl->m_pHeaderBar->GetItemText( m_pImpl->m_pHeaderBar->GetItemId( _nColumn ) ) );
-}
-// -----------------------------------------------------------------------
-sal_Bool SvHeaderTabListBox::HasRowHeader() const
-{
- return sal_False;
-}
-// -----------------------------------------------------------------------
-sal_Bool SvHeaderTabListBox::IsCellFocusable() const
-{
- return IsCellFocusEnabled();
-}
-// -----------------------------------------------------------------------
-sal_Bool SvHeaderTabListBox::GoToCell( sal_Int32 _nRow, sal_uInt16 _nColumn )
-{
- sal_Bool bRet = ( IsCellFocusEnabled() == sal_True );
- if ( bRet )
- {
- // first set cursor to _nRow
- SetCursor( GetEntry( _nRow ), sal_True );
- // then set the focus into _nColumn
- bRet = ( SetCurrentTabPos( _nColumn ) == true );
- }
- return bRet;
-}
-// -----------------------------------------------------------------------
-void SvHeaderTabListBox::SetNoSelection()
-{
- SvLBox::SelectAll( sal_False );
-}
-// -----------------------------------------------------------------------
-void SvHeaderTabListBox::SelectAll()
-{
- SvLBox::SelectAll( sal_True );
-}
-// -----------------------------------------------------------------------
-void SvHeaderTabListBox::SelectAll( sal_Bool bSelect, sal_Bool bPaint )
-{
- // overwritten just to disambiguate the SelectAll() from the base' class SelectAll( BOOl, sal_Bool )
- SvTabListBox::SelectAll( bSelect, bPaint );
-}
-
-// -----------------------------------------------------------------------
-void SvHeaderTabListBox::SelectRow( long _nRow, sal_Bool _bSelect, sal_Bool )
-{
- Select( GetEntry( _nRow ), _bSelect );
-}
-// -----------------------------------------------------------------------
-void SvHeaderTabListBox::SelectColumn( sal_uInt16, sal_Bool )
-{
-}
-// -----------------------------------------------------------------------
-sal_Int32 SvHeaderTabListBox::GetSelectedRowCount() const
-{
- return GetSelectionCount();
-}
-// -----------------------------------------------------------------------
-sal_Int32 SvHeaderTabListBox::GetSelectedColumnCount() const
-{
- return 0;
-}
-// -----------------------------------------------------------------------
-bool SvHeaderTabListBox::IsRowSelected( long _nRow ) const
-{
- SvLBoxEntry* pEntry = GetEntry( _nRow );
- return ( pEntry && IsSelected( pEntry ) );
-}
-// -----------------------------------------------------------------------
-sal_Bool SvHeaderTabListBox::IsColumnSelected( long ) const
-{
- return sal_False;
-}
-// -----------------------------------------------------------------------
-void SvHeaderTabListBox::GetAllSelectedRows( ::com::sun::star::uno::Sequence< sal_Int32 >& ) const
-{
-}
-// -----------------------------------------------------------------------
-void SvHeaderTabListBox::GetAllSelectedColumns( ::com::sun::star::uno::Sequence< sal_Int32 >& ) const
-{
-}
-// -----------------------------------------------------------------------
-sal_Bool SvHeaderTabListBox::IsCellVisible( sal_Int32, sal_uInt16 ) const
-{
- return sal_True;
-}
-// -----------------------------------------------------------------------
-String SvHeaderTabListBox::GetAccessibleCellText( long _nRow, sal_uInt16 _nColumnPos ) const
-{
- return ::rtl::OUString( GetTabEntryText( _nRow, _nColumnPos ) );
-}
-// -----------------------------------------------------------------------
-Rectangle SvHeaderTabListBox::calcHeaderRect( sal_Bool _bIsColumnBar, sal_Bool _bOnScreen )
-{
- Rectangle aRect;
- if ( _bIsColumnBar )
- {
- Window* pParent = NULL;
- if ( !_bOnScreen )
- pParent = m_pImpl->m_pHeaderBar->GetAccessibleParentWindow();
-
- aRect = m_pImpl->m_pHeaderBar->GetWindowExtentsRelative( pParent );
- }
- return aRect;
-}
-// -----------------------------------------------------------------------
-Rectangle SvHeaderTabListBox::calcTableRect( sal_Bool _bOnScreen )
-{
- Window* pParent = NULL;
- if ( !_bOnScreen )
- pParent = GetAccessibleParentWindow();
-
- Rectangle aRect( GetWindowExtentsRelative( pParent ) );
- return aRect;
-}
-// -----------------------------------------------------------------------
-Rectangle SvHeaderTabListBox::GetFieldRectPixelAbs( sal_Int32 _nRow, sal_uInt16 _nColumn, sal_Bool _bIsHeader, sal_Bool _bOnScreen )
-{
- DBG_ASSERT( !_bIsHeader || 0 == _nRow, "invalid parameters" );
- Rectangle aRect;
- SvLBoxEntry* pEntry = GetEntry( _nRow );
- if ( pEntry )
- {
- aRect = _bIsHeader ? calcHeaderRect( sal_True, sal_False ) : GetBoundingRect( pEntry );
- Point aTopLeft = aRect.TopLeft();
- DBG_ASSERT( m_pImpl->m_pHeaderBar->GetItemCount() > _nColumn, "invalid column" );
- Rectangle aItemRect = m_pImpl->m_pHeaderBar->GetItemRect( m_pImpl->m_pHeaderBar->GetItemId( _nColumn ) );
- aTopLeft.X() = aItemRect.Left();
- Size aSize = aItemRect.GetSize();
- aRect = Rectangle( aTopLeft, aSize );
- Window* pParent = NULL;
- if ( !_bOnScreen )
- pParent = GetAccessibleParentWindow();
- aTopLeft = aRect.TopLeft();
- aTopLeft += GetWindowExtentsRelative( pParent ).TopLeft();
- aRect = Rectangle( aTopLeft, aRect.GetSize() );
- }
-
- return aRect;
-}
-// -----------------------------------------------------------------------
-Reference< XAccessible > SvHeaderTabListBox::CreateAccessibleCell( sal_Int32 _nRow, sal_uInt16 _nColumnPos )
-{
- OSL_ENSURE( m_pAccessible, "Invalid call: Accessible is null" );
-
- Reference< XAccessible > xChild;
- sal_Int32 nIndex = -1;
-
- if ( !AreChildrenTransient() )
- {
- const sal_uInt16 nColumnCount = GetColumnCount();
-
- // first call? -> initial list
- if ( m_aAccessibleChildren.empty() )
- {
- sal_Int32 nCount = ( GetRowCount() + 1 ) * nColumnCount;
- m_aAccessibleChildren.assign( nCount, Reference< XAccessible >() );
- }
-
- nIndex = ( _nRow * nColumnCount ) + _nColumnPos + nColumnCount;
- xChild = m_aAccessibleChildren[ nIndex ];
- }
-
- if ( !xChild.is() )
- {
- TriState eState = STATE_DONTKNOW;
- sal_Bool bIsCheckBox = IsCellCheckBox( _nRow, _nColumnPos, eState );
- if ( bIsCheckBox )
- xChild = m_pImpl->m_aFactoryAccess.getFactory().createAccessibleCheckBoxCell(
- m_pAccessible->getAccessibleChild( 0 ), *this, NULL, _nRow, _nColumnPos, eState, sal_True, sal_False );
- else
- xChild = m_pImpl->m_aFactoryAccess.getFactory().createAccessibleBrowseBoxTableCell(
- m_pAccessible->getAccessibleChild( 0 ), *this, NULL, _nRow, _nColumnPos, OFFSET_NONE );
-
- // insert into list
- if ( !AreChildrenTransient() )
- m_aAccessibleChildren[ nIndex ] = xChild;
- }
-
- return xChild;
-}
-// -----------------------------------------------------------------------
-Reference< XAccessible > SvHeaderTabListBox::CreateAccessibleRowHeader( sal_Int32 )
-{
- Reference< XAccessible > xHeader;
- return xHeader;
-}
-// -----------------------------------------------------------------------
-Reference< XAccessible > SvHeaderTabListBox::CreateAccessibleColumnHeader( sal_uInt16 _nColumn )
-{
- // first call? -> initial list
- if ( m_aAccessibleChildren.empty() )
- {
- const sal_uInt16 nColumnCount = GetColumnCount();
- sal_Int32 nCount = AreChildrenTransient() ?
- nColumnCount : ( GetRowCount() + 1 ) * nColumnCount;
- m_aAccessibleChildren.assign( nCount, Reference< XAccessible >() );
- }
-
- // get header
- Reference< XAccessible > xChild = m_aAccessibleChildren[ _nColumn ];
- // already exists?
- if ( !xChild.is() && m_pAccessible )
- {
- // no -> create new header cell
- xChild = m_pImpl->m_aFactoryAccess.getFactory().createAccessibleBrowseBoxHeaderCell(
- _nColumn, m_pAccessible->getHeaderBar( ::svt::BBTYPE_COLUMNHEADERBAR ),
- *this, NULL, ::svt::BBTYPE_COLUMNHEADERCELL
- );
-
- // insert into list
- m_aAccessibleChildren[ _nColumn ] = xChild;
- }
-
- return xChild;
-}
-// -----------------------------------------------------------------------
-sal_Int32 SvHeaderTabListBox::GetAccessibleControlCount() const
-{
- return -1;
-}
-// -----------------------------------------------------------------------
-Reference< XAccessible > SvHeaderTabListBox::CreateAccessibleControl( sal_Int32 )
-{
- Reference< XAccessible > xControl;
- return xControl;
-}
-// -----------------------------------------------------------------------
-sal_Bool SvHeaderTabListBox::ConvertPointToControlIndex( sal_Int32&, const Point& )
-{
- return sal_False;
-}
-// -----------------------------------------------------------------------
-sal_Bool SvHeaderTabListBox::ConvertPointToCellAddress( sal_Int32&, sal_uInt16&, const Point& )
-{
- return sal_False;
-}
-// -----------------------------------------------------------------------
-sal_Bool SvHeaderTabListBox::ConvertPointToRowHeader( sal_Int32&, const Point& )
-{
- return sal_False;
-}
-// -----------------------------------------------------------------------
-sal_Bool SvHeaderTabListBox::ConvertPointToColumnHeader( sal_uInt16&, const Point& )
-{
- return sal_False;
-}
-// -----------------------------------------------------------------------
-::rtl::OUString SvHeaderTabListBox::GetAccessibleObjectName( ::svt::AccessibleBrowseBoxObjType _eType, sal_Int32 _nPos ) const
-{
- ::rtl::OUString aRetText;
- switch( _eType )
- {
- case ::svt::BBTYPE_BROWSEBOX:
- case ::svt::BBTYPE_TABLE:
- case ::svt::BBTYPE_COLUMNHEADERBAR:
- // should be empty now (see #i63983)
- aRetText = ::rtl::OUString();
- break;
-
- case ::svt::BBTYPE_TABLECELL:
- {
- // here we need a valid pos, we can not handle -1
- if ( _nPos >= 0 )
- {
- sal_uInt16 nColumnCount = GetColumnCount();
- if (nColumnCount > 0)
- {
- sal_Int32 nRow = _nPos / nColumnCount;
- sal_uInt16 nColumn = static_cast< sal_uInt16 >( _nPos % nColumnCount );
- aRetText = GetCellText( nRow, nColumn );
- }
- }
- break;
- }
- case ::svt::BBTYPE_CHECKBOXCELL:
- {
- break; // checkbox cells have no name
- }
- case ::svt::BBTYPE_COLUMNHEADERCELL:
- {
- aRetText = m_pImpl->m_pHeaderBar->GetItemText( m_pImpl->m_pHeaderBar->GetItemId( (sal_uInt16)_nPos ) );
- break;
- }
-
- case ::svt::BBTYPE_ROWHEADERBAR:
- case ::svt::BBTYPE_ROWHEADERCELL:
- aRetText = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "error" ) );
- break;
-
- default:
- OSL_FAIL("BrowseBox::GetAccessibleName: invalid enum!");
- }
- return aRetText;
-}
-// -----------------------------------------------------------------------
-::rtl::OUString SvHeaderTabListBox::GetAccessibleObjectDescription( ::svt::AccessibleBrowseBoxObjType _eType, sal_Int32 _nPos ) const
-{
- ::rtl::OUString aRetText;
-
- if( _eType == ::svt::BBTYPE_TABLECELL && _nPos != -1 )
- {
- const String sVar1( RTL_CONSTASCII_USTRINGPARAM( "%1" ) );
- const String sVar2( RTL_CONSTASCII_USTRINGPARAM( "%2" ) );
-
- sal_uInt16 nColumnCount = GetColumnCount();
- if (nColumnCount > 0)
- {
- sal_Int32 nRow = _nPos / nColumnCount;
- sal_uInt16 nColumn = static_cast< sal_uInt16 >( _nPos % nColumnCount );
-
- String aText( SvtResId( STR_SVT_ACC_DESC_TABLISTBOX ) );
- aText.SearchAndReplace( sVar1, String::CreateFromInt32( nRow ) );
- String sColHeader = m_pImpl->m_pHeaderBar->GetItemText( m_pImpl->m_pHeaderBar->GetItemId( nColumn ) );
- if ( sColHeader.Len() == 0 )
- sColHeader = String::CreateFromInt32( nColumn );
- aText.SearchAndReplace( sVar2, sColHeader );
- aRetText = aText;
- }
- }
-
- return aRetText;
-}
-// -----------------------------------------------------------------------
-void SvHeaderTabListBox::FillAccessibleStateSet( ::utl::AccessibleStateSetHelper& _rStateSet, ::svt::AccessibleBrowseBoxObjType _eType ) const
-{
- switch( _eType )
- {
- case ::svt::BBTYPE_BROWSEBOX:
- case ::svt::BBTYPE_TABLE:
- {
- _rStateSet.AddState( AccessibleStateType::FOCUSABLE );
- if ( HasFocus() )
- _rStateSet.AddState( AccessibleStateType::FOCUSED );
- if ( IsActive() )
- _rStateSet.AddState( AccessibleStateType::ACTIVE );
- if ( IsEnabled() )
- {
- _rStateSet.AddState( AccessibleStateType::ENABLED );
- _rStateSet.AddState( AccessibleStateType::SENSITIVE );
- }
- if ( IsReallyVisible() )
- _rStateSet.AddState( AccessibleStateType::VISIBLE );
- if ( _eType == ::svt::BBTYPE_TABLE )
- {
-
- if ( AreChildrenTransient() )
- _rStateSet.AddState( AccessibleStateType::MANAGES_DESCENDANTS );
- _rStateSet.AddState( AccessibleStateType::MULTI_SELECTABLE );
- }
- break;
- }
-
- case ::svt::BBTYPE_COLUMNHEADERBAR:
- {
- sal_Int32 nCurRow = GetCurrRow();
- sal_uInt16 nCurColumn = GetCurrColumn();
- if ( IsCellVisible( nCurRow, nCurColumn ) )
- _rStateSet.AddState( AccessibleStateType::VISIBLE );
- _rStateSet.AddState( AccessibleStateType::TRANSIENT );
- break;
- }
-
- case ::svt::BBTYPE_ROWHEADERCELL:
- case ::svt::BBTYPE_COLUMNHEADERCELL:
- {
- _rStateSet.AddState( AccessibleStateType::VISIBLE );
- _rStateSet.AddState( AccessibleStateType::FOCUSABLE );
- _rStateSet.AddState( AccessibleStateType::TRANSIENT );
- break;
- }
- default:
- break;
- }
-}
-// -----------------------------------------------------------------------
-void SvHeaderTabListBox::FillAccessibleStateSetForCell( ::utl::AccessibleStateSetHelper& _rStateSet, sal_Int32 _nRow, sal_uInt16 _nColumn ) const
-{
- _rStateSet.AddState( AccessibleStateType::SELECTABLE );
- if ( AreChildrenTransient() )
- _rStateSet.AddState( AccessibleStateType::TRANSIENT );
-
- if ( IsCellVisible( _nRow, _nColumn ) )
- {
- _rStateSet.AddState( AccessibleStateType::VISIBLE );
- _rStateSet.AddState( AccessibleStateType::ENABLED );
- }
-
- if ( IsRowSelected( _nRow ) )
- {
- _rStateSet.AddState( AccessibleStateType::ACTIVE );
- _rStateSet.AddState( AccessibleStateType::SELECTED );
- }
-}
-// -----------------------------------------------------------------------
-void SvHeaderTabListBox::GrabTableFocus()
-{
- GrabFocus();
-}
-// -----------------------------------------------------------------------
-sal_Bool SvHeaderTabListBox::GetGlyphBoundRects( const Point& rOrigin, const String& rStr, int nIndex, int nLen, int nBase, MetricVector& rVector )
-{
- return Control::GetGlyphBoundRects( rOrigin, rStr, nIndex, nLen, nBase, rVector );
-}
-// -----------------------------------------------------------------------
-Rectangle SvHeaderTabListBox::GetWindowExtentsRelative( Window *pRelativeWindow ) const
-{
- return Control::GetWindowExtentsRelative( pRelativeWindow );
-}
-// -----------------------------------------------------------------------
-void SvHeaderTabListBox::GrabFocus()
-{
- Control::GrabFocus();
-}
-// -----------------------------------------------------------------------
-Reference< XAccessible > SvHeaderTabListBox::GetAccessible( sal_Bool bCreate )
-{
- return Control::GetAccessible( bCreate );
-}
-// -----------------------------------------------------------------------
-Window* SvHeaderTabListBox::GetAccessibleParentWindow() const
-{
- return Control::GetAccessibleParentWindow();
-}
-// -----------------------------------------------------------------------
-Window* SvHeaderTabListBox::GetWindowInstance()
-{
- return this;
-}
-// -----------------------------------------------------------------------
-Reference< XAccessible > SvHeaderTabListBox::CreateAccessible()
-{
- Window* pParent = GetAccessibleParentWindow();
- DBG_ASSERT( pParent, "SvHeaderTabListBox::::CreateAccessible - accessible parent not found" );
-
- Reference< XAccessible > xAccessible;
- if ( m_pAccessible ) xAccessible = m_pAccessible->getMyself();
-
- if( pParent && !m_pAccessible )
- {
- Reference< XAccessible > xAccParent = pParent->GetAccessible();
- if ( xAccParent.is() )
- {
- m_pAccessible = m_pImpl->m_aFactoryAccess.getFactory().createAccessibleTabListBox( xAccParent, *this );
- if ( m_pAccessible )
- xAccessible = m_pAccessible->getMyself();
- }
- }
- return xAccessible;
-}
-// -----------------------------------------------------------------------------
-Rectangle SvHeaderTabListBox::GetFieldCharacterBounds(sal_Int32,sal_Int32,sal_Int32)
-{
- Rectangle aRect;
- return aRect;
-}
-// -----------------------------------------------------------------------------
-sal_Int32 SvHeaderTabListBox::GetFieldIndexAtPoint(sal_Int32 _nRow,sal_Int32 _nColumnPos,const Point& _rPoint)
-{
- String sText = GetAccessibleCellText( _nRow, static_cast< sal_uInt16 >( _nColumnPos ) );
- MetricVector aRects;
- if ( GetGlyphBoundRects(Point(0,0),sText,0,STRING_LEN,0,aRects) )
- {
- for (MetricVector::iterator aIter = aRects.begin(); aIter != aRects.end(); ++aIter)
- {
- if( aIter->IsInside(_rPoint) )
- return aIter - aRects.begin();
- }
- }
-
- return -1;
-}
-// -----------------------------------------------------------------------------
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */