X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4b5f3fe655deeb91d5d3abe8fad30c4a1cae63dc..f7c832a7867b1cc588fc1ec658c2f20d0b4c81ec:/src/motif/statbox.cpp diff --git a/src/motif/statbox.cpp b/src/motif/statbox.cpp index 7d9cbd0c8e..c3cda9c6d5 100644 --- a/src/motif/statbox.cpp +++ b/src/motif/statbox.cpp @@ -53,6 +53,7 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, m_labelWidget = (WXWidget) 0; m_backgroundColour = parent->GetBackgroundColour(); m_foregroundColour = parent->GetForegroundColour(); + m_windowFont = parent->GetFont(); SetName(name); @@ -78,10 +79,13 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, if (hasLabel) { + XmFontList fontList = (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay(parentWidget)); + wxString label1(wxStripMenuCodes(label)); XmString text = XmStringCreateSimple ((char*) (const char*) label1); m_labelWidget = (WXWidget) XtVaCreateManagedWidget ((char*) (const char*) label1, xmLabelWidgetClass, formWidget, + XmNfontList, fontList, XmNlabelString, text, NULL); XmStringFree (text); @@ -110,15 +114,30 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, XmNrightAttachment, XmATTACH_FORM, NULL); - m_mainWidget = (Widget) formWidget; + m_mainWidget = (WXWidget) frameWidget; + m_formWidget = (WXWidget) formWidget; SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) frameWidget, pos.x, pos.y, size.x, size.y); + AttachWidget (parent, (WXWidget) frameWidget, (WXWidget) formWidget, pos.x, pos.y, size.x, size.y); ChangeBackgroundColour(); return TRUE; } +wxStaticBox::~wxStaticBox() +{ + DetachWidget(m_formWidget); + DetachWidget(m_mainWidget); + XtDestroyWidget((Widget) m_mainWidget); + if (m_labelWidget) + XtDestroyWidget((Widget) m_labelWidget); + XtDestroyWidget((Widget) m_formWidget); + + m_mainWidget = (WXWidget) 0; + m_labelWidget = (WXWidget) 0; + m_formWidget = (WXWidget) 0; +} + void wxStaticBox::SetLabel(const wxString& label) { if (!m_labelWidget) @@ -163,9 +182,9 @@ wxString wxStaticBox::GetLabel() const } } -void wxStaticBox::SetSize(int x, int y, int width, int height, int sizeFlags) +void wxStaticBox::DoSetSize(int x, int y, int width, int height, int sizeFlags) { - wxControl::SetSize (x, y, width, height, sizeFlags); + wxControl::DoSetSize (x, y, width, height, sizeFlags); if (m_labelWidget) { @@ -189,10 +208,14 @@ void wxStaticBox::ChangeFont(bool keepOriginalSize) void wxStaticBox::ChangeBackgroundColour() { wxWindow::ChangeBackgroundColour(); + if (m_labelWidget) + DoChangeBackgroundColour(m_labelWidget, m_backgroundColour); } void wxStaticBox::ChangeForegroundColour() { wxWindow::ChangeForegroundColour(); + if (m_labelWidget) + DoChangeForegroundColour(m_labelWidget, m_foregroundColour); }