]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/propgrid/propgridpagestate.h
don't draw borders for bitmap buttons with wxBORDER_NONE style
[wxWidgets.git] / include / wx / propgrid / propgridpagestate.h
index 2bcbab1592171713493c3b8edf197838fa612218..c6d8cde900fbfef97ae9448d5448a4aad8e4c5f2 100644 (file)
@@ -234,7 +234,8 @@ private:
     } \
     const CLASS& operator=( const CLASS& it ) \
     { \
     } \
     const CLASS& operator=( const CLASS& it ) \
     { \
-        Assign(it); \
+        if (this != &it) \
+            Assign(it); \
         return *this; \
     } \
     CLASS& operator++() { Next(); return *this; } \
         return *this; \
     } \
     CLASS& operator++() { Next(); return *this; } \
@@ -297,6 +298,15 @@ public:
         Assign(other);
     }
 
         Assign(other);
     }
 
+    /**
+        Additional assignment operator.
+    */
+    const wxPropertyGridConstIterator& operator=( const wxPropertyGridIterator& it )
+    {
+        Assign(it);
+        return *this;
+    }
+
 protected:
 };
 
 protected:
 };
 
@@ -304,28 +314,16 @@ protected:
 
 /** Base class to derive new viterators.
 */
 
 /** Base class to derive new viterators.
 */
-class WXDLLIMPEXP_PROPGRID wxPGVIteratorBase
+class WXDLLIMPEXP_PROPGRID wxPGVIteratorBase : public wxObjectRefData
 {
     friend class wxPGVIterator;
 public:
 {
     friend class wxPGVIterator;
 public:
-    wxPGVIteratorBase() { m_refCount = 1; }
+    wxPGVIteratorBase() { }
     virtual void Next() = 0;
     virtual void Next() = 0;
-    void IncRef()
-    {
-        m_refCount++;
-    }
-    void DecRef()
-    {
-        m_refCount--;
-        if ( m_refCount <= 0 )
-            delete this;
-    }
 protected:
     virtual ~wxPGVIteratorBase() { }
 
     wxPropertyGridIterator  m_it;
 protected:
     virtual ~wxPGVIteratorBase() { }
 
     wxPropertyGridIterator  m_it;
-private:
-    int     m_refCount;
 };
 
 /** @class wxPGVIterator
 };
 
 /** @class wxPGVIterator
@@ -350,9 +348,12 @@ public:
 #ifndef SWIG
     const wxPGVIterator& operator=( const wxPGVIterator& it )
     {
 #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
         return *this;
     }
 #endif
@@ -408,7 +409,7 @@ public:
         Override this member function to add custom behavior on property
         deletion.
     */
         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 );
 
 
     wxSize DoFitColumns( bool allowGridResize = false );
 
@@ -529,24 +530,13 @@ public:
                           unsigned int col,
                           bool subProps) const;
 
                           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;
 
     */
     wxPropertyGridHitTestResult HitTest( const wxPoint& pt ) const;
 
@@ -556,9 +546,6 @@ public:
 
     bool IsInNonCatMode() const { return (bool)(m_properties == m_abcArray); }
 
 
     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);
     void DoLimitPropertyEditing( wxPGProperty* p, bool limit = true )
     {
         p->SetFlagRecursively(wxPG_PROP_NOEDITOR, limit);
@@ -593,15 +580,15 @@ public:
     void DoSetPropertyValues( const wxVariantList& list,
                               wxPGProperty* default_category );
 
     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 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; }
 
 
     void SetSelection( wxPGProperty* p ) { m_selected = p; }
 
@@ -694,6 +681,10 @@ protected:
     unsigned char               m_anyModified;
 
     unsigned char               m_vhCalcPending;
     unsigned char               m_anyModified;
 
     unsigned char               m_vhCalcPending;
+
+private:
+    /** Only inits arrays, doesn't migrate things or such. */
+    void InitNonCatMode();
 };
 
 #endif // #ifndef SWIG
 };
 
 #endif // #ifndef SWIG