//               code redundancy in all native wxColour implementations
 //-----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxColourBase : public wxGDIObject
+#ifdef __WXMAC__
+#define wxCOLOUR_IS_GDIOBJECT 0
+#else
+#define wxCOLOUR_IS_GDIOBJECT 1
+#endif
+
+class WXDLLEXPORT wxColourBase : public 
+#if wxCOLOUR_IS_GDIOBJECT
+    wxGDIObject
+#else
+    wxObject
+#endif
 {
 public:
     // type of a single colour component
     // implemented in colourcmn.cpp
     virtual wxString GetAsString(long flags = wxC2S_NAME | wxC2S_CSS_SYNTAX) const;
 
-
+#if !wxCOLOUR_IS_GDIOBJECT
+    virtual bool IsOk() const= 0;
+    
+    // older version, for backwards compatibility only (but not deprecated
+    // because it's still widely used)
+    bool Ok() const { return IsOk(); }
+#endif
 
     // old, deprecated
     // ---------------
 
     virtual bool FromString(const wxString& s);
 
+#if wxCOLOUR_IS_GDIOBJECT
     // wxColour doesn't use reference counted data (at least not in all ports)
     // so provide stubs for the functions which need to be defined if we do use
     // them
 
         return NULL;
     }
+#endif
 };