diff --git a/src/motif/checkbox.cpp b/src/motif/checkbox.cpp index 0fca4f3ebd..9b35bfe850 100644 --- a/src/motif/checkbox.cpp +++ b/src/motif/checkbox.cpp @@ -33,14 +33,13 @@ #pragma message enable nosimpint #endif +#include "wx/motif/private.h" + // define symbols that are missing in old versions of Motif. -#if (XmVersion < 2000) -#define XmNtoggleMode 0 -#define XmTOGGLE_INDETERMINATE 1 -#define XmTOGGLE_BOOLEAN 2 -#define XmUNSET 3 -#define XmSET 4 -#define XmINDETERMINATE 5 +#if wxCHECK_MOTIF_VERSION( 2, 0 ) + #define wxHAS_3STATE 1 +#else + #define wxHAS_3STATE 0 #endif @@ -74,7 +73,9 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, XmNrecomputeSize, False, // XmNindicatorOn, XmINDICATOR_CHECK_BOX, // XmNfillOnSelect, False, +#if wxHAS_3STATE XmNtoggleMode, Is3State() ? XmTOGGLE_INDETERMINATE : XmTOGGLE_BOOLEAN, +#endif NULL); XtAddCallback( (Widget)m_mainWidget, @@ -165,6 +166,7 @@ void wxCheckBox::DoSet3StateValue(wxCheckBoxState state) { m_inSetValue = true; +#if wxHAS_3STATE unsigned char value; switch (state) @@ -178,12 +180,17 @@ void wxCheckBox::DoSet3StateValue(wxCheckBoxState state) XtVaSetValues( (Widget) m_mainWidget, XmNset, value, NULL ); +#else + XmToggleButtonSetState ((Widget) m_mainWidget, + (Boolean) state == wxCHK_CHECKED, True); +#endif m_inSetValue = false; } wxCheckBoxState wxCheckBox::DoGet3StateValue() const { +#if wxHAS_3STATE unsigned char value = 0; XtVaGetValues( (Widget) m_mainWidget, @@ -199,6 +206,9 @@ wxCheckBoxState wxCheckBox::DoGet3StateValue() const // impossible... return wxCHK_UNDETERMINED; +#else + return wxCheckBoxState(XmToggleButtonGetState ((Widget) m_mainWidget)); +#endif } ///////////////////////////////////////////////////////////////////////////////