]> git.saurik.com Git - wxWidgets.git/blobdiff - src/propgrid/advprops.cpp
fix handling of errors in wxConditionInternal::Wait() and WaitTimeout() (#10111)
[wxWidgets.git] / src / propgrid / advprops.cpp
index fb6a32b3ceab539f5fd89235119084719125eb88..158a45d680d203bdd3b04d2fe725aa1907768e95 100644 (file)
 // -----------------------------------------------------------------------
 
 
-bool operator == (const wxFont&, const wxFont&)
-{
-    return false;
-}
-
 // Implement dynamic class for type value.
 IMPLEMENT_DYNAMIC_CLASS(wxColourPropertyValue, wxObject)
 
@@ -144,10 +139,10 @@ wxPGWindowList wxPGSpinCtrlEditor::CreateControls( wxPropertyGrid* propgrid, wxP
 
     wxWindowID id = wnd2->GetId();
     wnd2->Connect( id, wxEVT_SCROLL_LINEUP,
-                   wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent),
+                   wxEventHandler(wxPropertyGrid::OnCustomEditorEvent),
                    NULL, propgrid );
     wnd2->Connect( id, wxEVT_SCROLL_LINEDOWN,
-                   wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent),
+                   wxEventHandler(wxPropertyGrid::OnCustomEditorEvent),
                    NULL, propgrid );
 
     // Let's add validator to make sure only numbers can be entered
@@ -157,7 +152,7 @@ wxPGWindowList wxPGSpinCtrlEditor::CreateControls( wxPropertyGrid* propgrid, wxP
     wnd1->SetValidator(validator);
 
     wnd1->Connect( wnd1->GetId(), wxEVT_KEY_DOWN,
-                   wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent),
+                   wxEventHandler(wxPropertyGrid::OnCustomEditorEvent),
                    NULL, propgrid );
 
     return wxPGWindowList(wnd1, wnd2);
@@ -343,7 +338,7 @@ wxPGWindowList wxPGDatePickerCtrlEditor::CreateControls( wxPropertyGrid* propgri
     // (all relevenat wxTextCtrl, wxComboBox and wxButton events are
     // already connected)
     ctrl->Connect( wxPG_SUBID1, wxEVT_DATE_CHANGED,
-                   wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent),
+                   wxEventHandler(wxPropertyGrid::OnCustomEditorEvent),
                    NULL, propgrid );
 
 #ifdef __WXMSW__
@@ -951,10 +946,7 @@ void wxSystemColourProperty::OnSetValue()
 
         if ( cpv.m_type < wxPG_COLOUR_WEB_BASE )
         {
-            if ( m_choices.HasValues() )
-                ind = GetIndexForValue(cpv.m_type);
-            else
-                ind = ColToInd(col);
+            ind = GetIndexForValue(cpv.m_type);
         }
         else
         {
@@ -1001,11 +993,29 @@ wxString wxSystemColourProperty::ColourToString( const wxColour& col, int index
 }
 
 wxString wxSystemColourProperty::ValueToString( wxVariant& value,
-                                                int WXUNUSED(argFlags) ) const
+                                                int argFlags ) const
 {
     wxColourPropertyValue val = GetVal(&value);
 
-    return ColourToString(val.m_colour, m_choices.Index(val.m_type));
+    int index;
+
+    if ( argFlags & wxPG_VALUE_IS_CURRENT )
+    {
+        // GetIndex() only works reliably if wxPG_VALUE_IS_CURRENT flag is set,
+        // but we should use it whenever possible.
+        index = GetIndex();
+
+        // If custom colour was selected, use invalid index, so that
+        // ColourToString() will return properly formatted colour text.
+        if ( index == GetCustomColourIndex() )
+            index = wxNOT_FOUND;
+    }
+    else
+    {
+        index = m_choices.Index(val.m_type);
+    }
+
+    return ColourToString(val.m_colour, index);
 }
 
 
@@ -1067,14 +1077,9 @@ bool wxSystemColourProperty::QueryColourFromUser( wxVariant& variant ) const
 bool wxSystemColourProperty::IntToValue( wxVariant& variant, int number, int WXUNUSED(argFlags) ) const
 {
     int index = number;
-    int type = GetValueForIndex(index);
-    bool hasValue = m_choices[index].HasValue();
-
-    if ( ( hasValue && type == wxPG_COLOUR_CUSTOM ) ||
-         ( !hasValue && (index == (int)GetCustomColourIndex() &&
-                                      !(m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR))
-         )
-       )
+    int type = m_choices.GetValue(index);
+
+    if ( type == wxPG_COLOUR_CUSTOM )
     {
         QueryColourFromUser(variant);
     }
@@ -1232,7 +1237,7 @@ bool wxSystemColourProperty::StringToValue( wxVariant& value, const wxString& te
             if ( res && GetIndex() >= 0 )
             {
                 val.m_type = GetIndex();
-                if ( val.m_type >= 0 && val.m_type < m_choices.GetCount() && m_choices[val.m_type].HasValue() )
+                if ( val.m_type >= 0 && val.m_type < m_choices.GetCount() )
                     val.m_type = m_choices[val.m_type].GetValue();
 
                 // Get proper colour for type.
@@ -1395,11 +1400,6 @@ wxString wxColourProperty::ValueToString( wxVariant& value,
 
 wxColour wxColourProperty::GetColour( int index ) const
 {
-    if ( !m_choices.HasValue(index) )
-    {
-        wxASSERT( index < (int)GetItemCount() );
-        return gs_cp_es_normcolour_colours[index];
-    }
     return gs_cp_es_normcolour_colours[m_choices.GetValue(index)];
 }
 
@@ -1731,7 +1731,7 @@ wxMultiChoiceProperty::~wxMultiChoiceProperty()
 
 void wxMultiChoiceProperty::OnSetValue()
 {
-    GenerateValueAsString(&m_display);
+    GenerateValueAsString(m_value, &m_display);
 }
 
 wxString wxMultiChoiceProperty::ValueToString( wxVariant& value,
@@ -1742,16 +1742,17 @@ wxString wxMultiChoiceProperty::ValueToString( wxVariant& value,
         return m_display;
 
     wxString s;
-    GenerateValueAsString(&s);
+    GenerateValueAsString(value, &s);
     return s;
 }
 
-void wxMultiChoiceProperty::GenerateValueAsString( wxString* target ) const
+void wxMultiChoiceProperty::GenerateValueAsString( wxVariant& value,
+                                                   wxString* target ) const
 {
     wxArrayString strings;
 
-    if ( m_value.GetType() == wxPG_VARIANT_TYPE_ARRSTRING )
-        strings = m_value.GetArrayString();
+    if ( value.GetType() == wxPG_VARIANT_TYPE_ARRSTRING )
+        strings = value.GetArrayString();
 
     wxString& tempStr = *target;
     unsigned int i;