summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2014-03-01 03:13:28 +0100
committerEike Rathke <erack@redhat.com>2014-03-05 07:31:19 -0600
commit68ec95b3f80408ae50897b043eed69a07d084df9 (patch)
tree5d32076e843fae44f28e3c8d9dbbacf7648fecbc /vcl
parentc3403ac888c2e62edaf8befe7982f5f8cc95c16f (diff)
made ListBox handle more than 64k elements, fdo#61520 related
ListBox and related now handle up to sal_Int32 elements correctly. sal_Int32 instead of sal_Size or size_t because of UNO and a11y API. Also disentangled some of the mess of SvTreeList and other containers regarding sal_uInt16, sal_uLong, long, size_t, ... type mixtures. Change-Id: Idb6e0ae689dc5bc2cf980721972b57b0261e688a Reviewed-on: https://gerrit.libreoffice.org/8460 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/ilstbox.hxx178
-rw-r--r--vcl/source/control/combobox.cxx130
-rw-r--r--vcl/source/control/field.cxx24
-rw-r--r--vcl/source/control/ilstbox.cxx280
-rw-r--r--vcl/source/control/lstbox.cxx86
5 files changed, 379 insertions, 319 deletions
diff --git a/vcl/inc/ilstbox.hxx b/vcl/inc/ilstbox.hxx
index 294f7c9a7c9e..502b04ee5b76 100644
--- a/vcl/inc/ilstbox.hxx
+++ b/vcl/inc/ilstbox.hxx
@@ -87,20 +87,20 @@ class ImplEntryList
{
private:
Window* mpWindow; ///< For getting the current locale when matching strings
- sal_uInt16 mnLastSelected;
- sal_uInt16 mnSelectionAnchor;
- sal_uInt16 mnImages;
+ sal_Int32 mnLastSelected;
+ sal_Int32 mnSelectionAnchor;
+ sal_Int32 mnImages;
- sal_uInt16 mnMRUCount;
- sal_uInt16 mnMaxMRUCount;
+ sal_Int32 mnMRUCount;
+ sal_Int32 mnMaxMRUCount;
Link maSelectionChangedHdl;
bool mbCallSelectionChangedHdl;
boost::ptr_vector<ImplEntryType> maEntries;
- ImplEntryType* GetEntry( sal_uInt16 nPos ) const
+ ImplEntryType* GetEntry( sal_Int32 nPos ) const
{
- if (nPos >= maEntries.size())
+ if (nPos < 0 || static_cast<size_t>(nPos) >= maEntries.size())
return NULL;
return const_cast<ImplEntryType*>(&maEntries[nPos]);
}
@@ -109,70 +109,70 @@ public:
ImplEntryList( Window* pWindow );
~ImplEntryList();
- sal_uInt16 InsertEntry( sal_uInt16 nPos, ImplEntryType* pNewEntry, bool bSort );
- void RemoveEntry( sal_uInt16 nPos );
- const ImplEntryType* GetEntryPtr( sal_uInt16 nPos ) const { return (const ImplEntryType*) GetEntry( nPos ); }
- ImplEntryType* GetMutableEntryPtr( sal_uInt16 nPos ) const { return GetEntry( nPos ); }
+ sal_Int32 InsertEntry( sal_Int32 nPos, ImplEntryType* pNewEntry, bool bSort );
+ void RemoveEntry( sal_Int32 nPos );
+ const ImplEntryType* GetEntryPtr( sal_Int32 nPos ) const { return (const ImplEntryType*) GetEntry( nPos ); }
+ ImplEntryType* GetMutableEntryPtr( sal_Int32 nPos ) const { return GetEntry( nPos ); }
void Clear();
- sal_uInt16 FindMatchingEntry( const OUString& rStr, sal_uInt16 nStart = 0, bool bForward = true, bool bLazy = true ) const;
- sal_uInt16 FindEntry( const OUString& rStr, bool bSearchMRUArea = false ) const;
- sal_uInt16 FindEntry( const void* pData ) const;
+ sal_Int32 FindMatchingEntry( const OUString& rStr, sal_Int32 nStart = 0, bool bForward = true, bool bLazy = true ) const;
+ sal_Int32 FindEntry( const OUString& rStr, bool bSearchMRUArea = false ) const;
+ sal_Int32 FindEntry( const void* pData ) const;
/// helper: add up heights up to index nEndIndex.
/// GetAddedHeight( 0 ) @return 0
/// GetAddedHeight( LISTBOX_ENTRY_NOTFOUND ) @return 0
/// GetAddedHeight( i, k ) with k > i is equivalent -GetAddedHeight( k, i )
- long GetAddedHeight( sal_uInt16 nEndIndex, sal_uInt16 nBeginIndex = 0, long nBeginHeight = 0 ) const;
- long GetEntryHeight( sal_uInt16 nPos ) const;
+ long GetAddedHeight( sal_Int32 nEndIndex, sal_Int32 nBeginIndex = 0, long nBeginHeight = 0 ) const;
+ long GetEntryHeight( sal_Int32 nPos ) const;
- sal_uInt16 GetEntryCount() const { return (sal_uInt16)maEntries.size(); }
+ sal_Int32 GetEntryCount() const { return (sal_Int32 )maEntries.size(); }
bool HasImages() const { return mnImages ? true : false; }
- OUString GetEntryText( sal_uInt16 nPos ) const;
+ OUString GetEntryText( sal_Int32 nPos ) const;
- bool HasEntryImage( sal_uInt16 nPos ) const;
- Image GetEntryImage( sal_uInt16 nPos ) const;
+ bool HasEntryImage( sal_Int32 nPos ) const;
+ Image GetEntryImage( sal_Int32 nPos ) const;
- void SetEntryData( sal_uInt16 nPos, void* pNewData );
- void* GetEntryData( sal_uInt16 nPos ) const;
+ void SetEntryData( sal_Int32 nPos, void* pNewData );
+ void* GetEntryData( sal_Int32 nPos ) const;
- void SetEntryFlags( sal_uInt16 nPos, long nFlags );
- long GetEntryFlags( sal_uInt16 nPos ) const;
+ void SetEntryFlags( sal_Int32 nPos, long nFlags );
+ long GetEntryFlags( sal_Int32 nPos ) const;
- void SelectEntry( sal_uInt16 nPos, bool bSelect );
+ void SelectEntry( sal_Int32 nPos, bool bSelect );
- sal_uInt16 GetSelectEntryCount() const;
- OUString GetSelectEntry( sal_uInt16 nIndex ) const;
- sal_uInt16 GetSelectEntryPos( sal_uInt16 nIndex ) const;
- bool IsEntryPosSelected( sal_uInt16 nIndex ) const;
+ sal_Int32 GetSelectEntryCount() const;
+ OUString GetSelectEntry( sal_Int32 nIndex ) const;
+ sal_Int32 GetSelectEntryPos( sal_Int32 nIndex ) const;
+ bool IsEntryPosSelected( sal_Int32 nIndex ) const;
- void SetLastSelected( sal_uInt16 nPos ) { mnLastSelected = nPos; }
- sal_uInt16 GetLastSelected() const { return mnLastSelected; }
+ void SetLastSelected( sal_Int32 nPos ) { mnLastSelected = nPos; }
+ sal_Int32 GetLastSelected() const { return mnLastSelected; }
- void SetSelectionAnchor( sal_uInt16 nPos ) { mnSelectionAnchor = nPos; }
- sal_uInt16 GetSelectionAnchor() const { return mnSelectionAnchor; }
+ void SetSelectionAnchor( sal_Int32 nPos ) { mnSelectionAnchor = nPos; }
+ sal_Int32 GetSelectionAnchor() const { return mnSelectionAnchor; }
void SetSelectionChangedHdl( const Link& rLnk ) { maSelectionChangedHdl = rLnk; }
void SetCallSelectionChangedHdl( bool bCall ) { mbCallSelectionChangedHdl = bCall; }
- void SetMRUCount( sal_uInt16 n ) { mnMRUCount = n; }
- sal_uInt16 GetMRUCount() const { return mnMRUCount; }
+ void SetMRUCount( sal_Int32 n ) { mnMRUCount = n; }
+ sal_Int32 GetMRUCount() const { return mnMRUCount; }
- void SetMaxMRUCount( sal_uInt16 n ) { mnMaxMRUCount = n; }
- sal_uInt16 GetMaxMRUCount() const { return mnMaxMRUCount; }
+ void SetMaxMRUCount( sal_Int32 n ) { mnMaxMRUCount = n; }
+ sal_Int32 GetMaxMRUCount() const { return mnMaxMRUCount; }
/** An Entry is selectable if its mnFlags does not have the
LISTBOX_ENTRY_FLAG_DISABLE_SELECTION flag set. */
- bool IsEntrySelectable( sal_uInt16 nPos ) const;
+ bool IsEntrySelectable( sal_Int32 nPos ) const;
/** @return the first entry found from the given position nPos that is selectable
or LISTBOX_ENTRY_NOTFOUND if non is found. If the entry at nPos is not selectable,
it returns the first selectable entry after nPos if bForward is true and the
first selectable entry after nPos is bForward is false.
*/
- sal_uInt16 FindFirstSelectable( sal_uInt16 nPos, bool bForward = true );
+ sal_Int32 FindFirstSelectable( sal_Int32 nPos, bool bForward = true );
};
class ImplListBoxWindow : public Control, public ::vcl::ISearchableStringList
@@ -193,20 +193,20 @@ private:
long mnMaxWidth; ///< Maximum width of an entry
long mnMaxHeight; ///< Maximum height of an entry
- sal_uInt16 mnCurrentPos; ///< Position (Focus)
- sal_uInt16 mnTrackingSaveSelection; ///< Selection before Tracking();
+ sal_Int32 mnCurrentPos; ///< Position (Focus)
+ sal_Int32 mnTrackingSaveSelection; ///< Selection before Tracking();
- sal_uInt16 mnSeparatorPos; ///< Separator
+ sal_Int32 mnSeparatorPos; ///< Separator
- sal_uInt16 mnUserDrawEntry;
+ sal_Int32 mnUserDrawEntry;
- sal_uInt16 mnTop; ///< output from line on
+ sal_Int32 mnTop; ///< output from line on
long mnLeft; ///< output from column on
long mnBorder; ///< distance border - text
long mnTextHeight; ///< text height
ProminentEntry meProminentType; ///< where is the "prominent" entry
- sal_uInt16 mnSelectModifier; ///< Modifiers
+ sal_uInt16 mnSelectModifier; ///< Modifiers
/// bitfield
bool mbHasFocusRect : 1;
@@ -250,8 +250,8 @@ protected:
virtual void GetFocus();
virtual void LoseFocus();
- bool SelectEntries( sal_uInt16 nSelect, LB_EVENT_TYPE eLET, bool bShift = false, bool bCtrl = false, bool bSelectPosChange = false );
- void ImplPaint( sal_uInt16 nPos, bool bErase = false, bool bLayout = false );
+ bool SelectEntries( sal_Int32 nSelect, LB_EVENT_TYPE eLET, bool bShift = false, bool bCtrl = false, bool bSelectPosChange = false );
+ void ImplPaint( sal_Int32 nPos, bool bErase = false, bool bLayout = false );
void ImplDoPaint( const Rectangle& rRect, bool bLayout = false );
void ImplCalcMetrics();
void ImplUpdateEntryMetrics( ImplEntryType& rEntry );
@@ -272,32 +272,32 @@ public:
ImplEntryList* GetEntryList() const { return mpEntryList; }
- sal_uInt16 InsertEntry( sal_uInt16 nPos, ImplEntryType* pNewEntry );
- void RemoveEntry( sal_uInt16 nPos );
+ sal_Int32 InsertEntry( sal_Int32 nPos, ImplEntryType* pNewEntry );
+ void RemoveEntry( sal_Int32 nPos );
void Clear();
void ResetCurrentPos() { mnCurrentPos = LISTBOX_ENTRY_NOTFOUND; }
- sal_uInt16 GetCurrentPos() const { return mnCurrentPos; }
- sal_uInt16 GetDisplayLineCount() const;
- void SetEntryFlags( sal_uInt16 nPos, long nFlags );
+ sal_Int32 GetCurrentPos() const { return mnCurrentPos; }
+ sal_uInt16 GetDisplayLineCount() const;
+ void SetEntryFlags( sal_Int32 nPos, long nFlags );
- void DrawEntry( sal_uInt16 nPos, bool bDrawImage, bool bDrawText, bool bDrawTextAtImagePos = false, bool bLayout = false );
+ void DrawEntry( sal_Int32 nPos, bool bDrawImage, bool bDrawText, bool bDrawTextAtImagePos = false, bool bLayout = false );
- void SelectEntry( sal_uInt16 nPos, bool bSelect );
+ void SelectEntry( sal_Int32 nPos, bool bSelect );
void DeselectAll();
- sal_uInt16 GetEntryPosForPoint( const Point& rPoint ) const;
- sal_uInt16 GetLastVisibleEntry() const;
+ sal_Int32 GetEntryPosForPoint( const Point& rPoint ) const;
+ sal_Int32 GetLastVisibleEntry() const;
bool ProcessKeyInput( const KeyEvent& rKEvt );
- void SetTopEntry( sal_uInt16 nTop );
- sal_uInt16 GetTopEntry() const { return mnTop; }
+ void SetTopEntry( sal_Int32 nTop );
+ sal_Int32 GetTopEntry() const { return mnTop; }
/** ShowProminentEntry will set the entry correspoding to nEntryPos
either at top or in the middle depending on the chosen style*/
- void ShowProminentEntry( sal_uInt16 nEntryPos );
+ void ShowProminentEntry( sal_Int32 nEntryPos );
void SetProminentEntryType( ProminentEntry eType ) { meProminentType = eType; }
ProminentEntry GetProminentEntryType() const { return meProminentType; }
using Window::IsVisible;
- bool IsVisible( sal_uInt16 nEntry ) const;
+ bool IsVisible( sal_Int32 nEntry ) const;
long GetLeftIndent() const { return mnLeft; }
void SetLeftIndent( long n );
@@ -306,8 +306,8 @@ public:
void AllowGrabFocus( bool b ) { mbGrabFocus = b; }
bool IsGrabFocusAllowed() const { return mbGrabFocus; }
- void SetSeparatorPos( sal_uInt16 n ) { mnSeparatorPos = n; }
- sal_uInt16 GetSeparatorPos() const { return mnSeparatorPos; }
+ void SetSeparatorPos( sal_Int32 n ) { mnSeparatorPos = n; }
+ sal_Int32 GetSeparatorPos() const { return mnSeparatorPos; }
void SetTravelSelect( bool bTravelSelect ) { mbTravelSelect = bTravelSelect; }
bool IsTravelSelect() const { return mbTravelSelect; }
@@ -330,7 +330,7 @@ public:
bool IsMouseMoveSelect() const { return mbMouseMoveSelect||mbStackMode; }
Size CalcSize(sal_Int32 nMaxLines) const;
- Rectangle GetBoundingRectangle( sal_uInt16 nItem ) const;
+ Rectangle GetBoundingRectangle( sal_Int32 nItem ) const;
long GetEntryHeight() const { return mnMaxHeight; }
long GetMaxEntryWidth() const { return mnMaxWidth; }
@@ -362,7 +362,7 @@ public:
using Control::ImplInitSettings;
void ImplInitSettings( bool bFont, bool bForeground, bool bBackground );
- sal_uInt16 ImplGetTextStyle() const;
+ sal_uInt16 ImplGetTextStyle() const;
/// pb: #106948# explicit mirroring for calc
inline void EnableMirroring() { mbMirroring = true; }
@@ -422,30 +422,30 @@ public:
virtual const Wallpaper& GetDisplayBackground() const;
virtual Window* GetPreferredKeyInputWindow();
- sal_uInt16 InsertEntry( sal_uInt16 nPos, const OUString& rStr );
- sal_uInt16 InsertEntry( sal_uInt16 nPos, const OUString& rStr, const Image& rImage );
- void RemoveEntry( sal_uInt16 nPos );
- void SetEntryData( sal_uInt16 nPos, void* pNewData ) { maLBWindow.GetEntryList()->SetEntryData( nPos, pNewData ); }
+ sal_Int32 InsertEntry( sal_Int32 nPos, const OUString& rStr );
+ sal_Int32 InsertEntry( sal_Int32 nPos, const OUString& rStr, const Image& rImage );
+ void RemoveEntry( sal_Int32 nPos );
+ void SetEntryData( sal_Int32 nPos, void* pNewData ) { maLBWindow.GetEntryList()->SetEntryData( nPos, pNewData ); }
void Clear();
- void SetEntryFlags( sal_uInt16 nPos, long nFlags );
+ void SetEntryFlags( sal_Int32 nPos, long nFlags );
- void SelectEntry( sal_uInt16 nPos, bool bSelect );
+ void SelectEntry( sal_Int32 nPos, bool bSelect );
void SetNoSelection();
void ResetCurrentPos() { maLBWindow.ResetCurrentPos(); }
- sal_uInt16 GetCurrentPos() const { return maLBWindow.GetCurrentPos(); }
+ sal_Int32 GetCurrentPos() const { return maLBWindow.GetCurrentPos(); }
bool ProcessKeyInput( const KeyEvent& rKEvt ) { return maLBWindow.ProcessKeyInput( rKEvt ); }
bool HandleWheelAsCursorTravel( const CommandEvent& rCEvt );
- void SetSeparatorPos( sal_uInt16 n ) { maLBWindow.SetSeparatorPos( n ); }
- sal_uInt16 GetSeparatorPos() const { return maLBWindow.GetSeparatorPos(); }
+ void SetSeparatorPos( sal_Int32 n ) { maLBWindow.SetSeparatorPos( n ); }
+ sal_Int32 GetSeparatorPos() const { return maLBWindow.GetSeparatorPos(); }
- void SetTopEntry( sal_uInt16 nTop ) { maLBWindow.SetTopEntry( nTop ); }
- sal_uInt16 GetTopEntry() const { return maLBWindow.GetTopEntry(); }
- void ShowProminentEntry( sal_uInt16 nPos ) { maLBWindow.ShowProminentEntry( nPos ); }
+ void SetTopEntry( sal_Int32 nTop ) { maLBWindow.SetTopEntry( nTop ); }
+ sal_Int32 GetTopEntry() const { return maLBWindow.GetTopEntry(); }
+ void ShowProminentEntry( sal_Int32 nPos ) { maLBWindow.ShowProminentEntry( nPos ); }
using Window::IsVisible;
- bool IsVisible( sal_uInt16 nEntry ) const { return maLBWindow.IsVisible( nEntry ); }
+ bool IsVisible( sal_Int32 nEntry ) const { return maLBWindow.IsVisible( nEntry ); }
void SetProminentEntryType( ProminentEntry eType ) { maLBWindow.SetProminentEntryType( eType ); }
ProminentEntry GetProminentEntryType() const { return maLBWindow.GetProminentEntryType(); }
@@ -468,7 +468,7 @@ public:
bool IsReadOnly() const { return maLBWindow.IsReadOnly(); }
- Size CalcSize( sal_uInt16 nMaxLines ) const { return maLBWindow.CalcSize( nMaxLines ); }
+ Size CalcSize( sal_Int32 nMaxLines ) const { return maLBWindow.CalcSize( nMaxLines ); }
long GetEntryHeight() const { return maLBWindow.GetEntryHeight(); }
long GetMaxEntryWidth() const { return maLBWindow.GetMaxEntryWidth(); }
@@ -490,13 +490,13 @@ public:
void SetSelectionChangedHdl( const Link& rLnk ) { maLBWindow.GetEntryList()->SetSelectionChangedHdl( rLnk ); }
void SetCallSelectionChangedHdl( bool bCall ) { maLBWindow.GetEntryList()->SetCallSelectionChangedHdl( bCall ); }
bool IsSelectionChanged() const { return maLBWindow.IsSelectionChanged(); }
- sal_uInt16 GetSelectModifier() const { return maLBWindow.GetSelectModifier(); }
+ sal_uInt16 GetSelectModifier() const { return maLBWindow.GetSelectModifier(); }
void SetMRUEntries( const OUString& rEntries, sal_Unicode cSep );
OUString GetMRUEntries( sal_Unicode cSep ) const;
- void SetMaxMRUCount( sal_uInt16 n ) { maLBWindow.GetEntryList()->SetMaxMRUCount( n ); }
- sal_uInt16 GetMaxMRUCount() const { return maLBWindow.GetEntryList()->GetMaxMRUCount(); }
- sal_uInt16 GetDisplayLineCount() const
+ void SetMaxMRUCount( sal_Int32 n ) { maLBWindow.GetEntryList()->SetMaxMRUCount( n ); }
+ sal_Int32 GetMaxMRUCount() const { return maLBWindow.GetEntryList()->GetMaxMRUCount(); }
+ sal_uInt16 GetDisplayLineCount() const
{ return maLBWindow.GetDisplayLineCount(); }
bool GetEdgeBlending() const { return mbEdgeBlending; }
@@ -512,8 +512,8 @@ class ImplListBoxFloatingWindow : public FloatingWindow
private:
ImplListBox* mpImplLB;
Size maPrefSz;
- sal_uInt16 mnDDLineCount;
- sal_uInt16 mnPopupModeStartSaveSelection;
+ sal_uInt16 mnDDLineCount;
+ sal_Int32 mnPopupModeStartSaveSelection;
bool mbAutoWidth;
protected:
@@ -539,9 +539,9 @@ public:
{ FloatingWindow::SetPosSizePixel( rNewPos, rNewSize ); }
void SetDropDownLineCount( sal_uInt16 n ) { mnDDLineCount = n; }
- sal_uInt16 GetDropDownLineCount() const { return mnDDLineCount; }
+ sal_uInt16 GetDropDownLineCount() const { return mnDDLineCount; }
- sal_uInt16 GetPopupModeStartSaveSelection() const { return mnPopupModeStartSaveSelection; }
+ sal_Int32 GetPopupModeStartSaveSelection() const { return mnPopupModeStartSaveSelection; }
virtual void Resize();
};
@@ -550,7 +550,7 @@ class ImplWin : public Control
{
private:
- sal_uInt16 mnItemPos; ///< because of UserDraw I have to know which item I draw
+ sal_Int32 mnItemPos; ///< because of UserDraw I have to know which item I draw
OUString maString;
Image maImage;
@@ -580,8 +580,8 @@ public:
virtual void LoseFocus();
virtual bool PreNotify( NotifyEvent& rNEvt );
- sal_uInt16 GetItemPos() const { return mnItemPos; }
- void SetItemPos( sal_uInt16 n ) { mnItemPos = n; }
+ sal_Int32 GetItemPos() const { return mnItemPos; }
+ void SetItemPos( sal_Int32 n ) { mnItemPos = n; }
const OUString& GetString() const { return maString; }
void SetString( const OUString& rStr ) { maString = rStr; }
diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx
index 6b806031d2b6..adb9988653af 100644
--- a/vcl/source/control/combobox.cxx
+++ b/vcl/source/control/combobox.cxx
@@ -33,13 +33,13 @@
#include <ilstbox.hxx>
#include <controldata.hxx>
-static void lcl_GetSelectedEntries( ::std::set< sal_uInt16 >& rSelectedPos, const OUString& rText, sal_Unicode cTokenSep, const ImplEntryList* pEntryList )
+static void lcl_GetSelectedEntries( ::std::set< sal_Int32 >& rSelectedPos, const OUString& rText, sal_Unicode cTokenSep, const ImplEntryList* pEntryList )
{
for (sal_Int32 n = comphelper::string::getTokenCount(rText, cTokenSep); n;)
{
OUString aToken = rText.getToken( --n, cTokenSep );
aToken = comphelper::string::strip(aToken, ' ');
- sal_uInt16 nPos = pEntryList->FindEntry( aToken );
+ sal_Int32 nPos = pEntryList->FindEntry( aToken );
if ( nPos != LISTBOX_ENTRY_NOTFOUND )
rSelectedPos.insert( nPos );
}
@@ -216,11 +216,11 @@ void ComboBox::ImplLoadRes( const ResId& rResId )
{
Edit::ImplLoadRes( rResId );
- sal_uLong nNumber = ReadLongRes();
+ sal_Int32 nNumber = ReadLongRes();
if( nNumber )
{
- for( sal_uInt16 i = 0; i < nNumber; i++ )
+ for( sal_Int32 i = 0; i < nNumber; i++ )
{
InsertEntry( ReadStringRes(), LISTBOX_APPEND );
}
@@ -298,7 +298,7 @@ IMPL_LINK( ComboBox, ImplAutocompleteHdl, Edit*, pEdit )
{
OUString aFullText = pEdit->GetText();
OUString aStartText = aFullText.copy( 0, (sal_Int32)aSel.Max() );
- sal_uInt16 nStart = mpImplLB->GetCurrentPos();
+ sal_Int32 nStart = mpImplLB->GetCurrentPos();
if ( nStart == LISTBOX_ENTRY_NOTFOUND )
nStart = 0;
@@ -312,7 +312,7 @@ IMPL_LINK( ComboBox, ImplAutocompleteHdl, Edit*, pEdit )
nStart = nStart ? nStart - 1 : mpImplLB->GetEntryList()->GetEntryCount()-1;
}
- sal_uInt16 nPos = LISTBOX_ENTRY_NOTFOUND;
+ sal_Int32 nPos = LISTBOX_ENTRY_NOTFOUND;
if( ! mbMatchCase )
{
// Try match case insensitive from current position
@@ -359,7 +359,7 @@ IMPL_LINK_NOARG(ComboBox, ImplSelectHdl)
OUString aToken = aText.getToken( 0, mcMultiSep, nIndex );
sal_Int32 nTokenLen = aToken.getLength();
aToken = comphelper::string::strip(aToken, ' ');
- sal_uInt16 nP = mpImplLB->GetEntryList()->FindEntry( aToken );
+ sal_Int32 nP = mpImplLB->GetEntryList()->FindEntry( aToken );
if ( (nP != LISTBOX_ENTRY_NOTFOUND) && (!mpImplLB->GetEntryList()->IsEntryPosSelected( nP )) )
{
aText = aText.replaceAt( nPrevIndex, nTokenLen, "" );
@@ -376,12 +376,12 @@ IMPL_LINK_NOARG(ComboBox, ImplSelectHdl)
}
// attach missing entries
- ::std::set< sal_uInt16 > aSelInText;
+ ::std::set< sal_Int32 > aSelInText;
lcl_GetSelectedEntries( aSelInText, aText, mcMultiSep, mpImplLB->GetEntryList() );
- sal_uInt16 nSelectedEntries = mpImplLB->GetEntryList()->GetSelectEntryCount();
- for ( sal_uInt16 n = 0; n < nSelectedEntries; n++ )
+ sal_Int32 nSelectedEntries = mpImplLB->GetEntryList()->GetSelectEntryCount();
+ for ( sal_Int32 n = 0; n < nSelectedEntries; n++ )
{
- sal_uInt16 nP = mpImplLB->GetEntryList()->GetSelectEntryPos( n );
+ sal_Int32 nP = mpImplLB->GetEntryList()->GetSelectEntryPos( n );
if ( !aSelInText.count( nP ) )
{
if ( !aText.isEmpty() && (aText[ aText.getLength()-1 ] != mcMultiSep) )
@@ -448,7 +448,7 @@ IMPL_LINK( ComboBox, ImplSelectionChangedHdl, void*, n )
{
if ( !mpImplLB->IsTrackingSelect() )
{
- sal_uInt16 nChanged = (sal_uInt16)(sal_uLong)n;
+ sal_Int32 nChanged = (sal_Int32)(sal_uLong)n;
if ( !mpSubEdit->IsReadOnly() && mpImplLB->GetEntryList()->IsEntryPosSelected( nChanged ) )
mpSubEdit->SetText( mpImplLB->GetEntryList()->GetEntryText( nChanged ) );
}
@@ -809,7 +809,7 @@ void ComboBox::ImplUpdateFloatSelection()
if ( !IsMultiSelectionEnabled() )
{
OUString aSearchStr( mpSubEdit->GetText() );
- sal_uInt16 nSelect = LISTBOX_ENTRY_NOTFOUND;
+ sal_Int32 nSelect = LISTBOX_ENTRY_NOTFOUND;
bool bSelect = true;
if ( mpImplLB->GetCurrentPos() != LISTBOX_ENTRY_NOTFOUND )
@@ -843,27 +843,55 @@ void ComboBox::ImplUpdateFloatSelection()
}
else
{
- ::std::set< sal_uInt16 > aSelInText;
+ ::std::set< sal_Int32 > aSelInText;
lcl_GetSelectedEntries( aSelInText, mpSubEdit->GetText(), mcMultiSep, mpImplLB->GetEntryList() );
- for ( sal_uInt16 n = 0; n < mpImplLB->GetEntryList()->GetEntryCount(); n++ )
+ for ( sal_Int32 n = 0; n < mpImplLB->GetEntryList()->GetEntryCount(); n++ )
mpImplLB->SelectEntry( n, aSelInText.count( n ) );
}
mpImplLB->SetCallSelectionChangedHdl( true );
}
-sal_uInt16 ComboBox::InsertEntry(const OUString& rStr, sal_uInt16 const nPos)
+sal_Int32 ComboBox::InsertEntry(const OUString& rStr, sal_Int32 const nPos)
{
- sal_uInt16 nRealPos = mpImplLB->InsertEntry( nPos + mpImplLB->GetEntryList()->GetMRUCount(), rStr );
- nRealPos = sal::static_int_cast<sal_uInt16>(nRealPos - mpImplLB->GetEntryList()->GetMRUCount());
+ if (nPos < 0 || COMBOBOX_MAX_ENTRIES <= mpImplLB->GetEntryList()->GetEntryCount())
+ return COMBOBOX_ERROR;
+
+ sal_Int32 nRealPos;
+ if (nPos == COMBOBOX_APPEND)
+ nRealPos = nPos;
+ else
+ {
+ const sal_Int32 nMRUCount = mpImplLB->GetEntryList()->GetMRUCount();
+ if (nPos > COMBOBOX_MAX_ENTRIES - nMRUCount)
+ return COMBOBOX_ERROR;
+ nRealPos = nPos + nMRUCount;
+ }
+
+ nRealPos = mpImplLB->InsertEntry( nRealPos, rStr );
+ nRealPos -= mpImplLB->GetEntryList()->GetMRUCount();
CallEventListeners( VCLEVENT_COMBOBOX_ITEMADDED, (void*) sal_IntPtr(nRealPos) );
return nRealPos;
}
void ComboBox::InsertEntryWithImage(
- const OUString& rStr, const Image& rImage, sal_uInt16 const nPos)
+ const OUString& rStr, const Image& rImage, sal_Int32 const nPos)
{
- sal_uInt16 nRealPos = mpImplLB->InsertEntry( nPos + mpImplLB->GetEntryList()->GetMRUCount(), rStr, rImage );
- nRealPos = sal::static_int_cast<sal_uInt16>(nRealPos - mpImplLB->GetEntryList()->GetMRUCount());
+ if (nPos < 0 || COMBOBOX_MAX_ENTRIES <= mpImplLB->GetEntryList()->GetEntryCount())
+ return;
+
+ sal_Int32 nRealPos;
+ if (nPos == COMBOBOX_APPEND)
+ nRealPos = nPos;
+ else
+ {
+ const sal_Int32 nMRUCount = mpImplLB->GetEntryList()->GetMRUCount();
+ if (nPos > COMBOBOX_MAX_ENTRIES - nMRUCount)
+ return;
+ nRealPos = nPos + nMRUCount;
+ }
+
+ nRealPos = mpImplLB->InsertEntry( nRealPos, rStr, rImage );
+ nRealPos -= mpImplLB->GetEntryList()->GetMRUCount();
CallEventListeners( VCLEVENT_COMBOBOX_ITEMADDED, (void*) sal_IntPtr(nRealPos) );
}
@@ -872,9 +900,13 @@ void ComboBox::RemoveEntry( const OUString& rStr )
RemoveEntryAt(GetEntryPos(rStr));
}
-void ComboBox::RemoveEntryAt(sal_uInt16 const nPos)
+void ComboBox::RemoveEntryAt(sal_Int32 const nPos)
{
- mpImplLB->RemoveEntry( nPos + mpImplLB->GetEntryList()->GetMRUCount() );
+ const sal_Int32 nMRUCount = mpImplLB->GetEntryList()->GetMRUCount();
+ if (nPos < 0 || nPos > COMBOBOX_MAX_ENTRIES - nMRUCount)
+ return;
+
+ mpImplLB->RemoveEntry( nPos + nMRUCount );
CallEventListeners( VCLEVENT_COMBOBOX_ITEMREMOVED, (void*) sal_IntPtr(nPos) );
}
@@ -884,27 +916,31 @@ void ComboBox::Clear()
CallEventListeners( VCLEVENT_COMBOBOX_ITEMREMOVED, (void*) sal_IntPtr(-1) );
}
-Image ComboBox::GetEntryImage( sal_uInt16 nPos ) const
+Image ComboBox::GetEntryImage( sal_Int32 nPos ) const
{
if ( mpImplLB->GetEntryList()->HasEntryImage( nPos ) )
return mpImplLB->GetEntryList()->GetEntryImage( nPos );
return Image();
}
-sal_uInt16 ComboBox::GetEntryPos( const OUString& rStr ) const
+sal_Int32 ComboBox::GetEntryPos( const OUString& rStr ) const
{
- sal_uInt16 nPos = mpImplLB->GetEntryList()->FindEntry( rStr );
+ sal_Int32 nPos = mpImplLB->GetEntryList()->FindEntry( rStr );
if ( nPos != LISTBOX_ENTRY_NOTFOUND )
- nPos = sal::static_int_cast<sal_uInt16>(nPos - mpImplLB->GetEntryList()->GetMRUCount());
+ nPos -= mpImplLB->GetEntryList()->GetMRUCount();
return nPos;
}
-OUString ComboBox::GetEntry( sal_uInt16 nPos ) const
+OUString ComboBox::GetEntry( sal_Int32 nPos ) const
{
- return mpImplLB->GetEntryList()->GetEntryText( nPos + mpImplLB->GetEntryList()->GetMRUCount() );
+ const sal_Int32 nMRUCount = mpImplLB->GetEntryList()->GetMRUCount();
+ if (nPos < 0 || nPos > COMBOBOX_MAX_ENTRIES - nMRUCount)
+ return OUString();
+
+ return mpImplLB->GetEntryList()->GetEntryText( nPos + nMRUCount );
}
-sal_uInt16 ComboBox::GetEntryCount() const
+sal_Int32 ComboBox::GetEntryCount() const
{
return mpImplLB->GetEntryList()->GetEntryCount() - mpImplLB->GetEntryList()->GetMRUCount();
}
@@ -1212,7 +1248,7 @@ void ComboBox::DrawEntry( const UserDrawEvent& rEvt, bool bDrawImage, bool bDraw
mpImplLB->GetMainWindow()->DrawEntry( rEvt.GetItemId(), bDrawImage, bDrawText, bDrawTextAtImagePos );
}
-void ComboBox::SetSeparatorPos( sal_uInt16 n )
+void ComboBox::SetSeparatorPos( sal_Int32 n )
{
mpImplLB->SetSeparatorPos( n );
}
@@ -1227,17 +1263,17 @@ OUString ComboBox::GetMRUEntries( sal_Unicode cSep ) const
return mpImplLB->GetMRUEntries( cSep );
}
-void ComboBox::SetMaxMRUCount( sal_uInt16 n )
+void ComboBox::SetMaxMRUCount( sal_Int32 n )
{
mpImplLB->SetMaxMRUCount( n );
}
-sal_uInt16 ComboBox::GetMaxMRUCount() const
+sal_Int32 ComboBox::GetMaxMRUCount() const
{
return mpImplLB->GetMaxMRUCount();
}
-sal_uInt16 ComboBox::GetMRUCount() const
+sal_Int32 ComboBox::GetMRUCount() const
{
return mpImplLB->GetEntryList()->GetMRUCount();
}
@@ -1247,19 +1283,19 @@ sal_uInt16 ComboBox::GetDisplayLineCount() const
return mpImplLB->GetDisplayLineCount();
}
-void ComboBox::SetEntryData( sal_uInt16 nPos, void* pNewData )
+void ComboBox::SetEntryData( sal_Int32 nPos, void* pNewData )
{
mpImplLB->SetEntryData( nPos + mpImplLB->GetEntryList()->GetMRUCount(), pNewData );
}
-void* ComboBox::GetEntryData( sal_uInt16 nPos ) const
+void* ComboBox::GetEntryData( sal_Int32 nPos ) const
{
return mpImplLB->GetEntryList()->GetEntryData( nPos + mpImplLB->GetEntryList()->GetMRUCount() );
}
-sal_uInt16 ComboBox::GetTopEntry() const
+sal_Int32 ComboBox::GetTopEntry() const
{
- sal_uInt16 nPos = GetEntryCount() ? mpImplLB->GetTopEntry() : LISTBOX_ENTRY_NOTFOUND;
+ sal_Int32 nPos = GetEntryCount() ? mpImplLB->GetTopEntry() : LISTBOX_ENTRY_NOTFOUND;
if ( nPos < mpImplLB->GetEntryList()->GetMRUCount() )
nPos = 0;
return nPos;
@@ -1289,29 +1325,29 @@ const Wallpaper& ComboBox::GetDisplayBackground() const
return rBack;
}
-sal_uInt16 ComboBox::GetSelectEntryCount() const
+sal_Int32 ComboBox::GetSelectEntryCount() const
{
return mpImplLB->GetEntryList()->GetSelectEntryCount();
}
-sal_uInt16 ComboBox::GetSelectEntryPos( sal_uInt16 nIndex ) const
+sal_Int32 ComboBox::GetSelectEntryPos( sal_Int32 nIndex ) const
{
- sal_uInt16 nPos = mpImplLB->GetEntryList()->GetSelectEntryPos( nIndex );
+ sal_Int32 nPos = mpImplLB->GetEntryList()->GetSelectEntryPos( nIndex );
if ( nPos != LISTBOX_ENTRY_NOTFOUND )
{
if ( nPos < mpImplLB->GetEntryList()->GetMRUCount() )
nPos = mpImplLB->GetEntryList()->FindEntry( mpImplLB->GetEntryList()->GetEntryText( nPos ) );
- nPos = sal::static_int_cast<sal_uInt16>(nPos - mpImplLB->GetEntryList()->GetMRUCount());
+ nPos = sal::static_int_cast<sal_Int32>(nPos - mpImplLB->GetEntryList()->GetMRUCount());
}
return nPos;
}
-bool ComboBox::IsEntryPosSelected( sal_uInt16 nPos ) const
+bool ComboBox::IsEntryPosSelected( sal_Int32 nPos ) const
{
return mpImplLB->GetEntryList()->IsEntryPosSelected( nPos + mpImplLB->GetEntryList()->GetMRUCount() );
}
-void ComboBox::SelectEntryPos( sal_uInt16 nPos, bool bSelect)
+void ComboBox::SelectEntryPos( sal_Int32 nPos, bool bSelect)
{
if ( nPos < mpImplLB->GetEntryList()->GetEntryCount() )
mpImplLB->SelectEntry( nPos + mpImplLB->GetEntryList()->GetMRUCount(), bSelect );
@@ -1323,7 +1359,7 @@ void ComboBox::SetNoSelection()
mpSubEdit->SetText( OUString() );
}
-Rectangle ComboBox::GetBoundingRectangle( sal_uInt16 nItem ) const
+Rectangle ComboBox::GetBoundingRectangle( sal_Int32 nItem ) const
{
Rectangle aRect = mpImplLB->GetMainWindow()->GetBoundingRectangle( nItem );
Rectangle aOffset = mpImplLB->GetMainWindow()->GetWindowExtentsRelative( (Window*)this );
@@ -1343,7 +1379,7 @@ void ComboBox::SetBorderStyle( sal_uInt16 nBorderStyle )
}
-long ComboBox::GetIndexForPoint( const Point& rPoint, sal_uInt16& rPos ) const
+long ComboBox::GetIndexForPoint( const Point& rPoint, sal_Int32& rPos ) const
{
if( !HasLayoutData() )
FillLayoutData();
@@ -1363,7 +1399,7 @@ long ComboBox::GetIndexForPoint( const Point& rPoint, sal_uInt16& rPos ) const
aConvPoint = pMain->PixelToLogic( aConvPoint );
// try to find entry
- sal_uInt16 nEntry = pMain->GetEntryPosForPoint( aConvPoint );
+ sal_Int32 nEntry = pMain->GetEntryPosForPoint( aConvPoint );
if( nEntry == LISTBOX_ENTRY_NOTFOUND )
nIndex = -1;
else
diff --git a/vcl/source/control/field.cxx b/vcl/source/control/field.cxx
index ffe59c8794bd..ad67f9ffc047 100644
--- a/vcl/source/control/field.cxx
+++ b/vcl/source/control/field.cxx
@@ -273,8 +273,8 @@ static void ImplUpdateSeparators( const OUString& rOldDecSep, const OUString& rN
if( pCombo )
{
// update box entries
- sal_uInt16 nEntryCount = pCombo->GetEntryCount();
- for ( sal_uInt16 i=0; i < nEntryCount; i++ )
+ sal_Int32 nEntryCount = pCombo->GetEntryCount();
+ for ( sal_Int32 i=0; i < nEntryCount; i++ )
{
aText = pCombo->GetEntry( i );
void* pEntryData = pCombo->GetEntryData( i );
@@ -981,8 +981,8 @@ void NumericBox::ReformatAll()
sal_Int64 nValue;
OUString aStr;
SetUpdateMode( false );
- sal_uInt16 nEntryCount = GetEntryCount();
- for ( sal_uInt16 i=0; i < nEntryCount; i++ )
+ sal_Int32 nEntryCount = GetEntryCount();
+ for ( sal_Int32 i=0; i < nEntryCount; i++ )
{
ImplNumericReformat( GetEntry( i ), nValue, aStr );
RemoveEntryAt(i);
@@ -992,7 +992,7 @@ void NumericBox::ReformatAll()
SetUpdateMode( true );
}
-void NumericBox::InsertValue( sal_Int64 nValue, sal_uInt16 nPos )
+void NumericBox::InsertValue( sal_Int64 nValue, sal_Int32 nPos )
{
ComboBox::InsertEntry( CreateFieldText( nValue ), nPos );
}
@@ -1828,8 +1828,8 @@ void MetricBox::ReformatAll()
double nValue;
OUString aStr;
SetUpdateMode( false );
- sal_uInt16 nEntryCount = GetEntryCount();
- for ( sal_uInt16 i=0; i < nEntryCount; i++ )
+ sal_Int32 nEntryCount = GetEntryCount();
+ for ( sal_Int32 i=0; i < nEntryCount; i++ )
{
ImplMetricReformat( GetEntry( i ), nValue, aStr );
RemoveEntryAt(i);
@@ -1844,7 +1844,7 @@ void MetricBox::CustomConvert()
maCustomConvertLink.Call( this );
}
-void MetricBox::InsertValue( sal_Int64 nValue, FieldUnit eInUnit, sal_uInt16 nPos )
+void MetricBox::InsertValue( sal_Int64 nValue, FieldUnit eInUnit, sal_Int32 nPos )
{
// convert to previously configured units
nValue = MetricField::ConvertValue( nValue, mnBaseValue, GetDecimalDigits(),
@@ -1852,7 +1852,7 @@ void MetricBox::InsertValue( sal_Int64 nValue, FieldUnit eInUnit, sal_uInt16 nPo
ComboBox::InsertEntry( CreateFieldText( nValue ), nPos );
}
-sal_Int64 MetricBox::GetValue( sal_uInt16 nPos, FieldUnit eOutUnit ) const
+sal_Int64 MetricBox::GetValue( sal_Int32 nPos, FieldUnit eOutUnit ) const
{
double nValue = 0;
ImplMetricGetValue( ComboBox::GetEntry( nPos ), nValue, mnBaseValue,
@@ -1865,7 +1865,7 @@ sal_Int64 MetricBox::GetValue( sal_uInt16 nPos, FieldUnit eOutUnit ) const
return nRetValue;
}
-sal_uInt16 MetricBox::GetValuePos( sal_Int64 nValue, FieldUnit eInUnit ) const
+sal_Int32 MetricBox::GetValuePos( sal_Int64 nValue, FieldUnit eInUnit ) const
{
// convert to previously configured units
nValue = MetricField::ConvertValue( nValue, mnBaseValue, GetDecimalDigits(),
@@ -2143,8 +2143,8 @@ void CurrencyBox::ReformatAll()
{
OUString aStr;
SetUpdateMode( false );
- sal_uInt16 nEntryCount = GetEntryCount();
- for ( sal_uInt16 i=0; i < nEntryCount; i++ )
+ sal_Int32 nEntryCount = GetEntryCount();
+ for ( sal_Int32 i=0; i < nEntryCount; i++ )
{
ImplCurrencyReformat( GetEntry( i ), aStr );
RemoveEntryAt(i);
diff --git a/vcl/source/control/ilstbox.cxx b/vcl/source/control/ilstbox.cxx
index 0c7aef3e91d4..d57c54f0d2f3 100644
--- a/vcl/source/control/ilstbox.cxx
+++ b/vcl/source/control/ilstbox.cxx
@@ -41,6 +41,8 @@
#include <comphelper/string.hxx>
#include <comphelper/processfactory.hxx>
+#include <limits>
+
#define MULTILINE_ENTRY_DRAW_FLAGS ( TEXT_DRAW_WORDBREAK | TEXT_DRAW_MULTILINE | TEXT_DRAW_VCENTER )
using namespace ::com::sun::star;
@@ -111,9 +113,9 @@ void ImplEntryList::Clear()
maEntries.clear();
}
-void ImplEntryList::SelectEntry( sal_uInt16 nPos, bool bSelect )
+void ImplEntryList::SelectEntry( sal_Int32 nPos, bool bSelect )
{
- if (nPos < maEntries.size())
+ if (0 <= nPos && static_cast<size_t>(nPos) < maEntries.size())
{
boost::ptr_vector<ImplEntryType>::iterator iter = maEntries.begin()+nPos;
@@ -141,16 +143,19 @@ namespace
};
}
-sal_uInt16 ImplEntryList::InsertEntry( sal_uInt16 nPos, ImplEntryType* pNewEntry, bool bSort )
+sal_Int32 ImplEntryList::InsertEntry( sal_Int32 nPos, ImplEntryType* pNewEntry, bool bSort )
{
+ if (nPos < 0 || LISTBOX_MAX_ENTRIES <= maEntries.size())
+ return LISTBOX_ERROR;
+
if ( !!pNewEntry->maImage )
mnImages++;
- sal_uInt16 insPos = 0;
+ sal_Int32 insPos = 0;
if ( !bSort || maEntries.empty())
{
- if (nPos < maEntries.size())
+ if (0 <= nPos && static_cast<size_t>(nPos) < maEntries.size())
{
insPos = nPos;
maEntries.insert( maEntries.begin() + nPos, pNewEntry );
@@ -170,7 +175,7 @@ sal_uInt16 ImplEntryList::InsertEntry( sal_uInt16 nPos, ImplEntryType* pNewEntry
nHigh = maEntries.size();
- ImplEntryType* pTemp = GetEntry( (sal_uInt16)(nHigh-1) );
+ ImplEntryType* pTemp = GetEntry( (sal_Int32)(nHigh-1) );
try
{
@@ -185,7 +190,7 @@ sal_uInt16 ImplEntryList::InsertEntry( sal_uInt16 nPos, ImplEntryType* pNewEntry
else
{
nLow = mnMRUCount;
- pTemp = (ImplEntryType*)GetEntry( (sal_uInt16)nLow );
+ pTemp = (ImplEntryType*)GetEntry( (sal_Int32)nLow );
nComp = rSorter.compare(rStr, pTemp->maStr);
if ( nComp <= 0 )
@@ -239,9 +244,9 @@ sal_uInt16 ImplEntryList::InsertEntry( sal_uInt16 nPos, ImplEntryType* pNewEntry
return insPos;
}
-void ImplEntryList::RemoveEntry( sal_uInt16 nPos )
+void ImplEntryList::RemoveEntry( sal_Int32 nPos )
{
- if (nPos < maEntries.size())
+ if (0 <= nPos && static_cast<size_t>(nPos) < maEntries.size())
{
boost::ptr_vector<ImplEntryType>::iterator iter = maEntries.begin()+ nPos;
@@ -252,10 +257,10 @@ void ImplEntryList::RemoveEntry( sal_uInt16 nPos )
}
}
-sal_uInt16 ImplEntryList::FindEntry( const OUString& rString, bool bSearchMRUArea ) const
+sal_Int32 ImplEntryList::FindEntry( const OUString& rString, bool bSearchMRUArea ) const
{
- sal_uInt16 nEntries = maEntries.size();
- for ( sal_uInt16 n = bSearchMRUArea ? 0 : GetMRUCount(); n < nEntries; n++ )
+ sal_Int32 nEntries = maEntries.size();
+ for ( sal_Int32 n = bSearchMRUArea ? 0 : GetMRUCount(); n < nEntries; n++ )
{
OUString aComp( vcl::I18nHelper::filterFormattingChars( maEntries[n].maStr ) );
if ( aComp == rString )
@@ -264,15 +269,15 @@ sal_uInt16 ImplEntryList::FindEntry( const OUString& rString, bool bSearchMRUAre
return LISTBOX_ENTRY_NOTFOUND;
}
-sal_uInt16 ImplEntryList::FindMatchingEntry( const OUString& rStr, sal_uInt16 nStart, bool bForward, bool bLazy ) const
+sal_Int32 ImplEntryList::FindMatchingEntry( const OUString& rStr, sal_Int32 nStart, bool bForward, bool bLazy ) const
{
- sal_uInt16 nPos = LISTBOX_ENTRY_NOTFOUND;
- sal_uInt16 nEntryCount = GetEntryCount();
+ sal_Int32 nPos = LISTBOX_ENTRY_NOTFOUND;
+ sal_Int32 nEntryCount = GetEntryCount();
if ( !bForward )
nStart++; // decrements right away
const vcl::I18nHelper& rI18nHelper = mpWindow->GetSettings().GetLocaleI18nHelper();
- for ( sal_uInt16 n = nStart; bForward ? n < nEntryCount : n != 0; )
+ for ( sal_Int32 n = nStart; bForward ? n < nEntryCount : n != 0; )
{
if ( !bForward )
n--;
@@ -300,10 +305,10 @@ sal_uInt16 ImplEntryList::FindMatchingEntry( const OUString& rStr, sal_uInt16 nS
return nPos;
}
-sal_uInt16 ImplEntryList::FindEntry( const void* pData ) const
+sal_Int32 ImplEntryList::FindEntry( const void* pData ) const
{
- sal_uInt16 nPos = LISTBOX_ENTRY_NOTFOUND;
- for ( sal_uInt16 n = GetEntryCount(); n; )
+ sal_Int32 nPos = LISTBOX_ENTRY_NOTFOUND;
+ for ( sal_Int32 n = GetEntryCount(); n; )
{
ImplEntryType* pImplEntry = GetEntry( --n );
if ( pImplEntry->mpUserData == pData )
@@ -315,12 +320,12 @@ sal_uInt16 ImplEntryList::FindEntry( const void* pData ) const
return nPos;
}
-long ImplEntryList::GetAddedHeight( sal_uInt16 i_nEndIndex, sal_uInt16 i_nBeginIndex, long i_nBeginHeight ) const
+long ImplEntryList::GetAddedHeight( sal_Int32 i_nEndIndex, sal_Int32 i_nBeginIndex, long i_nBeginHeight ) const
{
long nHeight = i_nBeginHeight;
- sal_uInt16 nStart = i_nEndIndex > i_nBeginIndex ? i_nBeginIndex : i_nEndIndex;
- sal_uInt16 nStop = i_nEndIndex > i_nBeginIndex ? i_nEndIndex : i_nBeginIndex;
- sal_uInt16 nEntryCount = GetEntryCount();
+ sal_Int32 nStart = i_nEndIndex > i_nBeginIndex ? i_nBeginIndex : i_nEndIndex;
+ sal_Int32 nStop = i_nEndIndex > i_nBeginIndex ? i_nEndIndex : i_nBeginIndex;
+ sal_Int32 nEntryCount = GetEntryCount();
if( nStop != LISTBOX_ENTRY_NOTFOUND && nEntryCount != 0 )
{
// sanity check
@@ -329,10 +334,16 @@ long ImplEntryList::GetAddedHeight( sal_uInt16 i_nEndIndex, sal_uInt16 i_nBeginI
if( nStart > nEntryCount-1 )
nStart = nEntryCount-1;
- sal_uInt16 nIndex = nStart;
+ sal_Int32 nIndex = nStart;
while( nIndex != LISTBOX_ENTRY_NOTFOUND && nIndex < nStop )
{
- nHeight += GetEntryPtr( nIndex )-> mnHeight;
+ long nPosHeight = GetEntryPtr( nIndex )->mnHeight;
+ if (nHeight > ::std::numeric_limits<long>::max() - nPosHeight)
+ {
+ SAL_WARN( "vcl", "ImplEntryList::GetAddedHeight: truncated");
+ break;
+ }
+ nHeight += nPosHeight;
nIndex++;
}
}
@@ -341,13 +352,13 @@ long ImplEntryList::GetAddedHeight( sal_uInt16 i_nEndIndex, sal_uInt16 i_nBeginI
return i_nEndIndex > i_nBeginIndex ? nHeight : -nHeight;
}
-long ImplEntryList::GetEntryHeight( sal_uInt16 nPos ) const
+long ImplEntryList::GetEntryHeight( sal_Int32 nPos ) const
{
ImplEntryType* pImplEntry = GetEntry( nPos );
return pImplEntry ? pImplEntry->mnHeight : 0;
}
-OUString ImplEntryList::GetEntryText( sal_uInt16 nPos ) const
+OUString ImplEntryList::GetEntryText( sal_Int32 nPos ) const
{
OUString aEntryText;
ImplEntryType* pImplEntry = GetEntry( nPos );
@@ -356,7 +367,7 @@ OUString ImplEntryList::GetEntryText( sal_uInt16 nPos ) const
return aEntryText;
}
-bool ImplEntryList::HasEntryImage( sal_uInt16 nPos ) const
+bool ImplEntryList::HasEntryImage( sal_Int32 nPos ) const
{
bool bImage = false;
ImplEntryType* pImplEntry = GetEntry( nPos );
@@ -365,7 +376,7 @@ bool ImplEntryList::HasEntryImage( sal_uInt16 nPos ) const
return bImage;
}
-Image ImplEntryList::GetEntryImage( sal_uInt16 nPos ) const
+Image ImplEntryList::GetEntryImage( sal_Int32 nPos ) const
{
Image aImage;
ImplEntryType* pImplEntry = GetEntry( nPos );
@@ -374,36 +385,36 @@ Image ImplEntryList::GetEntryImage( sal_uInt16 nPos ) const
return aImage;
}
-void ImplEntryList::SetEntryData( sal_uInt16 nPos, void* pNewData )
+void ImplEntryList::SetEntryData( sal_Int32 nPos, void* pNewData )
{
ImplEntryType* pImplEntry = GetEntry( nPos );
if ( pImplEntry )
pImplEntry->mpUserData = pNewData;
}
-void* ImplEntryList::GetEntryData( sal_uInt16 nPos ) const
+void* ImplEntryList::GetEntryData( sal_Int32 nPos ) const
{
ImplEntryType* pImplEntry = GetEntry( nPos );
return pImplEntry ? pImplEntry->mpUserData : NULL;
}
-void ImplEntryList::SetEntryFlags( sal_uInt16 nPos, long nFlags )
+void ImplEntryList::SetEntryFlags( sal_Int32 nPos, long nFlags )
{
ImplEntryType* pImplEntry = GetEntry( nPos );
if ( pImplEntry )
pImplEntry->mnFlags = nFlags;
}
-long ImplEntryList::GetEntryFlags( sal_uInt16 nPos ) const
+long ImplEntryList::GetEntryFlags( sal_Int32 nPos ) const
{
ImplEntryType* pImplEntry = GetEntry( nPos );
return pImplEntry ? pImplEntry->mnFlags : 0;
}
-sal_uInt16 ImplEntryList::GetSelectEntryCount() const
+sal_Int32 ImplEntryList::GetSelectEntryCount() const
{
- sal_uInt16 nSelCount = 0;
- for ( sal_uInt16 n = GetEntryCount(); n; )
+ sal_Int32 nSelCount = 0;
+ for ( sal_Int32 n = GetEntryCount(); n; )
{
ImplEntryType* pImplEntry = GetEntry( --n );
if ( pImplEntry->mbIsSelected )
@@ -412,18 +423,18 @@ sal_uInt16 ImplEntryList::GetSelectEntryCount() const
return nSelCount;
}
-OUString ImplEntryList::GetSelectEntry( sal_uInt16 nIndex ) const
+OUString ImplEntryList::GetSelectEntry( sal_Int32 nIndex ) const
{
return GetEntryText( GetSelectEntryPos( nIndex ) );
}
-sal_uInt16 ImplEntryList::GetSelectEntryPos( sal_uInt16 nIndex ) const
+sal_Int32 ImplEntryList::GetSelectEntryPos( sal_Int32 nIndex ) const
{
- sal_uInt16 nSelEntryPos = LISTBOX_ENTRY_NOTFOUND;
- sal_uInt16 nSel = 0;
- sal_uInt16 nEntryCount = GetEntryCount();
+ sal_Int32 nSelEntryPos = LISTBOX_ENTRY_NOTFOUND;
+ sal_Int32 nSel = 0;
+ sal_Int32 nEntryCount = GetEntryCount();
- for ( sal_uInt16 n = 0; n < nEntryCount; n++ )
+ for ( sal_Int32 n = 0; n < nEntryCount; n++ )
{
ImplEntryType* pImplEntry = GetEntry( n );
if ( pImplEntry->mbIsSelected )
@@ -440,19 +451,19 @@ sal_uInt16 ImplEntryList::GetSelectEntryPos( sal_uInt16 nIndex ) const
return nSelEntryPos;
}
-bool ImplEntryList::IsEntryPosSelected( sal_uInt16 nIndex ) const
+bool ImplEntryList::IsEntryPosSelected( sal_Int32 nIndex ) const
{
ImplEntryType* pImplEntry = GetEntry( nIndex );
return pImplEntry ? pImplEntry->mbIsSelected : false;
}
-bool ImplEntryList::IsEntrySelectable( sal_uInt16 nPos ) const
+bool ImplEntryList::IsEntrySelectable( sal_Int32 nPos ) const
{
ImplEntryType* pImplEntry = GetEntry( nPos );
return pImplEntry ? ((pImplEntry->mnFlags & LISTBOX_ENTRY_FLAG_DISABLE_SELECTION) == 0) : true;
}
-sal_uInt16 ImplEntryList::FindFirstSelectable( sal_uInt16 nPos, bool bForward /* = true */ )
+sal_Int32 ImplEntryList::FindFirstSelectable( sal_Int32 nPos, bool bForward /* = true */ )
{
if( IsEntrySelectable( nPos ) )
return nPos;
@@ -552,7 +563,7 @@ void ImplListBoxWindow::ImplCalcMetrics()
if ( maUserItemSize.Width() > mnMaxWidth )
mnMaxWidth= (sal_uInt16) maUserItemSize.Width();
- for ( sal_uInt16 n = mpEntryList->GetEntryCount(); n; )
+ for ( sal_Int32 n = mpEntryList->GetEntryCount(); n; )
{
ImplEntryType* pEntry = mpEntryList->GetMutableEntryPtr( --n );
ImplUpdateEntryMetrics( *pEntry );
@@ -696,10 +707,10 @@ void ImplListBoxWindow::ImplCallSelect()
if ( !IsTravelSelect() && GetEntryList()->GetMaxMRUCount() )
{
// Insert the selected entry as MRU, if not already first MRU
- sal_uInt16 nSelected = GetEntryList()->GetSelectEntryPos( 0 );
- sal_uInt16 nMRUCount = GetEntryList()->GetMRUCount();
+ sal_Int32 nSelected = GetEntryList()->GetSelectEntryPos( 0 );
+ sal_Int32 nMRUCount = GetEntryList()->GetMRUCount();
OUString aSelected = GetEntryList()->GetEntryText( nSelected );
- sal_uInt16 nFirstMatchingEntryPos = GetEntryList()->FindEntry( aSelected, true );
+ sal_Int32 nFirstMatchingEntryPos = GetEntryList()->FindEntry( aSelected, true );
if ( nFirstMatchingEntryPos || !nMRUCount )
{
bool bSelectNewEntry = false;
@@ -732,10 +743,13 @@ void ImplListBoxWindow::ImplCallSelect()
mbSelectionChanged = false;
}
-sal_uInt16 ImplListBoxWindow::InsertEntry( sal_uInt16 nPos, ImplEntryType* pNewEntry )
+sal_Int32 ImplListBoxWindow::InsertEntry( sal_Int32 nPos, ImplEntryType* pNewEntry )
{
+ if (nPos < 0 || LISTBOX_MAX_ENTRIES <= mpEntryList->GetEntryCount())
+ return LISTBOX_ERROR;
+
ImplClearLayoutData();
- sal_uInt16 nNewPos = mpEntryList->InsertEntry( nPos, pNewEntry, mbSort );
+ sal_Int32 nNewPos = mpEntryList->InsertEntry( nPos, pNewEntry, mbSort );
if( (GetStyle() & WB_WORDBREAK) )
pNewEntry->mnFlags |= LISTBOX_ENTRY_FLAG_MULTILINE;
@@ -744,7 +758,7 @@ sal_uInt16 ImplListBoxWindow::InsertEntry( sal_uInt16 nPos, ImplEntryType* pNewE
return nNewPos;
}
-void ImplListBoxWindow::RemoveEntry( sal_uInt16 nPos )
+void ImplListBoxWindow::RemoveEntry( sal_Int32 nPos )
{
ImplClearLayoutData();
mpEntryList->RemoveEntry( nPos );
@@ -753,7 +767,7 @@ void ImplListBoxWindow::RemoveEntry( sal_uInt16 nPos )
ImplCalcMetrics();
}
-void ImplListBoxWindow::SetEntryFlags( sal_uInt16 nPos, long nFlags )
+void ImplListBoxWindow::SetEntryFlags( sal_Int32 nPos, long nFlags )
{
mpEntryList->SetEntryFlags( nPos, nFlags );
ImplEntryType* pEntry = mpEntryList->GetMutableEntryPtr( nPos );
@@ -778,11 +792,11 @@ void ImplListBoxWindow::ImplHideFocusRect()
}
}
-sal_uInt16 ImplListBoxWindow::GetEntryPosForPoint( const Point& rPoint ) const
+sal_Int32 ImplListBoxWindow::GetEntryPosForPoint( const Point& rPoint ) const
{
long nY = mnBorder;
- sal_uInt16 nSelect = mnTop;
+ sal_Int32 nSelect = mnTop;
const ImplEntryType* pEntry = mpEntryList->GetEntryPtr( nSelect );
while( pEntry && rPoint.Y() > pEntry->mnHeight + nY )
{
@@ -795,7 +809,7 @@ sal_uInt16 ImplListBoxWindow::GetEntryPosForPoint( const Point& rPoint ) const
return nSelect;
}
-bool ImplListBoxWindow::IsVisible( sal_uInt16 i_nEntry ) const
+bool ImplListBoxWindow::IsVisible( sal_Int32 i_nEntry ) const
{
bool bRet = false;
@@ -811,11 +825,11 @@ bool ImplListBoxWindow::IsVisible( sal_uInt16 i_nEntry ) const
return bRet;
}
-sal_uInt16 ImplListBoxWindow::GetLastVisibleEntry() const
+sal_Int32 ImplListBoxWindow::GetLastVisibleEntry() const
{
- sal_uInt16 nPos = mnTop;
+ sal_Int32 nPos = mnTop;
long nWindowHeight = GetSizePixel().Height();
- sal_uInt16 nCount = mpEntryList->GetEntryCount();
+ sal_Int32 nCount = mpEntryList->GetEntryCount();
long nDiff;
for( nDiff = 0; nDiff < nWindowHeight && nPos < nCount; nDiff = mpEntryList->GetAddedHeight( nPos, mnTop ) )
nPos++;
@@ -838,7 +852,7 @@ void ImplListBoxWindow::MouseButtonDown( const MouseEvent& rMEvt )
{
if( rMEvt.GetClicks() == 1 )
{
- sal_uInt16 nSelect = GetEntryPosForPoint( rMEvt.GetPosPixel() );
+ sal_Int32 nSelect = GetEntryPosForPoint( rMEvt.GetPosPixel() );
if( nSelect != LISTBOX_ENTRY_NOTFOUND )
{
if ( !mbMulti && GetEntryList()->GetSelectEntryCount() )
@@ -898,11 +912,11 @@ void ImplListBoxWindow::MouseMove( const MouseEvent& rMEvt )
{
if ( IsMouseMoveSelect() )
{
- sal_uInt16 nSelect = GetEntryPosForPoint( rMEvt.GetPosPixel() );
+ sal_Int32 nSelect = GetEntryPosForPoint( rMEvt.GetPosPixel() );
if( nSelect == LISTBOX_ENTRY_NOTFOUND )
nSelect = mpEntryList->GetEntryCount() - 1;
nSelect = std::min( nSelect, GetLastVisibleEntry() );
- nSelect = std::min( nSelect, (sal_uInt16) ( mpEntryList->GetEntryCount() - 1 ) );
+ nSelect = std::min( nSelect, (sal_Int32) ( mpEntryList->GetEntryCount() - 1 ) );
// Select only visible Entries with MouseMove, otherwise Tracking...
if ( IsVisible( nSelect ) &&
mpEntryList->IsEntrySelectable( nSelect ) &&
@@ -951,12 +965,12 @@ void ImplListBoxWindow::DeselectAll()
{
while ( GetEntryList()->GetSelectEntryCount() )
{
- sal_uInt16 nS = GetEntryList()->GetSelectEntryPos( 0 );
+ sal_Int32 nS = GetEntryList()->GetSelectEntryPos( 0 );
SelectEntry( nS, false );
}
}
-void ImplListBoxWindow::SelectEntry( sal_uInt16 nPos, bool bSelect )
+void ImplListBoxWindow::SelectEntry( sal_Int32 nPos, bool bSelect )
{
if( (mpEntryList->IsEntryPosSelected( nPos ) != bSelect) && mpEntryList->IsEntrySelectable( nPos ) )
{
@@ -966,7 +980,7 @@ void ImplListBoxWindow::SelectEntry( sal_uInt16 nPos, bool bSelect )
if( !mbMulti )
{
// deselect the selected entry
- sal_uInt16 nDeselect = GetEntryList()->GetSelectEntryPos( 0 );
+ sal_Int32 nDeselect = GetEntryList()->GetSelectEntryPos( 0 );
if( nDeselect != LISTBOX_ENTRY_NOTFOUND )
{
//SelectEntryPos( nDeselect, false );
@@ -983,7 +997,7 @@ void ImplListBoxWindow::SelectEntry( sal_uInt16 nPos, bool bSelect )
if ( !IsVisible( nPos ) )
{
ImplClearLayoutData();
- sal_uInt16 nVisibleEntries = GetLastVisibleEntry()-mnTop;
+ sal_Int32 nVisibleEntries = GetLastVisibleEntry()-mnTop;
if ( !nVisibleEntries || !IsReallyVisible() || ( nPos < GetTopEntry() ) )
{
Resize();
@@ -1005,7 +1019,7 @@ void ImplListBoxWindow::SelectEntry( sal_uInt16 nPos, bool bSelect )
}
}
-bool ImplListBoxWindow::SelectEntries( sal_uInt16 nSelect, LB_EVENT_TYPE eLET, bool bShift, bool bCtrl, bool bSelectPosChange /*=FALSE*/ )
+bool ImplListBoxWindow::SelectEntries( sal_Int32 nSelect, LB_EVENT_TYPE eLET, bool bShift, bool bCtrl, bool bSelectPosChange /*=FALSE*/ )
{
bool bFocusChanged = false;
bool bSelectionChanged = false;
@@ -1015,7 +1029,7 @@ bool ImplListBoxWindow::SelectEntries( sal_uInt16 nSelect, LB_EVENT_TYPE eLET, b
// here (Single-ListBox) only one entry can be deselected
if( !mbMulti )
{
- sal_uInt16 nDeselect = mpEntryList->GetSelectEntryPos( 0 );
+ sal_Int32 nDeselect = mpEntryList->GetSelectEntryPos( 0 );
if( nSelect != nDeselect )
{
SelectEntry( nSelect, true );
@@ -1027,8 +1041,8 @@ bool ImplListBoxWindow::SelectEntries( sal_uInt16 nSelect, LB_EVENT_TYPE eLET, b
// MultiListBox without Modifier
else if( mbSimpleMode && !bCtrl && !bShift )
{
- sal_uInt16 nEntryCount = mpEntryList->GetEntryCount();
- for ( sal_uInt16 nPos = 0; nPos < nEntryCount; nPos++ )
+ sal_Int32 nEntryCount = mpEntryList->GetEntryCount();
+ for ( sal_Int32 nPos = 0; nPos < nEntryCount; nPos++ )
{
bool bSelect = nPos == nSelect;
if ( mpEntryList->IsEntryPosSelected( nPos ) != bSelect )
@@ -1050,7 +1064,7 @@ bool ImplListBoxWindow::SelectEntries( sal_uInt16 nSelect, LB_EVENT_TYPE eLET, b
bool bSelect = ( mbStackMode && IsMouseMoveSelect() ) ? true : !mpEntryList->IsEntryPosSelected( nSelect );
if ( mbStackMode )
{
- sal_uInt16 n;
+ sal_Int32 n;
if ( bSelect )
{
// All entries before nSelect must be selected...
@@ -1077,7 +1091,7 @@ bool ImplListBoxWindow::SelectEntries( sal_uInt16 nSelect, LB_EVENT_TYPE eLET, b
mnCurrentPos = nSelect;
bFocusChanged = true;
- sal_uInt16 nAnchor = mpEntryList->GetSelectionAnchor();
+ sal_Int32 nAnchor = mpEntryList->GetSelectionAnchor();
if( ( nAnchor == LISTBOX_ENTRY_NOTFOUND ) && ( mpEntryList->GetSelectEntryCount() || mbStackMode ) )
{
nAnchor = mbStackMode ? 0 : mpEntryList->GetSelectEntryPos( mpEntryList->GetSelectEntryCount() - 1 );
@@ -1085,9 +1099,9 @@ bool ImplListBoxWindow::SelectEntries( sal_uInt16 nSelect, LB_EVENT_TYPE eLET, b
if( nAnchor != LISTBOX_ENTRY_NOTFOUND )
{
// All entries from achor to nSelect have to be selected
- sal_uInt16 nStart = std::min( nSelect, nAnchor );
- sal_uInt16 nEnd = std::max( nSelect, nAnchor );
- for ( sal_uInt16 n = nStart; n <= nEnd; n++ )
+ sal_Int32 nStart = std::min( nSelect, nAnchor );
+ sal_Int32 nEnd = std::max( nSelect, nAnchor );
+ for ( sal_Int32 n = nStart; n <= nEnd; n++ )
{
if ( !mpEntryList->IsEntryPosSelected( n ) )
{
@@ -1097,12 +1111,12 @@ bool ImplListBoxWindow::SelectEntries( sal_uInt16 nSelect, LB_EVENT_TYPE eLET, b
}
// if appropriate some more has to be deselected...
- sal_uInt16 nLast = mpEntryList->GetLastSelected();
+ sal_Int32 nLast = mpEntryList->GetLastSelected();
if ( nLast != LISTBOX_ENTRY_NOTFOUND )
{
if ( ( nLast > nSelect ) && ( nLast > nAnchor ) )
{
- for ( sal_uInt16 n = nSelect+1; n <= nLast; n++ )
+ for ( sal_Int32 n = nSelect+1; n <= nLast; n++ )
{
if ( mpEntryList->IsEntryPosSelected( n ) )
{
@@ -1113,7 +1127,7 @@ bool ImplListBoxWindow::SelectEntries( sal_uInt16 nSelect, LB_EVENT_TYPE eLET, b
}
else if ( ( nLast < nSelect ) && ( nLast < nAnchor ) )
{
- for ( sal_uInt16 n = nLast; n < nSelect; n++ )
+ for ( sal_Int32 n = nLast; n < nSelect; n++ )
{
if ( mpEntryList->IsEntryPosSelected( n ) )
{
@@ -1220,7 +1234,7 @@ void ImplListBoxWindow::Tracking( const TrackingEvent& rTEvt )
bool bShift = aMEvt.IsShift();
bool bCtrl = aMEvt.IsMod1();
- sal_uInt16 nSelect = LISTBOX_ENTRY_NOTFOUND;
+ sal_Int32 nSelect = LISTBOX_ENTRY_NOTFOUND;
if( aPt.Y() < 0 )
{
if ( mnCurrentPos != LISTBOX_ENTRY_NOTFOUND )
@@ -1234,16 +1248,16 @@ void ImplListBoxWindow::Tracking( const TrackingEvent& rTEvt )
{
if ( mnCurrentPos != LISTBOX_ENTRY_NOTFOUND )
{
- nSelect = std::min( (sal_uInt16)(mnCurrentPos+1), (sal_uInt16)(mpEntryList->GetEntryCount()-1) );
+ nSelect = std::min( (sal_Int32)(mnCurrentPos+1), (sal_Int32)(mpEntryList->GetEntryCount()-1) );
if( nSelect >= GetLastVisibleEntry() )
SetTopEntry( mnTop+1 );
}
}
else
{
- nSelect = (sal_uInt16) ( ( aPt.Y() + mnBorder ) / mnMaxHeight ) + (sal_uInt16) mnTop;
+ nSelect = (sal_Int32) ( ( aPt.Y() + mnBorder ) / mnMaxHeight ) + (sal_Int32) mnTop;
nSelect = std::min( nSelect, GetLastVisibleEntry() );
- nSelect = std::min( nSelect, (sal_uInt16) ( mpEntryList->GetEntryCount() - 1 ) );
+ nSelect = std::min( nSelect, (sal_Int32) ( mpEntryList->GetEntryCount() - 1 ) );
}
if ( bInside )
@@ -1335,7 +1349,7 @@ void ImplListBoxWindow::KeyInput( const KeyEvent& rKEvt )
bool ImplListBoxWindow::ProcessKeyInput( const KeyEvent& rKEvt )
{
// entry to be selected
- sal_uInt16 nSelect = LISTBOX_ENTRY_NOTFOUND;
+ sal_Int32 nSelect = LISTBOX_ENTRY_NOTFOUND;
LB_EVENT_TYPE eLET = LET_KEYMOVE;
KeyCode aKeyCode = rKEvt.GetKeyCode();
@@ -1406,7 +1420,7 @@ bool ImplListBoxWindow::ProcessKeyInput( const KeyEvent& rKEvt )
{
if ( IsReadOnly() )
{
- sal_uInt16 nCurVis = GetLastVisibleEntry() - mnTop +1;
+ sal_Int32 nCurVis = GetLastVisibleEntry() - mnTop +1;
SetTopEntry( ( mnTop > nCurVis ) ?
(mnTop-nCurVis) : 0 );
}
@@ -1420,7 +1434,7 @@ bool ImplListBoxWindow::ProcessKeyInput( const KeyEvent& rKEvt )
{
if( mnCurrentPos == mnTop )
{
- sal_uInt16 nCurVis = GetLastVisibleEntry() - mnTop +1;
+ sal_Int32 nCurVis = GetLastVisibleEntry() - mnTop +1;
SetTopEntry( ( mnTop > nCurVis ) ? ( mnTop-nCurVis+1 ) : 0 );
}
@@ -1447,16 +1461,16 @@ bool ImplListBoxWindow::ProcessKeyInput( const KeyEvent& rKEvt )
}
else if ( (mnCurrentPos+1) < mpEntryList->GetEntryCount() )
{
- sal_uInt16 nCount = mpEntryList->GetEntryCount();
- sal_uInt16 nCurVis = GetLastVisibleEntry() - mnTop;
- sal_uInt16 nTmp = std::min( nCurVis, nCount );
+ sal_Int32 nCount = mpEntryList->GetEntryCount();
+ sal_Int32 nCurVis = GetLastVisibleEntry() - mnTop;
+ sal_Int32 nTmp = std::min( nCurVis, nCount );
nTmp += mnTop - 1;
if( mnCurrentPos == nTmp && mnCurrentPos != nCount - 1 )
{
long nTmp2 = std::min( (long)(nCount-nCurVis), (long)((long)mnTop+(long)nCurVis-1) );
nTmp2 = std::max( (long)0 , nTmp2 );
- nTmp = (sal_uInt16)(nTmp2+(nCurVis-1) );
- SetTopEntry( (sal_uInt16)nTmp2 );
+ nTmp = (sal_Int32)(nTmp2+(nCurVis-1) );
+ SetTopEntry( (sal_Int32)nTmp2 );
}
// find first selectable starting from nTmp looking backwards
nSelect = mpEntryList->FindFirstSelectable( nTmp, false );
@@ -1502,9 +1516,9 @@ bool ImplListBoxWindow::ProcessKeyInput( const KeyEvent& rKEvt )
}
else if ( (mnCurrentPos+1) < mpEntryList->GetEntryCount() )
{
- sal_uInt16 nCount = mpEntryList->GetEntryCount();
+ sal_Int32 nCount = mpEntryList->GetEntryCount();
nSelect = mpEntryList->FindFirstSelectable( nCount - 1, false );
- sal_uInt16 nCurVis = GetLastVisibleEntry() - mnTop + 1;
+ sal_Int32 nCurVis = GetLastVisibleEntry() - mnTop + 1;
if( nCount > nCurVis )
SetTopEntry( nCount - nCurVis );
}
@@ -1571,8 +1585,8 @@ bool ImplListBoxWindow::ProcessKeyInput( const KeyEvent& rKEvt )
bool bUpdates = IsUpdateMode();
SetUpdateMode( false );
- sal_uInt16 nEntryCount = mpEntryList->GetEntryCount();
- for( sal_uInt16 i = 0; i < nEntryCount; i++ )
+ sal_Int32 nEntryCount = mpEntryList->GetEntryCount();
+ for( sal_Int32 i = 0; i < nEntryCount; i++ )
SelectEntry( i, true );
// restore update mode
@@ -1622,10 +1636,10 @@ bool ImplListBoxWindow::ProcessKeyInput( const KeyEvent& rKEvt )
namespace
{
- static ::vcl::StringEntryIdentifier lcl_getEntry( const ImplEntryList& _rList, sal_uInt16 _nPos, OUString& _out_entryText )
+ static ::vcl::StringEntryIdentifier lcl_getEntry( const ImplEntryList& _rList, sal_Int32 _nPos, OUString& _out_entryText )
{
OSL_PRECOND( ( _nPos != LISTBOX_ENTRY_NOTFOUND ), "lcl_getEntry: invalid position!" );
- sal_uInt16 nEntryCount( _rList.GetEntryCount() );
+ sal_Int32 nEntryCount( _rList.GetEntryCount() );
if ( _nPos >= nEntryCount )
_nPos = 0;
_out_entryText = _rList.GetEntryText( _nPos );
@@ -1635,10 +1649,10 @@ namespace
return reinterpret_cast< ::vcl::StringEntryIdentifier >( _nPos + 1 );
}
- static sal_uInt16 lcl_getEntryPos( ::vcl::StringEntryIdentifier _entry )
+ static sal_Int32 lcl_getEntryPos( ::vcl::StringEntryIdentifier _entry )
{
// our pos is 0-based, but StringEntryIdentifier does not allow for a NULL
- return static_cast< sal_uInt16 >( reinterpret_cast< sal_Int64 >( _entry ) ) - 1;
+ return static_cast< sal_Int32 >( reinterpret_cast< sal_Int64 >( _entry ) ) - 1;
}
}
@@ -1649,13 +1663,13 @@ namespace
::vcl::StringEntryIdentifier ImplListBoxWindow::NextEntry( ::vcl::StringEntryIdentifier _currentEntry, OUString& _out_entryText ) const
{
- sal_uInt16 nNextPos = lcl_getEntryPos( _currentEntry ) + 1;
+ sal_Int32 nNextPos = lcl_getEntryPos( _currentEntry ) + 1;
return lcl_getEntry( *GetEntryList(), nNextPos, _out_entryText );
}
void ImplListBoxWindow::SelectEntry( ::vcl::StringEntryIdentifier _entry )
{
- sal_uInt16 nSelect = lcl_getEntryPos( _entry );
+ sal_Int32 nSelect = lcl_getEntryPos( _entry );
if ( mpEntryList->IsEntryPosSelected( nSelect ) )
{
// ignore that. This method is a callback from the QuickSelectionEngine, which means the user attempted
@@ -1682,7 +1696,7 @@ void ImplListBoxWindow::SelectEntry( ::vcl::StringEntryIdentifier _entry )
}
}
-void ImplListBoxWindow::ImplPaint( sal_uInt16 nPos, bool bErase, bool bLayout )
+void ImplListBoxWindow::ImplPaint( sal_Int32 nPos, bool bErase, bool bLayout )
{
const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
@@ -1721,11 +1735,11 @@ void ImplListBoxWindow::ImplPaint( sal_uInt16 nPos, bool bErase, bool bLayout )
aRect.Left() -= mnLeft;
if ( nPos < GetEntryList()->GetMRUCount() )
nPos = GetEntryList()->FindEntry( GetEntryList()->GetEntryText( nPos ) );
- nPos = sal::static_int_cast<sal_uInt16>(nPos - GetEntryList()->GetMRUCount());
- sal_uInt16 nCurr = mnCurrentPos;
+ nPos = sal::static_int_cast<sal_Int32>(nPos - GetEntryList()->GetMRUCount());
+ sal_Int32 nCurr = mnCurrentPos;
if ( mnCurrentPos < GetEntryList()->GetMRUCount() )
nCurr = GetEntryList()->FindEntry( GetEntryList()->GetEntryText( nCurr ) );
- nCurr = sal::static_int_cast<sal_uInt16>( nCurr - GetEntryList()->GetMRUCount());
+ nCurr = sal::static_int_cast<sal_Int32>( nCurr - GetEntryList()->GetMRUCount());
UserDrawEvent aUDEvt( this, aRect, nPos, nCurr );
maUserDrawHdl.Call( &aUDEvt );
@@ -1737,7 +1751,7 @@ void ImplListBoxWindow::ImplPaint( sal_uInt16 nPos, bool bErase, bool bLayout )
}
}
-void ImplListBoxWindow::DrawEntry( sal_uInt16 nPos, bool bDrawImage, bool bDrawText, bool bDrawTextAtImagePos, bool bLayout )
+void ImplListBoxWindow::DrawEntry( sal_Int32 nPos, bool bDrawImage, bool bDrawText, bool bDrawTextAtImagePos, bool bLayout )
{
const ImplEntryType* pEntry = mpEntryList->GetEntryPtr( nPos );
if( ! pEntry )
@@ -1864,7 +1878,7 @@ void ImplListBoxWindow::FillLayoutData() const
void ImplListBoxWindow::ImplDoPaint( const Rectangle& rRect, bool bLayout )
{
- sal_uInt16 nCount = mpEntryList->GetEntryCount();
+ sal_Int32 nCount = mpEntryList->GetEntryCount();
bool bShowFocusRect = mbHasFocusRect;
if ( mbHasFocusRect && ! bLayout )
@@ -1873,7 +1887,7 @@ void ImplListBoxWindow::ImplDoPaint( const Rectangle& rRect, bool bLayout )
long nY = 0; // + mnBorder;
long nHeight = GetOutputSizePixel().Height();// - mnMaxHeight + mnBorder;
- for( sal_uInt16 i = (sal_uInt16)mnTop; i < nCount && nY < nHeight + mnMaxHeight; i++ )
+ for( sal_Int32 i = (sal_Int32)mnTop; i < nCount && nY < nHeight + mnMaxHeight; i++ )
{
const ImplEntryType* pEntry = mpEntryList->GetEntryPtr( i );
if( nY + pEntry->mnHeight >= rRect.Top() &&
@@ -1901,7 +1915,7 @@ sal_uInt16 ImplListBoxWindow::GetDisplayLineCount() const
{
// FIXME: LISTBOX_ENTRY_FLAG_MULTILINE
- sal_uInt16 nCount = mpEntryList->GetEntryCount();
+ sal_Int32 nCount = mpEntryList->GetEntryCount();
long nHeight = GetOutputSizePixel().Height();// - mnMaxHeight + mnBorder;
sal_uInt16 nEntries = static_cast< sal_uInt16 >( ( nHeight + mnMaxHeight - 1 ) / mnMaxHeight );
if( nEntries > nCount-mnTop )
@@ -1932,7 +1946,7 @@ void ImplListBoxWindow::Resize()
void ImplListBoxWindow::GetFocus()
{
- sal_uInt16 nPos = mnCurrentPos;
+ sal_Int32 nPos = mnCurrentPos;
if ( nPos == LISTBOX_ENTRY_NOTFOUND )
nPos = 0;
long nHeightDiff = mpEntryList->GetAddedHeight( nPos, mnTop, 0 );
@@ -1949,14 +1963,14 @@ void ImplListBoxWindow::LoseFocus()
Control::LoseFocus();
}
-void ImplListBoxWindow::SetTopEntry( sal_uInt16 nTop )
+void ImplListBoxWindow::SetTopEntry( sal_Int32 nTop )
{
if( mpEntryList->GetEntryCount() == 0 )
return;
long nWHeight = PixelToLogic( GetSizePixel() ).Height();
- sal_uInt16 nLastEntry = mpEntryList->GetEntryCount()-1;
+ sal_Int32 nLastEntry = mpEntryList->GetEntryCount()-1;
if( nTop > nLastEntry )
nTop = nLastEntry;
const ImplEntryType* pLast = mpEntryList->GetEntryPtr( nLastEntry );
@@ -1978,11 +1992,11 @@ void ImplListBoxWindow::SetTopEntry( sal_uInt16 nTop )
}
}
-void ImplListBoxWindow::ShowProminentEntry( sal_uInt16 nEntryPos )
+void ImplListBoxWindow::ShowProminentEntry( sal_Int32 nEntryPos )
{
if( meProminentType == PROMINENT_MIDDLE )
{
- sal_uInt16 nPos = nEntryPos;
+ sal_Int32 nPos = nEntryPos;
long nWHeight = PixelToLogic( GetSizePixel() ).Height();
while( nEntryPos > 0 && mpEntryList->GetAddedHeight( nPos+1, nEntryPos ) < nWHeight/2 )
nEntryPos--;
@@ -2037,7 +2051,7 @@ Size ImplListBoxWindow::CalcSize(sal_Int32 nMaxLines) const
return aSz;
}
-Rectangle ImplListBoxWindow::GetBoundingRectangle( sal_uInt16 nItem ) const
+Rectangle ImplListBoxWindow::GetBoundingRectangle( sal_Int32 nItem ) const
{
const ImplEntryType* pEntry = mpEntryList->GetEntryPtr( nItem );
Size aSz( GetSizePixel().Width(), pEntry ? pEntry->mnHeight : GetEntryHeight() );
@@ -2163,34 +2177,44 @@ void ImplListBox::Clear()
StateChanged( STATE_CHANGE_DATA );
}
-sal_uInt16 ImplListBox::InsertEntry( sal_uInt16 nPos, const OUString& rStr )
+sal_Int32 ImplListBox::InsertEntry( sal_Int32 nPos, const OUString& rStr )
{
ImplEntryType* pNewEntry = new ImplEntryType( rStr );
- sal_uInt16 nNewPos = maLBWindow.InsertEntry( nPos, pNewEntry );
+ sal_Int32 nNewPos = maLBWindow.InsertEntry( nPos, pNewEntry );
+ if (nNewPos == LISTBOX_ERROR)
+ {
+ delete pNewEntry;
+ return nNewPos;
+ }
StateChanged( STATE_CHANGE_DATA );
return nNewPos;
}
-sal_uInt16 ImplListBox::InsertEntry( sal_uInt16 nPos, const OUString& rStr, const Image& rImage )
+sal_Int32 ImplListBox::InsertEntry( sal_Int32 nPos, const OUString& rStr, const Image& rImage )
{
ImplEntryType* pNewEntry = new ImplEntryType( rStr, rImage );
- sal_uInt16 nNewPos = maLBWindow.InsertEntry( nPos, pNewEntry );
+ sal_Int32 nNewPos = maLBWindow.InsertEntry( nPos, pNewEntry );
+ if (nNewPos == LISTBOX_ERROR)
+ {
+ delete pNewEntry;
+ return nNewPos;
+ }
StateChanged( STATE_CHANGE_DATA );
return nNewPos;
}
-void ImplListBox::RemoveEntry( sal_uInt16 nPos )
+void ImplListBox::RemoveEntry( sal_Int32 nPos )
{
maLBWindow.RemoveEntry( nPos );
StateChanged( STATE_CHANGE_DATA );
}
-void ImplListBox::SetEntryFlags( sal_uInt16 nPos, long nFlags )
+void ImplListBox::SetEntryFlags( sal_Int32 nPos, long nFlags )
{
maLBWindow.SetEntryFlags( nPos, nFlags );
}
-void ImplListBox::SelectEntry( sal_uInt16 nPos, bool bSelect )
+void ImplListBox::SelectEntry( sal_Int32 nPos, bool bSelect )
{
maLBWindow.SelectEntry( nPos, bSelect );
}
@@ -2253,7 +2277,7 @@ void ImplListBox::ImplCheckScrollBars()
bool bArrange = false;
Size aOutSz = GetOutputSizePixel();
- sal_uInt16 nEntries = GetEntryList()->GetEntryCount();
+ sal_Int32 nEntries = GetEntryList()->GetEntryCount();
sal_uInt16 nMaxVisEntries = (sal_uInt16) (aOutSz.Height() / GetEntryHeight());
// vertical ScrollBar
@@ -2335,7 +2359,7 @@ void ImplListBox::ImplInitScrollBars()
if ( mbVScroll )
{
- sal_uInt16 nEntries = GetEntryList()->GetEntryCount();
+ sal_Int32 nEntries = GetEntryList()->GetEntryCount();
sal_uInt16 nVisEntries = (sal_uInt16) (aOutSz.Height() / GetEntryHeight());
mpVScrollBar->SetRangeMax( nEntries );
mpVScrollBar->SetVisibleSize( nVisEntries );
@@ -2513,10 +2537,10 @@ void ImplListBox::SetMRUEntries( const OUString& rEntries, sal_Unicode cSep )
bool bChanges = GetEntryList()->GetMRUCount() ? true : false;
// Remove old MRU entries
- for ( sal_uInt16 n = GetEntryList()->GetMRUCount();n; )
+ for ( sal_Int32 n = GetEntryList()->GetMRUCount();n; )
maLBWindow.RemoveEntry( --n );
- sal_uInt16 nMRUCount = 0;
+ sal_Int32 nMRUCount = 0;
sal_Int32 nIndex = 0;
do
{
@@ -2542,7 +2566,7 @@ void ImplListBox::SetMRUEntries( const OUString& rEntries, sal_Unicode cSep )
OUString ImplListBox::GetMRUEntries( sal_Unicode cSep ) const
{
OUStringBuffer aEntries;
- for ( sal_uInt16 n = 0; n < GetEntryList()->GetMRUCount(); n++ )
+ for ( sal_Int32 n = 0; n < GetEntryList()->GetMRUCount(); n++ )
{
aEntries.append(GetEntryList()->GetEntryText( n ));
if( n < ( GetEntryList()->GetMRUCount() - 1 ) )
@@ -2948,7 +2972,7 @@ Size ImplListBoxFloatingWindow::CalcFloatSize()
sal_Int32 nLeft, nTop, nRight, nBottom;
GetBorder( nLeft, nTop, nRight, nBottom );
- sal_uInt16 nLines = mpImplLB->GetEntryList()->GetEntryCount();
+ sal_Int32 nLines = mpImplLB->GetEntryList()->GetEntryCount();
if ( mnDDLineCount && ( nLines > mnDDLineCount ) )
nLines = mnDDLineCount;
@@ -3022,7 +3046,7 @@ void ImplListBoxFloatingWindow::StartFloat( bool bStartTracking )
SetSizePixel( aFloatSz );
mpImplLB->SetSizePixel( GetOutputSizePixel() );
- sal_uInt16 nPos = mpImplLB->GetEntryList()->GetSelectEntryPos( 0 );
+ sal_Int32 nPos = mpImplLB->GetEntryList()->GetSelectEntryPos( 0 );
mnPopupModeStartSaveSelection = nPos;
Size aSz = GetParent()->GetSizePixel();
diff --git a/vcl/source/control/lstbox.cxx b/vcl/source/control/lstbox.cxx
index 6d6474cfb400..7c802d94ca2f 100644
--- a/vcl/source/control/lstbox.cxx
+++ b/vcl/source/control/lstbox.cxx
@@ -195,12 +195,12 @@ void ListBox::ImplLoadRes( const ResId& rResId )
{
Control::ImplLoadRes( rResId );
- sal_uInt16 nSelPos = ReadShortRes();
- sal_uInt16 nNumber = sal::static_int_cast<sal_uInt16>(ReadLongRes());
+ sal_Int32 nSelPos = ReadShortRes();
+ sal_Int32 nNumber = sal::static_int_cast<sal_Int32>(ReadLongRes());
- for( sal_uInt16 i = 0; i < nNumber; i++ )
+ for( sal_Int32 i = 0; i < nNumber; i++ )
{
- sal_uInt16 nPos = InsertEntry( ReadStringRes(), LISTBOX_APPEND );
+ sal_Int32 nPos = InsertEntry( ReadStringRes(), LISTBOX_APPEND );
sal_IntPtr nId = ReadLongRes();
if( nId )
@@ -271,7 +271,7 @@ IMPL_LINK( ListBox, ImplSelectionChangedHdl, void*, n )
{
if ( !mpImplLB->IsTrackingSelect() )
{
- sal_uInt16 nChanged = (sal_uInt16)(sal_uLong)n;
+ sal_Int32 nChanged = (sal_Int32)(sal_uLong)n;
const ImplEntryList* pEntryList = mpImplLB->GetEntryList();
if ( pEntryList->IsEntryPosSelected( nChanged ) )
{
@@ -475,7 +475,7 @@ void ListBox::Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sa
for ( sal_uInt16 n = 0; n < nLines; n++ )
{
- sal_uInt16 nEntry = n+mpImplLB->GetTopEntry();
+ sal_Int32 nEntry = n+mpImplLB->GetTopEntry();
bool bSelected = mpImplLB->GetEntryList()->IsEntryPosSelected( nEntry );
if ( bSelected )
{
@@ -720,7 +720,7 @@ void ListBox::FillLayoutData() const
}
}
-long ListBox::GetIndexForPoint( const Point& rPoint, sal_uInt16& rPos ) const
+long ListBox::GetIndexForPoint( const Point& rPoint, sal_Int32& rPos ) const
{
if( !HasLayoutData() )
FillLayoutData();
@@ -740,7 +740,7 @@ long ListBox::GetIndexForPoint( const Point& rPoint, sal_uInt16& rPos ) const
aConvPoint = pMain->PixelToLogic( aConvPoint );
// Try to find entry
- sal_uInt16 nEntry = pMain->GetEntryPosForPoint( aConvPoint );
+ sal_Int32 nEntry = pMain->GetEntryPosForPoint( aConvPoint );
if( nEntry == LISTBOX_ENTRY_NOTFOUND )
{
// Not found, maybe dropdown case
@@ -1006,18 +1006,18 @@ void ListBox::SetNoSelection()
ImplCallEventListeners(VCLEVENT_LISTBOX_STATEUPDATE);
}
-sal_uInt16 ListBox::InsertEntry( const OUString& rStr, sal_uInt16 nPos )
+sal_Int32 ListBox::InsertEntry( const OUString& rStr, sal_Int32 nPos )
{
- sal_uInt16 nRealPos = mpImplLB->InsertEntry( nPos + mpImplLB->GetEntryList()->GetMRUCount(), rStr );
- nRealPos = sal::static_int_cast<sal_uInt16>(nRealPos - mpImplLB->GetEntryList()->GetMRUCount());
+ sal_Int32 nRealPos = mpImplLB->InsertEntry( nPos + mpImplLB->GetEntryList()->GetMRUCount(), rStr );
+ nRealPos = sal::static_int_cast<sal_Int32>(nRealPos - mpImplLB->GetEntryList()->GetMRUCount());
CallEventListeners( VCLEVENT_LISTBOX_ITEMADDED, (void*) sal_IntPtr(nRealPos) );
return nRealPos;
}
-sal_uInt16 ListBox::InsertEntry( const OUString& rStr, const Image& rImage, sal_uInt16 nPos )
+sal_Int32 ListBox::InsertEntry( const OUString& rStr, const Image& rImage, sal_Int32 nPos )
{
- sal_uInt16 nRealPos = mpImplLB->InsertEntry( nPos + mpImplLB->GetEntryList()->GetMRUCount(), rStr, rImage );
- nRealPos = sal::static_int_cast<sal_uInt16>(nRealPos - mpImplLB->GetEntryList()->GetMRUCount());
+ sal_Int32 nRealPos = mpImplLB->InsertEntry( nPos + mpImplLB->GetEntryList()->GetMRUCount(), rStr, rImage );
+ nRealPos = sal::static_int_cast<sal_Int32>(nRealPos - mpImplLB->GetEntryList()->GetMRUCount());
CallEventListeners( VCLEVENT_LISTBOX_ITEMADDED, (void*) sal_IntPtr(nRealPos) );
return nRealPos;
}
@@ -1027,63 +1027,63 @@ void ListBox::RemoveEntry( const OUString& rStr )
RemoveEntry( GetEntryPos( rStr ) );
}
-void ListBox::RemoveEntry( sal_uInt16 nPos )
+void ListBox::RemoveEntry( sal_Int32 nPos )
{
mpImplLB->RemoveEntry( nPos + mpImplLB->GetEntryList()->GetMRUCount() );
CallEventListeners( VCLEVENT_LISTBOX_ITEMREMOVED, (void*) sal_IntPtr(nPos) );
}
-Image ListBox::GetEntryImage( sal_uInt16 nPos ) const
+Image ListBox::GetEntryImage( sal_Int32 nPos ) const
{
if ( mpImplLB->GetEntryList()->HasEntryImage( nPos ) )
return mpImplLB->GetEntryList()->GetEntryImage( nPos );
return Image();
}
-sal_uInt16 ListBox::GetEntryPos( const OUString& rStr ) const
+sal_Int32 ListBox::GetEntryPos( const OUString& rStr ) const
{
- sal_uInt16 nPos = mpImplLB->GetEntryList()->FindEntry( rStr );
+ sal_Int32 nPos = mpImplLB->GetEntryList()->FindEntry( rStr );
if ( nPos != LISTBOX_ENTRY_NOTFOUND )
- nPos = sal::static_int_cast<sal_uInt16>(nPos - mpImplLB->GetEntryList()->GetMRUCount());
+ nPos = sal::static_int_cast<sal_Int32>(nPos - mpImplLB->GetEntryList()->GetMRUCount());
return nPos;
}
-sal_uInt16 ListBox::GetEntryPos( const void* pData ) const
+sal_Int32 ListBox::GetEntryPos( const void* pData ) const
{
- sal_uInt16 nPos = mpImplLB->GetEntryList()->FindEntry( pData );
+ sal_Int32 nPos = mpImplLB->GetEntryList()->FindEntry( pData );
if ( nPos != LISTBOX_ENTRY_NOTFOUND )
- nPos = sal::static_int_cast<sal_uInt16>(nPos - mpImplLB->GetEntryList()->GetMRUCount());
+ nPos = sal::static_int_cast<sal_Int32>(nPos - mpImplLB->GetEntryList()->GetMRUCount());
return nPos;
}
-OUString ListBox::GetEntry( sal_uInt16 nPos ) const
+OUString ListBox::GetEntry( sal_Int32 nPos ) const
{
return mpImplLB->GetEntryList()->GetEntryText( nPos + mpImplLB->GetEntryList()->GetMRUCount() );
}
-sal_uInt16 ListBox::GetEntryCount() const
+sal_Int32 ListBox::GetEntryCount() const
{
return mpImplLB->GetEntryList()->GetEntryCount() - mpImplLB->GetEntryList()->GetMRUCount();
}
-OUString ListBox::GetSelectEntry(sal_uInt16 nIndex) const
+OUString ListBox::GetSelectEntry(sal_Int32 nIndex) const
{
return GetEntry( GetSelectEntryPos( nIndex ) );
}
-sal_uInt16 ListBox::GetSelectEntryCount() const
+sal_Int32 ListBox::GetSelectEntryCount() const
{
return mpImplLB->GetEntryList()->GetSelectEntryCount();
}
-sal_uInt16 ListBox::GetSelectEntryPos( sal_uInt16 nIndex ) const
+sal_Int32 ListBox::GetSelectEntryPos( sal_Int32 nIndex ) const
{
- sal_uInt16 nPos = mpImplLB->GetEntryList()->GetSelectEntryPos( nIndex );
+ sal_Int32 nPos = mpImplLB->GetEntryList()->GetSelectEntryPos( nIndex );
if ( nPos != LISTBOX_ENTRY_NOTFOUND )
{
if ( nPos < mpImplLB->GetEntryList()->GetMRUCount() )
nPos = mpImplLB->GetEntryList()->FindEntry( mpImplLB->GetEntryList()->GetEntryText( nPos ) );
- nPos = sal::static_int_cast<sal_uInt16>(nPos - mpImplLB->GetEntryList()->GetMRUCount());
+ nPos = sal::static_int_cast<sal_Int32>(nPos - mpImplLB->GetEntryList()->GetMRUCount());
}
return nPos;
}
@@ -1093,7 +1093,7 @@ bool ListBox::IsEntrySelected(const OUString& rStr) const
return IsEntryPosSelected( GetEntryPos( rStr ) );
}
-bool ListBox::IsEntryPosSelected( sal_uInt16 nPos ) const
+bool ListBox::IsEntryPosSelected( sal_Int32 nPos ) const
{
return mpImplLB->GetEntryList()->IsEntryPosSelected( nPos + mpImplLB->GetEntryList()->GetMRUCount() );
}
@@ -1103,11 +1103,11 @@ void ListBox::SelectEntry( const OUString& rStr, bool bSelect )
SelectEntryPos( GetEntryPos( rStr ), bSelect );
}
-void ListBox::SelectEntryPos( sal_uInt16 nPos, bool bSelect )
+void ListBox::SelectEntryPos( sal_Int32 nPos, bool bSelect )
{
if ( nPos < mpImplLB->GetEntryList()->GetEntryCount() )
{
- sal_uInt16 oldSelectCount = GetSelectEntryCount(), newSelectCount = 0, nCurrentPos = mpImplLB->GetCurrentPos();
+ sal_Int32 oldSelectCount = GetSelectEntryCount(), newSelectCount = 0, nCurrentPos = mpImplLB->GetCurrentPos();
mpImplLB->SelectEntry( nPos + mpImplLB->GetEntryList()->GetMRUCount(), bSelect );
newSelectCount = GetSelectEntryCount();
if (oldSelectCount == 0 && newSelectCount > 0)
@@ -1122,34 +1122,34 @@ void ListBox::SelectEntryPos( sal_uInt16 nPos, bool bSelect )
}
}
-void ListBox::SetEntryData( sal_uInt16 nPos, void* pNewData )
+void ListBox::SetEntryData( sal_Int32 nPos, void* pNewData )
{
mpImplLB->SetEntryData( nPos + mpImplLB->GetEntryList()->GetMRUCount(), pNewData );
}
-void* ListBox::GetEntryData( sal_uInt16 nPos ) const
+void* ListBox::GetEntryData( sal_Int32 nPos ) const
{
return mpImplLB->GetEntryList()->GetEntryData( nPos + mpImplLB->GetEntryList()->GetMRUCount() );
}
-void ListBox::SetEntryFlags( sal_uInt16 nPos, long nFlags )
+void ListBox::SetEntryFlags( sal_Int32 nPos, long nFlags )
{
mpImplLB->SetEntryFlags( nPos + mpImplLB->GetEntryList()->GetMRUCount(), nFlags );
}
-long ListBox::GetEntryFlags( sal_uInt16 nPos ) const
+long ListBox::GetEntryFlags( sal_Int32 nPos ) const
{
return mpImplLB->GetEntryList()->GetEntryFlags( nPos + mpImplLB->GetEntryList()->GetMRUCount() );
}
-void ListBox::SetTopEntry( sal_uInt16 nPos )
+void ListBox::SetTopEntry( sal_Int32 nPos )
{
mpImplLB->SetTopEntry( nPos + mpImplLB->GetEntryList()->GetMRUCount() );
}
-sal_uInt16 ListBox::GetTopEntry() const
+sal_Int32 ListBox::GetTopEntry() const
{
- sal_uInt16 nPos = GetEntryCount() ? mpImplLB->GetTopEntry() : LISTBOX_ENTRY_NOTFOUND;
+ sal_Int32 nPos = GetEntryCount() ? mpImplLB->GetTopEntry() : LISTBOX_ENTRY_NOTFOUND;
if ( nPos < mpImplLB->GetEntryList()->GetMRUCount() )
nPos = 0;
return nPos;
@@ -1165,7 +1165,7 @@ bool ListBox::IsInDropDown() const
return mpFloatWin && mpFloatWin->IsInPopupMode();
}
-Rectangle ListBox::GetBoundingRectangle( sal_uInt16 nItem ) const
+Rectangle ListBox::GetBoundingRectangle( sal_Int32 nItem ) const
{
Rectangle aRect = mpImplLB->GetMainWindow()->GetBoundingRectangle( nItem );
Rectangle aOffset = mpImplLB->GetMainWindow()->GetWindowExtentsRelative( (Window*)this );
@@ -1416,12 +1416,12 @@ bool ListBox::IsReadOnly() const
return mpImplLB->IsReadOnly();
}
-void ListBox::SetSeparatorPos( sal_uInt16 n )
+void ListBox::SetSeparatorPos( sal_Int32 n )
{
mpImplLB->SetSeparatorPos( n );
}
-sal_uInt16 ListBox::GetSeparatorPos() const
+sal_Int32 ListBox::GetSeparatorPos() const
{
return mpImplLB->GetSeparatorPos();
}
@@ -1497,7 +1497,7 @@ void ListBox::SetEdgeBlending(bool bNew)
}
}
-sal_uInt16 ListBox::GetMRUCount() const
+sal_Int32 ListBox::GetMRUCount() const
{
return mpImplLB->GetEntryList()->GetMRUCount();
}