#pragma hdrstop
#endif
+#if wxUSE_PROPGRID
+
#ifndef WX_PRECOMP
#include "wx/defs.h"
#include "wx/object.h"
wxVariant v;
- v = (long)0;
- wxVariantClassInfo_long = wxPGVariantDataGetClassInfo(v.GetData());
-
- v = wxString();
- wxVariantClassInfo_string = wxPGVariantDataGetClassInfo(v.GetData());
-
- v = (double)0.0;
- wxVariantClassInfo_double = wxPGVariantDataGetClassInfo(v.GetData());
-
- v = (bool)false;
- wxVariantClassInfo_bool = wxPGVariantDataGetClassInfo(v.GetData());
-
- v = wxArrayString();
- wxVariantClassInfo_arrstring = wxPGVariantDataGetClassInfo(v.GetData());
-
- wxColour col;
- wxVariant v2((wxObject*)&col);
- wxVariantClassInfo_wxobject = wxPGVariantDataGetClassInfo(v2.GetData());
-
- wxVariantList list;
- v = wxVariant(list);
- wxVariantClassInfo_list = wxPGVariantDataGetClassInfo(v.GetData());
-
- v << *wxRED;
- wxVariantClassInfo_wxColour = wxPGVariantDataGetClassInfo(v.GetData());
-
-#if wxUSE_DATETIME
- v = wxVariant(wxDateTime::Now());
- wxVariantClassInfo_datetime = wxPGVariantDataGetClassInfo(v.GetData());
-#endif
-
// Prepare some shared variants
m_vEmptyString = wxString();
m_vZero = (long) 0;
m_vFalse = false;
// Prepare cached string constants
+ m_strstring = wxS("string");
+ m_strlong = wxS("long");
+ m_strbool = wxS("bool");
+ m_strlist = wxS("list");
m_strMin = wxS("Min");
m_strMax = wxS("Max");
m_strUnits = wxS("Units");
m_validationInfo.m_failureBehavior = m_permanentValidationFailureBehavior;
- if ( !wxPGIsVariantType(pendingValue, list) )
+ if ( pendingValue.GetType() == wxPG_VARIANT_TYPE_LIST )
{
if ( !p->ValidateValue(pendingValue, m_validationInfo) )
return false;
wxVariant value;
wxPGProperty* evtChangingProperty = changedProperty;
- if ( !wxPGIsVariantType(*pPendingValue, list) )
+ if ( pPendingValue->GetType() != wxPG_VARIANT_TYPE_LIST )
{
value = *pPendingValue;
}
// If changedProperty is not property which value was edited,
// then call wxPGProperty::ValidateValue() for that as well.
- if ( p != changedProperty && !wxPGIsVariantType(value, list) )
+ if ( p != changedProperty && value.GetType() != wxPG_VARIANT_TYPE_LIST )
{
if ( !changedProperty->ValidateValue(value, m_validationInfo) )
return false;
topPaintedProperty = topPaintedProperty->GetParent();
}
- changedProperty->SetValue(value, &m_chgInfo_valueList);
+ changedProperty->SetValue(value, &m_chgInfo_valueList, wxPG_SETVAL_BY_USER);
// Set as Modified (not if dragging just began)
if ( !(p->m_flags & wxPG_PROP_MODIFIED) )
wxSize cis = p->OnMeasureImage(item);
- int choiceCount = p->GetChoiceCount();
+ int choiceCount = p->m_choices.GetCount();
int comVals = p->GetDisplayedCommonValueCount();
if ( item >= choiceCount && comVals > 0 )
{
// Call with NULL to de-select property
bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags )
{
+ wxPanel* canvas = GetPanel();
+
/*
if (p)
wxLogDebug(wxT("SelectProperty( %s (%s[%i]) )"),p->m_label.c_str(),
}
else
{
- wxScrolledWindow::SetFocus();
- m_editorFocused = 0;
+ SetFocusOnCanvas();
}
}
if ( m_wndEditor )
{
- wxASSERT_MSG( m_wndEditor->GetParent() == m_canvas,
+ wxASSERT_MSG( m_wndEditor->GetParent() == canvas,
wxT("CreateControls must use result of wxPropertyGrid::GetPanel() as parent of controls.") );
// Set validator, if any
if ( m_wndEditor2 )
{
- wxASSERT_MSG( m_wndEditor2->GetParent() == m_canvas,
+ wxASSERT_MSG( m_wndEditor2->GetParent() == canvas,
wxT("CreateControls must use result of wxPropertyGrid::GetPanel() as parent of controls.") );
// Get proper id for wndSecondary
}
else
{
- // wxGTK atleast seems to need this (wxMSW not)
- SetFocus();
+ // Make sure focus is in grid canvas (important for wxGTK, at least)
+ SetFocusOnCanvas();
}
EditorsValueWasNotModified();
DrawItems(p, p);
}
+ else
+ {
+ // Make sure focus is in grid canvas
+ SetFocusOnCanvas();
+ }
ClearInternalFlag(wxPG_FL_IN_SELECT_PROPERTY);
}
if ( !CommitChangesFromEditor(0) )
return false;
- m_canvas->SetFocusIgnoringChildren();
+ SetFocusOnCanvas();
DrawItem(m_selected);
return true;
// Need to set focus?
if ( !(m_iFlags & wxPG_FL_FOCUSED) )
{
- m_canvas->SetFocus();
+ SetFocusOnCanvas();
}
wxPropertyGridPageState* state = m_pState;
}
// -----------------------------------------------------------------------
+
+#endif // wxUSE_PROPGRID