X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/60ebcb8a491cf5132a326490cd148dcba384f729..fc684792c6b050fbfeabbea92e302bc3469d7489:/src/osx/listbox_osx.cpp diff --git a/src/osx/listbox_osx.cpp b/src/osx/listbox_osx.cpp index 1c3e28a5bf..c8a037b899 100644 --- a/src/osx/listbox_osx.cpp +++ b/src/osx/listbox_osx.cpp @@ -4,7 +4,7 @@ // Author: Stefan Csomor // Modified by: // Created: 1998-01-01 -// RCS-ID: $Id: listbox.cpp 54820 2008-07-29 20:04:11Z SC $ +// RCS-ID: $Id$ // Copyright: (c) Stefan Csomor // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -88,7 +88,7 @@ bool wxListBox::Create( m_strings.unsorted = new wxArrayString; m_peer = wxWidgetImpl::CreateListBox( this, parent, id, pos, size, style, GetExtraStyle() ); - + MacPostControlCreate( pos, size ); m_textColumn = GetListPeer()->InsertTextColumn(0,wxEmptyString); @@ -108,8 +108,7 @@ wxListBox::~wxListBox() m_blockEvents = false; // make sure no native events get sent to a object in destruction - delete m_peer; - m_peer = NULL; + wxDELETE(m_peer); if ( IsSorted() ) delete m_strings.sorted; @@ -155,7 +154,7 @@ void wxListBox::DoDeleteOneItem(unsigned int n) GetListPeer()->ListDelete( n ); m_blockEvents = false; - + UpdateOldSelections(); } @@ -164,7 +163,7 @@ void wxListBox::DoClear() m_blockEvents = true; FreeData(); m_blockEvents = false; - + UpdateOldSelections(); } @@ -178,14 +177,14 @@ void wxListBox::DoSetSelection(int n, bool select) wxT("invalid index in wxListBox::SetSelection") ); m_blockEvents = true; - + if ( n == wxNOT_FOUND ) GetListPeer()->ListDeselectAll(); else GetListPeer()->ListSetSelection( n, select, HasMultipleSelection() ); - + m_blockEvents = false; - + UpdateOldSelections(); } @@ -208,6 +207,11 @@ int wxListBox::GetSelection() const return GetListPeer()->ListGetSelection(); } +int wxListBox::DoListHitTest(const wxPoint& inpoint) const +{ + return GetListPeer()->DoListHitTest( inpoint ); +} + // ---------------------------------------------------------------------------- // display // ---------------------------------------------------------------------------- @@ -225,7 +229,7 @@ void wxListBox::SetValueCallback( unsigned int WXUNUSED(n), wxListWidgetColumn* wxSize wxListBox::DoGetBestSize() const { int lbWidth = 100; // some defaults - int lbHeight = 110; + int lbHeight; int wLine; { @@ -275,7 +279,8 @@ wxListBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) attr.colFg = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOWTEXT ); attr.colBg = wxSystemSettings::GetColour( wxSYS_COLOUR_LISTBOX ); - attr.font.CreateSystemFont(wxOSX_SYSTEM_FONT_VIEWS); + static wxFont font = wxFont(wxOSX_SYSTEM_FONT_VIEWS); + attr.font = font; return attr; } @@ -352,6 +357,14 @@ int wxListBox::DoInsertItems(const wxArrayStringsAdapter& items, GetListPeer()->UpdateLineToEnd(startpos); + // Inserting the items may scroll the listbox down to show the last + // selected one but we don't want to do it as it could result in e.g. the + // first items of a listbox be hidden immediately after its creation so + // show the first selected item instead. Ideal would probably be to + // preserve the old selection unchanged, in fact, but I don't know how to + // get the first visible item so for now do at least this. + SetFirstItem(startpos); + UpdateOldSelections(); return idx; @@ -359,7 +372,7 @@ int wxListBox::DoInsertItems(const wxArrayStringsAdapter& items, void wxListBox::SetString(unsigned int n, const wxString& s) { - wxCHECK_RET( !IsSorted(), _T("can't set string in sorted listbox") ); + wxCHECK_RET( !IsSorted(), wxT("can't set string in sorted listbox") ); if ( IsSorted() ) (*m_strings.sorted)[n] = s; @@ -375,7 +388,7 @@ void wxListBox::SetString(unsigned int n, const wxString& s) void wxListBox::HandleLineEvent( unsigned int n, bool doubleClick ) { - wxCommandEvent event( doubleClick ? wxEVT_COMMAND_LISTBOX_DOUBLECLICKED : + wxCommandEvent event( doubleClick ? wxEVT_COMMAND_LISTBOX_DOUBLECLICKED : wxEVT_COMMAND_LISTBOX_SELECTED, GetId() ); event.SetEventObject( this ); if ( HasClientObjectData() ) @@ -390,7 +403,7 @@ void wxListBox::HandleLineEvent( unsigned int n, bool doubleClick ) // // common list cell value operations -// +// void wxListWidgetCellValue::Check( bool check ) { @@ -401,7 +414,7 @@ bool wxListWidgetCellValue::IsChecked() const { return GetIntValue() != 0; } - + #endif // wxUSE_LISTBOX