#include "wx/msw/dc.h"
#endif
+#include "wx/odcombo.h"
+
// -----------------------------------------------------------------------
#if defined(__WXMSW__)
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);
}
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; i<i_max; i++ )
{
return;
}
- if ( cpv.m_type < wxPG_COLOUR_WEB_BASE )
+ if ( cpv.m_type < wxPG_COLOUR_WEB_BASE ||
+ (m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) )
{
ind = GetIndexForValue(cpv.m_type);
}
ind = ColToInd(col);
- if ( ind == wxNOT_FOUND )
+ if ( ind == wxNOT_FOUND &&
+ !(m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) )
ind = GetCustomColourIndex();
}
// If custom colour was selected, use invalid index, so that
// ColourToString() will return properly formatted colour text.
- if ( index == GetCustomColourIndex() )
+ if ( index == GetCustomColourIndex() &&
+ !(m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) )
index = wxNOT_FOUND;
}
else
}
// Need to do some extra event handling.
-bool wxSystemColourProperty::OnEvent( wxPropertyGrid* propgrid, wxWindow* WXUNUSED(primary), wxEvent& event )
+bool wxSystemColourProperty::OnEvent( wxPropertyGrid* propgrid,
+ wxWindow* WXUNUSED(primary),
+ wxEvent& event )
{
+ bool askColour = false;
+
if ( propgrid->IsMainButtonEvent(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<wxOwnerDrawnComboBox*>(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;
{
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 );
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 ))