]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/clrpickerg.cpp
Ensure there is valid context for DrawRectangle
[wxWidgets.git] / src / generic / clrpickerg.cpp
index 4c1a5884904d3205a93d5ed78f772abcb1123775..ffc71547ad4e53d07df063f747eb873c76ec17b9 100644 (file)
@@ -51,14 +51,14 @@ bool wxGenericColourButton::Create( wxWindow *parent, wxWindowID id,
 
     // create this button
     if (!wxBitmapButton::Create( parent, id, m_bitmap, pos,
 
     // create this button
     if (!wxBitmapButton::Create( parent, id, m_bitmap, pos,
-                           size, style, validator, name ))
+                           size, style | wxBU_AUTODRAW, validator, name ))
     {
         wxFAIL_MSG( wxT("wxGenericColourButton creation failed") );
         return false;
     }
 
     // and handle user clicks on it
     {
         wxFAIL_MSG( wxT("wxGenericColourButton creation failed") );
         return false;
     }
 
     // and handle user clicks on it
-    Connect(wxEVT_COMMAND_BUTTON_CLICKED,
+    Connect(GetId(), wxEVT_COMMAND_BUTTON_CLICKED,
             wxCommandEventHandler(wxGenericColourButton::OnButtonClick),
             NULL, this);
 
             wxCommandEventHandler(wxGenericColourButton::OnButtonClick),
             NULL, this);
 
@@ -83,7 +83,7 @@ void wxGenericColourButton::InitColourData()
 
 void wxGenericColourButton::OnButtonClick(wxCommandEvent& WXUNUSED(ev))
 {
 
 void wxGenericColourButton::OnButtonClick(wxCommandEvent& WXUNUSED(ev))
 {
-    // update the wxColouData to be shown in the the dialog
+    // update the wxColouData to be shown in the dialog
     ms_data.SetColour(m_colour);
 
     // create the colour dialog and display it
     ms_data.SetColour(m_colour);
 
     // create the colour dialog and display it
@@ -105,19 +105,27 @@ void wxGenericColourButton::UpdateColour()
     dc.SetPen( *wxTRANSPARENT_PEN );
     dc.SetBrush( wxBrush(m_colour) );
     dc.DrawRectangle( 0,0,m_bitmap.GetWidth(),m_bitmap.GetHeight() );
     dc.SetPen( *wxTRANSPARENT_PEN );
     dc.SetBrush( wxBrush(m_colour) );
     dc.DrawRectangle( 0,0,m_bitmap.GetWidth(),m_bitmap.GetHeight() );
+
+    if ( HasFlag(wxCLRP_SHOW_LABEL) )
+    {
+        wxColour col( ~m_colour.Red(), ~m_colour.Green(), ~m_colour.Blue() );
+        dc.SetTextForeground( col );
+        dc.SetFont( GetFont() );
+        dc.DrawText( m_colour.GetAsString(wxC2S_HTML_SYNTAX), 0, 0 );
+    }
+
     dc.SelectObject( wxNullBitmap );
     SetBitmapLabel( m_bitmap );
     dc.SelectObject( wxNullBitmap );
     SetBitmapLabel( m_bitmap );
-    
-#if 0
-    if ( HasFlag(wxCLRP_SHOW_LABEL) )
-        SetLabel(m_colour.GetAsString(wxC2S_HTML_SYNTAX));
-#endif
 }
 
 wxSize wxGenericColourButton::DoGetBestSize() const
 {
     wxSize sz(wxBitmapButton::DoGetBestSize());
 }
 
 wxSize wxGenericColourButton::DoGetBestSize() const
 {
     wxSize sz(wxBitmapButton::DoGetBestSize());
+#ifdef __WXMAC__
     sz.y += 6;
     sz.y += 6;
+#else
+    sz.y += 2;
+#endif
     sz.x += 30;
     if ( HasFlag(wxCLRP_SHOW_LABEL) )
         return sz;
     sz.x += 30;
     if ( HasFlag(wxCLRP_SHOW_LABEL) )
         return sz;