From: Jaakko Salli Date: Mon, 9 May 2011 19:44:40 +0000 (+0000) Subject: Fixed a bug: Disabling a property didn't work properly if a child item was selected. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/a6ca624a270e4dae1dfa6f47c96e2ee935a42fa1?ds=inline Fixed a bug: Disabling a property didn't work properly if a child item was selected. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67719 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/changes.txt b/docs/changes.txt index aa234eac28..7adc9b8930 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -526,6 +526,8 @@ All (GUI): - Added support for saving TGA files. - Added wxArtProvider returning higher quality icons from Tango project. - wxPropertyGrid: Added "HasAlpha" attribute for wxColourProperty. +- wxPropertyGrid: Disabling a property didn't work properly if a child item + was selected (Sébastien Gallou). - Added support for saving PNG files with palette (troelsk). - Added support for saving as GIF and animated GIF (troelsk). - Fix wxWrapSizer minimal size calculation (Catalin Raceanu). diff --git a/include/wx/propgrid/property.h b/include/wx/propgrid/property.h index 106e6ee0f1..101cb91e60 100644 --- a/include/wx/propgrid/property.h +++ b/include/wx/propgrid/property.h @@ -2387,6 +2387,11 @@ protected: void InitAfterAdded( wxPropertyGridPageState* pageState, wxPropertyGrid* propgrid ); + /** + Returns true if child property is selected. + */ + bool IsChildSelected() const; + // Removes child property with given pointer. Does not delete it. void RemoveChild( wxPGProperty* p ); diff --git a/src/propgrid/property.cpp b/src/propgrid/property.cpp index 6a35823d03..3ec89352eb 100644 --- a/src/propgrid/property.cpp +++ b/src/propgrid/property.cpp @@ -2569,6 +2569,18 @@ void wxPGProperty::DeleteChildren() } } +bool wxPGProperty::IsChildSelected() const +{ + size_t i; + for ( i = 0; i < GetChildCount(); i++ ) + { + if ( m_parentState->DoIsPropertySelected( Item(i) ) ) + return true; + } + + return false; +} + wxVariant wxPGProperty::ChildChanged( wxVariant& WXUNUSED(thisValue), int WXUNUSED(childIndex), wxVariant& WXUNUSED(childValue) ) const diff --git a/src/propgrid/propgrid.cpp b/src/propgrid/propgrid.cpp index 26a550223a..71a918aef1 100644 --- a/src/propgrid/propgrid.cpp +++ b/src/propgrid/propgrid.cpp @@ -2600,7 +2600,7 @@ void wxPropertyGrid::DrawItems( const wxPGProperty* p1, const wxPGProperty* p2 ) void wxPropertyGrid::RefreshProperty( wxPGProperty* p ) { - if ( m_pState->DoIsPropertySelected(p) ) + if ( m_pState->DoIsPropertySelected(p) || p->IsChildSelected() ) { // NB: We must copy the selection. wxArrayPGProperty selection = m_pState->m_selection;