X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4e00b90802a3856692d41a84622dac20ff0c7496..65702d2fe95b8ca16a9b74f53832780bf1c81970:/src/propgrid/advprops.cpp diff --git a/src/propgrid/advprops.cpp b/src/propgrid/advprops.cpp index 7fa93bcc19..bab9d937e4 100644 --- a/src/propgrid/advprops.cpp +++ b/src/propgrid/advprops.cpp @@ -62,6 +62,8 @@ #include "wx/msw/dc.h" #endif +#include "wx/odcombo.h" + // ----------------------------------------------------------------------- #if defined(__WXMSW__) @@ -274,11 +276,12 @@ wxPGWindowList wxPGSpinCtrlEditor::CreateControls( wxPropertyGrid* propgrid, wxP wnd2->SetRange( INT_MIN, INT_MAX ); wnd2->SetValue( 0 ); + wxWindow* wnd1 = wxPGTextCtrlEditor::CreateControls(propgrid, property, pos, tcSz).m_primary; +#if wxUSE_VALIDATORS // Let's add validator to make sure only numbers can be entered wxTextValidator validator(wxFILTER_NUMERIC, &m_tempString); - - wxTextCtrl* wnd1 = (wxTextCtrl*) wxPGTextCtrlEditor::CreateControls( propgrid, property, pos, tcSz ).m_primary; wnd1->SetValidator(validator); +#endif return wxPGWindowList(wnd1, wnd2); } @@ -1030,7 +1033,10 @@ wxVariant wxSystemColourProperty::DoTranslateVal( wxColourPropertyValue& v ) con int wxSystemColourProperty::ColToInd( const wxColour& colour ) const { size_t i; - size_t i_max = m_choices.GetCount() - 1; + size_t i_max = m_choices.GetCount(); + + if ( !(m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) ) + i_max -= 1; for ( i=0; iIsMainButtonEvent(event) ) { // We need to handle button click in case editor has been // switched to one that has wxButton as well. + askColour = true; + } + else if ( event.GetEventType() == wxEVT_COMMAND_COMBOBOX_SELECTED ) + { + // Must override index detection since at this point GetIndex() + // will return old value. + wxOwnerDrawnComboBox* cb = + static_cast(propgrid->GetEditorControl()); + + if ( cb ) + { + int index = cb->GetSelection(); + + if ( index == GetCustomColourIndex() && + !(m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) ) + askColour = true; + } + } + + if ( askColour && !propgrid->WasValueChangedInEvent() ) + { wxVariant variant; if ( QueryColourFromUser(variant) ) return true; @@ -1306,8 +1340,10 @@ void wxSystemColourProperty::OnCustomPaint( wxDC& dc, const wxRect& rect, { wxColour col; - if ( paintdata.m_choiceItem >= 0 && paintdata.m_choiceItem < (int)m_choices.GetCount() && - paintdata.m_choiceItem != GetCustomColourIndex() ) + if ( paintdata.m_choiceItem >= 0 && + paintdata.m_choiceItem < (int)m_choices.GetCount() && + (paintdata.m_choiceItem != GetCustomColourIndex() || + m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) ) { int colInd = m_choices[paintdata.m_choiceItem].GetValue(); col = GetColour( colInd ); @@ -1356,6 +1392,7 @@ bool wxSystemColourProperty::StringToValue( wxVariant& value, const wxString& te colourRGB.clear(); if ( colourRGB.length() == 0 && m_choices.GetCount() && + !(m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) && colourName == m_choices.GetLabel(GetCustomColourIndex()) ) { if ( !(argFlags & wxPG_EDITABLE_VALUE ))