Compare commits

...

2 Commits

Author SHA1 Message Date
32a8141504 Fix text selection at RichText. 2025-11-28 02:03:18 +03:00
nillerusr
ed8209cc35 fix build with clang-20 ref #389 #433 #436 fix #379 2025-11-25 06:24:23 +03:00
4 changed files with 18 additions and 11 deletions

View File

@@ -151,7 +151,7 @@ InitReturnVal_t CDataModel::Init( )
//#define _ELEMENT_HISTOGRAM_ //#define _ELEMENT_HISTOGRAM_
#ifdef _ELEMENT_HISTOGRAM_ #ifdef _ELEMENT_HISTOGRAM_
CUtlMap< UtlSymId_t, int > g_typeHistogram( 0, 100, DefLessFunc( UtlSymId_t ) ); CUtlMap< UtlSymId_t, int > g_typeHistogram( 0, 100, DefLessFunc( UtlSymId_t ) );
#endif _ELEMENT_HISTOGRAM_ #endif //_ELEMENT_HISTOGRAM_
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -166,7 +166,7 @@ void CDataModel::Shutdown()
Msg( "%d\t%s\n", g_typeHistogram.Element( i ), GetString( g_typeHistogram.Key( i ) ) ); Msg( "%d\t%s\n", g_typeHistogram.Element( i ), GetString( g_typeHistogram.Key( i ) ) );
} }
Msg( "\n" ); Msg( "\n" );
#endif _ELEMENT_HISTOGRAM_ #endif //_ELEMENT_HISTOGRAM_
int c = GetAllocatedElementCount(); int c = GetAllocatedElementCount();
if ( c > 0 ) if ( c > 0 )
@@ -1934,7 +1934,7 @@ CDmElement* CDataModel::CreateElement( const DmElementReference_t &ref, const ch
{ {
g_typeHistogram.Insert( typeSym, 1 ); g_typeHistogram.Insert( typeSym, 1 );
} }
#endif _ELEMENT_HISTOGRAM_ #endif //_ELEMENT_HISTOGRAM_
} }
return pElement; return pElement;

View File

@@ -92,7 +92,7 @@ public:
void Init( CDmElement *pOwner, const char *pAttributeName, int flags = 0 ); void Init( CDmElement *pOwner, const char *pAttributeName, int flags = 0 );
// Returns the type of elements allowed into this attribute. UTL_INVAL_SYMBOL allows everything. // Returns the type of elements allowed into this attribute. UTL_INVAL_SYMBOL allows everything.
UtlSymId_t GetElementType() const; //UtlSymId_t GetElementType() const;
// Get/set // Get/set
void Set( T* pElement ); void Set( T* pElement );
@@ -1149,11 +1149,13 @@ inline void CDmaElement<T>::Init( CDmElement *pOwner, const char *pAttributeName
} }
} }
/*
template <class T> template <class T>
inline UtlSymId_t CDmaElement<T>::GetElementType() const inline UtlSymId_t CDmaElement<T>::GetElementType() const
{ {
return this->Data().m_ElementType; return this->Data().m_ElementType;
} }
*/
template <class T> template <class T>
inline T* CDmaElement<T>::GetElement() const inline T* CDmaElement<T>::GetElement() const

View File

@@ -109,8 +109,8 @@ protected:
T** m_pMemory; T** m_pMemory;
int m_nBlocks; int m_nBlocks;
int m_nIndexMask : 27; int m_nIndexMask;
int m_nIndexShift : 5; int m_nIndexShift;
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -130,17 +130,16 @@ CUtlBlockMemory<T,I>::~CUtlBlockMemory()
Purge(); Purge();
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Fast swap // Fast swap
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template< class T, class I > template< class T, class I >
void CUtlBlockMemory<T,I>::Swap( CUtlBlockMemory< T, I > &mem ) void CUtlBlockMemory<T,I>::Swap( CUtlBlockMemory< T, I > &mem )
{ {
this->swap( m_pMemory, mem.m_pMemory ); V_swap( m_pMemory, mem.m_pMemory );
this->swap( m_nBlocks, mem.m_nBlocks ); V_swap( m_nBlocks, mem.m_nBlocks );
this->swap( m_nIndexMask, mem.m_nIndexMask ); V_swap( m_nIndexMask, mem.m_nIndexMask );
this->swap( m_nIndexShift, mem.m_nIndexShift ); V_swap( m_nIndexShift, mem.m_nIndexShift );
} }

View File

@@ -862,6 +862,12 @@ void RichText::Paint()
if ( m_LineBreaks.IsValidIndex( lineBreakIndexIndex ) && m_LineBreaks[lineBreakIndexIndex] < iLim ) if ( m_LineBreaks.IsValidIndex( lineBreakIndexIndex ) && m_LineBreaks[lineBreakIndexIndex] < iLim )
iLim = m_LineBreaks[lineBreakIndexIndex]; iLim = m_LineBreaks[lineBreakIndexIndex];
// Stop when entering or exiting the selected range
if ( i < selection0 && iLim >= selection0 )
iLim = selection0;
if ( i >= selection0 && i < selection1 && iLim >= selection1 )
iLim = selection1;
// Handle non-drawing characters specially // Handle non-drawing characters specially
for ( int iT = i; iT < iLim; iT++ ) for ( int iT = i; iT < iLim; iT++ )
{ {