Change sorting function in order to add capability to sort both ways
This commit is contained in:
parent
3f198f870a
commit
72d5352b09
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user