sorgdream
(sorgdream)
March 8, 2025, 11:42am
1
I want to use DorpDown to show some versions and select them, I use gtk_drop_down_set_enable_search
to enable a search entry.
const char *v_test[5] = { "1.0.3", "1.0.2", "1.0.1", "1.0.0", NULL };
drop_version = gtk_drop_down_new_from_strings (v_test);
gtk_drop_down_set_enable_search (GTK_DROP_DOWN (drop_version), TRUE);
But the entry only appear and don’t work fine. I see Note that GtkDropDown:expression must be set for search to work.
and know maybe I miss setting something, but I can’t find other guides to tell me how to do it. So, what should I do to enable search entries properly?
Holger
March 9, 2025, 12:01pm
2
Here is an example of how I tested it. In addition to the search, a sorting is also implemented.
#include"dropdown-sort.h"
void activate (GtkApplication *app, gpointer data)
{
GtkWidget *window;
window =gtk_application_window_new(app);
gtk_widget_set_size_request(window,50,50);
const char *strings[6] = {"Larry","Moe","Curly","Marry","Joe",NULL};
GtkStringList *stringlist = gtk_string_list_new (strings);
/*you hav to implement the GtkExpression */
GtkExpression *expression = gtk_property_expression_new(GTK_TYPE_STRING_OBJECT,NULL,"string");
GtkStringSorter *string_sorter = gtk_string_sorter_new (expression);
GtkSortListModel *sort_list_model = gtk_sort_list_model_new (G_LIST_MODEL(stringlist), GTK_SORTER(string_sorter));
GtkWidget *dropdown= gtk_drop_down_new(G_LIST_MODEL(sort_list_model), NULL);
// you have to set expression
gtk_drop_down_set_expression (GTK_DROP_DOWN(dropdown),expression);
gtk_drop_down_set_enable_search (GTK_DROP_DOWN(dropdown), TRUE);
GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,10);
gtk_box_append(GTK_BOX(box),dropdown);
gtk_window_set_child(GTK_WINDOW(window),box);
gtk_widget_set_visible(window,TRUE);
}
Enjoy testing and programming.