X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2ac06991a797c3a97e47f1f1f3ca313e17c78a10..62795f413a7222863b4aee76c08764071f94bd87:/src/propgrid/propgridpagestate.cpp diff --git a/src/propgrid/propgridpagestate.cpp b/src/propgrid/propgridpagestate.cpp index cf059678a0..b178b1b46c 100644 --- a/src/propgrid/propgridpagestate.cpp +++ b/src/propgrid/propgridpagestate.cpp @@ -4,9 +4,8 @@ // Author: Jaakko Salli // Modified by: // Created: 2008-08-24 -// RCS-ID: $Id$ // Copyright: (c) Jaakko Salli -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // For compilers that support precompilation, includes "wx/wx.h". @@ -477,9 +476,9 @@ void wxPropertyGridPageState::DoSetPropertyName( wxPGProperty* p, if ( parent->IsCategory() || parent->IsRoot() ) { - if ( p->GetBaseName().length() ) + if ( !p->GetBaseName().empty() ) m_dictName.erase( p->GetBaseName() ); - if ( newName.length() ) + if ( !newName.empty() ) m_dictName[newName] = (void*) p; } @@ -803,6 +802,27 @@ int wxPropertyGridPageState::GetColumnFitWidth(wxClientDC& dc, return maxW; } +int wxPropertyGridPageState::GetColumnFullWidth( wxClientDC &dc, wxPGProperty *p, unsigned int col ) +{ + if ( p->IsCategory() ) + return 0; + + const wxPGCell* cell = NULL; + wxString text; + p->GetDisplayInfo(col, -1, 0, &text, &cell); + int w = dc.GetTextExtent(text).x; + + if ( col == 0 ) + w += (int)p->m_depth * m_pPropGrid->m_subgroup_extramargin; + + // account for the bitmap + if ( col == 1 ) + w += p->GetImageOffset(m_pPropGrid->GetImageRect(p, -1).GetWidth()); + + w += (wxPG_XBEFORETEXT*2); + return w; +} + int wxPropertyGridPageState::DoGetSplitterPosition( int splitterColumn ) const { int n = GetGrid()->m_marginWidth; @@ -1299,13 +1319,8 @@ bool wxPropertyGridPageState::DoSetPropertyValueWxObjectPtr( wxPGProperty* p, wx bool wxPropertyGridPageState::DoIsPropertySelected( wxPGProperty* prop ) const { - const wxArrayPGProperty& selection = m_selection; - - for ( unsigned int i=0; iClearFlag( wxPG_PROP_HIDDEN ); - else - p->SetFlag( wxPG_PROP_HIDDEN ); - - if ( flags & wxPG_RECURSE ) - { - unsigned int i; - for ( i = 0; i < p->GetChildCount(); i++ ) - DoHideProperty(p->Item(i), hide, flags | wxPG_RECURSE_STARTS); - } - + p->DoHide(hide, flags); VirtualHeightChanged(); return true; } -// ----------------------------------------------------------------------- - -bool wxPropertyGridPageState::DoEnableProperty( wxPGProperty* p, bool enable ) -{ - if ( p ) - { - if ( enable ) - { - if ( !(p->m_flags & wxPG_PROP_DISABLED) ) - return false; - - // Enabling - - p->m_flags &= ~(wxPG_PROP_DISABLED); - } - else - { - if ( p->m_flags & wxPG_PROP_DISABLED ) - return false; - - // Disabling - - p->m_flags |= wxPG_PROP_DISABLED; - - } - - // Apply same to sub-properties as well - unsigned int i; - for ( i = 0; i < p->GetChildCount(); i++ ) - DoEnableProperty( p->Item(i), enable ); - - return true; - } - return false; -} - // ----------------------------------------------------------------------- // wxPropertyGridPageState wxVariant related routines // ----------------------------------------------------------------------- @@ -1550,7 +1518,7 @@ void wxPropertyGridPageState::DoSetPropertyValues( const wxVariantList& list, wx wxASSERT( wxStrcmp(current->GetClassInfo()->GetClassName(),wxT("wxVariant")) == 0 ); const wxString& name = current->GetName(); - if ( name.length() > 0 ) + if ( !name.empty() ) { // // '@' signified a special entry @@ -1609,7 +1577,7 @@ void wxPropertyGridPageState::DoSetPropertyValues( const wxVariantList& list, wx wxVariant *current = (wxVariant*)*node; const wxString& name = current->GetName(); - if ( name.length() > 0 ) + if ( !name.empty() ) { // // '@' signified a special entry @@ -1678,7 +1646,7 @@ bool wxPropertyGridPageState::PrepareToAddItem( wxPGProperty* property, { wxPropertyGrid* propGrid = m_pPropGrid; - // This will allow better behavior. + // This will allow better behaviour. if ( scheduledParent == m_properties ) scheduledParent = NULL; @@ -1774,7 +1742,7 @@ wxPGProperty* wxPropertyGridPageState::DoInsert( wxPGProperty* parent, int index bool res = PrepareToAddItem( property, (wxPropertyCategory*)parent ); - // PrepareToAddItem() may just decide to use use current category + // PrepareToAddItem() may just decide to use current category // instead of adding new one. if ( !res ) return m_currentCategory; @@ -1834,7 +1802,7 @@ wxPGProperty* wxPropertyGridPageState::DoInsert( wxPGProperty* parent, int index } // Only add name to hashmap if parent is root or category - if ( property->m_name.length() && + if ( !property->m_name.empty() && (parentIsCategory || parentIsRoot) ) m_dictName[property->m_name] = (void*) property; @@ -1971,7 +1939,7 @@ void wxPropertyGridPageState::DoDelete( wxPGProperty* item, bool doDelete ) } } - if ( item->GetBaseName().length() && + if ( !item->GetBaseName().empty() && (parent->IsCategory() || parent->IsRoot()) ) m_dictName.erase(item->GetBaseName()); @@ -1986,6 +1954,8 @@ void wxPropertyGridPageState::DoDelete( wxPGProperty* item, bool doDelete ) // We can actually delete it now if ( doDelete ) delete item; + else + item->OnDetached(this, pg); m_itemsAdded = 1; // Not a logical assignment (but required nonetheless).