1. added SetSelection() to wxItemContainer and removed its declarations

from derived classes
2. made wxItemContainer::Select() non virtual: it simply calls SetSelection()
3. renamed wxListBox::SetSelection(n, select) to DoSetSelection() for all
   ports and defined non virtual SetSelection() overloads in the base class
   to avoid virtual functions hiding


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32004 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2005-02-13 17:08:27 +00:00
parent 1aa3e471fe
commit c6179a847d
32 changed files with 132 additions and 119 deletions

View File

@@ -269,6 +269,15 @@ the new code. This method is only available if wxWidgets was compiled with
future versions. future versions.
\membersection{wxControlWithItems::Select}\label{wxcontrolwithitemsselect}
\func{void}{Select}{\param{int}{ n}}
This is the same as \helpref{SetSelection}{wxcontrolwithitemssetselection} and
exists only because it is slightly more natural for controls which support
multiple selection.
\membersection{wxControlWithItems::SetClientData}\label{wxcontrolwithitemssetclientdata} \membersection{wxControlWithItems::SetClientData}\label{wxcontrolwithitemssetclientdata}
\func{void}{SetClientData}{\param{int}{ n}, \param{void *}{data}} \func{void}{SetClientData}{\param{int}{ n}, \param{void *}{data}}
@@ -310,7 +319,8 @@ pointers had been associated with the control items before.
Sets the selection to the given item \arg{n} or removes the selection entirely Sets the selection to the given item \arg{n} or removes the selection entirely
if \arg{n} $==$ {\tt wxNOT\_FOUND}. if \arg{n} $==$ {\tt wxNOT\_FOUND}.
Note that this does not cause any command events to be emitted. Note that this does not cause any command events to be emitted nor does it
deselect any other items in the controls which support multiple selections.
\wxheading{Parameters} \wxheading{Parameters}

View File

@@ -42,12 +42,6 @@ public:
// all generic methods are in wxControlWithItems // all generic methods are in wxControlWithItems
// single selection logic
virtual void SetSelection(int n) = 0;
// don't override this
virtual void Select(int n) { SetSelection(n); }
// set/get the number of columns in the control (as they're not supported on // set/get the number of columns in the control (as they're not supported on
// most platforms, they do nothing by default) // most platforms, they do nothing by default)
virtual void SetColumns(int WXUNUSED(n) = 1 ) { } virtual void SetColumns(int WXUNUSED(n) = 1 ) { }

View File

@@ -88,7 +88,6 @@ public:
virtual wxString GetString(int) const; virtual wxString GetString(int) const;
virtual void SetString(int, const wxString&); virtual void SetString(int, const wxString&);
virtual int FindString(const wxString&) const; virtual int FindString(const wxString&) const;
virtual void Select(int) {}
virtual int GetSelection() const; virtual int GetSelection() const;
virtual int DoAppend(const wxString&); virtual int DoAppend(const wxString&);
virtual int DoInsert(const wxString&, int); virtual int DoInsert(const wxString&, int);

View File

@@ -82,12 +82,12 @@ protected:
public: public:
// pure virtuals from wxListBoxBase // pure virtuals from wxListBoxBase
virtual bool IsSelected(int n) const; virtual bool IsSelected(int n) const;
virtual void SetSelection(int n, bool select = TRUE);
virtual int GetSelections(wxArrayInt& aSelections) const; virtual int GetSelections(wxArrayInt& aSelections) const;
protected: protected:
virtual void DoInsertItems(const wxArrayString& items, int pos); virtual void DoInsertItems(const wxArrayString& items, int pos);
virtual void DoSetItems(const wxArrayString& items, void **clientData); virtual void DoSetItems(const wxArrayString& items, void **clientData);
virtual void DoSetFirstItem(int n); virtual void DoSetFirstItem(int n);
virtual void DoSetSelection(int n, bool select);
// pure virtuals from wxItemContainer // pure virtuals from wxItemContainer
public: public:
@@ -100,7 +100,6 @@ public:
virtual void SetString(int n, const wxString& s); virtual void SetString(int n, const wxString& s);
virtual int FindString(const wxString& s) const; virtual int FindString(const wxString& s) const;
// selection // selection
virtual void Select(int n);
virtual int GetSelection() const; virtual int GetSelection() const;
protected: protected:
virtual int DoAppend(const wxString& item); virtual int DoAppend(const wxString& item);

View File

@@ -76,7 +76,7 @@ public:
// selection // selection
// --------- // ---------
virtual void Select(int n) = 0; virtual void SetSelection(int n) = 0;
virtual int GetSelection() const = 0; virtual int GetSelection() const = 0;
// set selection to the specified string, return false if not found // set selection to the specified string, return false if not found
@@ -85,6 +85,10 @@ public:
// return the selected string or empty string if none // return the selected string or empty string if none
wxString GetStringSelection() const; wxString GetStringSelection() const;
// this is the same as SetSelection( for single-selection controls but
// reads better for multi-selection ones
void Select(int n) { SetSelection(n); }
// misc // misc
// ---- // ----
@@ -172,6 +176,20 @@ private:
DECLARE_NO_COPY_CLASS(wxControlWithItems) DECLARE_NO_COPY_CLASS(wxControlWithItems)
}; };
// ----------------------------------------------------------------------------
// inline functions
// ----------------------------------------------------------------------------
#if WXWIN_COMPATIBILITY_2_2
inline int wxItemContainer::Number() const
{
return GetCount();
}
#endif // WXWIN_COMPATIBILITY_2_2
#endif // wxUSE_CONTROLS #endif // wxUSE_CONTROLS
#endif // _WX_CTRLSUB_H_BASE_ #endif // _WX_CTRLSUB_H_BASE_

