En regardant rapidement le code, on s'aperçoit qu'il y a une itération qui est faite à plusieurs endroits sur la propriété windows :
for(li=tasklist->windows;li!=NULL;li=li->next)
et variantes. Du coup, on parcourt une liste chaînée, sans tri. On pourrait trier sur place, mais il y a plusieurs telles boucles, donc autant trier lors de l'ajout dans la liste, non ? (Un retrait ne peut pas perturber une liste déjà triée.)
Ça semble se passer dans xfce_tasklist_group_button_add_window() :
/* add to internal list */group_child->windows=g_slist_prepend(group_child->windows,window_child);
or un coup d'œil rapide côté GLib suggère l'utilisation de g_slist_insert_sorted() existe... J'ai l'impression qu'il te reste à utiliser la bonne fonction de comparaison pour avoir le résultat voulu plutôt que le résultat actuel, à savoir l'ajout en début de liste via g_slist_prepend().
Ensuite, il te restera à proposer ça upstream. Reste à voir si cela vaut le coup de proposer une option XFCE_TASKLIST_GROUPING_ALWAYS_WITH_SORTING_ENABLED_INSIDE_EACH_GROUP (avec un meilleur nom) pour que XFCE_TASKLIST_GROUPING_ALWAYS garde le comportement actuel. Je présume que trier par défaut est un comportement plutôt sain, mais il y a peut-être des gens qui sont habitués à avoir la dernière fenêtre ajoutée en début de menu... #JeNeSuisPasUpstream ;-)
[^] # Le code reste à écrire, send a patch?
Posté par Cyril Brulebois (site web personnel) . En réponse au message Xfce panel. Évalué à 3.
En regardant rapidement le code, on s'aperçoit qu'il y a une itération qui est faite à plusieurs endroits sur la propriété
windows:et variantes. Du coup, on parcourt une liste chaînée, sans tri. On pourrait trier sur place, mais il y a plusieurs telles boucles, donc autant trier lors de l'ajout dans la liste, non ? (Un retrait ne peut pas perturber une liste déjà triée.)
Ça semble se passer dans
xfce_tasklist_group_button_add_window():or un coup d'œil rapide côté GLib suggère l'utilisation de
g_slist_insert_sorted()existe... J'ai l'impression qu'il te reste à utiliser la bonne fonction de comparaison pour avoir le résultat voulu plutôt que le résultat actuel, à savoir l'ajout en début de liste viag_slist_prepend().Ensuite, il te restera à proposer ça upstream. Reste à voir si cela vaut le coup de proposer une option
XFCE_TASKLIST_GROUPING_ALWAYS_WITH_SORTING_ENABLED_INSIDE_EACH_GROUP(avec un meilleur nom) pour queXFCE_TASKLIST_GROUPING_ALWAYSgarde le comportement actuel. Je présume que trier par défaut est un comportement plutôt sain, mais il y a peut-être des gens qui sont habitués à avoir la dernière fenêtre ajoutée en début de menu... #JeNeSuisPasUpstream ;-)Debian Consultant @ DEBAMAX