- SetName(name);
- if (parent) parent->AddChild(this);
-
- SetBackgroundColour(parent->GetDefaultBackgroundColour()) ;
- SetForegroundColour(parent->GetDefaultForegroundColour()) ;
-
- if ( id == -1 )
- m_windowId = (int)NewControlId();
- else
- m_windowId = id;
-
- m_windowStyle = style;
-
- char* label1 = (label.IsNull() ? "" : (char*) (const char*) label);
-
- Widget parentWidget = (Widget) parent->GetClientWidget();
-
- XmString text = XmStringCreateSimple (label1);
-
- m_mainWidget = (WXWidget) XtVaCreateManagedWidget ((char*) (const char*) name,
+ SetName(name);
+ if (parent) parent->AddChild(this);
+
+ m_backgroundColour = parent->GetBackgroundColour();
+ m_foregroundColour = parent->GetForegroundColour();
+
+ if ( id == -1 )
+ m_windowId = (int)NewControlId();
+ else
+ m_windowId = id;
+
+ m_windowStyle = style;
+ m_font = parent->GetFont();
+
+ Widget parentWidget = (Widget) parent->GetClientWidget();
+
+ Widget borderWidget = NULL;
+
+ // Decorate the label widget if a border style is specified.
+ if (style & wxSIMPLE_BORDER)
+ {
+ borderWidget = XtVaCreateManagedWidget
+ (
+ "simpleBorder",
+ xmFrameWidgetClass, parentWidget,
+ XmNshadowType, XmSHADOW_ETCHED_IN,
+ XmNshadowThickness, 1,
+ NULL
+ );
+ } else if (style & wxSUNKEN_BORDER)
+ {
+ borderWidget = XtVaCreateManagedWidget
+ (
+ "sunkenBorder",
+ xmFrameWidgetClass, parentWidget,
+ XmNshadowType, XmSHADOW_IN,
+ NULL
+ );
+ } else if (style & wxRAISED_BORDER)
+ {
+ borderWidget = XtVaCreateManagedWidget
+ (
+ "raisedBorder",
+ xmFrameWidgetClass, parentWidget,
+ XmNshadowType, XmSHADOW_OUT,
+ NULL
+ );
+ }
+
+#if 0 // gcc 2.95 doesn't like this apparently
+ // Use XmStringCreateLtoR(), since XmStringCreateSimple
+ // doesn't obey separators.
+// XmString text = XmStringCreateSimple (label1);
+ wxXmString text( label1 );
+#endif // 0
+
+ wxXmString text( label );
+
+ WXFontType fontType = m_font.GetFontType(XtDisplay(parentWidget));
+
+ m_labelWidget = XtVaCreateManagedWidget (wxConstCast(name.c_str(), char),