Update of /cvsroot/decaldev/source/DecalControls
In directory usw-pr-cvs1:/tmp/cvs-serv13489
Modified Files:
List.h List.cpp
Log Message:
Updated to include cynica_l's fixes to the List control colouring
Index: List.h
===================================================================
RCS file: /cvsroot/decaldev/source/DecalControls/List.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** List.h 17 Feb 2002 04:42:01 -0000 1.6
--- List.h 7 Aug 2002 23:05:29 -0000 1.7
***************
*** 46,51 ****
*m_pEndData;
bool m_bInvalid;
! std::map<long, long> m_colors;
!
explicit cRow( long nDataWidth );
cRow( const cRow &row );
--- 46,51 ----
*m_pEndData;
bool m_bInvalid;
! mutable long *m_colors; /* cyn - 07/08/2002 */
!
explicit cRow( long nDataWidth );
cRow( const cRow &row );
Index: List.cpp
===================================================================
RCS file: /cvsroot/decaldev/source/DecalControls/List.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** List.cpp 17 Feb 2002 04:42:01 -0000 1.15
--- List.cpp 7 Aug 2002 23:05:29 -0000 1.16
***************
*** 18,25 ****
: m_pData( new VARIANT[ nDataWidth ] ),
m_pEndData( m_pData + nDataWidth ),
! m_bInvalid( true )
{
for( VARIANT *i_var = m_pData; i_var != m_pEndData; ++ i_var )
::VariantInit( i_var );
}
--- 18,27 ----
: m_pData( new VARIANT[ nDataWidth ] ),
m_pEndData( m_pData + nDataWidth ),
! m_bInvalid( true ),
! m_colors( NULL ) /* cyn - 07/08/2002 */
{
for( VARIANT *i_var = m_pData; i_var != m_pEndData; ++ i_var )
::VariantInit( i_var );
+
}
***************
*** 27,31 ****
: m_pData( row.m_pData ),
m_pEndData( row.m_pEndData ),
! m_bInvalid( row.m_bInvalid )
{
_ASSERTE( _CrtIsValidHeapPointer( m_pData ) );
--- 29,35 ----
: m_pData( row.m_pData ),
m_pEndData( row.m_pEndData ),
! m_bInvalid( row.m_bInvalid ),
! m_colors( row.m_colors ) /* cyn - 07/08/2002 -- This is the real fix, the rest of */
! /* the changes just make it faster */
{
_ASSERTE( _CrtIsValidHeapPointer( m_pData ) );
***************
*** 46,54 ****
delete[] m_pData;
}
}
cList::cRow &cList::cRow::operator =( const cRow &row )
{
! // Clear out our current data - if any
if( m_pData != NULL )
{
--- 50,64 ----
delete[] m_pData;
}
+
+ if (m_colors) { /* cyn - 07/08/2002 */
+ delete m_colors;
+ }
}
cList::cRow &cList::cRow::operator =( const cRow &row )
{
!
!
! // Clear out our current data - if any
if( m_pData != NULL )
{
***************
*** 69,75 ****
m_pEndData = row.m_pEndData;
m_bInvalid = row.m_bInvalid;
m_colors = row.m_colors;
! row.m_pData = NULL;
_ASSERTMEM( _CrtCheckMemory() );
--- 79,90 ----
m_pEndData = row.m_pEndData;
m_bInvalid = row.m_bInvalid;
+
+ if (m_colors) { /* cyn - 07/08/2002 */
+ delete m_colors;
+ }
m_colors = row.m_colors;
+ row.m_colors = NULL;
! row.m_pData = NULL;
_ASSERTMEM( _CrtCheckMemory() );
***************
*** 500,510 ****
STDMETHODIMP cList::get_Color(long nX, long nY, long *pVal)
{
cRow &rowData = m_rows[nY];
! if (rowData.m_colors[nX]) {
! *pVal = rowData.m_colors[nX];
! } else {
! *pVal = 0x00FFFFFF;
! }
return S_OK;
}
--- 515,536 ----
STDMETHODIMP cList::get_Color(long nX, long nY, long *pVal)
{
+
+ if (!pVal) { /* cyn - 07/08/2002 */
+ return E_FAIL;
+ }
+
+ *pVal = 0x00FFFFFF;
cRow &rowData = m_rows[nY];
! if (nX >= m_cols.size()) {
! return E_FAIL;
! }
!
! if (rowData.m_colors) {
! if (rowData.m_colors[nX]) {
! *pVal = rowData.m_colors[nX];
! }
! }
!
return S_OK;
}
***************
*** 512,520 ****
STDMETHODIMP cList::put_Color(long nX, long nY, long newVal)
{
cRow &rowData = m_rows[nY];
- m_pSite->Invalidate();
! rowData.m_colors[nX] = newVal;
! rowData.m_bInvalid = true;
return S_OK;
--- 538,558 ----
STDMETHODIMP cList::put_Color(long nX, long nY, long newVal)
{
+ if (nX >= m_cols.size()) { /* cyn - 07/08/2002 */
+ return E_FAIL;
+ }
+
cRow &rowData = m_rows[nY];
! if (!rowData.m_colors) {
! rowData.m_colors = new long[ m_cols.size() ];
! if (!rowData.m_colors) {
! return E_OUTOFMEMORY;
! }
! }
!
! rowData.m_colors[nX] = newVal;
!
! m_pSite->Invalidate();
! rowData.m_bInvalid = true;
return S_OK;
|