Change sorting function in order to add capability to sort both ways
This commit is contained in:
		| @@ -155,19 +155,29 @@ static void analyze_cell_layers(GtkListBox *listbox, struct gds_cell *cell) | ||||
|  * @param row1 | ||||
|  * @param row2 | ||||
|  * @param unused | ||||
|  * @note Do not use this function | ||||
|  * @return | ||||
|  * @note Do not use this function. This is an internal callback | ||||
|  * @return See sort function documentation of GTK+ | ||||
|  */ | ||||
| static gint sort_func(GtkListBoxRow *row1, GtkListBoxRow *row2, gpointer unused) | ||||
| { | ||||
| 	LayerElement *le1, *le2; | ||||
| 	gint ret; | ||||
| 	enum layer_selector_sort_algo default_sort = LAYER_SELECTOR_SORT_DOWN; | ||||
| 	enum layer_selector_sort_algo *algo = (enum layer_selector_sort_algo *)unused; | ||||
|  | ||||
| 	/* Assume downward sorting */ | ||||
| 	if (!algo) | ||||
| 		algo = &default_sort; | ||||
|  | ||||
| 	le1 = LAYER_ELEMENT(row1); | ||||
| 	le2 = LAYER_ELEMENT(row2); | ||||
|  | ||||
| 	/* Determine sort fow downward sort */ | ||||
| 	ret = layer_element_get_layer(le1) - layer_element_get_layer(le2); | ||||
|  | ||||
| 	/* Change order if upward sort is requested */ | ||||
| 	ret *= (*algo == LAYER_SELECTOR_SORT_DOWN ? 1 : -1); | ||||
|  | ||||
| 	return ret; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -30,6 +30,11 @@ | ||||
| #include <glib.h> | ||||
| #include "mapping-parser.h" | ||||
|  | ||||
| /** | ||||
|  * @brief Defines how to sort the layer selector list box. | ||||
|  */ | ||||
| enum layer_selector_sort_algo {LAYER_SELECTOR_SORT_DOWN = 0, LAYER_SELECTOR_SORT_UP}; | ||||
|  | ||||
| /** | ||||
|  * @brief Generate layer widgets in \p listbox | ||||
|  * @note This clears all previously inserted elements | ||||
|   | ||||
		Reference in New Issue
	
	Block a user