#pragma hdrstop
#endif
+#if wxUSE_COLOURPICKERCTRL
+
#include "wx/clrpicker.h"
+#ifndef WX_PRECOMP
+ #include "wx/textctrl.h"
+#endif
+const char wxColourPickerCtrlNameStr[] = "colourpicker";
+const char wxColourPickerWidgetNameStr[] = "colourpickerwidget";
// ============================================================================
// implementation
// ============================================================================
-#if wxUSE_COLOURPICKERCTRL
-
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_COLOURPICKER_CHANGED)
+wxDEFINE_EVENT(wxEVT_COLOURPICKER_CHANGED, wxColourPickerEvent);
IMPLEMENT_DYNAMIC_CLASS(wxColourPickerCtrl, wxPickerBase)
IMPLEMENT_DYNAMIC_CLASS(wxColourPickerEvent, wxEvent)
// we are not interested to the ID of our picker as we connect
// to its "changed" event dynamically...
- m_picker = new wxColourPickerWidget(this, wxID_ANY, col, wxPoint(40,0), wxSize(30,-1),
+ m_picker = new wxColourPickerWidget(this, wxID_ANY, col,
+ wxDefaultPosition, wxDefaultSize,
GetPickerStyle(style));
- m_picker->Connect(wxEVT_COMMAND_COLOURPICKER_CHANGED,
+
+ // complete sizer creation
+ wxPickerBase::PostCreation();
+
+ m_picker->Connect(wxEVT_COLOURPICKER_CHANGED,
wxColourPickerEventHandler(wxColourPickerCtrl::OnColourChange),
NULL, this);
bool wxColourPickerCtrl::SetColour(const wxString &text)
{
wxColour col(text); // smart wxString->wxColour conversion
- if ( !col.Ok() )
+ if ( !col.IsOk() )
return false;
M_PICKER->SetColour(col);
UpdateTextCtrlFromPicker();
{
wxASSERT(m_text);
- if (m_bIgnoreNextTextCtrlUpdate)
- {
- // ignore this update
- m_bIgnoreNextTextCtrlUpdate = false;
- return;
- }
-
// wxString -> wxColour conversion
wxColour col(m_text->GetValue());
- if ( !col.Ok() )
+ if ( !col.IsOk() )
return; // invalid user input
if (M_PICKER->GetColour() != col)
if (!m_text)
return; // no textctrl to update
- // NOTE: this SetValue() will generate an unwanted wxEVT_COMMAND_TEXT_UPDATED
- // which will trigger a unneeded UpdateFromTextCtrl(); thus before using
- // SetValue() we set the m_bIgnoreNextTextCtrlUpdate flag...
- m_bIgnoreNextTextCtrlUpdate = true;
- m_text->SetValue(M_PICKER->GetColour().GetAsString());
+ // Take care to use ChangeValue() here and not SetValue() to avoid
+ // infinite recursion.
+ m_text->ChangeValue(M_PICKER->GetColour().GetAsString());
}