Commit dce631b24af826ebba1401ba3f62c2dc62ead05e
1 parent
308ecd30
Exists in
master
and in
4 other branches
Sorting available actions.
Showing
2 changed files
with
23 additions
and
2 deletions
Show diff stats
src/objects/actions/view.c
| @@ -51,9 +51,27 @@ | @@ -51,9 +51,27 @@ | ||
| 51 | 51 | ||
| 52 | static void list_element_free(struct ListElement *element); | 52 | static void list_element_free(struct ListElement *element); |
| 53 | 53 | ||
| 54 | + static gint view_sort(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer G_GNUC_UNUSED(user_data)) { | ||
| 55 | + | ||
| 56 | + gint rc = 0; | ||
| 57 | + GValue value[] = { G_VALUE_INIT, G_VALUE_INIT }; | ||
| 58 | + | ||
| 59 | + gtk_tree_model_get_value(model, a, COLUMN_LABEL, &value[0]); | ||
| 60 | + gtk_tree_model_get_value(model, b, COLUMN_LABEL, &value[1]); | ||
| 61 | + | ||
| 62 | + rc = g_ascii_strcasecmp(g_value_get_string(&value[0]),g_value_get_string(&value[1])); | ||
| 63 | + | ||
| 64 | + g_value_unset(&value[0]); | ||
| 65 | + g_value_unset(&value[1]); | ||
| 66 | + | ||
| 67 | + return rc; | ||
| 68 | + | ||
| 69 | + } | ||
| 70 | + | ||
| 54 | GtkWidget * pw3270_action_view_new() { | 71 | GtkWidget * pw3270_action_view_new() { |
| 55 | 72 | ||
| 56 | - GtkWidget * view = GTK_WIDGET(gtk_tree_view_new_with_model(GTK_TREE_MODEL(gtk_list_store_new(3,G_TYPE_OBJECT,G_TYPE_STRING,G_TYPE_STRING)))); | 73 | + GtkTreeModel * model = GTK_TREE_MODEL(gtk_list_store_new(3,G_TYPE_OBJECT,G_TYPE_STRING,G_TYPE_STRING)); |
| 74 | + GtkWidget * view = GTK_WIDGET(gtk_tree_view_new_with_model(model)); | ||
| 57 | 75 | ||
| 58 | gtk_widget_set_hexpand(view,TRUE); | 76 | gtk_widget_set_hexpand(view,TRUE); |
| 59 | gtk_widget_set_vexpand(view,TRUE); | 77 | gtk_widget_set_vexpand(view,TRUE); |
| @@ -82,6 +100,8 @@ | @@ -82,6 +100,8 @@ | ||
| 82 | NULL | 100 | NULL |
| 83 | ); | 101 | ); |
| 84 | 102 | ||
| 103 | + gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(model),view_sort,NULL,NULL); | ||
| 104 | + | ||
| 85 | return view; | 105 | return view; |
| 86 | } | 106 | } |
| 87 | 107 |
src/objects/toolbar/settings.c
| @@ -121,6 +121,7 @@ | @@ -121,6 +121,7 @@ | ||
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | gtk_tree_view_set_reorderable(GTK_TREE_VIEW(page->views[0]),TRUE); | 123 | gtk_tree_view_set_reorderable(GTK_TREE_VIEW(page->views[0]),TRUE); |
| 124 | + gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(gtk_tree_view_get_model(GTK_TREE_VIEW(page->views[1]))), GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING); | ||
| 124 | 125 | ||
| 125 | // Create buttons | 126 | // Create buttons |
| 126 | static const gchar * icon_names[G_N_ELEMENTS(page->buttons)] = { | 127 | static const gchar * icon_names[G_N_ELEMENTS(page->buttons)] = { |
| @@ -128,7 +129,7 @@ | @@ -128,7 +129,7 @@ | ||
| 128 | "go-previous" | 129 | "go-previous" |
| 129 | }; | 130 | }; |
| 130 | 131 | ||
| 131 | - GtkWidget * box = gtk_vbutton_box_new(); | 132 | + GtkWidget * box = gtk_button_box_new(GTK_ORIENTATION_VERTICAL); |
| 132 | gtk_widget_set_hexpand(box,FALSE); | 133 | gtk_widget_set_hexpand(box,FALSE); |
| 133 | gtk_widget_set_vexpand(box,FALSE); | 134 | gtk_widget_set_vexpand(box,FALSE); |
| 134 | 135 |