X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/09777a5bb58bfa29fb8c0dfdfc0057cbdf9517d9..ae0e22dd7af3fa44819a08c21c9b478688e9d172:/src/propgrid/advprops.cpp diff --git a/src/propgrid/advprops.cpp b/src/propgrid/advprops.cpp index 52609a0bf3..c4444d6de3 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__) @@ -660,8 +662,7 @@ void wxFontProperty::OnSetValue() if ( !font.Ok() ) { - font = wxFont(10,wxSWISS,wxNORMAL,wxNORMAL); - m_value << font; + m_value << *wxNORMAL_FONT; } } @@ -712,14 +713,16 @@ void wxFontProperty::RefreshChildren() Item(5)->SetValue( font.GetUnderlined() ); } -void wxFontProperty::ChildChanged( wxVariant& thisValue, int ind, wxVariant& childValue ) const +wxVariant wxFontProperty::ChildChanged( wxVariant& thisValue, + int ind, + wxVariant& childValue ) const { wxFont font; font << thisValue; if ( ind == 0 ) { - font.SetPointSize( wxPGVariantToInt(childValue) ); + font.SetPointSize( childValue.GetLong() ); } else if ( ind == 1 ) { @@ -762,7 +765,9 @@ void wxFontProperty::ChildChanged( wxVariant& thisValue, int ind, wxVariant& chi font.SetUnderlined( childValue.GetBool() ); } - thisValue << font; + wxVariant newVariant; + newVariant << font; + return newVariant; } /* @@ -1027,7 +1032,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; @@ -1303,8 +1339,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 ); @@ -1353,6 +1391,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 )) @@ -1422,7 +1461,7 @@ bool wxSystemColourProperty::DoSetAttribute( const wxString& name, wxVariant& va { if ( name == wxPG_COLOUR_ALLOW_CUSTOM ) { - int ival = wxPGVariantToInt(value); + int ival = value.GetLong(); if ( ival && (m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) ) {