summaryrefslogtreecommitdiffstats
path: root/svtools
diff options
context:
space:
mode:
authorLionel Elie Mamane <lionel@mamane.lu>2011-09-12 16:37:50 +0200
committerLionel Elie Mamane <lionel@mamane.lu>2011-09-12 16:40:51 +0200
commitf7ed67f2cf79fd067c1634e8f7c3f8a17792f2e5 (patch)
treed6eee550bdaed7ce0f3f137dadf0dbbbb484c976 /svtools
parenttypo in parameter name (diff)
downloadcore-f7ed67f2cf79fd067c1634e8f7c3f8a17792f2e5.tar.gz
core-f7ed67f2cf79fd067c1634e8f7c3f8a17792f2e5.zip
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.hxx24
-rw-r--r--svtools/source/brwbox/brwbox1.cxx43
-rw-r--r--svtools/source/brwbox/brwbox2.cxx2
-rw-r--r--svtools/source/brwbox/editbrowsebox.cxx4
-rw-r--r--svtools/source/brwbox/editbrowsebox2.cxx2
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 ) );
}