X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0b30bb0bda00908650d46b326ba04237f0d4121f..56b9925b116dfa58028fccb2556852f2da2ab9ac:/src/gtk1/listbox.cpp diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp index 88f951a037..a4304cfe01 100644 --- a/src/gtk1/listbox.cpp +++ b/src/gtk1/listbox.cpp @@ -8,15 +8,20 @@ ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "listbox.h" #endif -#include "wx/listbox.h" +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#include "wx/defs.h" #if wxUSE_LISTBOX +#include "wx/listbox.h" #include "wx/dynarray.h" +#include "wx/arrstr.h" #include "wx/utils.h" #include "wx/intl.h" #include "wx/checklst.h" @@ -311,6 +316,18 @@ wxListBox::wxListBox() #endif // wxUSE_CHECKLISTBOX } +bool wxListBox::Create( wxWindow *parent, wxWindowID id, + const wxPoint &pos, const wxSize &size, + const wxArrayString& choices, + long style, const wxValidator& validator, + const wxString &name ) +{ + wxCArrayString chs(choices); + + return Create( parent, id, pos, size, chs.GetCount(), chs.GetStrings(), + style, validator, name ); +} + bool wxListBox::Create( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, int n, const wxString choices[], @@ -394,10 +411,7 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id, m_parent->DoAddChild( this ); PostCreation(); - - SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_LISTBOX ) ); - SetForegroundColour( parent->GetForegroundColour() ); - SetFont( parent->GetFont() ); + InheritAttributes(); Show( TRUE ); @@ -448,7 +462,7 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos) if (index != GetCount()) { GtkAddItem( items[n], index ); - wxNode *node = m_clientList.Item( index ); + wxList::compatibility_iterator node = m_clientList.Item( index ); m_clientList.Insert( node, (wxObject*) NULL ); } else @@ -471,7 +485,7 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos) } else { - wxNode *node = m_clientList.Item( pos ); + wxList::compatibility_iterator node = m_clientList.Item( pos ); for ( size_t n = 0; n < nItems; n++ ) { GtkAddItem( items[n], pos+n ); @@ -497,7 +511,7 @@ int wxListBox::DoAppend( const wxString& item ) { GtkAddItem( item, index ); - wxNode *node = m_clientList.Item( index ); + wxList::compatibility_iterator node = m_clientList.Item( index ); m_clientList.Insert( node, (wxObject *)NULL ); return index; @@ -619,7 +633,7 @@ void wxListBox::Clear() // destroy the data (due to Robert's idea of using wxList // and not wxList we can't just say // m_clientList.DeleteContents(TRUE) - this would crash! - wxNode *node = m_clientList.GetFirst(); + wxList::compatibility_iterator node = m_clientList.GetFirst(); while ( node ) { delete (wxClientData *)node->GetData(); @@ -644,7 +658,7 @@ void wxListBox::Delete( int n ) gtk_list_remove_items( m_list, list ); g_list_free( list ); - wxNode *node = m_clientList.Item( n ); + wxList::compatibility_iterator node = m_clientList.Item( n ); if ( node ) { if ( m_clientDataItemsType == wxClientData_Object ) @@ -653,7 +667,7 @@ void wxListBox::Delete( int n ) delete cd; } - m_clientList.DeleteNode( node ); + m_clientList.Erase( node ); } if ( m_strings ) @@ -668,7 +682,7 @@ void wxListBox::DoSetItemClientData( int n, void* clientData ) { wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") ); - wxNode *node = m_clientList.Item( n ); + wxList::compatibility_iterator node = m_clientList.Item( n ); wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientData") ); node->SetData( (wxObject*) clientData ); @@ -678,7 +692,7 @@ void* wxListBox::DoGetItemClientData( int n ) const { wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid listbox control") ); - wxNode *node = m_clientList.Item( n ); + wxList::compatibility_iterator node = m_clientList.Item( n ); wxCHECK_MSG( node, NULL, wxT("invalid index in wxListBox::DoGetItemClientData") ); return node->GetData(); @@ -688,7 +702,7 @@ void wxListBox::DoSetItemClientObject( int n, wxClientData* clientData ) { wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") ); - wxNode *node = m_clientList.Item( n ); + wxList::compatibility_iterator node = m_clientList.Item( n ); wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientObject") ); // wxItemContainer already deletes data for us @@ -700,7 +714,7 @@ wxClientData* wxListBox::DoGetItemClientObject( int n ) const { wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, wxT("invalid listbox control") ); - wxNode *node = m_clientList.Item( n ); + wxList::compatibility_iterator node = m_clientList.Item( n ); wxCHECK_MSG( node, (wxClientData *)NULL, wxT("invalid index in wxListBox::DoGetItemClientObject") ); @@ -958,6 +972,8 @@ GtkWidget *wxListBox::GetConnectWidget() bool wxListBox::IsOwnGtkWindow( GdkWindow *window ) { + if (m_widget->window == window) return TRUE; + if (GTK_WIDGET(m_list)->window == window) return TRUE; GList *child = m_list->children; @@ -1037,8 +1053,8 @@ void wxListBox::OnInternalIdle() } } - if (wxUpdateUIEvent::CanUpdate()) - UpdateWindowUI(); + if (wxUpdateUIEvent::CanUpdate(this)) + UpdateWindowUI(wxUPDATE_UI_FROMIDLE); } wxSize wxListBox::DoGetBestSize() const