X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9b5f1895643cf94b38ac19a4c1151e259310852e..c57fe715b2e4063deb38afb4a4551dab68732f5f:/src/motif/combobox_native.cpp diff --git a/src/motif/combobox_native.cpp b/src/motif/combobox_native.cpp index 80245a8370..242a507bd9 100644 --- a/src/motif/combobox_native.cpp +++ b/src/motif/combobox_native.cpp @@ -15,7 +15,10 @@ #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 @@ -77,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(); @@ -103,8 +107,6 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, SetValue(value); - ChangeFont(false); - XtAddCallback (buttonWidget, XmNselectionCallback, (XtCallbackProc) wxComboBoxCallback, (XtPointer) this); @@ -116,11 +118,10 @@ bool wxComboBox::Create(wxWindow *parent, wxWindowID id, 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; } @@ -179,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); @@ -194,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; @@ -213,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); @@ -229,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); @@ -269,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, @@ -285,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 ); } @@ -342,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) @@ -406,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 );