/* Unselects all children of list. A signal will * be emitted for each newly unselected child. */ int clip_GTK_LISTUNSELECTALL(ClipMachine * ClipMachineMemory) { C_widget *clst = _fetch_cw_arg(ClipMachineMemory); CHECKCWID(clst, GTK_IS_LIST); gtk_list_unselect_all(GTK_LIST(clst->widget)); return 0; err: return 1; }
static WIDGET * listprop_get_widget(ListProperty *prop, PropDialog *dialog) { GtkWidget *ret = gtk_list_new(); gtk_list_set_selection_mode(GTK_LIST(ret),GTK_SELECTION_BROWSE); gtk_list_unselect_all(GTK_LIST(ret)); g_signal_connect(G_OBJECT(ret), "select-child", G_CALLBACK (listprop_select_child_signal), prop); prophandler_connect(&prop->common, G_OBJECT(ret), "selection-changed"); return ret; }
static gboolean gail_combo_clear_selection (AtkSelection *selection) { GtkCombo *combo; GtkWidget *widget; widget = GTK_ACCESSIBLE (selection)->widget; if (widget == NULL) /* * State is defunct */ return FALSE; combo = GTK_COMBO (widget); gtk_list_unselect_all (GTK_LIST (combo->list)); return TRUE; }
static int _combo_simple_entry_change(GtkEntry * entry, gpointer data) { GtkCombo *cb = GTK_COMBO(data); int i; i = _combo_simple_find_in_list(cb, gtk_entry_get_text(entry)); if (i == -1) gtk_list_unselect_all(GTK_LIST(cb->list)); else { gtk_signal_handler_block_by_func(GTK_OBJECT(cb->list), GSF(_combo_simple_list_select), data); gtk_list_select_item(GTK_LIST(cb->list), i); gtk_signal_handler_unblock_by_func(GTK_OBJECT(cb->list), GSF(_combo_simple_list_select), data); } return 0; }
bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, int n, const wxString choices[], long style, const wxValidator& validator, const wxString& name ) { m_ignoreNextUpdate = false; m_needParent = true; m_acceptsFocus = true; m_prevSelection = 0; if (!PreCreation( parent, pos, size ) || !CreateBase( parent, id, pos, size, style, validator, name )) { wxFAIL_MSG( wxT("wxComboBox creation failed") ); return false; } m_widget = gtk_combo_new(); GtkCombo *combo = GTK_COMBO(m_widget); // Disable GTK's broken events ... gtk_signal_disconnect( GTK_OBJECT(combo->entry), combo->entry_change_id ); // ... and add surrogate handler. combo->entry_change_id = gtk_signal_connect (GTK_OBJECT (combo->entry), "changed", (GtkSignalFunc) gtk_dummy_callback, combo); // make it more useable gtk_combo_set_use_arrows_always( GTK_COMBO(m_widget), TRUE ); // and case-sensitive gtk_combo_set_case_sensitive( GTK_COMBO(m_widget), TRUE ); GtkWidget *list = GTK_COMBO(m_widget)->list; // gtk_list_set_selection_mode( GTK_LIST(list), GTK_SELECTION_MULTIPLE ); for (int i = 0; i < n; i++) { GtkWidget *list_item = gtk_list_item_new_with_label( wxGTK_CONV( choices[i] ) ); m_clientDataList.Append( (wxObject*)NULL ); m_clientObjectList.Append( (wxObject*)NULL ); gtk_container_add( GTK_CONTAINER(list), list_item ); gtk_widget_show( list_item ); } m_parent->DoAddChild( this ); m_focusWidget = combo->entry; PostCreation(size); ConnectWidget( combo->button ); // MSW's combo box shows the value and the selection is -1 gtk_entry_set_text( GTK_ENTRY(combo->entry), wxGTK_CONV(value) ); gtk_list_unselect_all( GTK_LIST(combo->list) ); if (style & wxCB_READONLY) gtk_entry_set_editable( GTK_ENTRY( combo->entry ), FALSE ); // "show" and "hide" events are generated when user click on the combobox button which popups a list // this list is the "popwin" gtk widget gtk_signal_connect( GTK_OBJECT(GTK_COMBO(combo)->popwin), "hide", GTK_SIGNAL_FUNC(gtk_popup_hide_callback), (gpointer)this ); gtk_signal_connect( GTK_OBJECT(GTK_COMBO(combo)->popwin), "show", GTK_SIGNAL_FUNC(gtk_popup_show_callback), (gpointer)this ); gtk_signal_connect_after( GTK_OBJECT(combo->entry), "changed", GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this ); gtk_signal_connect_after( GTK_OBJECT(combo->list), "select-child", GTK_SIGNAL_FUNC(gtk_combo_select_child_callback), (gpointer)this ); SetInitialSize(size); // need this too because this is a wxControlWithItems // This is required for tool bar support // wxSize setsize = GetSize(); // gtk_widget_set_usize( m_widget, setsize.x, setsize.y ); return true; }
bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, int n, const wxString choices[], long style, const wxValidator& validator, const wxString& name ) { m_ignoreNextUpdate = false; m_needParent = true; m_acceptsFocus = true; m_prevSelection = 0; if (!PreCreation( parent, pos, size ) || !CreateBase( parent, id, pos, size, style, validator, name )) { wxFAIL_MSG( wxT("wxComboBox creation failed") ); return false; } #ifdef __WXGTK24__ if (!gtk_check_version(2,4,0)) { m_widget = gtk_combo_box_entry_new_text(); GtkComboBox* combobox = GTK_COMBO_BOX( m_widget ); gtk_entry_set_editable( GTK_ENTRY( GTK_BIN(m_widget)->child ), TRUE ); for (int i = 0; i < n; i++) { gtk_combo_box_append_text( combobox, wxGTK_CONV( choices[i] ) ); m_clientDataList.Append( (wxObject*)NULL ); m_clientObjectList.Append( (wxObject*)NULL ); } } else #endif { m_widget = gtk_combo_new(); GtkCombo* combo = GTK_COMBO(m_widget); // Disable GTK's broken events ... g_signal_handler_disconnect (combo->entry, combo->entry_change_id); // ... and add surrogate handler. combo->entry_change_id = g_signal_connect (combo->entry, "changed", G_CALLBACK (gtkcombo_dummy_callback), combo); // make it more useable gtk_combo_set_use_arrows_always( GTK_COMBO(m_widget), TRUE ); // and case-sensitive gtk_combo_set_case_sensitive( GTK_COMBO(m_widget), TRUE ); if (style & wxNO_BORDER) g_object_set (combo->entry, "has-frame", FALSE, NULL ); GtkWidget *list = combo->list; for (int i = 0; i < n; i++) { GtkWidget *list_item = gtk_list_item_new_with_label( wxGTK_CONV( choices[i] ) ); m_clientDataList.Append( (wxObject*)NULL ); m_clientObjectList.Append( (wxObject*)NULL ); gtk_container_add( GTK_CONTAINER(list), list_item ); gtk_widget_show( list_item ); } } m_parent->DoAddChild( this ); GtkEntry *entry = NULL; #ifdef __WXGTK24__ if (!gtk_check_version(2,4,0)) entry = GTK_ENTRY( GTK_BIN(m_widget)->child ); else #endif entry = GTK_ENTRY( GTK_COMBO(m_widget)->entry ); m_focusWidget = GTK_WIDGET( entry ); PostCreation(size); #ifdef __WXGTK24__ if (!gtk_check_version(2,4,0)) ConnectWidget( m_widget ); else #endif ConnectWidget( GTK_COMBO(m_widget)->button ); #ifdef __WXGTK24__ if (!gtk_check_version(2,4,0)) { gtk_entry_set_text( entry, wxGTK_CONV(value) ); if (style & wxCB_READONLY) gtk_entry_set_editable( entry, FALSE ); g_signal_connect_after (entry, "changed", G_CALLBACK (gtkcombobox_text_changed_callback), this); g_signal_connect_after (m_widget, "changed", G_CALLBACK (gtkcombobox_changed_callback), this); } else #endif { GtkCombo *combo = GTK_COMBO(m_widget); // MSW's combo box shows the value and the selection is -1 gtk_entry_set_text( entry, wxGTK_CONV(value) ); gtk_list_unselect_all( GTK_LIST(combo->list) ); if (style & wxCB_READONLY) gtk_entry_set_editable( entry, FALSE ); // "show" and "hide" events are generated when user click on the combobox button which popups a list // this list is the "popwin" gtk widget g_signal_connect (GTK_COMBO(combo)->popwin, "hide", G_CALLBACK (gtkcombo_popup_hide_callback), this); g_signal_connect (GTK_COMBO(combo)->popwin, "show", G_CALLBACK (gtkcombo_popup_show_callback), this); g_signal_connect_after (combo->list, "select-child", G_CALLBACK (gtkcombo_combo_select_child_callback), this); g_signal_connect_after (entry, "changed", G_CALLBACK (gtkcombo_text_changed_callback), this); // This is required for tool bar support // Doesn't currently work // wxSize setsize = GetSize(); // gtk_widget_set_size_request( m_widget, setsize.x, setsize.y ); } SetInitialSize(size); // need this too because this is a wxControlWithItems return true; }