From: Robert Roebling Date: Sat, 8 Dec 2007 17:29:19 +0000 (+0000) Subject: Make wxGenericColourButton derive from wxBitmapButton X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/480be76aae46d8b05e178e8aefc9588df8a6f071 Make wxGenericColourButton derive from wxBitmapButton git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50571 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/generic/clrpickerg.h b/include/wx/generic/clrpickerg.h index 758e51619f..585abfc1f5 100644 --- a/include/wx/generic/clrpickerg.h +++ b/include/wx/generic/clrpickerg.h @@ -19,7 +19,7 @@ // wxGenericColourButton: a button which brings up a wxColourDialog //----------------------------------------------------------------------------- -class WXDLLIMPEXP_CORE wxGenericColourButton : public wxButton, +class WXDLLIMPEXP_CORE wxGenericColourButton : public wxBitmapButton, public wxColourPickerWidgetBase { public: @@ -63,6 +63,7 @@ public: protected: + wxBitmap m_bitmap; wxSize DoGetBestSize() const; diff --git a/src/generic/clrpickerg.cpp b/src/generic/clrpickerg.cpp index 717b1811ae..4e2a86b32c 100644 --- a/src/generic/clrpickerg.cpp +++ b/src/generic/clrpickerg.cpp @@ -36,7 +36,7 @@ // ============================================================================ wxColourData wxGenericColourButton::ms_data; -IMPLEMENT_DYNAMIC_CLASS(wxGenericColourButton, wxButton) +IMPLEMENT_DYNAMIC_CLASS(wxGenericColourButton, wxBitmapButton) // ---------------------------------------------------------------------------- // wxGenericColourButton @@ -47,8 +47,10 @@ bool wxGenericColourButton::Create( wxWindow *parent, wxWindowID id, const wxSize &size, long style, const wxValidator& validator, const wxString &name) { + m_bitmap = wxBitmap( 60, 13 ); + // create this button - if (!wxButton::Create( parent, id, wxEmptyString, pos, + if (!wxBitmapButton::Create( parent, id, m_bitmap, pos, size, style, validator, name )) { wxFAIL_MSG( wxT("wxGenericColourButton creation failed") ); @@ -99,33 +101,30 @@ void wxGenericColourButton::OnButtonClick(wxCommandEvent& WXUNUSED(ev)) void wxGenericColourButton::UpdateColour() { - if ( !m_colour.Ok() ) - { - if ( HasFlag(wxCLRP_SHOW_LABEL) ) - SetLabel(wxEmptyString); - return; - } - - // some combinations of the fg/bg colours may be unreadable, so we invert - // the colour to make sure fg colour is different enough from m_colour - wxColour colFg(~m_colour.Red(), ~m_colour.Green(), ~m_colour.Blue()); - - SetForegroundColour(colFg); - SetBackgroundColour(m_colour); - + wxMemoryDC dc(m_bitmap); + dc.SetPen( *wxTRANSPARENT_PEN ); + dc.SetBrush( wxBrush(m_colour) ); + dc.DrawRectangle( 0,0,m_bitmap.GetWidth(),m_bitmap.GetHeight() ); + 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(wxButton::DoGetBestSize()); + wxSize sz(wxBitmapButton::DoGetBestSize()); + sz.y += 6; + sz.x += 30; if ( HasFlag(wxCLRP_SHOW_LABEL) ) return sz; // if we have no label, then make this button a square - // (like e.g. native GTK version of this control) - sz.SetWidth(sz.GetHeight()); + // (like e.g. native GTK version of this control) ??? + // sz.SetWidth(sz.GetHeight()); return sz; }