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 row1 | ||||||
|  * @param row2 |  * @param row2 | ||||||
|  * @param unused |  * @param unused | ||||||
|  * @note Do not use this function |  * @note Do not use this function. This is an internal callback | ||||||
|  * @return |  * @return See sort function documentation of GTK+ | ||||||
|  */ |  */ | ||||||
| static gint sort_func(GtkListBoxRow *row1, GtkListBoxRow *row2, gpointer unused) | static gint sort_func(GtkListBoxRow *row1, GtkListBoxRow *row2, gpointer unused) | ||||||
| { | { | ||||||
| 	LayerElement *le1, *le2; | 	LayerElement *le1, *le2; | ||||||
| 	gint ret; | 	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); | 	le1 = LAYER_ELEMENT(row1); | ||||||
| 	le2 = LAYER_ELEMENT(row2); | 	le2 = LAYER_ELEMENT(row2); | ||||||
|  |  | ||||||
|  | 	/* Determine sort fow downward sort */ | ||||||
| 	ret = layer_element_get_layer(le1) - layer_element_get_layer(le2); | 	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; | 	return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -30,6 +30,11 @@ | |||||||
| #include <glib.h> | #include <glib.h> | ||||||
| #include "mapping-parser.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 |  * @brief Generate layer widgets in \p listbox | ||||||
|  * @note This clears all previously inserted elements |  * @note This clears all previously inserted elements | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user