View File

@@ -95,7 +95,6 @@ public:
int GetCount() const; int GetCount() const;
int Number() const { return GetCount(); } int Number() const { return GetCount(); }
void SetSelection( int n ); void SetSelection( int n );
void Select( int n ) { return SetSelection( n ); }
void SetString(int n, const wxString &text); void SetString(int n, const wxString &text);
wxString GetValue() const; wxString GetValue() const;

View File

@@ -81,7 +81,7 @@ public:
virtual int FindString(const wxString& s) const; virtual int FindString(const wxString& s) const;
virtual bool IsSelected(int n) const; virtual bool IsSelected(int n) const;
virtual void SetSelection(int n, bool select = TRUE); virtual void DoSetSelection(int n, bool select);
virtual int GetSelection() const; virtual int GetSelection() const;
virtual int GetSelections(wxArrayInt& aSelections) const; virtual int GetSelections(wxArrayInt& aSelections) const;

View File

@@ -95,7 +95,6 @@ public:
int GetCount() const; int GetCount() const;
int Number() const { return GetCount(); } int Number() const { return GetCount(); }
void SetSelection( int n ); void SetSelection( int n );
void Select( int n ) { return SetSelection( n ); }
void SetString(int n, const wxString &text); void SetString(int n, const wxString &text);
wxString GetValue() const; wxString GetValue() const;

View File

@@ -81,7 +81,7 @@ public:
virtual int FindString(const wxString& s) const; virtual int FindString(const wxString& s) const;
virtual bool IsSelected(int n) const; virtual bool IsSelected(int n) const;
virtual void SetSelection(int n, bool select = TRUE); virtual void DoSetSelection(int n, bool select);
virtual int GetSelection() const; virtual int GetSelection() const;
virtual int GetSelections(wxArrayInt& aSelections) const; virtual int GetSelections(wxArrayInt& aSelections) const;

View File

@@ -65,12 +65,16 @@ public:
// multiple selection logic // multiple selection logic
virtual bool IsSelected(int n) const = 0; virtual bool IsSelected(int n) const = 0;
virtual void SetSelection(int n, bool select = true) = 0; virtual void SetSelection(int n) { DoSetSelection(n, true); }
virtual void Select(int n) { SetSelection(n, true); } void SetSelection(int n, bool select) { DoSetSelection(n, select); }
void Deselect(int n) { SetSelection(n, false); } void Deselect(int n) { DoSetSelection(n, false); }
void DeselectAll(int itemToLeaveSelected = -1); void DeselectAll(int itemToLeaveSelected = -1);
virtual bool SetStringSelection(const wxString& s, bool select = true); virtual bool SetStringSelection(const wxString& s, bool select);
virtual bool SetStringSelection(const wxString& s)
{
return SetStringSelection(s, true);
}
// works for single as well as multiple selection listboxes (unlike // works for single as well as multiple selection listboxes (unlike
// GetSelection which only works for listboxes with single selection) // GetSelection which only works for listboxes with single selection)
@@ -119,6 +123,9 @@ protected:
virtual void DoSetFirstItem(int n) = 0; virtual void DoSetFirstItem(int n) = 0;
virtual void DoSetSelection(int n, bool select) = 0;
DECLARE_NO_COPY_CLASS(wxListBoxBase) DECLARE_NO_COPY_CLASS(wxListBoxBase)
}; };

View File

@@ -92,7 +92,6 @@ class WXDLLEXPORT wxComboBox : public wxControl, public wxComboBoxBase
virtual int GetSelection() const ; virtual int GetSelection() const ;
virtual void SetSelection(int n); virtual void SetSelection(int n);
virtual void Select(int n) { SetSelection(n) ; }
virtual int FindString(const wxString& s) const; virtual int FindString(const wxString& s) const;
virtual wxString GetString(int n) const ; virtual wxString GetString(int n) const ;
virtual wxString GetStringSelection() const ; virtual wxString GetStringSelection() const ;

View File

@@ -97,7 +97,7 @@ public:
virtual int FindString(const wxString& s) const; virtual int FindString(const wxString& s) const;
virtual bool IsSelected(int n) const; virtual bool IsSelected(int n) const;
virtual void SetSelection(int n, bool select = TRUE); virtual void DoSetSelection(int n, bool select);
virtual int GetSelection() const; virtual int GetSelection() const;
virtual int GetSelections(wxArrayInt& aSelections) const; virtual int GetSelections(wxArrayInt& aSelections) const;

View File

@@ -87,7 +87,6 @@ class WXDLLEXPORT wxComboBox : public wxControl, public wxComboBoxBase
virtual int GetSelection() const ; virtual int GetSelection() const ;
virtual void SetSelection(int n); virtual void SetSelection(int n);
virtual void Select(int n) { SetSelection(n) ; }
virtual int FindString(const wxString& s) const; virtual int FindString(const wxString& s) const;
virtual wxString GetString(int n) const ; virtual wxString GetString(int n) const ;
virtual wxString GetStringSelection() const ; virtual wxString GetStringSelection() const ;

