]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/checkbox.cpp
wxMultiChoiceDialog uses now wxCheckListBox if possible, wxListBox if not
[wxWidgets.git] / src / motif / checkbox.cpp
index 59e62023ad50a5c95ecf6dd7cdd7e7eeeb195897..9a274cc63a3a7909302374e2bbad4e5cc4220856 100644 (file)
@@ -9,10 +9,6 @@
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "checkbox.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 #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
 
 
@@ -64,7 +59,7 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
 {
     if( !wxControl::CreateControl( parent, id, pos, size, style, validator,
                                    name ) )
-        return FALSE;
+        return false;
 
     wxString label1(wxStripMenuCodes(label));
     wxXmString text( label1 );
@@ -73,25 +68,27 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
 
     m_mainWidget = (WXWidget) XtVaCreateManagedWidget ("toggle",
         xmToggleButtonWidgetClass, parentWidget,
-        wxFont::GetFontTag(), m_font.GetFontType(XtDisplay(parentWidget)),
+        wxFont::GetFontTag(), m_font.GetFontTypeC(XtDisplay(parentWidget)),
         XmNlabelString, text(),
         XmNrecomputeSize, False,
         // XmNindicatorOn, XmINDICATOR_CHECK_BOX,
         // XmNfillOnSelect, False,
+#if wxHAS_3STATE
         XmNtoggleMode, Is3State() ? XmTOGGLE_INDETERMINATE : XmTOGGLE_BOOLEAN,
+#endif
         NULL);
     
     XtAddCallback( (Widget)m_mainWidget,
                    XmNvalueChangedCallback, (XtCallbackProc)wxCheckBoxCallback,
                    (XtPointer)this );
 
-    XmToggleButtonSetState ((Widget) m_mainWidget, FALSE, TRUE);
+    XmToggleButtonSetState ((Widget) m_mainWidget, False, True);
 
     AttachWidget( parent, m_mainWidget, (WXWidget)NULL,
                   pos.x, pos.y, size.x, size.y );
 
     ChangeBackgroundColour();
-    return TRUE;
+    return true;
 }
 
 void wxCheckBox::SetValue(bool val)
@@ -169,6 +166,7 @@ void wxCheckBox::DoSet3StateValue(wxCheckBoxState state)
 {
     m_inSetValue = true;
 
+#if wxHAS_3STATE
     unsigned char value;
 
     switch (state)
@@ -182,12 +180,17 @@ void wxCheckBox::DoSet3StateValue(wxCheckBoxState state)
     XtVaSetValues( (Widget) m_mainWidget,
                    XmNset, value,
                    NULL );
+#else
+    XmToggleButtonSetState ((Widget) m_mainWidget,
+                            state == wxCHK_CHECKED, True);
+#endif
 
     m_inSetValue = false;
 }
 
 wxCheckBoxState wxCheckBox::DoGet3StateValue() const
 {
+#if wxHAS_3STATE
     unsigned char value = 0;
 
     XtVaGetValues( (Widget) m_mainWidget,
@@ -203,6 +206,9 @@ wxCheckBoxState wxCheckBox::DoGet3StateValue() const
 
     // impossible...
     return wxCHK_UNDETERMINED;
+#else
+    return wxCheckBoxState(XmToggleButtonGetState ((Widget) m_mainWidget));
+#endif
 }
 
 ///////////////////////////////////////////////////////////////////////////////