]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/checkbox.cpp
fixes
[wxWidgets.git] / src / motif / checkbox.cpp
index 4f2330ab32712a94318527f579b6ccde17aa5d98..7d40ee43305fd59d3ab83a25eb6047c741c4f625 100644 (file)
@@ -40,6 +40,8 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
     SetName(name);
     SetValidator(validator);
     m_windowStyle = style;
+    m_backgroundColour = parent->GetBackgroundColour();
+    m_foregroundColour = parent->GetForegroundColour();
 
     if (parent) parent->AddChild(this);
 
@@ -64,21 +66,21 @@ bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
 
     XmToggleButtonSetState ((Widget) m_mainWidget, FALSE, TRUE);
 
+    m_windowFont = parent->GetFont();
+    ChangeFont(FALSE);
+
     SetCanAddEventHandler(TRUE);
     AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y);
 
-    ChangeColour(m_mainWidget);
-    SetFont(* parent->GetFont());
-
+    ChangeBackgroundColour();
     return TRUE;
 }
 
 void wxCheckBox::SetValue(bool val)
 {
-    // TODO: m_inSetValue
-    //  inSetValue = TRUE;
+    m_inSetValue = TRUE;
     XmToggleButtonSetState ((Widget) m_mainWidget, (Boolean) val, TRUE);
-    //  inSetValue = FALSE;
+    m_inSetValue = FALSE;
 }
 
 bool wxCheckBox::GetValue() const
@@ -140,12 +142,39 @@ void wxCheckBoxCallback (Widget w, XtPointer clientData,
                    XtPointer ptr)
 {
   wxCheckBox *item = (wxCheckBox *) clientData;
-  // TODO
-  //  if (item->inSetValue)
-  //    return;
+
+  if (item->InSetValue())
+    return;
     
   wxCommandEvent event (wxEVT_COMMAND_CHECKBOX_CLICKED, item->GetId());
   event.SetInt((int) item->GetValue ());
   event.SetEventObject(item);
   item->ProcessCommand (event);
 }
+
+void wxCheckBox::ChangeFont(bool keepOriginalSize)
+{
+    wxWindow::ChangeFont(keepOriginalSize);
+}
+
+void wxCheckBox::ChangeBackgroundColour()
+{
+  wxComputeColours (XtDisplay((Widget) m_mainWidget), & m_backgroundColour,
+                           (wxColour*) NULL);
+
+  XtVaSetValues ((Widget) m_mainWidget,
+                  XmNbackground, g_itemColors[wxBACK_INDEX].pixel,
+                  XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel,
+                  XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel,
+                  XmNforeground, g_itemColors[wxFORE_INDEX].pixel,
+                  NULL);
+
+  XtVaSetValues ((Widget) m_mainWidget,
+                  XmNselectColor, g_itemColors[wxSELE_INDEX].pixel,
+               NULL);
+}
+
+void wxCheckBox::ChangeForegroundColour()
+{
+    wxWindow::ChangeForegroundColour();
+}