X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0d57be459406c2830f6abc9d99ae99166c6d133b..0d2a2b601b1994333886dff8f53d82a714c4042f:/src/motif/statbox.cpp diff --git a/src/motif/statbox.cpp b/src/motif/statbox.cpp index d973f83979..3e590bae1d 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) @@ -181,18 +200,22 @@ void wxStaticBox::SetSize(int x, int y, int width, int height, int sizeFlags) } } -void wxStaticBox::ChangeFont() +void wxStaticBox::ChangeFont(bool keepOriginalSize) { - // TODO + wxWindow::ChangeFont(keepOriginalSize); } void wxStaticBox::ChangeBackgroundColour() { - // TODO + wxWindow::ChangeBackgroundColour(); + if (m_labelWidget) + DoChangeBackgroundColour(m_labelWidget, m_backgroundColour); } void wxStaticBox::ChangeForegroundColour() { - // TODO + wxWindow::ChangeForegroundColour(); + if (m_labelWidget) + DoChangeForegroundColour(m_labelWidget, m_foregroundColour); }