diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2014-01-14 00:22:52 -0200 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2014-01-14 00:23:41 -0200 |
commit | 1c0e93c1bd0f80b1475a02989c861fe7d86bcf4b (patch) | |
tree | a5c1d375d73940b242f1a5ed4686d0dde38beade /htop.c | |
parent | cd692f27f4b88ac5abd12531536fab1d94eb607c (diff) |
First new feature of the git era! "c" key tags all children of a process.
Diffstat (limited to 'htop.c')
-rw-r--r-- | htop.c | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -272,6 +272,17 @@ static const char* getMainPanelValue(Panel* panel, int i) { return ""; } +static void tagAllChildren(Panel* panel, Process* parent) { + parent->tag = true; + pid_t ppid = parent->pid; + for (int i = 0; i < Panel_size(panel); i++) { + Process* p = (Process*) Panel_get(panel, i); + if (!p->tag && p->ppid == ppid) { + tagAllChildren(panel, p); + } + } +} + int main(int argc, char** argv) { int delay = -1; @@ -563,6 +574,13 @@ int main(int argc, char** argv) { setSortKey(pl, TIME, panel, settings); break; } + case 'c': + { + Process* p = (Process*) Panel_getSelected(panel); + if (!p) break; + tagAllChildren(panel, p); + break; + } case 'U': { for (int i = 0; i < Panel_size(panel); i++) { |