]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/clrpickercmn.cpp
applying patch, closes #13045
[wxWidgets.git] / src / common / clrpickercmn.cpp
index 412eaadc7b80c979cb5ff2b4a55c1199e0d6b1e5..9420551b5ac2d04d07475e8a1f56c12e023bace6 100644 (file)
 
 #include "wx/clrpicker.h"
 
+#ifndef WX_PRECOMP
+    #include "wx/textctrl.h"
+#endif
 
+const char wxColourPickerCtrlNameStr[] = "colourpicker";
+const char wxColourPickerWidgetNameStr[] = "colourpickerwidget";
 
 // ============================================================================
 // implementation
 // ============================================================================
 
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_COLOURPICKER_CHANGED)
+wxDEFINE_EVENT(wxEVT_COMMAND_COLOURPICKER_CHANGED, wxColourPickerEvent);
 IMPLEMENT_DYNAMIC_CLASS(wxColourPickerCtrl, wxPickerBase)
 IMPLEMENT_DYNAMIC_CLASS(wxColourPickerEvent, wxEvent)
 
@@ -56,8 +61,13 @@ bool wxColourPickerCtrl::Create( wxWindow *parent, wxWindowID id,
 
     // 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));
+
+    // complete sizer creation
+    wxPickerBase::PostCreation();
+
     m_picker->Connect(wxEVT_COMMAND_COLOURPICKER_CHANGED,
             wxColourPickerEventHandler(wxColourPickerCtrl::OnColourChange),
             NULL, this);
@@ -74,7 +84,7 @@ void wxColourPickerCtrl::SetColour(const wxColour &col)
 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();
@@ -86,16 +96,9 @@ void wxColourPickerCtrl::UpdatePickerFromTextCtrl()
 {
     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)
@@ -113,11 +116,9 @@ void wxColourPickerCtrl::UpdateTextCtrlFromPicker()
     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());
 }