X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e4e1487169a6403cb8bb86576c1612f46c19e34f..e8fd252ef87d8ff6409d405218ff02c91b980e0a:/src/gtk/choice.cpp?ds=sidebyside diff --git a/src/gtk/choice.cpp b/src/gtk/choice.cpp index 97129ba2f1..00170f2950 100644 --- a/src/gtk/choice.cpp +++ b/src/gtk/choice.cpp @@ -38,11 +38,9 @@ gtk_choice_changed_callback( GtkWidget *WXUNUSED(widget), wxChoice *choice ) // wxChoice //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControlWithItems) - void wxChoice::Init() { - m_strings = (wxSortedArrayString *)NULL; + m_strings = NULL; m_stringCellIndex = 0; } @@ -75,10 +73,11 @@ bool wxChoice::Create( wxWindow *parent, wxWindowID id, { // if our m_strings != NULL, Append() will check for it and insert // items in the correct order - m_strings = new wxSortedArrayString; + m_strings = new wxGtkCollatedArrayString; } m_widget = gtk_combo_box_new_text(); + g_object_ref(m_widget); Append(n, choices); @@ -128,7 +127,7 @@ int wxChoice::DoInsertItems(const wxArrayStringsAdapter & items, wxCHECK_MSG( m_widget != NULL, -1, wxT("invalid control") ); wxASSERT_MSG( !IsSorted() || (pos == GetCount()), - _T("In a sorted choice data could only be appended")); + wxT("In a sorted choice data could only be appended")); const int count = items.GetCount(); @@ -139,7 +138,7 @@ int wxChoice::DoInsertItems(const wxArrayStringsAdapter & items, n = pos + i; // If sorted, use this wxSortedArrayStrings to determine // the right insertion point - if(m_strings) + if (m_strings) n = m_strings->Add(items[i]); GTKInsertComboBoxTextItem( n, items[i] ); @@ -167,7 +166,7 @@ void wxChoice::DoClear() { wxCHECK_RET( m_widget != NULL, wxT("invalid control") ); - DisableEvents(); + GTKDisableEvents(); GtkComboBox* combobox = GTK_COMBO_BOX( m_widget ); GtkTreeModel* model = gtk_combo_box_get_model( combobox ); @@ -178,7 +177,7 @@ void wxChoice::DoClear() if (m_strings) m_strings->Clear(); - EnableEvents(); + GTKEnableEvents(); InvalidateBestSize(); } @@ -186,7 +185,7 @@ void wxChoice::DoClear() void wxChoice::DoDeleteOneItem(unsigned int n) { wxCHECK_RET( m_widget != NULL, wxT("invalid control") ); - wxCHECK_RET( IsValid(n), _T("invalid index in wxChoice::Delete") ); + wxCHECK_RET( IsValid(n), wxT("invalid index in wxChoice::Delete") ); GtkComboBox* combobox = GTK_COMBO_BOX( m_widget ); GtkTreeModel* model = gtk_combo_box_get_model( combobox ); @@ -298,12 +297,12 @@ void wxChoice::SetSelection( int n ) { wxCHECK_RET( m_widget != NULL, wxT("invalid control") ); - DisableEvents(); + GTKDisableEvents(); GtkComboBox* combobox = GTK_COMBO_BOX( m_widget ); gtk_combo_box_set_active( combobox, n ); - EnableEvents(); + GTKEnableEvents(); } void wxChoice::SetColumns(int n) @@ -320,13 +319,13 @@ int wxChoice::GetColumns() const } -void wxChoice::DisableEvents() +void wxChoice::GTKDisableEvents() { g_signal_handlers_block_by_func(m_widget, (gpointer) gtk_choice_changed_callback, this); } -void wxChoice::EnableEvents() +void wxChoice::GTKEnableEvents() { g_signal_handlers_unblock_by_func(m_widget, (gpointer) gtk_choice_changed_callback, this);