X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/020b004113a8ab9b9c42a9a56716f3a27b0a8621..86ac84b8ce086e6bbda58f422d41f84268606e35:/include/wx/propgrid/propgridpagestate.h diff --git a/include/wx/propgrid/propgridpagestate.h b/include/wx/propgrid/propgridpagestate.h index 3d6e172525..c6d8cde900 100644 --- a/include/wx/propgrid/propgridpagestate.h +++ b/include/wx/propgrid/propgridpagestate.h @@ -4,7 +4,7 @@ // Author: Jaakko Salli // Modified by: // Created: 2008-08-24 -// RCS-ID: $Id: +// RCS-ID: $Id$ // Copyright: (c) Jaakko Salli // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// @@ -234,7 +234,8 @@ private: } \ const CLASS& operator=( const CLASS& it ) \ { \ - Assign(it); \ + if (this != &it) \ + Assign(it); \ return *this; \ } \ CLASS& operator++() { Next(); return *this; } \ @@ -289,6 +290,23 @@ public: const wxPGProperty, const wxPropertyGridPageState) + /** + Additional copy constructor. + */ + wxPropertyGridConstIterator( const wxPropertyGridIterator& other ) + { + Assign(other); + } + + /** + Additional assignment operator. + */ + const wxPropertyGridConstIterator& operator=( const wxPropertyGridIterator& it ) + { + Assign(it); + return *this; + } + protected: }; @@ -296,28 +314,16 @@ protected: /** Base class to derive new viterators. */ -class WXDLLIMPEXP_PROPGRID wxPGVIteratorBase +class WXDLLIMPEXP_PROPGRID wxPGVIteratorBase : public wxObjectRefData { friend class wxPGVIterator; public: - wxPGVIteratorBase() { m_refCount = 1; } + wxPGVIteratorBase() { } virtual void Next() = 0; - void IncRef() - { - m_refCount++; - } - void DecRef() - { - m_refCount--; - if ( m_refCount <= 0 ) - delete this; - } protected: virtual ~wxPGVIteratorBase() { } wxPropertyGridIterator m_it; -private: - int m_refCount; }; /** @class wxPGVIterator @@ -342,9 +348,12 @@ public: #ifndef SWIG const wxPGVIterator& operator=( const wxPGVIterator& it ) { - UnRef(); - m_pIt = it.m_pIt; - m_pIt->IncRef(); + if (this != &it) + { + UnRef(); + m_pIt = it.m_pIt; + m_pIt->IncRef(); + } return *this; } #endif @@ -400,7 +409,7 @@ public: Override this member function to add custom behavior on property deletion. */ - virtual void DoDelete( wxPGProperty* item ); + virtual void DoDelete( wxPGProperty* item, bool doDelete = true ); wxSize DoFitColumns( bool allowGridResize = false ); @@ -463,7 +472,7 @@ public: unsigned int GetColumnCount() const { - return m_colWidths.size(); + return (unsigned int) m_colWidths.size(); } wxPGProperty* GetSelection() const @@ -521,24 +530,13 @@ public: unsigned int col, bool subProps) const; - /** Returns information about arbitrary position in the grid. - - wxPropertyGridHitTestResult definition: - @code - struct wxPropertyGridHitTestResult - { - wxPGProperty* GetProperty() const; - - // column. -1 for margin - int column; - - // Index of splitter hit, -1 for none. - int splitter; + /** + Returns information about arbitrary position in the grid. - // If splitter hit, then offset to that. - int splitterHitOffset; - }; - @endcode + @param pt + Logical coordinates in the virtual grid space. Use + wxScrolledWindow::CalcUnscrolledPosition() if you need to + translate a scrolled position into a logical one. */ wxPropertyGridHitTestResult HitTest( const wxPoint& pt ) const; @@ -548,9 +546,6 @@ public: bool IsInNonCatMode() const { return (bool)(m_properties == m_abcArray); } - /** Only inits arrays, doesn't migrate things or such. */ - void InitNonCatMode (); - void DoLimitPropertyEditing( wxPGProperty* p, bool limit = true ) { p->SetFlagRecursively(wxPG_PROP_NOEDITOR, limit); @@ -585,15 +580,15 @@ public: void DoSetPropertyValues( const wxVariantList& list, wxPGProperty* default_category ); - void DoSetPropertyValueUnspecified( wxPGProperty* p ); - void SetSplitterLeft( bool subProps = false ); /** Set virtual width for this particular page. */ void SetVirtualWidth( int width ); - void SortChildren( wxPGProperty* p ); - void Sort(); + void DoSortChildren( wxPGProperty* p, int flags = 0 ); + void DoSort( int flags = 0 ); + + bool PrepareAfterItemsAdded(); void SetSelection( wxPGProperty* p ) { m_selected = p; } @@ -636,7 +631,7 @@ protected: */ int HitTestH( int x, int* pSplitterHit, int* pSplitterHitOffset ) const; - int PrepareToAddItem ( wxPGProperty* property, + bool PrepareToAddItem( wxPGProperty* property, wxPGProperty* scheduledParent ); /** If visible, then this is pointer to wxPropertyGrid. @@ -686,6 +681,10 @@ protected: unsigned char m_anyModified; unsigned char m_vhCalcPending; + +private: + /** Only inits arrays, doesn't migrate things or such. */ + void InitNonCatMode(); }; #endif // #ifndef SWIG