From 2327260ee888146beab3da66507c7744334a6973 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Fri, 18 Dec 2020 11:03:31 -0300 Subject: Separate tree and list sort orders Implements the suggestion from https://github.com/htop-dev/htop/issues/399#issuecomment-747861013 Thanks to the refactors from 0bd5c8fb5da and 6393baa74e5, this was really easy and clean to do. It maintains the "Tree view always by PID" option in the Settings, which results in some specific behaviors such as "clicking on the column header to exit tree view" and "picking a new sort order to exit tree view", for the sake of the muscle memory of long time htop users. :) --- Action.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'Action.c') diff --git a/Action.c b/Action.c index 3335a430..d7359be8 100644 --- a/Action.c +++ b/Action.c @@ -158,11 +158,7 @@ static bool collapseIntoParent(Panel* panel) { } Htop_Reaction Action_setSortKey(Settings* settings, ProcessField sortKey) { - settings->sortKey = sortKey; - settings->direction = 1; - if (settings->treeViewAlwaysByPID) { - settings->treeView = false; - } + Settings_setSortKey(settings, sortKey); return HTOP_REFRESH | HTOP_SAVE_SETTINGS | HTOP_UPDATE_PANELHDR | HTOP_KEEP_FOLLOWING; } @@ -174,7 +170,7 @@ static Htop_Reaction sortBy(State* st) { for (int i = 0; fields[i]; i++) { char* name = String_trim(Process_fields[fields[i]].name); Panel_add(sortPanel, (Object*) ListItem_new(name, fields[i])); - if (fields[i] == st->settings->sortKey) + if (fields[i] == Settings_getActiveSortKey(st->settings)) Panel_setSelected(sortPanel, i); free(name); @@ -234,7 +230,7 @@ static Htop_Reaction actionToggleMergedCommand(State* st) { static Htop_Reaction actionToggleTreeView(State* st) { st->settings->treeView = !st->settings->treeView; if (st->settings->treeView) { - st->settings->direction = 1; + st->settings->treeDirection = 1; } ProcessList_expandTree(st->pl); -- cgit v1.2.3