diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2018-04-05 19:31:18 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2018-04-05 19:38:13 -0300 |
commit | 0dbedf95a8fac09bcdab2be89339593973348acb (patch) | |
tree | db2ae61fca98ea0fd4c3b413d7fadd196f38d975 /Action.c | |
parent | 42c3a1fcb39458b6f8f39539baef94158bacf164 (diff) |
Collapse current subtree pressing Backspace
Diffstat (limited to 'Action.c')
-rw-r--r-- | Action.c | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -155,6 +155,21 @@ static bool expandCollapse(Panel* panel) { return true; } +static bool collapseIntoParent(Panel* panel) { + Process* p = (Process*) Panel_getSelected(panel); + if (!p) return false; + pid_t ppid = Process_getParentPid(p); + for (int i = 0; i < Panel_size(panel); i++) { + Process* q = (Process*) Panel_get(panel, i); + if (q->pid == ppid) { + q->showChildren = false; + Panel_setSelected(panel, i); + return true; + } + } + return false; +} + Htop_Reaction Action_setSortKey(Settings* settings, ProcessField sortKey) { settings->sortKey = sortKey; settings->direction = 1; @@ -261,6 +276,14 @@ static Htop_Reaction actionExpandOrCollapse(State* st) { return changed ? HTOP_RECALCULATE : HTOP_OK; } +static Htop_Reaction actionCollapseIntoParent(State* st) { + if (!st->settings->treeView) { + return HTOP_OK; + } + bool changed = collapseIntoParent(st->panel); + return changed ? HTOP_RECALCULATE : HTOP_OK; +} + static Htop_Reaction actionExpandCollapseOrSortColumn(State* st) { return st->settings->treeView ? actionExpandOrCollapse(st) : actionSetSortColumn(st); } @@ -557,6 +580,7 @@ void Action_setBindings(Htop_Action* keys) { keys['+'] = actionExpandOrCollapse; keys['='] = actionExpandOrCollapse; keys['-'] = actionExpandOrCollapse; + keys['\177'] = actionCollapseIntoParent; keys['u'] = actionFilterByUser; keys['F'] = Action_follow; keys['S'] = actionSetup; |