View File

@@ -97,7 +97,7 @@ public:
virtual int FindString(const wxString& s) const; virtual int FindString(const wxString& s) const;
virtual bool IsSelected(int n) const; virtual bool IsSelected(int n) const;
virtual void SetSelection(int n, bool select = TRUE); virtual void DoSetSelection(int n, bool select);
virtual int GetSelection() const; virtual int GetSelection() const;
virtual int GetSelections(wxArrayInt& aSelections) const; virtual int GetSelections(wxArrayInt& aSelections) const;

View File

@@ -84,7 +84,7 @@ public:
virtual wxString GetString(int n) const; virtual wxString GetString(int n) const;
// implementation of wxListBoxbase // implementation of wxListBoxbase
virtual void SetSelection(int n, bool select = true); virtual void DoSetSelection(int n, bool select);
virtual void DoInsertItems(const wxArrayString& items, int pos); virtual void DoInsertItems(const wxArrayString& items, int pos);
virtual void DoSetItems(const wxArrayString& items, void **clientData); virtual void DoSetItems(const wxArrayString& items, void **clientData);
virtual void DoSetFirstItem(int n); virtual void DoSetFirstItem(int n);

View File

@@ -91,7 +91,7 @@ public:
virtual int FindString(const wxString& s) const; virtual int FindString(const wxString& s) const;
virtual bool IsSelected(int n) const; virtual bool IsSelected(int n) const;
virtual void SetSelection(int n, bool select = true); virtual void DoSetSelection(int n, bool select);
virtual int GetSelection() const; virtual int GetSelection() const;
virtual int GetSelections(wxArrayInt& aSelections) const; virtual int GetSelections(wxArrayInt& aSelections) const;

View File

@@ -114,8 +114,8 @@ public:
virtual int FindString(const wxString& rsString) const; virtual int FindString(const wxString& rsString) const;
virtual bool IsSelected(int n) const; virtual bool IsSelected(int n) const;
virtual void SetSelection( int n virtual void DoSetSelection( int n
,bool bSelect = TRUE ,bool bSelect
); );
virtual int GetSelection(void) const; virtual int GetSelection(void) const;
virtual int GetSelections(wxArrayInt& raSelections) const; virtual int GetSelections(wxArrayInt& raSelections) const;

View File

@@ -91,7 +91,7 @@ public:
virtual int FindString(const wxString& s) const; virtual int FindString(const wxString& s) const;
virtual bool IsSelected(int n) const; virtual bool IsSelected(int n) const;
virtual void SetSelection(int n, bool select = TRUE); virtual void DoSetSelection(int n, bool select);
virtual int GetSelection() const; virtual int GetSelection() const;
virtual int GetSelections(wxArrayInt& aSelections) const; virtual int GetSelections(wxArrayInt& aSelections) const;

View File

@@ -301,9 +301,8 @@ public:
virtual wxString GetString(int n) const; virtual wxString GetString(int n) const;
virtual void SetString(int n, const wxString& s); virtual void SetString(int n, const wxString& s);
virtual int FindString(const wxString& s) const; virtual int FindString(const wxString& s) const;
virtual void Select(int n); virtual void SetSelection(int n);
virtual int GetSelection() const; virtual int GetSelection() const;
void SetSelection(int n) { Select(n); }
wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST

View File

@@ -112,7 +112,7 @@ public:
virtual bool IsSelected(int n) const virtual bool IsSelected(int n) const
{ return m_selections.Index(n) != wxNOT_FOUND; } { return m_selections.Index(n) != wxNOT_FOUND; }
virtual void SetSelection(int n, bool select = true); virtual void DoSetSelection(int n, bool select);
virtual int GetSelection() const; virtual int GetSelection() const;
virtual int GetSelections(wxArrayInt& aSelections) const; virtual int GetSelections(wxArrayInt& aSelections) const;

View File

@@ -117,7 +117,7 @@ bool wxListBox::IsSelected(int n) const
return [GetNSTableView() isRowSelected: n]; return [GetNSTableView() isRowSelected: n];
} }
void wxListBox::SetSelection(int n, bool select) void wxListBox::DoSetSelection(int n, bool select)
{ {
if(select) if(select)
[GetNSTableView() selectRow: n byExtendingSelection:NO]; [GetNSTableView() selectRow: n byExtendingSelection:NO];
@@ -197,7 +197,7 @@ int wxListBox::FindString(const wxString& s) const
} }
// selection // selection
void wxListBox::Select(int n) void wxListBox::SetSelection(int n)
{ {
} }

View File

@@ -64,7 +64,7 @@ bool wxItemContainer::SetStringSelection(const wxString& s)
if ( sel == wxNOT_FOUND ) if ( sel == wxNOT_FOUND )
return false; return false;
Select(sel); SetSelection(sel);
return true; return true;
} }
@@ -167,13 +167,4 @@ wxControlWithItems::~wxControlWithItems()
// this destructor is required for Darwin // this destructor is required for Darwin
} }
#if WXWIN_COMPATIBILITY_2_2
int wxItemContainer::Number() const
{
return GetCount();
}
#endif // WXWIN_COMPATIBILITY_2_2
#endif // wxUSE_CONTROLS #endif // wxUSE_CONTROLS

