X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=blobdiff_plain;f=radiant%2Ffeedback.cpp;h=80c64edf547d9532f809f9d02dab7bfb0b14965b;hp=91e62ae0e46df762508dabd1b20933187ba7812a;hb=beb511aadb29b594c5947118bfce5def636d8745;hpb=2b5ef55c7c51742f63d271e7b77c0b7e6e2ed2e5 diff --git a/radiant/feedback.cpp b/radiant/feedback.cpp index 91e62ae0..80c64edf 100644 --- a/radiant/feedback.cpp +++ b/radiant/feedback.cpp @@ -290,43 +290,49 @@ void CDbgDlg::SetHighlight(gint row) } } -ISAXHandler *CDbgDlg::GetElement (gint row) -{ - return static_cast(g_ptr_array_index(m_pFeedbackElements, row)); +ISAXHandler *CDbgDlg::GetElement( gint row ) { + return static_cast( g_ptr_array_index( m_pFeedbackElements, row ) ); } -void CDbgDlg::Init () -{ - DropHighlight(); +void CDbgDlg::ClearFeedbackArray() { + // free all the ISAXHandler*, clean it + while ( m_pFeedbackElements->len ) { + // some ISAXHandler are static and passed around but should never be deleted + ISAXHandler *handler = static_cast< ISAXHandler * >( g_ptr_array_index( m_pFeedbackElements, 0 ) ); + if ( handler->ShouldDelete() ) { + delete handler; + } + g_ptr_array_remove_index( m_pFeedbackElements, 0 ); + } +} - // free all the ISAXHandler*, clean it - while (m_pFeedbackElements->len) - { - delete static_cast(g_ptr_array_index (m_pFeedbackElements, 0)); - g_ptr_array_remove_index (m_pFeedbackElements, 0); - } +void CDbgDlg::Init() { + DropHighlight(); - if (m_clist != NULL) - gtk_list_store_clear (m_clist); -} + ClearFeedbackArray(); -void CDbgDlg::Push (ISAXHandler *pHandler) -{ - // push in the list - g_ptr_array_add (m_pFeedbackElements, (void *)pHandler); - - if (m_pWidget == NULL) - Create(); - // put stuff in the list - gtk_list_store_clear (m_clist); - for(unsigned int i = 0; i < m_pFeedbackElements->len; ++i) - { - GtkTreeIter iter; - gtk_list_store_append(m_clist, &iter); - gtk_list_store_set(m_clist, &iter, 0, GetElement(i)->getName(), -1); - } + if ( m_clist != NULL ) { + gtk_list_store_clear( m_clist ); + } +} - ShowDlg(); +void CDbgDlg::Push( ISAXHandler *pHandler ) { + // push in the list + g_ptr_array_add( m_pFeedbackElements, (void *)pHandler ); + + if ( m_pWidget == NULL ) { + Create(); + } + // put stuff in the list + gtk_list_store_clear( m_clist ); + unsigned int i; + for ( i = 0; i < m_pFeedbackElements->len; i++ ) { + GtkTreeIter iter; + gtk_list_store_append( m_clist, &iter ); + gtk_list_store_set( m_clist, &iter, 0, GetElement(i)->getName(), -1 ); + } + + ShowDlg(); } void CDbgDlg::BuildDialog ()