]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed uninitialized wxGridCellAttr::m_defGridAttr (patch 491231)
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 30 Dec 2001 17:22:03 +0000 (17:22 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 30 Dec 2001 17:22:03 +0000 (17:22 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13245 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/grid.h
src/generic/grid.cpp

index 7b929ad6b8743e9737c9b02c0394c50aa111d97c..0817377738268e8de2eb3caec631fbb8e33b174a 100644 (file)
@@ -583,9 +583,10 @@ public:
     };
 
     // ctors
-    wxGridCellAttr()
+    wxGridCellAttr(wxGridCellAttr *attrDefault = NULL)
     {
-        Init();
+        Init(attrDefault);
+
         // MB: args used to be 0,0 here but wxALIGN_LEFT is 0
         SetAlignment(-1, -1);
     }
@@ -664,17 +665,7 @@ private:
     };
 
     // the common part of all ctors
-    void Init()
-    {
-        m_nRef = 1;
-
-        m_isReadOnly = Unset;
-
-        m_renderer = NULL;
-        m_editor = NULL;
-
-        m_attrkind = wxGridCellAttr::Cell;
-    }
+    void Init(wxGridCellAttr *attrDefault = NULL);
 
     // the dtor is private because only DecRef() can delete us
     ~wxGridCellAttr()
index 4ff5e599b6cf7eb525404b631abca266a256b255..2dab6f5d8e66025f27c8b17eef73f7cf3662ea1e 100644 (file)
@@ -1898,9 +1898,24 @@ void wxGridCellBoolRenderer::Draw(wxGrid& grid,
 // wxGridCellAttr
 // ----------------------------------------------------------------------------
 
+void wxGridCellAttr::Init(wxGridCellAttr *attrDefault)
+{
+    m_nRef = 1;
+
+    m_isReadOnly = Unset;
+
+    m_renderer = NULL;
+    m_editor = NULL;
+
+    m_attrkind = wxGridCellAttr::Cell;
+
+    SetDefAttr(attrDefault);
+}
+
 wxGridCellAttr *wxGridCellAttr::Clone() const
 {
-    wxGridCellAttr *attr = new wxGridCellAttr;
+    wxGridCellAttr *attr = new wxGridCellAttr(m_defGridAttr);
+
     if ( HasTextColour() )
         attr->SetTextColour(GetTextColour());
     if ( HasBackgroundColour() )
@@ -1926,8 +1941,6 @@ wxGridCellAttr *wxGridCellAttr::Clone() const
 
     attr->SetKind( m_attrkind );
 
-    attr->SetDefAttr(m_defGridAttr);
-
     return attr;
 }
 
@@ -3616,8 +3629,7 @@ void wxGrid::Create()
 
     m_cellEditCtrlEnabled = FALSE;
 
-    m_defaultCellAttr = new wxGridCellAttr;
-    m_defaultCellAttr->SetDefAttr(m_defaultCellAttr);
+    m_defaultCellAttr = new wxGridCellAttr(m_defaultCellAttr);
 
     // Set default cell attributes
     m_defaultCellAttr->SetKind(wxGridCellAttr::Default);
@@ -8101,19 +8113,20 @@ wxGridCellAttr *wxGrid::GetCellAttr(int row, int col) const
 wxGridCellAttr *wxGrid::GetOrCreateCellAttr(int row, int col) const
 {
     wxGridCellAttr *attr = (wxGridCellAttr *)NULL;
-        wxASSERT_MSG( m_table,
-                      _T("we may only be called if CanHaveAttributes() returned TRUE and then m_table should be !NULL") );
 
-    attr = m_table->GetAttr(row, col, wxGridCellAttr::Cell );
-        if ( !attr )
-        {
-            attr = new wxGridCellAttr;
+    wxCHECK_MSG( m_table, attr,
+                  _T("we may only be called if CanHaveAttributes() returned TRUE and then m_table should be !NULL") );
+
+    attr = m_table->GetAttr(row, col, wxGridCellAttr::Cell);
+    if ( !attr )
+    {
+        attr = new wxGridCellAttr(m_defaultCellAttr);
+
+        // artificially inc the ref count to match DecRef() in caller
+        attr->IncRef();
+        m_table->SetAttr(attr, row, col);
+    }
 
-            // artificially inc the ref count to match DecRef() in caller
-            attr->IncRef();
-            m_table->SetAttr(attr, row, col);
-        }
-    attr->SetDefAttr(m_defaultCellAttr);
     return attr;
 }