• [^] # Le code reste à écrire, send a patch?

    Posté par (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 :

     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 ;-)

    Debian Consultant @ DEBAMAX