+ m_windowId = id;
+
+ Widget parentWidget = (Widget) parent->GetClientWidget();
+
+ bool wantHorizScrolling = ((m_windowStyle & wxHSCROLL) != 0);
+
+ // If we don't have horizontal scrollbars, we want word wrap.
+ bool wantWordWrap = !wantHorizScrolling;
+
+ if (m_windowStyle & wxTE_MULTILINE)
+ {
+ Arg args[2];
+ XtSetArg (args[0], XmNscrollHorizontal, wantHorizScrolling ? True : False);
+ XtSetArg (args[1], XmNwordWrap, wantWordWrap ? True : False);
+
+ m_mainWidget = (WXWidget) XmCreateScrolledText(parentWidget,
+ (char*)name.c_str(),
+ args, 2);
+
+ XtVaSetValues ((Widget) m_mainWidget,
+ XmNeditable, ((style & wxTE_READONLY) ? False : True),
+ XmNeditMode, XmMULTI_LINE_EDIT,
+ NULL);
+ XtManageChild ((Widget) m_mainWidget);
+ }
+ else
+ {
+ m_mainWidget = (WXWidget)XtVaCreateManagedWidget
+ (
+ (char*)name.c_str(),
+ xmTextWidgetClass,
+ parentWidget,
+ NULL
+ );
+
+ XtVaSetValues ((Widget) m_mainWidget,
+ XmNeditable, ((style & wxTE_READONLY) ? False : True),
+ NULL);
+
+ // TODO: Is this relevant? What does it do?
+ int noCols = 2;
+ if (!value.IsNull() && (value.Length() > (unsigned int) noCols))
+ noCols = value.Length();
+ XtVaSetValues((Widget) m_mainWidget,
+ XmNcolumns, noCols,
+ NULL);
+ }
+
+ // remove border if asked for
+ if ( style & wxNO_BORDER )
+ {
+ XtVaSetValues((Widget)m_mainWidget,
+ XmNshadowThickness, 0,
+ NULL);
+ }
+
+ if ( !!value )
+ {
+#if 0
+ // don't do this because it is just linking the text to a source
+ // string which is unsafe. MB
+ //
+ XmTextSetString ((Widget) m_mainWidget, (char*)value.c_str());
+#else
+ // do this instead... MB
+ //
+ XtVaSetValues( (Widget) m_mainWidget,
+ XmNvalue, (char *)value.c_str(),
+ NULL);
+#endif
+ }
+
+ // install callbacks
+ XtAddCallback((Widget) m_mainWidget, XmNvalueChangedCallback, (XtCallbackProc)wxTextWindowChangedProc, (XtPointer)this);
+
+ XtAddCallback((Widget) m_mainWidget, XmNmodifyVerifyCallback, (XtCallbackProc)wxTextWindowModifyProc, (XtPointer)this);
+
+ XtAddCallback((Widget) m_mainWidget, XmNactivateCallback, (XtCallbackProc)wxTextWindowActivateProc, (XtPointer)this);
+
+ XtAddCallback((Widget) m_mainWidget, XmNfocusCallback, (XtCallbackProc)wxTextWindowGainFocusProc, (XtPointer)this);
+
+ XtAddCallback((Widget) m_mainWidget, XmNlosingFocusCallback, (XtCallbackProc)wxTextWindowLoseFocusProc, (XtPointer)this);
+
+ // font
+ m_font = parent->GetFont();
+ ChangeFont(FALSE);
+
+ SetCanAddEventHandler(TRUE);
+ AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y);
+
+ ChangeBackgroundColour();