X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ee2ec18e88701d8f0709009616584153ca85d7a7..15811f2f674720ba7da5353066ef71cd5621c081:/src/motif/textctrl.cpp?ds=sidebyside diff --git a/src/motif/textctrl.cpp b/src/motif/textctrl.cpp index 8213b6b8cd..82624d53e8 100644 --- a/src/motif/textctrl.cpp +++ b/src/motif/textctrl.cpp @@ -110,13 +110,12 @@ bool wxTextCtrl::Create(wxWindow *parent, { if( !CreateControl( parent, id, pos, size, style, validator, name ) ) return false; + PreCreation(); m_tempCallbackStruct = (void*) NULL; m_modified = false; m_processedDefault = false; - m_backgroundColour = *wxWHITE; - Widget parentWidget = (Widget) parent->GetClientWidget(); Bool wantHorizScroll = (m_windowStyle & wxHSCROLL) != 0 ? True : False; @@ -135,17 +134,18 @@ bool wxTextCtrl::Create(wxWindow *parent, Arg args[8]; int count = 0; XtSetArg (args[count], XmNscrollHorizontal, wantHorizScroll); ++count; - XtSetArg (args[count], (String) wxFont::GetFontTag(), - m_font.GetFontType( XtDisplay(parentWidget) ) ); ++count; + if( m_font.IsOk() ) + XtSetArg (args[count], (String) wxFont::GetFontTag(), + m_font.GetFontType( XtDisplay(parentWidget) ) ); ++count; XtSetArg (args[count], XmNwordWrap, wantWordWrap); ++count; - XtSetArg (args[count], XmNvalue, value.c_str()); ++count; + XtSetArg (args[count], XmNvalue, (const char*)value.mb_str()); ++count; XtSetArg (args[count], XmNeditable, style & wxTE_READONLY ? False : True); ++count; XtSetArg (args[count], XmNeditMode, XmMULTI_LINE_EDIT ); ++count; m_mainWidget = (WXWidget) XmCreateScrolledText(parentWidget, - wxConstCast(name.c_str(), char), + name.char_str(), args, count); XtManageChild ((Widget) m_mainWidget); @@ -154,11 +154,11 @@ bool wxTextCtrl::Create(wxWindow *parent, { m_mainWidget = (WXWidget)XtVaCreateManagedWidget ( - wxConstCast(name.c_str(), char), + name.mb_str(), xmTextWidgetClass, parentWidget, wxFont::GetFontTag(), m_font.GetFontType( XtDisplay(parentWidget) ), - XmNvalue, value.c_str(), + XmNvalue, (const char*)value.mb_str(), XmNeditable, (style & wxTE_READONLY) ? False : True, NULL @@ -194,11 +194,10 @@ bool wxTextCtrl::Create(wxWindow *parent, XtAddCallback((Widget) m_mainWidget, XmNlosingFocusCallback, (XtCallbackProc)wxTextWindowLoseFocusProc, (XtPointer)this); + PostCreation(); AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - ChangeBackgroundColour(); - return true; } @@ -244,7 +243,7 @@ void wxTextCtrl::DoSetValue(const wxString& text, int flags) { m_inSetValue = true; - XmTextSetString ((Widget) m_mainWidget, wxConstCast(text.c_str(), char)); + XmTextSetString ((Widget) m_mainWidget, text.char_str()); XtVaSetValues ((Widget) m_mainWidget, XmNcursorPosition, text.length(), NULL); @@ -365,7 +364,7 @@ wxTextPos wxTextCtrl::GetLastPosition() const void wxTextCtrl::Replace(long from, long to, const wxString& value) { XmTextReplace ((Widget) m_mainWidget, (XmTextPosition) from, (XmTextPosition) to, - wxConstCast(value.c_str(), char)); + value.char_str()); } void wxTextCtrl::Remove(long from, long to) @@ -388,7 +387,7 @@ void wxTextCtrl::WriteText(const wxString& text) { long textPosition = GetInsertionPoint() + text.length(); XmTextInsert ((Widget) m_mainWidget, GetInsertionPoint(), - wxConstCast(text.c_str(), char)); + text.char_str()); XtVaSetValues ((Widget) m_mainWidget, XmNcursorPosition, textPosition, NULL); SetInsertionPoint(textPosition); XmTextShowPosition ((Widget) m_mainWidget, textPosition); @@ -399,7 +398,7 @@ void wxTextCtrl::AppendText(const wxString& text) { wxTextPos textPosition = GetLastPosition() + text.length(); XmTextInsert ((Widget) m_mainWidget, GetLastPosition(), - wxConstCast(text.c_str(), char)); + text.char_str()); XtVaSetValues ((Widget) m_mainWidget, XmNcursorPosition, textPosition, NULL); SetInsertionPoint(textPosition); XmTextShowPosition ((Widget) m_mainWidget, textPosition); @@ -667,8 +666,8 @@ wxSize wxDoGetSingleTextCtrlBestSize( Widget textWidget, int x, y; window->GetTextExtent( value, &x, &y ); - if( x < 100 ) - x = 100; + if( x < 90 ) + x = 90; return wxSize( x + 2 * xmargin + 2 * highlight + 2 * shadow, // MBN: +2 necessary: Lesstif bug or mine? @@ -680,10 +679,16 @@ wxSize wxTextCtrl::DoGetBestSize() const if( IsSingleLine() ) { wxSize best = wxControl::DoGetBestSize(); - - if( best.x < 110 ) best.x = 110; +#if wxCHECK_MOTIF_VERSION( 2, 3 ) + // OpenMotif 2.3 gives way too big X sizes + wxSize other_best = wxDoGetSingleTextCtrlBestSize + ( (Widget) GetTopWidget(), this ); + return wxSize( other_best.x, best.y ); +#else + if( best.x < 90 ) best.x = 90; return best; +#endif } else return wxWindow::DoGetBestSize();