diff options
author | Lionel Elie Mamane <lionel@mamane.lu> | 2011-09-12 16:37:50 +0200 |
---|---|---|
committer | Lionel Elie Mamane <lionel@mamane.lu> | 2011-09-12 16:40:51 +0200 |
commit | f7ed67f2cf79fd067c1634e8f7c3f8a17792f2e5 (patch) | |
tree | d6eee550bdaed7ce0f3f137dadf0dbbbb484c976 /svtools | |
parent | fea84e0041f0dc6c87fc5e2d9c7ff2e70a7dada2 (diff) |
cleanup BrowseBox, DbGridControl & friends handle & invalid column handling
- BrowseBox: Check Handle column-related invariants when adding a
column:
# only one handle column
# it is the first
- BrowseBox: Check column id-related invariants when adding a column:
# Id is not the special "handle column" value
# Id is not the special "invalid ID" value
# unicity of the ID among columns
- GetColumnId: return BROWSER_INVALIDID, not 0 (== id of handle
column) for an invalid column; adapt code calling GetColumnId to
this change.
- Use the correct const or #define'd symbol instead of magic
constants; introduce such a symbol if needed
- General other miscellaneous cleanups:
# Translation of comments
# typo/spelling in comments, error messages and the like
# parenthesise #define'd value
# use SAL_MAX_UINT16 instead of USHRT_MAX where a sal_uInt16 is
expected
# BrowseBox::SetColumnTitle: nItemId is checked to be non-zero, so
don't test if for zeroness again.
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/inc/svtools/brwbox.hxx | 24 | ||||
-rw-r--r-- | svtools/source/brwbox/brwbox1.cxx | 43 | ||||
-rw-r--r-- | svtools/source/brwbox/brwbox2.cxx | 2 | ||||
-rw-r--r-- | svtools/source/brwbox/editbrowsebox.cxx | 4 | ||||
-rw-r--r-- | svtools/source/brwbox/editbrowsebox2.cxx | 2 |
5 files changed, 50 insertions, 25 deletions
diff --git a/svtools/inc/svtools/brwbox.hxx b/svtools/inc/svtools/brwbox.hxx index 42bf18ff62db..326d660a18d0 100644 --- a/svtools/inc/svtools/brwbox.hxx +++ b/svtools/inc/svtools/brwbox.hxx @@ -67,8 +67,8 @@ namespace utl { // - BrowseBox-Types - // ------------------- -#define BROWSER_INVALIDID USHRT_MAX -#define BROWSER_ENDOFSELECTION (long)(SFX_ENDOFSELECTION) +#define BROWSER_INVALIDID SAL_MAX_UINT16 +#define BROWSER_ENDOFSELECTION (static_cast<long>(SFX_ENDOFSELECTION)) typedef sal_uLong BrowserMode; @@ -76,15 +76,15 @@ typedef sal_uLong BrowserMode; #define BROWSER_MULTISELECTION 0x0002 #define BROWSER_THUMBDRAGGING 0x0004 #define BROWSER_KEEPHIGHLIGHT 0x0008 -#define BROWSER_KEEPSELECTION BROWSER_KEEPHIGHLIGHT // old, dont use! +#define BROWSER_KEEPSELECTION BROWSER_KEEPHIGHLIGHT // old, don't use! #define BROWSER_HLINES 0x0010 #define BROWSER_VLINES 0x0020 -#define BROWSER_HLINESFULL BROWSER_HLINES // old, dont use! -#define BROWSER_VLINESFULL BROWSER_VLINES // old, dont use! -#define BROWSER_HLINESDOTS 0x0000 // old => dont use! -#define BROWSER_VLINESDOTS 0x0000 // old => dont use! +#define BROWSER_HLINESFULL BROWSER_HLINES // old, don't use! +#define BROWSER_VLINESFULL BROWSER_VLINES // old, don't use! +#define BROWSER_HLINESDOTS 0x0000 // old => don't use! +#define BROWSER_VLINESDOTS 0x0000 // old => don't use! -#define BROWSER_HIDESELECT 0x0100 // old => dont use! +#define BROWSER_HIDESELECT 0x0100 // old => don't use! #define BROWSER_HIDECURSOR 0x0200 #define BROWSER_NO_HSCROLL 0x0400 @@ -98,7 +98,7 @@ typedef sal_uLong BrowserMode; #define BROWSER_NO_VSCROLL 0x8000 #define BROWSER_HIGHLIGHT_NONE 0x0100 // == BROWSER_HIDESELECT -#define BROWSER_HIGHLIGHT_TOGGLE 0x00000000 // old default => NULL, dont use! +#define BROWSER_HIGHLIGHT_TOGGLE 0x00000000 // old default => NULL, don't use! #define BROWSER_HEADERBAR_NEW 0x00040000 #define BROWSER_AUTOSIZE_LASTCOL 0x00080000 @@ -246,6 +246,10 @@ class SVT_DLLPUBLIC BrowseBox friend const char* BrowseBoxCheckInvariants( const void * pVoid ); #endif +public: + static const sal_uInt16 HandleColumnId = 0; + +private: Window* pDataWin; // window to display data rows ScrollBar* pVScroll; // vertical scrollbar ScrollBar aHScroll; // horizontal scrollbar @@ -569,7 +573,7 @@ public: // invalidations void Clear(); void RowRemoved( long nRow, long nNumRows = 1, sal_Bool bDoPaint = sal_True ); - void RowModified( long nRow, sal_uInt16 nColId = USHRT_MAX ); + void RowModified( long nRow, sal_uInt16 nColId = BROWSER_INVALIDID ); void RowInserted( long nRow, long nNumRows = 1, sal_Bool bDoPaint = sal_True, sal_Bool bKeepSelection = sal_False ); // miscellanous diff --git a/svtools/source/brwbox/brwbox1.cxx b/svtools/source/brwbox/brwbox1.cxx index 3619355ce355..9d4acd92648b 100644 --- a/svtools/source/brwbox/brwbox1.cxx +++ b/svtools/source/brwbox/brwbox1.cxx @@ -250,6 +250,17 @@ void BrowseBox::InsertHandleColumn( sal_uLong nWidth ) { DBG_CHKTHIS(BrowseBox,BrowseBoxCheckInvariants); +#if OSL_DEBUG_LEVEL > 0 + OSL_ENSURE( ColCount() == 0 || (*pCols)[0]->GetId() != HandleColumnId , "BrowseBox::InsertHandleColumn: there is already a handle column" ); + { + BrowserColumns::iterator iCol = pCols->begin(); + const BrowserColumns::iterator colsEnd = pCols->end(); + if ( iCol < colsEnd ) + for (++iCol; iCol < colsEnd; ++iCol) + OSL_ENSURE( (*iCol)->GetId() != HandleColumnId, "BrowseBox::InsertHandleColumn: there is a non-Handle column with handle ID" ); + } +#endif + pCols->insert( pCols->begin(), new BrowserColumn( 0, Image(), String(), nWidth, GetZoom(), 0 ) ); FreezeColumn( 0 ); @@ -272,6 +283,17 @@ void BrowseBox::InsertDataColumn( sal_uInt16 nItemId, const XubString& rText, { DBG_CHKTHIS(BrowseBox,BrowseBoxCheckInvariants); + OSL_ENSURE( nItemId != HandleColumnId, "BrowseBox::InsertDataColumn: nItemId is HandleColumnId" ); + OSL_ENSURE( nItemId != BROWSER_INVALIDID, "BrowseBox::InsertDataColumn: nItemId is reserved value BROWSER_INVALID_ID" ); + +#if OSL_DEBUG_LEVEL > 0 + { + const BrowserColumns::iterator colsEnd = pCols->end(); + for (BrowserColumns::iterator iCol = pCols->begin(); iCol < colsEnd; ++iCol) + OSL_ENSURE( (*iCol)->GetId() != nItemId, "BrowseBox::InsertDataColumn: duplicate column Id" ); + } +#endif + if ( nPos < pCols->size() ) { BrowserColumns::iterator it = pCols->begin(); @@ -300,7 +322,7 @@ void BrowseBox::InsertDataColumn( sal_uInt16 nItemId, const XubString& rText, //------------------------------------------------------------------- sal_uInt16 BrowseBox::ToggleSelectedColumn() { - sal_uInt16 nSelectedColId = USHRT_MAX; + sal_uInt16 nSelectedColId = BROWSER_INVALIDID; if ( pColSel && pColSel->GetSelectCount() ) { DoHideCursor( "ToggleSelectedColumn" ); @@ -313,7 +335,7 @@ sal_uInt16 BrowseBox::ToggleSelectedColumn() // ----------------------------------------------------------------------------- void BrowseBox::SetToggledSelectedColumn(sal_uInt16 _nSelectedColumnId) { - if ( pColSel && _nSelectedColumnId != USHRT_MAX ) + if ( pColSel && _nSelectedColumnId != BROWSER_INVALIDID ) { pColSel->Select( GetColumnPos( _nSelectedColumnId ) ); ToggleSelection(); @@ -550,8 +572,7 @@ void BrowseBox::SetColumnTitle( sal_uInt16 nItemId, const String& rTitle ) // Headerbar-Column anpassen if ( getDataWindow()->pHeaderBar ) - getDataWindow()->pHeaderBar->SetItemText( - nItemId ? nItemId : USHRT_MAX - 1, rTitle ); + getDataWindow()->pHeaderBar->SetItemText( nItemId, rTitle ); else { // redraw visible colums @@ -786,29 +807,29 @@ void BrowseBox::RemoveColumns() size_t nOldCount = pCols->size(); - // alle Spalten entfernen + // remove all columns for ( size_t i = 0; i < nOldCount; ++i ) delete (*pCols)[ i ]; pCols->clear(); - // Spaltenselektion korrigieren + // correct column selection if ( pColSel ) { pColSel->SelectAll(sal_False); pColSel->SetTotalRange( Range( 0, 0 ) ); } - // Spaltencursor korrigieren + // correct column cursor nCurColId = 0; nFirstCol = 0; if ( getDataWindow()->pHeaderBar ) getDataWindow()->pHeaderBar->Clear( ); - // vertikalen Scrollbar korrigieren + // correct vertical scrollbar UpdateScrollbars(); - // ggf. Repaint ausl"osen + // trigger repaint if necessary if ( GetUpdateMode() ) { getDataWindow()->Invalidate(); @@ -1123,7 +1144,7 @@ void BrowseBox::RowModified( long nRow, sal_uInt16 nColId ) return; Rectangle aRect; - if ( nColId == USHRT_MAX ) + if ( nColId == BROWSER_INVALIDID ) // invalidate the whole row aRect = Rectangle( Point( 0, (nRow-nTopRow) * GetDataRowHeight() ), Size( pDataWin->GetSizePixel().Width(), GetDataRowHeight() ) ); @@ -2223,7 +2244,7 @@ void BrowseBox::ReserveControlArea( sal_uInt16 nWidth ) if ( nWidth != nControlAreaWidth ) { - OSL_ENSURE(nWidth,"Control aera of 0 is not allowed, Use USHRT_MAX instead!"); + OSL_ENSURE(nWidth,"Control area of 0 is not allowed, Use USHRT_MAX instead!"); nControlAreaWidth = nWidth; UpdateScrollbars(); } diff --git a/svtools/source/brwbox/brwbox2.cxx b/svtools/source/brwbox/brwbox2.cxx index f62a95170c6a..0883a31a4543 100644 --- a/svtools/source/brwbox/brwbox2.cxx +++ b/svtools/source/brwbox/brwbox2.cxx @@ -485,7 +485,7 @@ sal_uInt16 BrowseBox::GetColumnId( sal_uInt16 nPos ) const DBG_CHKTHIS(BrowseBox,BrowseBoxCheckInvariants); if ( nPos >= pCols->size() ) - return 0; + return BROWSER_INVALIDID; return (*pCols)[ nPos ]->GetId(); } diff --git a/svtools/source/brwbox/editbrowsebox.cxx b/svtools/source/brwbox/editbrowsebox.cxx index dc568cfec7e9..8b81e0bc3ef2 100644 --- a/svtools/source/brwbox/editbrowsebox.cxx +++ b/svtools/source/brwbox/editbrowsebox.cxx @@ -1158,7 +1158,7 @@ namespace svt //------------------------------------------------------------------------------ sal_uInt16 EditBrowseBox::AppendColumn(const String& rName, sal_uInt16 nWidth, sal_uInt16 nPos, sal_uInt16 nId) { - if (nId == (sal_uInt16)-1) + if (nId == BROWSER_INVALIDID) { // look for the next free id for (nId = ColCount(); nId > 0 && GetColumnPos(nId) != BROWSER_INVALIDID; nId--) @@ -1168,7 +1168,7 @@ namespace svt { // if there is no handle column // increment the id - if (!ColCount() || GetColumnId(0)) + if ( ColCount() == 0 || GetColumnId(0) != HandleColumnId ) nId = ColCount() + 1; } } diff --git a/svtools/source/brwbox/editbrowsebox2.cxx b/svtools/source/brwbox/editbrowsebox2.cxx index 56f33bac499b..6841636d1f1d 100644 --- a/svtools/source/brwbox/editbrowsebox2.cxx +++ b/svtools/source/brwbox/editbrowsebox2.cxx @@ -170,7 +170,7 @@ void EditBrowseBox::DetermineFocus( const sal_uInt16 _nGetFocusFlags ) { if ( _nGetFocusFlags & GETFOCUS_FORWARD ) { - if ( GetColumnId( 0 ) != 0 ) + if ( GetColumnId( 0 ) != HandleColumnId ) { GoToRowColumnId( 0, GetColumnId( 0 ) ); } |