X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1621f192d95b44c5909a788b8f1fe9e9c381df72..6cab4fcac7fe26d9ae5a1d29066e0893d689bb38:/src/propgrid/propgrid.cpp?ds=sidebyside diff --git a/src/propgrid/propgrid.cpp b/src/propgrid/propgrid.cpp index 40e2383b6b..764f7e820e 100644 --- a/src/propgrid/propgrid.cpp +++ b/src/propgrid/propgrid.cpp @@ -92,16 +92,16 @@ //#define wxPG_TEXT_INDENT 4 // For the wxComboControl -#define wxPG_ALLOW_CLIPPING 1 // If 1, GetUpdateRegion() in OnPaint event handler is not ignored +//#define wxPG_ALLOW_CLIPPING 1 // If 1, GetUpdateRegion() in OnPaint event handler is not ignored #define wxPG_GUTTER_DIV 3 // gutter is max(iconwidth/gutter_div,gutter_min) #define wxPG_GUTTER_MIN 3 // gutter before and after image of [+] or [-] #define wxPG_YSPACING_MIN 1 #define wxPG_DEFAULT_VSPACING 2 // This matches .NET propertygrid's value, // but causes normal combobox to spill out under MSW -#define wxPG_OPTIMAL_WIDTH 200 // Arbitrary +//#define wxPG_OPTIMAL_WIDTH 200 // Arbitrary -#define wxPG_MIN_SCROLLBAR_WIDTH 10 // Smallest scrollbar width on any platform +//#define wxPG_MIN_SCROLLBAR_WIDTH 10 // Smallest scrollbar width on any platform // Must be larger than largest control border // width * 2. @@ -111,7 +111,7 @@ //#define wxPG_NAT_CHOICE_BORDER_ANY 0 -#define wxPG_HIDER_BUTTON_HEIGHT 25 +//#define wxPG_HIDER_BUTTON_HEIGHT 25 #define wxPG_PIXELS_PER_UNIT m_lineHeight @@ -119,7 +119,7 @@ #define m_iconHeight m_iconWidth #endif -#define wxPG_TOOLTIP_DELAY 1000 +//#define wxPG_TOOLTIP_DELAY 1000 // ----------------------------------------------------------------------- @@ -154,7 +154,7 @@ public: IMPLEMENT_DYNAMIC_CLASS(wxPGGlobalVarsClassManager, wxModule) -wxPGGlobalVarsClass* wxPGGlobalVars = (wxPGGlobalVarsClass*) NULL; +wxPGGlobalVarsClass* wxPGGlobalVars = NULL; wxPGGlobalVarsClass::wxPGGlobalVarsClass() @@ -164,7 +164,7 @@ wxPGGlobalVarsClass::wxPGGlobalVarsClass() m_boolChoices.Add(_("False")); m_boolChoices.Add(_("True")); - m_fontFamilyChoices = (wxPGChoices*) NULL; + m_fontFamilyChoices = NULL; m_defaultRenderer = new wxPGDefaultRenderer(); @@ -454,14 +454,15 @@ void wxPropertyGrid::Init1() wxPropertyGrid::RegisterDefaultEditors(); m_iFlags = 0; - m_pState = (wxPropertyGridPageState*) NULL; - m_wndEditor = m_wndEditor2 = (wxWindow*) NULL; - m_selected = (wxPGProperty*) NULL; + m_pState = NULL; + m_wndEditor = m_wndEditor2 = NULL; + m_selected = NULL; m_selColumn = -1; - m_propHover = (wxPGProperty*) NULL; + m_propHover = NULL; m_eventObject = this; - m_curFocused = (wxWindow*) NULL; + m_curFocused = NULL; m_tlwHandler = NULL; + m_sortFunction = NULL; m_inDoPropertyChanged = 0; m_inCommitChangesFromEditor = 0; m_inDoSelectProperty = 0; @@ -487,7 +488,7 @@ void wxPropertyGrid::Init1() m_canvas = NULL; #if wxPG_DOUBLE_BUFFER - m_doubleBuffer = (wxBitmap*) NULL; + m_doubleBuffer = NULL; #endif #ifndef wxPG_ICON_WIDTH @@ -642,7 +643,7 @@ wxPropertyGrid::~wxPropertyGrid() delete m_doubleBuffer; #endif - //m_selected = (wxPGProperty*) NULL; + //m_selected = NULL; if ( m_iFlags & wxPG_FL_CREATEDSTATE ) delete m_pState; @@ -727,7 +728,7 @@ void wxPropertyGrid::SetWindowStyleFlag( long style ) // // Tooltips disabled // - m_canvas->SetToolTip( (wxToolTip*) NULL ); + m_canvas->SetToolTip( NULL ); } #endif } @@ -959,8 +960,6 @@ static int wxPGGetColAvg( const wxColour& col ) void wxPropertyGrid::RegainColours() { - wxColour def_bgcol = wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ); - if ( !(m_coloursCustomized & 0x0002) ) { wxColour col = wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ); @@ -1181,29 +1180,11 @@ void wxPropertyGrid::PrepareAfterItemsAdded() m_pState->m_itemsAdded = 0; if ( m_windowStyle & wxPG_AUTO_SORT ) - Sort(); + Sort(wxPG_SORT_TOP_LEVEL_ONLY); RecalculateVirtualSize(); } -// ----------------------------------------------------------------------- -// wxPropertyGrid property value setting and getting -// ----------------------------------------------------------------------- - -void wxPropertyGrid::DoSetPropertyValueUnspecified( wxPGProperty* p ) -{ - m_pState->DoSetPropertyValueUnspecified(p); - DrawItemAndChildren(p); - - wxPGProperty* parent = p->GetParent(); - while ( parent && - (parent->GetFlags() & wxPG_PROP_PARENTAL_FLAGS) == wxPG_PROP_MISC_PARENT ) - { - DrawItem(parent); - parent = parent->GetParent(); - } -} - // ----------------------------------------------------------------------- // wxPropertyGrid property operations // ----------------------------------------------------------------------- @@ -1324,7 +1305,7 @@ wxString& wxPropertyGrid::ExpandEscapeSequences( wxString& dst_str, wxString& sr dst_str.clear(); - for ( ; i != src_str.end(); i++ ) + for ( ; i != src_str.end(); ++i ) { wxUniChar a = *i; @@ -1382,7 +1363,7 @@ wxString& wxPropertyGrid::CreateEscapeSequences( wxString& dst_str, wxString& sr dst_str.clear(); - for ( ; i != src_str.end(); i++ ) + for ( ; i != src_str.end(); ++i ) { wxChar a = *i; @@ -1423,7 +1404,7 @@ wxPGProperty* wxPropertyGrid::DoGetItemAtY( int y ) const { // Outside? if ( y < 0 ) - return (wxPGProperty*) NULL; + return NULL; unsigned int a = 0; return m_pState->m_properties->GetItemAtY(y, m_lineHeight, &a); @@ -1683,13 +1664,10 @@ int wxPropertyGrid::DoDrawItems( wxDC& dc, // // clipRect conversion - if ( clipRect ) - { - cr2 = *clipRect; - cr2.x -= xRelMod; - cr2.y -= yRelMod; - clipRect = &cr2; - } + cr2 = *clipRect; + cr2.x -= xRelMod; + cr2.y -= yRelMod; + clipRect = &cr2; firstItemTopY -= yRelMod; lastItemBottomY -= yRelMod; } @@ -1701,7 +1679,7 @@ int wxPropertyGrid::DoDrawItems( wxDC& dc, const wxFont& normalfont = m_font; - bool reallyFocused = (m_iFlags & wxPG_FL_FOCUSED) ? true : false; + bool reallyFocused = (m_iFlags & wxPG_FL_FOCUSED) != 0; bool isEnabled = IsEnabled(); @@ -1839,10 +1817,10 @@ int wxPropertyGrid::DoDrawItems( wxDC& dc, } else { - renderFlags |= wxPGCellRenderer::Selected; + renderFlags |= wxPGCellRenderer::Selected; - if ( !p->IsCategory() ) - { + if ( !p->IsCategory() ) + { renderFlags |= wxPGCellRenderer::DontUseCellFgCol | wxPGCellRenderer::DontUseCellBgCol; @@ -1936,7 +1914,8 @@ int wxPropertyGrid::DoDrawItems( wxDC& dc, unsigned int ci; int cellX = x + 1; - int nextCellWidth = state->m_colWidths[0]; + int nextCellWidth = state->m_colWidths[0] - + (greyDepthX - m_marginWidth); wxRect cellRect(greyDepthX+1, y, 0, rowHeight-1); int textXAdd = textMarginHere - greyDepthX; @@ -2039,7 +2018,7 @@ wxRect wxPropertyGrid::GetPropertyRect( const wxPGProperty* p1, const wxPGProper if ( m_width < 10 || m_height < 10 || !m_pState->m_properties->GetChildCount() || - p1 == (wxPGProperty*) NULL ) + p1 == NULL ) return wxRect(0,0,0,0); int vy = 0; @@ -2135,11 +2114,9 @@ void wxPropertyGrid::DrawItemAndChildren( wxPGProperty* p ) if ( m_pState->m_itemsAdded || m_frozen ) return; - wxWindow* wndPrimary = GetEditorControl(); - // Update child control. if ( m_selected && m_selected->GetParent() == p ) - m_selected->UpdateControl(wndPrimary); + RefreshEditor(); const wxPGProperty* lastDrawn = p->GetLastVisibleSubItem(); @@ -2272,7 +2249,7 @@ void wxPropertyGrid::SwitchState( wxPropertyGridPageState* pNewState ) pNewState->OnClientWidthChange( pgWidth, pgWidth - pNewState->m_width ); } - m_propHover = (wxPGProperty*) NULL; + m_propHover = NULL; // If necessary, convert state to correct mode. if ( orig_mode != new_state_mode ) @@ -2283,8 +2260,7 @@ void wxPropertyGrid::SwitchState( wxPropertyGridPageState* pNewState ) else if ( !m_frozen ) { // Refresh, if not frozen. - if ( m_pState->m_itemsAdded ) - PrepareAfterItemsAdded(); + m_pState->PrepareAfterItemsAdded(); // Reselect if ( m_pState->m_selected ) @@ -2299,24 +2275,6 @@ void wxPropertyGrid::SwitchState( wxPropertyGridPageState* pNewState ) // ----------------------------------------------------------------------- -void wxPropertyGrid::SortChildren( wxPGPropArg id ) -{ - wxPG_PROP_ARG_CALL_PROLOG() - - m_pState->SortChildren( p ); -} - -// ----------------------------------------------------------------------- - -void wxPropertyGrid::Sort() -{ - ClearSelection(false); // This must be before state clear - - m_pState->Sort(); -} - -// ----------------------------------------------------------------------- - // Call to SetSplitterPosition will always disable splitter auto-centering // if parent window is shown. void wxPropertyGrid::DoSetSplitterPosition_( int newxpos, bool refresh, int splitterIndex, bool allPages ) @@ -2393,7 +2351,7 @@ bool wxPropertyGrid::CommitChangesFromEditor( wxUint32 flags ) // Don't do this if already processing editor event. It might // induce recursive dialogs and crap like that. - if ( m_iFlags & wxPG_FL_IN_ONCUSTOMEDITOREVENT ) + if ( m_iFlags & wxPG_FL_IN_HANDLECUSTOMEDITOREVENT ) { if ( m_inDoPropertyChanged ) return true; @@ -2645,6 +2603,29 @@ void wxPropertyGrid::DoShowPropertyError( wxPGProperty* WXUNUSED(property), cons // ----------------------------------------------------------------------- +bool wxPropertyGrid::OnValidationFailure( wxPGProperty* property, + wxVariant& invalidValue ) +{ + wxWindow* editor = GetEditorControl(); + + // First call property's handler + property->OnValidationFailure(invalidValue); + + bool res = DoOnValidationFailure(property, invalidValue); + + // + // For non-wxTextCtrl editors, we do need to revert the value + if ( !editor->IsKindOf(CLASSINFO(wxTextCtrl)) && + property == m_selected ) + { + property->GetEditorClass()->UpdateControl(property, editor); + } + + property->SetFlag(wxPG_PROP_INVALID_VALUE); + + return res; +} + bool wxPropertyGrid::DoOnValidationFailure( wxPGProperty* property, wxVariant& WXUNUSED(invalidValue) ) { int vfb = m_validationInfo.m_failureBehavior; @@ -2795,8 +2776,7 @@ bool wxPropertyGrid::DoPropertyChanged( wxPGProperty* p, unsigned int selFlags ) // control. if ( selFlags & wxPG_SEL_DIALOGVAL ) { - if ( editor ) - p->GetEditorClass()->UpdateControl(p, editor); + RefreshEditor(); } else { @@ -2884,27 +2864,7 @@ bool wxPropertyGrid::DoEditorValidate() // ----------------------------------------------------------------------- -bool wxPropertyGrid::ProcessEvent(wxEvent& event) -{ - wxWindow* wnd = (wxWindow*) event.GetEventObject(); - if ( wnd && wnd->IsKindOf(CLASSINFO(wxWindow)) ) - { - wxWindow* parent = wnd->GetParent(); - - if ( parent && - (parent == m_canvas || - parent->GetParent() == m_canvas) ) - { - OnCustomEditorEvent(event); - return true; - } - } - return wxPanel::ProcessEvent(event); -} - -// ----------------------------------------------------------------------- - -void wxPropertyGrid::OnCustomEditorEvent( wxEvent &event ) +void wxPropertyGrid::HandleCustomEditorEvent( wxEvent &event ) { wxPGProperty* selected = m_selected; @@ -2913,7 +2873,7 @@ void wxPropertyGrid::OnCustomEditorEvent( wxEvent &event ) if ( !selected ) return; - if ( m_iFlags & wxPG_FL_IN_ONCUSTOMEDITOREVENT ) + if ( m_iFlags & wxPG_FL_IN_HANDLECUSTOMEDITOREVENT ) return; wxVariant pendingValue(selected->GetValueRef()); @@ -2943,7 +2903,7 @@ void wxPropertyGrid::OnCustomEditorEvent( wxEvent &event ) m_prevTcValue = newTcValue; } - SetInternalFlag(wxPG_FL_IN_ONCUSTOMEDITOREVENT); + SetInternalFlag(wxPG_FL_IN_HANDLECUSTOMEDITOREVENT); bool validationFailure = false; bool buttonWasHandled = false; @@ -3043,7 +3003,7 @@ void wxPropertyGrid::OnCustomEditorEvent( wxEvent &event ) } } - ClearInternalFlag(wxPG_FL_IN_ONCUSTOMEDITOREVENT); + ClearInternalFlag(wxPG_FL_IN_HANDLECUSTOMEDITOREVENT); } // ----------------------------------------------------------------------- @@ -3168,9 +3128,37 @@ void wxPropertyGrid::CustomSetCursor( int type, bool override ) } // ----------------------------------------------------------------------- -// wxPropertyGrid property selection +// wxPropertyGrid property selection, editor creation // ----------------------------------------------------------------------- +// +// This class forwards events from property editor controls to wxPropertyGrid. +class wxPropertyGridEditorEventForwarder : public wxEvtHandler +{ +public: + wxPropertyGridEditorEventForwarder( wxPropertyGrid* propGrid ) + : wxEvtHandler(), m_propGrid(propGrid) + { + } + + virtual ~wxPropertyGridEditorEventForwarder() + { + } + +private: + bool ProcessEvent( wxEvent& event ) + { + // Always skip + event.Skip(); + + m_propGrid->HandleCustomEditorEvent(event); + + return wxEvtHandler::ProcessEvent(event); + } + + wxPropertyGrid* m_propGrid; +}; + // Setups event handling for child control void wxPropertyGrid::SetupChildEventHandling( wxWindow* argWnd ) { @@ -3198,6 +3186,10 @@ void wxPropertyGrid::SetupChildEventHandling( wxWindow* argWnd ) NULL, this); } + wxPropertyGridEditorEventForwarder* forwarder; + forwarder = new wxPropertyGridEditorEventForwarder(this); + argWnd->PushEventHandler(forwarder); + argWnd->Connect(id, wxEVT_KEY_DOWN, wxCharEventHandler(wxPropertyGrid::OnChildKeyDown), NULL, this); @@ -3227,16 +3219,20 @@ void wxPropertyGrid::FreeEditors() // Do not free editors immediately if processing events if ( m_wndEditor2 ) { + wxEvtHandler* handler = m_wndEditor2->PopEventHandler(false); m_wndEditor2->Hide(); + wxPendingDelete.Append( handler ); wxPendingDelete.Append( m_wndEditor2 ); - m_wndEditor2 = (wxWindow*) NULL; + m_wndEditor2 = NULL; } if ( m_wndEditor ) { + wxEvtHandler* handler = m_wndEditor->PopEventHandler(false); m_wndEditor->Hide(); + wxPendingDelete.Append( handler ); wxPendingDelete.Append( m_wndEditor ); - m_wndEditor = (wxWindow*) NULL; + m_wndEditor = NULL; } } @@ -3290,7 +3286,7 @@ bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) FreeEditors(); // Prevent any further selection measures in this call - p = (wxPGProperty*) NULL; + p = NULL; } else { @@ -3341,8 +3337,8 @@ bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) FreeEditors(); m_selColumn = -1; - m_selected = (wxPGProperty*) NULL; - m_pState->m_selected = (wxPGProperty*) NULL; + m_selected = NULL; + m_pState->m_selected = NULL; // We need to always fully refresh the grid here Refresh(false); @@ -3367,10 +3363,7 @@ bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) if ( p != prev ) m_iFlags &= ~(wxPG_FL_VALIDATION_FAILED); - wxASSERT( m_wndEditor == (wxWindow*) NULL ); - - // Do we need OnMeasureCalls? - wxSize imsz = p->OnMeasureImage(); + wxASSERT( m_wndEditor == NULL ); // // Only create editor for non-disabled non-caption @@ -3569,7 +3562,7 @@ bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) if ( !(GetExtraStyle() & wxPG_EX_HELP_AS_TOOLTIPS) ) { - wxStatusBar* statusbar = (wxStatusBar*) NULL; + wxStatusBar* statusbar = NULL; if ( !(m_iFlags & wxPG_FL_NOSTATUSBARHELP) ) { wxFrame* frame = wxDynamicCast(::wxGetTopLevelParent(this),wxFrame); @@ -3630,11 +3623,41 @@ bool wxPropertyGrid::UnfocusEditor() // ----------------------------------------------------------------------- +void wxPropertyGrid::RefreshEditor() +{ + wxPGProperty* p = m_selected; + if ( !p ) + return; + + wxWindow* wnd = GetEditorControl(); + if ( !wnd ) + return; + + // Set editor font boldness - must do this before + // calling UpdateControl(). + if ( HasFlag(wxPG_BOLD_MODIFIED) ) + { + if ( p->HasFlag(wxPG_PROP_MODIFIED) ) + wnd->SetFont(GetCaptionFont()); + else + wnd->SetFont(GetFont()); + } + + const wxPGEditor* editorClass = p->GetEditorClass(); + + editorClass->UpdateControl(p, wnd); + + if ( p->IsValueUnspecified() ) + editorClass ->SetValueToUnspecified(p, wnd); +} + +// ----------------------------------------------------------------------- + // This method is not inline because it called dozens of times // (i.e. two-arg function calls create smaller code size). bool wxPropertyGrid::DoClearSelection() { - return DoSelectProperty((wxPGProperty*)NULL); + return DoSelectProperty(NULL); } // ----------------------------------------------------------------------- @@ -3717,7 +3740,7 @@ bool wxPropertyGrid::DoExpand( wxPGProperty* p, bool sendEvents ) } // Clear dont-center-splitter flag if it wasn't set - m_iFlags = m_iFlags & ~(wxPG_FL_DONT_CENTER_SPLITTER) | old_flag; + m_iFlags = (m_iFlags & ~wxPG_FL_DONT_CENTER_SPLITTER) | old_flag; return res; } @@ -3767,8 +3790,7 @@ void wxPropertyGrid::RecalculateVirtualSize( int forceXPos ) if ( by1 != by2 ) { wxString s = wxString::Format(wxT("VirtualHeight=%i, ActualVirtualHeight=%i, should match!"), by1, by2); - wxASSERT_MSG( false, - s.c_str() ); + wxFAIL_MSG(s.c_str()); wxLogDebug(s); } #endif @@ -4214,9 +4236,9 @@ bool wxPropertyGrid::HandleMouseMove( int x, unsigned int y, wxMouseEvent &event int curPropHoverY = y - (y % ih); // On which item it hovers - if ( ( !m_propHover ) + if ( !m_propHover || - ( m_propHover && ( sy < m_propHoverY || sy >= (m_propHoverY+ih) ) ) + ( sy < m_propHoverY || sy >= (m_propHoverY+ih) ) ) { // Mouse moves on another property @@ -4328,8 +4350,7 @@ bool wxPropertyGrid::HandleMouseMove( int x, unsigned int y, wxMouseEvent &event // (also not if we were dragging and its started // outside the splitter region) - if ( m_propHover && - !m_propHover->IsCategory() && + if ( !m_propHover->IsCategory() && !event.Dragging() ) { @@ -4442,7 +4463,7 @@ bool wxPropertyGrid::OnMouseCommon( wxMouseEvent& event, int* px, int* py ) wxRect r; if ( wnd ) r = wnd->GetRect(); - if ( wnd == (wxWindow*) NULL || m_dragStatus || + if ( wnd == NULL || m_dragStatus || ( ux <= (splitterX + wxPG_SPLITTERX_DETECTMARGIN2) || ux >= (r.x+r.width) || @@ -4704,7 +4725,7 @@ void wxPropertyGrid::ClearActionTriggers( int action ) { wxPGHashMapI2I::iterator it; - for ( it = m_actionTriggers.begin(); it != m_actionTriggers.end(); it++ ) + for ( it = m_actionTriggers.begin(); it != m_actionTriggers.end(); ++it ) { if ( it->second == action ) { @@ -4719,9 +4740,7 @@ void wxPropertyGrid::HandleKeyEvent( wxKeyEvent &event, bool fromChild ) // Handles key event when editor control is not focused. // - wxASSERT( !m_frozen ); - if ( m_frozen ) - return; + wxCHECK2(!m_frozen, return); // Travelsal between items, collapsing/expanding, etc. int keycode = event.GetKeyCode(); @@ -4813,6 +4832,11 @@ void wxPropertyGrid::HandleKeyEvent( wxKeyEvent &event, bool fromChild ) // Except for TAB and ESC, handle child control events in child control if ( fromChild ) { + // Only propagate event if it had modifiers + if ( !event.HasModifiers() ) + { + event.StopPropagation(); + } event.Skip(); return; } @@ -4886,6 +4910,19 @@ void wxPropertyGrid::HandleKeyEvent( wxKeyEvent &event, bool fromChild ) void wxPropertyGrid::OnKey( wxKeyEvent &event ) { + // If there was editor open and focused, then this event should not + // really be processed here. + if ( IsEditorFocused() ) + { + // However, if event had modifiers, it is probably still best + // to skip it. + if ( event.HasModifiers() ) + event.Skip(); + else + event.StopPropagation(); + return; + } + HandleKeyEvent(event, false); } @@ -5091,7 +5128,7 @@ wxPGEditor* wxPropertyGrid::RegisterEditorClass( wxPGEditor* editorClass, // Use this in RegisterDefaultEditors. #define wxPGRegisterDefaultEditorClass(EDITOR) \ - if ( wxPGEditor_##EDITOR == (wxPGEditor*) NULL ) \ + if ( wxPGEditor_##EDITOR == NULL ) \ { \ wxPGEditor_##EDITOR = wxPropertyGrid::RegisterEditorClass( \ new wxPG##EDITOR##Editor, true ); \ @@ -5162,7 +5199,7 @@ bool wxPGStringTokenizer::HasMoreTokens() } else { - i++; + ++i; m_curPos = i; return true; } @@ -5174,7 +5211,7 @@ bool wxPGStringTokenizer::HasMoreTokens() prev_a = wxT('\0'); } } - i++; + ++i; } m_curPos = str.end(); @@ -5492,15 +5529,15 @@ void wxPGChoices::Free() IMPLEMENT_DYNAMIC_CLASS(wxPropertyGridEvent, wxCommandEvent) -DEFINE_EVENT_TYPE( wxEVT_PG_SELECTED ) -DEFINE_EVENT_TYPE( wxEVT_PG_CHANGING ) -DEFINE_EVENT_TYPE( wxEVT_PG_CHANGED ) -DEFINE_EVENT_TYPE( wxEVT_PG_HIGHLIGHTED ) -DEFINE_EVENT_TYPE( wxEVT_PG_RIGHT_CLICK ) -DEFINE_EVENT_TYPE( wxEVT_PG_PAGE_CHANGED ) -DEFINE_EVENT_TYPE( wxEVT_PG_ITEM_EXPANDED ) -DEFINE_EVENT_TYPE( wxEVT_PG_ITEM_COLLAPSED ) -DEFINE_EVENT_TYPE( wxEVT_PG_DOUBLE_CLICK ) +wxDEFINE_EVENT( wxEVT_PG_SELECTED, wxPropertyGridEvent ) +wxDEFINE_EVENT( wxEVT_PG_CHANGING, wxPropertyGridEvent ) +wxDEFINE_EVENT( wxEVT_PG_CHANGED, wxPropertyGridEvent ) +wxDEFINE_EVENT( wxEVT_PG_HIGHLIGHTED, wxPropertyGridEvent ) +wxDEFINE_EVENT( wxEVT_PG_RIGHT_CLICK, wxPropertyGridEvent ) +wxDEFINE_EVENT( wxEVT_PG_PAGE_CHANGED, wxPropertyGridEvent ) +wxDEFINE_EVENT( wxEVT_PG_ITEM_EXPANDED, wxPropertyGridEvent ) +wxDEFINE_EVENT( wxEVT_PG_ITEM_COLLAPSED, wxPropertyGridEvent ) +wxDEFINE_EVENT( wxEVT_PG_DOUBLE_CLICK, wxPropertyGridEvent ) // ----------------------------------------------------------------------- @@ -5685,7 +5722,7 @@ wxPGChoices wxPropertyGridPopulator::ParseChoices( const wxString& choicesString int state = 0; bool labelValid = false; - for ( ; it != choicesString.end(); it++ ) + for ( ; it != choicesString.end(); ++it ) { wxChar c = *it;