X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/94b49b9303a9fd119e24d1b07263f5bb0643afa5..84c5b38d579e140df28cfbb649587e8862148c89:/src/motif/statbox.cpp diff --git a/src/motif/statbox.cpp b/src/motif/statbox.cpp index 8f16b556ef..4258f52c1c 100644 --- a/src/motif/statbox.cpp +++ b/src/motif/statbox.cpp @@ -6,36 +6,46 @@ // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ #pragma implementation "statbox.h" #endif +#ifdef __VMS +#define XtDisplay XTDISPLAY +#endif + +#include "wx/defs.h" + #include "wx/statbox.h" #include "wx/utils.h" +#ifdef __VMS__ +#pragma message disable nosimpint +#endif #include <Xm/Frame.h> #include <Xm/Form.h> #include <Xm/Label.h> #include <Xm/LabelG.h> +#ifdef __VMS__ +#pragma message enable nosimpint +#endif -#include <wx/motif/private.h> +#include "wx/motif/private.h" -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl) BEGIN_EVENT_TABLE(wxStaticBox, wxControl) - EVT_ERASE_BACKGROUND(wxStaticBox::OnEraseBackground) +//EVT_ERASE_BACKGROUND(wxStaticBox::OnEraseBackground) END_EVENT_TABLE() -#endif /* * Static box */ - + wxStaticBox::wxStaticBox() { m_formWidget = (WXWidget) 0; @@ -53,16 +63,16 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, m_labelWidget = (WXWidget) 0; m_backgroundColour = parent->GetBackgroundColour(); m_foregroundColour = parent->GetForegroundColour(); - m_windowFont = parent->GetFont(); + m_font = parent->GetFont(); SetName(name); if (parent) parent->AddChild(this); if ( id == -1 ) - m_windowId = (int)NewControlId(); + m_windowId = (int)NewControlId(); else - m_windowId = id; + m_windowId = id; m_windowStyle = style; @@ -71,48 +81,48 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, Widget parentWidget = (Widget) parent->GetClientWidget(); Widget formWidget = XtVaCreateManagedWidget ((char*) (const char*) name, - xmFormWidgetClass, parentWidget, - XmNmarginHeight, 0, - XmNmarginWidth, 0, - NULL); + xmFormWidgetClass, parentWidget, + XmNmarginHeight, 0, + XmNmarginWidth, 0, + NULL); if (hasLabel) { - XmFontList fontList = (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay(parentWidget)); + XmFontList fontList = (XmFontList) m_font.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); + xmLabelWidgetClass, formWidget, + XmNfontList, fontList, + XmNlabelString, text, + NULL); XmStringFree (text); } Widget frameWidget = XtVaCreateManagedWidget ("frame", - xmFrameWidgetClass, formWidget, - XmNshadowType, XmSHADOW_IN, -// XmNmarginHeight, 0, -// XmNmarginWidth, 0, - NULL); + xmFrameWidgetClass, formWidget, + XmNshadowType, XmSHADOW_IN, + //XmNmarginHeight, 0, + //XmNmarginWidth, 0, + NULL); if (hasLabel) XtVaSetValues ((Widget) m_labelWidget, - XmNtopAttachment, XmATTACH_FORM, - XmNleftAttachment, XmATTACH_FORM, - XmNrightAttachment, XmATTACH_FORM, - XmNalignment, XmALIGNMENT_BEGINNING, - NULL); + XmNtopAttachment, XmATTACH_FORM, + XmNleftAttachment, XmATTACH_FORM, + XmNrightAttachment, XmATTACH_FORM, + XmNalignment, XmALIGNMENT_BEGINNING, + NULL); XtVaSetValues (frameWidget, - XmNtopAttachment, hasLabel ? XmATTACH_WIDGET : XmATTACH_FORM, - XmNtopWidget, hasLabel ? (Widget) m_labelWidget : formWidget, - XmNbottomAttachment, XmATTACH_FORM, - XmNleftAttachment, XmATTACH_FORM, - XmNrightAttachment, XmATTACH_FORM, - NULL); + XmNtopAttachment, hasLabel ? XmATTACH_WIDGET : XmATTACH_FORM, + XmNtopWidget, hasLabel ? (Widget) m_labelWidget : formWidget, + XmNbottomAttachment, XmATTACH_FORM, + XmNleftAttachment, XmATTACH_FORM, + XmNrightAttachment, XmATTACH_FORM, + NULL); m_mainWidget = (WXWidget) frameWidget; m_formWidget = (WXWidget) formWidget; @@ -124,6 +134,20 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, 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) @@ -135,9 +159,9 @@ void wxStaticBox::SetLabel(const wxString& label) XmString text = XmStringCreateSimple ((char*) (const char*) label1); XtVaSetValues ((Widget) m_labelWidget, - XmNlabelString, text, - XmNlabelType, XmSTRING, - NULL); + XmNlabelString, text, + XmNlabelType, XmSTRING, + NULL); XmStringFree (text); } } @@ -150,8 +174,8 @@ wxString wxStaticBox::GetLabel() const XmString text = 0; char *s; XtVaGetValues ((Widget) m_labelWidget, - XmNlabelString, &text, - NULL); + XmNlabelString, &text, + NULL); if (!text) return wxEmptyString; @@ -168,9 +192,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) { @@ -179,10 +203,10 @@ void wxStaticBox::SetSize(int x, int y, int width, int height, int sizeFlags) if (width > -1) XtVaSetValues ((Widget) m_mainWidget, XmNwidth, width, - NULL); + NULL); if (height > -1) XtVaSetValues ((Widget) m_mainWidget, XmNheight, height - yy, - NULL); + NULL); } } @@ -194,10 +218,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); }