corrected generation of all event members (client data) and implemented DoGetBestSize

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18502 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2003-01-02 09:37:52 +00:00
parent cda461a616
commit 21f442c3e5
2 changed files with 118 additions and 26 deletions

View File

@@ -206,22 +206,68 @@ wxClientData* wxChoice::DoGetItemClientObject( int n ) const
void wxChoice::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId );
event.SetInt(GetSelection());
event.SetEventObject(this);
event.SetString(GetStringSelection());
ProcessCommand(event);
int n = GetSelection();
// actually n should be made sure by the os to be a valid selection, but ...
if ( n > -1 )
{
event.SetInt( n );
event.SetString(GetStringSelection());
event.SetEventObject(this);
if ( HasClientObjectData() )
event.SetClientObject( GetClientObject(n) );
else if ( HasClientUntypedData() )
event.SetClientData( GetClientData(n) );
ProcessCommand(event);
}
}
wxSize wxChoice::DoGetBestSize() const
{
// TODO should modify this to take into account string length ala wxGTK
return wxSize(100,20);
}
int lbWidth = 100; // some defaults
int lbHeight = 20;
int wLine;
#if TARGET_CARBON
long metric ;
GetThemeMetric(kThemeMetricPopupButtonHeight , &metric );
lbHeight = metric ;
#endif
{
wxMacPortStateHelper st( UMAGetWindowPort( (WindowRef) MacGetRootWindow() ) ) ;
Rect drawRect ;
/*
void wxChoice::Command(wxCommandEvent & event)
{
SetSelection (event.GetInt());
ProcessCommand (event);
wxFontRefData * font = (wxFontRefData*) m_font.GetRefData() ;
if ( font )
{
::TextFont( font->m_macFontNum ) ;
::TextSize( short(font->m_macFontSize) ) ;
::TextFace( font->m_macFontStyle ) ;
}
else
{
::TextFont( kFontIDMonaco ) ;
::TextSize( 9 );
::TextFace( 0 ) ;
}
// Find the widest line
for(int i = 0; i < GetCount(); i++) {
wxString str(GetString(i));
wLine = ::TextWidth( str.c_str() , 0 , str.Length() ) ;
lbWidth = wxMax(lbWidth, wLine);
}
// Add room for the popup arrow
lbWidth += 2 * lbHeight ;
// And just a bit more
int cy = 12 ;
int cx = ::TextWidth( "X" , 0 , 1 ) ;
lbWidth += cx ;
}
return wxSize(lbWidth, lbHeight);
}
*/

View File

@@ -206,22 +206,68 @@ wxClientData* wxChoice::DoGetItemClientObject( int n ) const
void wxChoice::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId );
event.SetInt(GetSelection());
event.SetEventObject(this);
event.SetString(GetStringSelection());
ProcessCommand(event);
int n = GetSelection();
// actually n should be made sure by the os to be a valid selection, but ...
if ( n > -1 )
{
event.SetInt( n );
event.SetString(GetStringSelection());
event.SetEventObject(this);
if ( HasClientObjectData() )
event.SetClientObject( GetClientObject(n) );
else if ( HasClientUntypedData() )
event.SetClientData( GetClientData(n) );
ProcessCommand(event);
}
}
wxSize wxChoice::DoGetBestSize() const
{
// TODO should modify this to take into account string length ala wxGTK
return wxSize(100,20);
}
int lbWidth = 100; // some defaults
int lbHeight = 20;
int wLine;
#if TARGET_CARBON
long metric ;
GetThemeMetric(kThemeMetricPopupButtonHeight , &metric );
lbHeight = metric ;
#endif
{
wxMacPortStateHelper st( UMAGetWindowPort( (WindowRef) MacGetRootWindow() ) ) ;
Rect drawRect ;
/*
void wxChoice::Command(wxCommandEvent & event)
{
SetSelection (event.GetInt());
ProcessCommand (event);
wxFontRefData * font = (wxFontRefData*) m_font.GetRefData() ;
if ( font )
{
::TextFont( font->m_macFontNum ) ;
::TextSize( short(font->m_macFontSize) ) ;
::TextFace( font->m_macFontStyle ) ;
}
else
{
::TextFont( kFontIDMonaco ) ;
::TextSize( 9 );
::TextFace( 0 ) ;
}
// Find the widest line
for(int i = 0; i < GetCount(); i++) {
wxString str(GetString(i));
wLine = ::TextWidth( str.c_str() , 0 , str.Length() ) ;
lbWidth = wxMax(lbWidth, wLine);
}
// Add room for the popup arrow
lbWidth += 2 * lbHeight ;
// And just a bit more
int cy = 12 ;
int cx = ::TextWidth( "X" , 0 , 1 ) ;
lbWidth += cx ;
}
return wxSize(lbWidth, lbHeight);
}
*/