X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8907154c1a8a6882c6797d1f16393ddfb23e7f3a..ce7208d49d5ce2ca1dc0b3b83f14f1d04f29c4bf:/src/motif/checkbox.cpp?ds=sidebyside diff --git a/src/motif/checkbox.cpp b/src/motif/checkbox.cpp index 0fca4f3ebd..84dfd520a8 100644 --- a/src/motif/checkbox.cpp +++ b/src/motif/checkbox.cpp @@ -1,12 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.cpp +// Name: src/motif/checkbox.cpp // Purpose: wxCheckBox // Author: Julian Smart // Modified by: // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // For compilers that support precompilation, includes "wx.h". @@ -16,11 +16,13 @@ #define XtDisplay XTDISPLAY #endif -#include "wx/defs.h" - #include "wx/checkbox.h" + +#ifndef WX_PRECOMP + #include "wx/utils.h" +#endif + #include "wx/tglbtn.h" -#include "wx/utils.h" #ifdef __VMS__ #pragma message disable nosimpint @@ -33,14 +35,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 @@ -62,9 +63,8 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, name ) ) return false; - wxString label1(wxStripMenuCodes(label)); - wxXmString text( label1 ); - + wxXmString text( GetLabelText(label) ); + Widget parentWidget = (Widget) parent->GetClientWidget(); m_mainWidget = (WXWidget) XtVaCreateManagedWidget ("toggle", @@ -74,9 +74,11 @@ 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, XmNvalueChangedCallback, (XtCallbackProc)wxCheckBoxCallback, (XtPointer)this ); @@ -152,19 +154,21 @@ void wxCheckBox::ChangeBackgroundColour() XmNforeground, g_itemColors[wxFORE_INDEX].pixel, NULL); - int selectPixel = wxBLACK->AllocColour(XtDisplay((Widget)m_mainWidget)); + wxColour colour = *wxBLACK; + WXPixel selectPixel = colour.AllocColour(XtDisplay((Widget)m_mainWidget)); // Better to have the checkbox selection in black, or it's // hard to determine what state it is in. XtVaSetValues ((Widget) m_mainWidget, XmNselectColor, selectPixel, - NULL); + NULL); } void wxCheckBox::DoSet3StateValue(wxCheckBoxState state) { m_inSetValue = true; +#if wxHAS_3STATE unsigned char value; switch (state) @@ -178,12 +182,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, @@ -199,6 +208,9 @@ wxCheckBoxState wxCheckBox::DoGet3StateValue() const // impossible... return wxCHK_UNDETERMINED; +#else + return wxCheckBoxState(XmToggleButtonGetState ((Widget) m_mainWidget)); +#endif } ///////////////////////////////////////////////////////////////////////////////