X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/550343399aa1355469ffed72c8cf84c732dcf98b..c57fe715b2e4063deb38afb4a4551dab68732f5f:/src/motif/combobox_native.cpp diff --git a/src/motif/combobox_native.cpp b/src/motif/combobox_native.cpp index e6672c200a..242a507bd9 100644 --- a/src/motif/combobox_native.cpp +++ b/src/motif/combobox_native.cpp @@ -12,12 +12,13 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" -#include "wx/setup.h" - #if wxUSE_COMBOBOX #include "wx/combobox.h" -#include "wx/arrstr.h" + +#ifndef WX_PRECOMP + #include "wx/arrstr.h" +#endif #ifdef __VMS__ #pragma message disable nosimpint @@ -79,6 +80,7 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, { if( !CreateControl( parent, id, pos, size, style, validator, name ) ) return false; + PreCreation(); Widget parentWidget = (Widget) parent->GetClientWidget(); @@ -105,8 +107,6 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, SetValue(value); - ChangeFont(false); - XtAddCallback (buttonWidget, XmNselectionCallback, (XtCallbackProc) wxComboBoxCallback, (XtPointer) this); @@ -115,14 +115,13 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, (XtPointer) this); wxSize best = GetBestSize(); - if( size.x != -1 ) best.x = size.x; - if( size.y != -1 ) best.y = size.y; + if( size.x != wxDefaultCoord ) best.x = size.x; + if( size.y != wxDefaultCoord ) best.y = size.y; + PostCreation(); AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, best.x, best.y); - ChangeBackgroundColour(); - return true; } @@ -181,7 +180,7 @@ wxString wxComboBox::GetValue() const return str; } -void wxComboBox::SetString(int n, const wxString& s) +void wxComboBox::SetString(unsigned int n, const wxString& s) { wxXmString text(s); Widget listBox = GetXmList(this); @@ -196,10 +195,8 @@ void wxComboBox::SetValue(const wxString& value) { m_inSetValue = true; - // Fix crash; probably an OpenMotif bug - const char* val = value.c_str() ? value.c_str() : ""; XtVaSetValues( GetXmText(this), - XmNvalue, wxConstCast(val, char), + XmNvalue, value.mb_str(), NULL); m_inSetValue = false; @@ -215,10 +212,10 @@ int wxComboBox::DoAppend(const wxString& item) return GetCount() - 1; } -int wxComboBox::DoInsert(const wxString& item, int pos) +int wxComboBox::DoInsert(const wxString& item, unsigned int pos) { wxCHECK_MSG(!(GetWindowStyle() & wxCB_SORT), -1, wxT("can't insert into sorted list")); - wxCHECK_MSG((pos>=0) && (pos<=GetCount()), -1, wxT("invalid index")); + wxCHECK_MSG(IsValidInsert(pos), -1, wxT("invalid index")); if (pos == GetCount()) return DoAppend(item); @@ -231,7 +228,7 @@ int wxComboBox::DoInsert(const wxString& item, int pos) return GetCount() - 1; } -void wxComboBox::Delete(int n) +void wxComboBox::Delete(unsigned int n) { #ifdef LESSTIF_VERSION XmListDeletePos (GetXmList(this), n + 1); @@ -271,7 +268,7 @@ void wxComboBox::SetSelection (int n) SetValue(GetString(n)); #else #if 0 - wxXmString str( GetString(n).c_str() ); + wxXmString str(GetString(n).c_str()); XmComboBoxSelectItem((Widget) m_mainWidget, str()); #endif XtVaSetValues( (Widget)m_mainWidget, @@ -287,7 +284,7 @@ int wxComboBox::GetSelection (void) const return wxDoGetSelectionInList( GetXmList( this ) ); } -wxString wxComboBox::GetString(int n) const +wxString wxComboBox::GetString(unsigned int n) const { return wxDoGetStringInList( GetXmList(this), n ); } @@ -344,7 +341,7 @@ wxTextPos wxComboBox::GetLastPosition() const void wxComboBox::Replace(long from, long to, const wxString& value) { XmTextReplace( GetXmText(this), (XmTextPosition)from, (XmTextPosition)to, - wxConstCast(value.c_str(), char) ); + wxConstCast(value.mb_str(), char) ); } void wxComboBox::Remove(long from, long to) @@ -408,7 +405,7 @@ void wxComboBoxCallback (Widget WXUNUSED(w), XtPointer clientData, void wxComboBox::ChangeFont(bool keepOriginalSize) { - if( m_font.Ok() ) + if( m_font.Ok() && m_mainWidget != NULL ) { wxDoChangeFont( GetXmText(this), m_font ); wxDoChangeFont( GetXmList(this), m_font );