X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/aa61d3525370a9b9fa8c797d9b7f89d96994db5f..c57fe715b2e4063deb38afb4a4551dab68732f5f:/src/motif/combobox_native.cpp diff --git a/src/motif/combobox_native.cpp b/src/motif/combobox_native.cpp index f65ae3d8ea..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; } @@ -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; @@ -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 );