View File

@@ -1006,7 +1006,7 @@ bool wxListBox::IsSelected( int n ) const
return (GTK_WIDGET(target->data)->state == GTK_STATE_SELECTED) ; return (GTK_WIDGET(target->data)->state == GTK_STATE_SELECTED) ;
} }
void wxListBox::SetSelection( int n, bool select ) void wxListBox::DoSetSelection( int n, bool select )
{ {
wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );

View File

@@ -1006,7 +1006,7 @@ bool wxListBox::IsSelected( int n ) const
return (GTK_WIDGET(target->data)->state == GTK_STATE_SELECTED) ; return (GTK_WIDGET(target->data)->state == GTK_STATE_SELECTED) ;
} }
void wxListBox::SetSelection( int n, bool select ) void wxListBox::DoSetSelection( int n, bool select )
{ {
wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );

View File

@@ -42,15 +42,15 @@ const short kTextColumnId = 1024 ;
// new databrowserbased version // new databrowserbased version
// because of the limited insert // because of the limited insert
// functionality of DataBrowser, // functionality of DataBrowser,
// we just introduce id s corresponding // we just introduce id s corresponding
// to the line number // to the line number
#if TARGET_API_MAC_OSX #if TARGET_API_MAC_OSX
static pascal void DataBrowserItemNotificationProc(ControlRef browser, DataBrowserItemID itemID, static pascal void DataBrowserItemNotificationProc(ControlRef browser, DataBrowserItemID itemID,
DataBrowserItemNotification message, DataBrowserItemDataRef itemData) DataBrowserItemNotification message, DataBrowserItemDataRef itemData)
#else #else
static pascal void DataBrowserItemNotificationProc(ControlRef browser, DataBrowserItemID itemID, static pascal void DataBrowserItemNotificationProc(ControlRef browser, DataBrowserItemID itemID,
DataBrowserItemNotification message) DataBrowserItemNotification message)
#endif #endif
{ {
@@ -92,25 +92,25 @@ static pascal void DataBrowserItemNotificationProc(ControlRef browser, DataBrow
event.SetExtraLong( list->HasMultipleSelection() ? message == kDataBrowserItemSelected : TRUE ); event.SetExtraLong( list->HasMultipleSelection() ? message == kDataBrowserItemSelected : TRUE );
wxPostEvent( list->GetEventHandler() , event ) ; wxPostEvent( list->GetEventHandler() , event ) ;
// direct notification is not always having the listbox GetSelection() having in synch with event // direct notification is not always having the listbox GetSelection() having in synch with event
// list->GetEventHandler()->ProcessEvent(event) ; // list->GetEventHandler()->ProcessEvent(event) ;
} }
} }
} }
} }
static pascal OSStatus ListBoxGetSetItemData(ControlRef browser, static pascal OSStatus ListBoxGetSetItemData(ControlRef browser,
DataBrowserItemID itemID, DataBrowserPropertyID property, DataBrowserItemID itemID, DataBrowserPropertyID property,
DataBrowserItemDataRef itemData, Boolean changeValue) DataBrowserItemDataRef itemData, Boolean changeValue)
{ {
OSStatus err = errDataBrowserPropertyNotSupported; OSStatus err = errDataBrowserPropertyNotSupported;
if ( ! changeValue ) if ( ! changeValue )
{ {
switch (property) switch (property)
{ {
case kTextColumnId: case kTextColumnId:
{ {
long ref = GetControlReference( browser ) ; long ref = GetControlReference( browser ) ;
if ( ref ) if ( ref )
{ {
@@ -123,15 +123,15 @@ static pascal OSStatus ListBoxGetSetItemData(ControlRef browser,
err = noErr ; err = noErr ;
} }
} }
} }
break; break;
default: default:
break; break;
} }
} }
return err; return err;
} }
@@ -171,7 +171,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
wxASSERT_MSG( !(style & wxLB_MULTIPLE) || !(style & wxLB_EXTENDED), wxASSERT_MSG( !(style & wxLB_MULTIPLE) || !(style & wxLB_EXTENDED),
_T("only one of listbox selection modes can be specified") ); _T("only one of listbox selection modes can be specified") );
if ( !wxListBoxBase::Create(parent, id, pos, size, style & ~(wxHSCROLL|wxVSCROLL), validator, name) ) if ( !wxListBoxBase::Create(parent, id, pos, size, style & ~(wxHSCROLL|wxVSCROLL), validator, name) )
return false; return false;
@@ -196,21 +196,21 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
{ {
options += kDataBrowserSelectOnlyOne ; options += kDataBrowserSelectOnlyOne ;
} }
verify_noerr(m_peer->SetSelectionFlags( options ) ); verify_noerr(m_peer->SetSelectionFlags( options ) );
DataBrowserListViewColumnDesc columnDesc ; DataBrowserListViewColumnDesc columnDesc ;
columnDesc.headerBtnDesc.titleOffset = 0; columnDesc.headerBtnDesc.titleOffset = 0;
columnDesc.headerBtnDesc.version = kDataBrowserListViewLatestHeaderDesc; columnDesc.headerBtnDesc.version = kDataBrowserListViewLatestHeaderDesc;
columnDesc.headerBtnDesc.btnFontStyle.flags = columnDesc.headerBtnDesc.btnFontStyle.flags =
kControlUseFontMask | kControlUseJustMask; kControlUseFontMask | kControlUseJustMask;
columnDesc.headerBtnDesc.btnContentInfo.contentType = kControlNoContent; columnDesc.headerBtnDesc.btnContentInfo.contentType = kControlNoContent;
columnDesc.propertyDesc.propertyType = kDataBrowserTextType; columnDesc.propertyDesc.propertyType = kDataBrowserTextType;
columnDesc.headerBtnDesc.btnFontStyle.just = teFlushDefault; columnDesc.headerBtnDesc.btnFontStyle.just = teFlushDefault;
columnDesc.headerBtnDesc.minimumWidth = 0; columnDesc.headerBtnDesc.minimumWidth = 0;
columnDesc.headerBtnDesc.maximumWidth = 10000; columnDesc.headerBtnDesc.maximumWidth = 10000;
columnDesc.headerBtnDesc.btnFontStyle.font = kControlFontViewSystemFont; columnDesc.headerBtnDesc.btnFontStyle.font = kControlFontViewSystemFont;
columnDesc.headerBtnDesc.btnFontStyle.style = normal; columnDesc.headerBtnDesc.btnFontStyle.style = normal;
columnDesc.headerBtnDesc.titleString = NULL ; // CFSTR( "" ); columnDesc.headerBtnDesc.titleString = NULL ; // CFSTR( "" );
@@ -219,25 +219,25 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
columnDesc.propertyDesc.propertyType = kDataBrowserTextType; columnDesc.propertyDesc.propertyType = kDataBrowserTextType;
columnDesc.propertyDesc.propertyFlags = columnDesc.propertyDesc.propertyFlags =
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2 #if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2
kDataBrowserListViewTypeSelectColumn | kDataBrowserListViewTypeSelectColumn |
#endif #endif
kDataBrowserTableViewSelectionColumn ; kDataBrowserTableViewSelectionColumn ;
verify_noerr(m_peer->AddListViewColumn( &columnDesc, kDataBrowserListViewAppendColumn) ) ; verify_noerr(m_peer->AddListViewColumn( &columnDesc, kDataBrowserListViewAppendColumn) ) ;
verify_noerr(m_peer->AutoSizeListViewColumns() ) ; verify_noerr(m_peer->AutoSizeListViewColumns() ) ;
verify_noerr(m_peer->SetHasScrollBars(false , true ) ) ; verify_noerr(m_peer->SetHasScrollBars(false , true ) ) ;
verify_noerr(m_peer->SetTableViewHiliteStyle(kDataBrowserTableViewFillHilite ) ) ; verify_noerr(m_peer->SetTableViewHiliteStyle(kDataBrowserTableViewFillHilite ) ) ;
verify_noerr(m_peer->SetListViewHeaderBtnHeight( 0 ) ) ; verify_noerr(m_peer->SetListViewHeaderBtnHeight( 0 ) ) ;
DataBrowserCallbacks callbacks ; DataBrowserCallbacks callbacks ;
callbacks.version = kDataBrowserLatestCallbacks; callbacks.version = kDataBrowserLatestCallbacks;
InitDataBrowserCallbacks(&callbacks); InitDataBrowserCallbacks(&callbacks);
callbacks.u.v1.itemDataCallback = callbacks.u.v1.itemDataCallback =
NewDataBrowserItemDataUPP(ListBoxGetSetItemData); NewDataBrowserItemDataUPP(ListBoxGetSetItemData);
callbacks.u.v1.itemNotificationCallback = callbacks.u.v1.itemNotificationCallback =
#if TARGET_API_MAC_OSX #if TARGET_API_MAC_OSX
(DataBrowserItemNotificationUPP) NewDataBrowserItemNotificationWithItemUPP(DataBrowserItemNotificationProc) ; (DataBrowserItemNotificationUPP) NewDataBrowserItemNotificationWithItemUPP(DataBrowserItemNotificationProc) ;
@@ -259,7 +259,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
} }
SetBestSize(size); // Needed because it is a wxControlWithItems SetBestSize(size); // Needed because it is a wxControlWithItems
return TRUE; return TRUE;
} }
@@ -349,7 +349,7 @@ void wxListBox::DoSetItems(const wxArrayString& choices, void** clientData)
{ {
Clear() ; Clear() ;
int n = choices.GetCount(); int n = choices.GetCount();
for( int i = 0 ; i < n ; ++i ) for( int i = 0 ; i < n ; ++i )
{ {
if ( clientData ) if ( clientData )
@@ -364,7 +364,7 @@ void wxListBox::DoSetItems(const wxArrayString& choices, void** clientData)
else else
Append( choices[i] ) ; Append( choices[i] ) ;
} }
#if wxUSE_OWNER_DRAWN #if wxUSE_OWNER_DRAWN
if ( m_windowStyle & wxLB_OWNERDRAW ) { if ( m_windowStyle & wxLB_OWNERDRAW ) {
// first delete old items // first delete old items
@@ -374,7 +374,7 @@ void wxListBox::DoSetItems(const wxArrayString& choices, void** clientData)
m_aItems[ui] = NULL; m_aItems[ui] = NULL;
} }
m_aItems.Empty(); m_aItems.Empty();
// then create new ones // then create new ones
for ( ui = 0; ui < (size_t)m_noItems; ui++ ) { for ( ui = 0; ui < (size_t)m_noItems; ui++ ) {
wxOwnerDrawn *pNewItem = CreateItem(ui); wxOwnerDrawn *pNewItem = CreateItem(ui);
@@ -387,14 +387,14 @@ void wxListBox::DoSetItems(const wxArrayString& choices, void** clientData)
int wxListBox::FindString(const wxString& s) const int wxListBox::FindString(const wxString& s) const
{ {
if ( s.Right(1) == wxT("*") ) if ( s.Right(1) == wxT("*") )
{ {
wxString search = s.Left( s.Length() - 1 ) ; wxString search = s.Left( s.Length() - 1 ) ;
int len = search.Length() ; int len = search.Length() ;
Str255 s1 , s2 ; Str255 s1 , s2 ;
wxMacStringToPascal( search , s2 ) ; wxMacStringToPascal( search , s2 ) ;
for ( int i = 0 ; i < m_noItems ; ++ i ) for ( int i = 0 ; i < m_noItems ; ++ i )
{ {
wxMacStringToPascal( m_stringArray[i].Left( len ) , s1 ) ; wxMacStringToPascal( m_stringArray[i].Left( len ) , s1 ) ;
@@ -412,14 +412,14 @@ int wxListBox::FindString(const wxString& s) const
return i ; return i ;
} }
} }
} }
else else
{ {
Str255 s1 , s2 ; Str255 s1 , s2 ;
wxMacStringToPascal( s , s2 ) ; wxMacStringToPascal( s , s2 ) ;
for ( int i = 0 ; i < m_noItems ; ++ i ) for ( int i = 0 ; i < m_noItems ; ++ i )
{ {
wxMacStringToPascal( m_stringArray[i] , s1 ) ; wxMacStringToPascal( m_stringArray[i] , s1 ) ;
@@ -440,11 +440,11 @@ void wxListBox::Clear()
MacClear() ; MacClear() ;
} }
void wxListBox::SetSelection(int N, bool select) void wxListBox::DoSetSelection(int N, bool select)
{ {
wxCHECK_RET( N == wxNOT_FOUND || (N >= 0 && N < m_noItems) , wxCHECK_RET( N == wxNOT_FOUND || (N >= 0 && N < m_noItems) ,
wxT("invalid index in wxListBox::SetSelection") ); wxT("invalid index in wxListBox::SetSelection") );
if ( N == wxNOT_FOUND ) if ( N == wxNOT_FOUND )
MacDeselectAll() ; MacDeselectAll() ;
else else
@@ -455,7 +455,7 @@ bool wxListBox::IsSelected(int N) const
{ {
wxCHECK_MSG( N >= 0 && N < m_noItems, FALSE, wxCHECK_MSG( N >= 0 && N < m_noItems, FALSE,
wxT("invalid index in wxListBox::Selected") ); wxT("invalid index in wxListBox::Selected") );
return MacIsSelected( N ) ; return MacIsSelected( N ) ;
} }
@@ -463,7 +463,7 @@ void *wxListBox::DoGetItemClientData(int N) const
{ {
wxCHECK_MSG( N >= 0 && N < m_noItems, NULL, wxCHECK_MSG( N >= 0 && N < m_noItems, NULL,
wxT("invalid index in wxListBox::GetClientData")); wxT("invalid index in wxListBox::GetClientData"));
return (void *)m_dataArray[N]; return (void *)m_dataArray[N];
} }
@@ -476,7 +476,7 @@ void wxListBox::DoSetItemClientData(int N, void *Client_data)
{ {
wxCHECK_RET( N >= 0 && N < m_noItems, wxCHECK_RET( N >= 0 && N < m_noItems,
wxT("invalid index in wxListBox::SetClientData") ); wxT("invalid index in wxListBox::SetClientData") );
#if wxUSE_OWNER_DRAWN #if wxUSE_OWNER_DRAWN
if ( m_windowStyle & wxLB_OWNERDRAW ) if ( m_windowStyle & wxLB_OWNERDRAW )
{ {
@@ -486,7 +486,7 @@ void wxListBox::DoSetItemClientData(int N, void *Client_data)
} }
#endif // wxUSE_OWNER_DRAWN #endif // wxUSE_OWNER_DRAWN
wxASSERT_MSG( m_dataArray.GetCount() >= (size_t) N , wxT("invalid client_data array") ) ; wxASSERT_MSG( m_dataArray.GetCount() >= (size_t) N , wxT("invalid client_data array") ) ;
if ( m_dataArray.GetCount() > (size_t) N ) if ( m_dataArray.GetCount() > (size_t) N )
{ {
m_dataArray[N] = (char*) Client_data ; m_dataArray[N] = (char*) Client_data ;
@@ -524,11 +524,11 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos)
{ {
wxCHECK_RET( pos >= 0 && pos <= m_noItems, wxCHECK_RET( pos >= 0 && pos <= m_noItems,
wxT("invalid index in wxListBox::InsertItems") ); wxT("invalid index in wxListBox::InsertItems") );
InvalidateBestSize(); InvalidateBestSize();
int nItems = items.GetCount(); int nItems = items.GetCount();
for ( int i = 0 ; i < nItems ; i++ ) for ( int i = 0 ; i < nItems ; i++ )
{ {
m_stringArray.Insert( items[i] , pos + i ) ; m_stringArray.Insert( items[i] , pos + i ) ;
@@ -551,8 +551,8 @@ wxSize wxListBox::DoGetBestSize() const
int wLine; int wLine;
{ {
wxMacPortStateHelper st( UMAGetWindowPort( (WindowRef) MacGetTopLevelWindowRef() ) ) ; wxMacPortStateHelper st( UMAGetWindowPort( (WindowRef) MacGetTopLevelWindowRef() ) ) ;
if ( m_font.Ok() ) if ( m_font.Ok() )
{ {
::TextFont( m_font.MacGetFontNum() ) ; ::TextFont( m_font.MacGetFontNum() ) ;
@@ -565,7 +565,7 @@ wxSize wxListBox::DoGetBestSize() const
::TextSize( 9 ); ::TextSize( 9 );
::TextFace( 0 ) ; ::TextFace( 0 ) ;
} }
// Find the widest line // Find the widest line
for(int i = 0; i < GetCount(); i++) { for(int i = 0; i < GetCount(); i++) {
wxString str(GetString(i)); wxString str(GetString(i));
@@ -584,15 +584,15 @@ wxSize wxListBox::DoGetBestSize() const
#endif #endif
lbWidth = wxMax(lbWidth, wLine); lbWidth = wxMax(lbWidth, wLine);
} }
// Add room for the scrollbar // Add room for the scrollbar
lbWidth += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X); lbWidth += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X);
// And just a bit more // And just a bit more
int cy = 12 ; int cy = 12 ;
int cx = ::TextWidth( "X" , 0 , 1 ) ; int cx = ::TextWidth( "X" , 0 , 1 ) ;
lbWidth += cx ; lbWidth += cx ;
// don't make the listbox too tall (limit height to around 10 items) but don't // don't make the listbox too tall (limit height to around 10 items) but don't
// make it too small neither // make it too small neither
lbHeight = (cy+4) * wxMin(wxMax(GetCount(), 3), 10); lbHeight = (cy+4) * wxMin(wxMax(GetCount(), 3), 10);
@@ -666,7 +666,7 @@ void wxListBox::MacDelete( int n )
else if ( current > n ) else if ( current > n )
{ {
// something behind the deleted item was selected -> move up // something behind the deleted item was selected -> move up
MacSetSelection( current - 1 , true ) ; MacSetSelection( current - 1 , true ) ;
MacSetSelection( current , false ) ; MacSetSelection( current , false ) ;
} }
} }
@@ -687,7 +687,7 @@ void wxListBox::MacInsert( int n , const wxString& text)
int current = selectionBefore[i] ; int current = selectionBefore[i] ;
if ( current >= n ) if ( current >= n )
{ {
MacSetSelection( current + 1 , true ) ; MacSetSelection( current + 1 , true ) ;
MacSetSelection( current , false ) ; MacSetSelection( current , false ) ;
} }
} }
@@ -708,7 +708,7 @@ void wxListBox::MacClear()
verify_noerr( m_peer->RemoveItems( kDataBrowserNoItem , 0 , NULL , kDataBrowserItemNoProperty ) ) ; verify_noerr( m_peer->RemoveItems( kDataBrowserNoItem , 0 , NULL , kDataBrowserItemNoProperty ) ) ;
} }
void wxListBox::MacDeselectAll() void wxListBox::MacDeselectAll()
{ {
bool former = MacSuppressSelection( true ) ; bool former = MacSuppressSelection( true ) ;
verify_noerr(m_peer->SetSelectedItems( 0 , NULL , kDataBrowserItemsRemove ) ) ; verify_noerr(m_peer->SetSelectedItems( 0 , NULL , kDataBrowserItemsRemove ) ) ;
@@ -731,7 +731,7 @@ void wxListBox::MacSetSelection( int n , bool select )
MacSuppressSelection( former ) ; MacSuppressSelection( former ) ;
} }
bool wxListBox::MacSuppressSelection( bool suppress ) bool wxListBox::MacSuppressSelection( bool suppress )
{ {
bool former = m_suppressSelection ; bool former = m_suppressSelection ;
m_suppressSelection = suppress ; m_suppressSelection = suppress ;
@@ -758,9 +758,9 @@ int wxListBox::MacGetSelection() const
int wxListBox::MacGetSelections( wxArrayInt& aSelections ) const int wxListBox::MacGetSelections( wxArrayInt& aSelections ) const
{ {
int no_sel = 0 ; int no_sel = 0 ;
aSelections.Empty(); aSelections.Empty();
UInt32 first , last ; UInt32 first , last ;
m_peer->GetSelectionAnchor( &first , &last ) ; m_peer->GetSelectionAnchor( &first , &last ) ;
if ( first != kDataBrowserNoItem ) if ( first != kDataBrowserNoItem )
@@ -797,13 +797,13 @@ void wxListBox::OnChar(wxKeyEvent& event)
// todo trigger proper events here // todo trigger proper events here
event.Skip() ; event.Skip() ;
return ; return ;
if ( event.GetKeyCode() == WXK_RETURN || event.GetKeyCode() == WXK_NUMPAD_ENTER) if ( event.GetKeyCode() == WXK_RETURN || event.GetKeyCode() == WXK_NUMPAD_ENTER)
{ {
wxWindow* parent = GetParent() ; wxWindow* parent = GetParent() ;
while( parent && !parent->IsTopLevel() && parent->GetDefaultItem() == NULL ) while( parent && !parent->IsTopLevel() && parent->GetDefaultItem() == NULL )
parent = parent->GetParent() ; parent = parent->GetParent() ;
if ( parent && parent->GetDefaultItem() ) if ( parent && parent->GetDefaultItem() )
{ {
wxButton *def = wxDynamicCast(parent->GetDefaultItem(), wxButton *def = wxDynamicCast(parent->GetDefaultItem(),
@@ -845,10 +845,10 @@ void wxListBox::OnChar(wxKeyEvent& event)
{ {
// perform the default key handling first // perform the default key handling first
wxControl::OnKeyDown( event ) ; wxControl::OnKeyDown( event ) ;
wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, m_windowId); wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, m_windowId);
event.SetEventObject( this ); event.SetEventObject( this );
wxArrayInt aSelections; wxArrayInt aSelections;
int n, count = GetSelections(aSelections); int n, count = GetSelections(aSelections);
if ( count > 0 ) if ( count > 0 )
@@ -864,9 +864,9 @@ void wxListBox::OnChar(wxKeyEvent& event)
{ {
n = -1; n = -1;
} }
event.SetInt(n); event.SetInt(n);
GetEventHandler()->ProcessEvent(event); GetEventHandler()->ProcessEvent(event);
} }
else else
@@ -885,20 +885,20 @@ void wxListBox::OnChar(wxKeyEvent& event)
SetSelection(line) ; SetSelection(line) ;
wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, m_windowId); wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, m_windowId);
event.SetEventObject( this ); event.SetEventObject( this );
if ( HasClientObjectData() ) if ( HasClientObjectData() )
event.SetClientObject( GetClientObject( line ) ); event.SetClientObject( GetClientObject( line ) );
else if ( HasClientUntypedData() ) else if ( HasClientUntypedData() )
event.SetClientData( GetClientData(line) ); event.SetClientData( GetClientData(line) );
event.SetString( GetString(line) ); event.SetString( GetString(line) );
event.SetInt(line); event.SetInt(line);
GetEventHandler()->ProcessEvent(event); GetEventHandler()->ProcessEvent(event);
} }
} }
} }
} }
#endif #endif // !TARGET_API_MAC_OSX

View File

@@ -515,7 +515,7 @@ void wxListBox::Clear()
MacClear() ; MacClear() ;
} }
void wxListBox::SetSelection(int N, bool select) void wxListBox::DoSetSelection(int N, bool select)
{ {
wxCHECK_RET( N >= 0 && N < m_noItems, wxCHECK_RET( N >= 0 && N < m_noItems,
wxT("invalid index in wxListBox::SetSelection") ); wxT("invalid index in wxListBox::SetSelection") );

View File

@@ -337,7 +337,7 @@ void wxListBox::Clear()
m_noItems = 0; m_noItems = 0;
} }
void wxListBox::SetSelection(int N, bool select) void wxListBox::DoSetSelection(int N, bool select)
{ {
m_inSetValue = true; m_inSetValue = true;
if (select) if (select)

View File

@@ -390,7 +390,7 @@ void wxListBox::Free()
} }
} }
void wxListBox::SetSelection(int N, bool select) void wxListBox::DoSetSelection(int N, bool select)
{ {
wxCHECK_RET( N == wxNOT_FOUND || wxCHECK_RET( N == wxNOT_FOUND ||
(N >= 0 && N < m_noItems), (N >= 0 && N < m_noItems),

View File

@@ -415,7 +415,7 @@ void wxListBox::Clear()
m_nNumItems = 0; m_nNumItems = 0;
} // end of wxListBox::Clear } // end of wxListBox::Clear
void wxListBox::SetSelection( void wxListBox::DoSetSelection(
int N int N
, bool bSelect , bool bSelect
) )

View File

@@ -207,7 +207,7 @@ void wxListBox::Free()
{ {
} }
void wxListBox::SetSelection(int N, bool select) void wxListBox::DoSetSelection(int N, bool select)
{ {
} }

View File

@@ -832,7 +832,7 @@ int wxComboBox::FindString(const wxString& s) const
return GetLBox()->FindString(s); return GetLBox()->FindString(s);
} }
void wxComboBox::Select(int n) void wxComboBox::SetSelection(int n)
{ {
wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid index in wxComboBox::Select") ); wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid index in wxComboBox::Select") );

View File

@@ -421,7 +421,7 @@ wxClientData* wxListBox::DoGetItemClientObject(int n) const
// selection // selection
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
void wxListBox::SetSelection(int n, bool select) void wxListBox::DoSetSelection(int n, bool select)
{ {
if ( select ) if ( select )
{ {