]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/checkbox.h
Slightly more efficient wxDataViewCtrl::StartEditor().
[wxWidgets.git] / include / wx / checkbox.h
index 342db830cf57130e9e286ec5f3575d8fcfa776a8..3ecfb6169f163c1abe767cda14fac2844057de1a 100644 (file)
  */
 #define wxCHK_ALLOW_3RD_STATE_FOR_USER 0x2000
 
-/*
- * The possible states of a 3-state checkbox (Compatible
- * with the 2-state checkbox).
- */
-enum wxCheckBoxState
-{
-    wxCHK_UNCHECKED,
-    wxCHK_CHECKED,
-    wxCHK_UNDETERMINED /* 3-state checkbox only */
-};
-
-
 extern WXDLLIMPEXP_DATA_CORE(const char) wxCheckBoxNameStr[];
 
 // ----------------------------------------------------------------------------
@@ -140,14 +128,18 @@ protected:
     {
         long& style = *stylePtr;
 
-        if ( style == 0 )
+        if ( !(style & (wxCHK_2STATE | wxCHK_3STATE)) )
         {
             // For compatibility we use absence of style flags as wxCHK_2STATE
             // because wxCHK_2STATE used to have the value of 0 and some
-            // existing code may use 0 instead of it.
-            style = wxCHK_2STATE;
+            // existing code uses 0 instead of it. Moreover, some code even
+            // uses some non-0 style, e.g. wxBORDER_XXX, but doesn't specify
+            // neither wxCHK_2STATE nor wxCHK_3STATE -- to avoid breaking it,
+            // assume (much more common) 2 state checkbox by default.
+            style |= wxCHK_2STATE;
         }
-        else if ( style & wxCHK_3STATE )
+
+        if ( style & wxCHK_3STATE )
         {
             if ( style & wxCHK_2STATE )
             {
@@ -158,13 +150,6 @@ protected:
         }
         else // No wxCHK_3STATE
         {
-            if ( !(style & wxCHK_2STATE) )
-            {
-                wxFAIL_MSG( "Either wxCHK_2STATE or wxCHK_3STATE must be "
-                            "specified" );
-                style |= wxCHK_2STATE;
-            }
-
             if ( style & wxCHK_ALLOW_3RD_STATE_FOR_USER )
             {
                 wxFAIL_MSG( "wxCHK_ALLOW_3RD_STATE_FOR_USER doesn't make sense "
@@ -178,6 +163,9 @@ private:
     wxDECLARE_NO_COPY_CLASS(wxCheckBoxBase);
 };
 
+// Most ports support 3 state checkboxes so define this by default.
+#define wxHAS_3STATE_CHECKBOX
+
 #if defined(__WXUNIVERSAL__)
     #include "wx/univ/checkbox.h"
 #elif defined(__WXMSW__)
@@ -187,12 +175,14 @@ private:
 #elif defined(__WXGTK20__)
     #include "wx/gtk/checkbox.h"
 #elif defined(__WXGTK__)
+    #undef wxHAS_3STATE_CHECKBOX
     #include "wx/gtk1/checkbox.h"
 #elif defined(__WXMAC__)
     #include "wx/osx/checkbox.h"
 #elif defined(__WXCOCOA__)
     #include "wx/cocoa/checkbox.h"
 #elif defined(__WXPM__)
+    #undef wxHAS_3STATE_CHECKBOX
     #include "wx/os2/checkbox.h"
 #elif defined(__WXPALMOS__)
     #include "wx/palmos/checkbox.h"
@@ -200,5 +190,4 @@ private:
 
 #endif // wxUSE_CHECKBOX
 
-#endif
-    // _WX_CHECKBOX_H_BASE_
+#endif // _WX_CHECKBOX_H_BASE_