X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8ee9d6182c9b7774477e97f4326766ac05cc70c2..68698f0308f5c46966b7de12b34f68ec23dd3ec8:/src/common/lboxcmn.cpp diff --git a/src/common/lboxcmn.cpp b/src/common/lboxcmn.cpp index 642b324e9b..429aa9e5ff 100644 --- a/src/common/lboxcmn.cpp +++ b/src/common/lboxcmn.cpp @@ -28,14 +28,22 @@ #pragma hdrstop #endif +#if wxUSE_LISTBOX + #ifndef WX_PRECOMP #include "wx/listbox.h" + #include "wx/dynarray.h" #endif // ============================================================================ // implementation // ============================================================================ +wxListBoxBase::~wxListBoxBase() +{ + // this destructor is required for Darwin +} + // ---------------------------------------------------------------------------- // adding items // ---------------------------------------------------------------------------- @@ -78,6 +86,31 @@ bool wxListBoxBase::SetStringSelection(const wxString& s, bool select) return TRUE; } +void wxListBoxBase::DeselectAll(int itemToLeaveSelected) +{ + if ( HasMultipleSelection() ) + { + wxArrayInt selections; + GetSelections(selections); + + size_t count = selections.GetCount(); + for ( size_t n = 0; n < count; n++ ) + { + int item = selections[n]; + if ( item != itemToLeaveSelected ) + Deselect(item); + } + } + else // single selection + { + int sel = GetSelection(); + if ( sel != -1 && sel != itemToLeaveSelected ) + { + Deselect(sel); + } + } +} + // ---------------------------------------------------------------------------- // misc // ---------------------------------------------------------------------------- @@ -88,6 +121,10 @@ void wxListBoxBase::Command(wxCommandEvent& event) (void)ProcessEvent(event); } +// ---------------------------------------------------------------------------- +// SetFirstItem() and such +// ---------------------------------------------------------------------------- + void wxListBoxBase::SetFirstItem(const wxString& s) { int n = FindString(s); @@ -96,3 +133,17 @@ void wxListBoxBase::SetFirstItem(const wxString& s) DoSetFirstItem(n); } + +void wxListBoxBase::AppendAndEnsureVisible(const wxString& s) +{ + Append(s); + EnsureVisible(GetCount() - 1); +} + +void wxListBoxBase::EnsureVisible(int WXUNUSED(n)) +{ + // the base class version does nothing (the only alternative would be to + // call SetFirstItem() but this is probably even more stupid) +} + +#endif // wxUSE_LISTBOX