merge with latest sources
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7985 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -21,11 +21,13 @@
|
||||
#include "wx/utils.h"
|
||||
#include "extldef.h"
|
||||
|
||||
#if !USE_SHARED_LIBRARY
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl)
|
||||
|
||||
BEGIN_EVENT_TABLE(wxListBox, wxControl)
|
||||
EVT_SIZE( wxListBox::OnSize )
|
||||
END_EVENT_TABLE()
|
||||
#endif
|
||||
|
||||
#include <wx/mac/uma.h>
|
||||
|
||||
@@ -41,6 +43,7 @@ wxListBox::wxListBox()
|
||||
{
|
||||
m_noItems = 0;
|
||||
m_selected = 0;
|
||||
m_macList = NULL ;
|
||||
}
|
||||
|
||||
bool wxListBox::Create(wxWindow *parent, wxWindowID id,
|
||||
@@ -56,8 +59,6 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
Rect bounds ;
|
||||
Str255 title ;
|
||||
m_macHorizontalBorder = 5 ; // additional pixels around the real control
|
||||
m_macVerticalBorder = 5 ;
|
||||
|
||||
MacPreControlCreate( parent , id , "" , pos , size ,style, validator , name , &bounds , title ) ;
|
||||
|
||||
@@ -67,6 +68,7 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
|
||||
long result ;
|
||||
UMAGetControlData( m_macControl , kControlNoPart , kControlListBoxListHandleTag , sizeof( ListHandle ) , (char*) &m_macList , &result ) ;
|
||||
|
||||
HLock( (Handle) m_macList ) ;
|
||||
NewExtLDEFInfo( m_macList , MacDrawStringCell , (long) this ) ;
|
||||
(**m_macList).selFlags = 0 ;
|
||||
if ( style & wxLB_MULTIPLE )
|
||||
@@ -109,7 +111,11 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
|
||||
wxListBox::~wxListBox()
|
||||
{
|
||||
Free() ;
|
||||
DisposeExtLDEFInfo( m_macList ) ;
|
||||
if ( m_macList )
|
||||
{
|
||||
DisposeExtLDEFInfo( m_macList ) ;
|
||||
m_macList = NULL ;
|
||||
}
|
||||
}
|
||||
|
||||
void wxListBox::Free()
|
||||
@@ -156,7 +162,7 @@ void wxListBox::Delete(int N)
|
||||
#endif // wxUSE_OWNER_DRAWN/!wxUSE_OWNER_DRAWN
|
||||
m_stringArray.Remove( N ) ;
|
||||
m_dataArray.Remove( N ) ;
|
||||
m_noItems --;
|
||||
m_noItems --;
|
||||
|
||||
MacDelete( N ) ;
|
||||
}
|
||||
@@ -236,19 +242,29 @@ int wxListBox::FindString(const wxString& st) const
|
||||
{
|
||||
wxString search = s.Left( s.Length() - 1 ) ;
|
||||
int len = search.Length() ;
|
||||
for ( int i = 0 ; i < m_noItems ; ++ i )
|
||||
{
|
||||
if ( equalstring( m_stringArray[i].Left( len ) , search , false , false ) )
|
||||
return i ;
|
||||
}
|
||||
Str255 s1 , s2 ;
|
||||
strcpy( (char*) s2 , search.c_str() ) ;
|
||||
c2pstr( (char*) s2 ) ;
|
||||
for ( int i = 0 ; i < m_noItems ; ++ i )
|
||||
{
|
||||
strcpy( (char*) s1 , m_stringArray[i].Left( len ).c_str() ) ;
|
||||
c2pstr( (char*) s1 ) ;
|
||||
if ( EqualString( s1 , s2 , false , false ) )
|
||||
return i ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for ( int i = 0 ; i < m_noItems ; ++ i )
|
||||
{
|
||||
if ( equalstring( m_stringArray[i] , s , false , false ) )
|
||||
return i ;
|
||||
}
|
||||
Str255 s1 , s2 ;
|
||||
strcpy( (char*) s2 , s.c_str() ) ;
|
||||
c2pstr( (char*) s2 ) ;
|
||||
for ( int i = 0 ; i < m_noItems ; ++ i )
|
||||
{
|
||||
strcpy( (char*) s1 , m_stringArray[i].c_str() ) ;
|
||||
c2pstr( (char*) s1 ) ;
|
||||
if ( EqualString( s1 , s2 , false , false ) )
|
||||
return i ;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
@@ -308,7 +324,7 @@ void wxListBox::DoSetItemClientData(int N, void *Client_data)
|
||||
if ( m_dataArray.GetCount() > N )
|
||||
{
|
||||
m_dataArray[N] = (char*) Client_data ;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_dataArray.Add( (char*) Client_data ) ;
|
||||
@@ -379,7 +395,14 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos)
|
||||
|
||||
void wxListBox::SetString(int N, const wxString& s)
|
||||
{
|
||||
m_stringArray[N] = s ;
|
||||
wxString str ;
|
||||
if( wxApp::s_macDefaultEncodingIsPC )
|
||||
{
|
||||
str = wxMacMakeMacStringFromPC( s ) ;
|
||||
}
|
||||
else
|
||||
str = s ;
|
||||
m_stringArray[N] = str ;
|
||||
MacSet( N , s ) ;
|
||||
}
|
||||
|
||||
@@ -539,7 +562,7 @@ void wxListBox::MacScrollTo( int n )
|
||||
void wxListBox::OnSize( const wxSizeEvent &event)
|
||||
{
|
||||
Point pt = (**m_macList).cellSize ;
|
||||
pt.h = m_width - 15 /* scrollbar */ - m_macHorizontalBorder * 2 ;
|
||||
pt.h = m_width - 15 ;
|
||||
LCellSize( pt , m_macList ) ;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user