diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2018-01-28 04:09:06 -0200 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2018-01-30 12:59:11 -0200 |
commit | 5beff29a3df7097cc4d256b27888ee730b1a45d0 (patch) | |
tree | cdc2d5f30e82db0f7415c2998bbb75cd5beba78f /Action.c | |
parent | d1219abc558141a96ea25aa1db1c2dd3171c5132 (diff) |
Add support for multiple screens, switchable using Tab
Diffstat (limited to 'Action.c')
-rw-r--r-- | Action.c | 32 |
1 files changed, 23 insertions, 9 deletions
@@ -156,9 +156,10 @@ static bool expandCollapse(Panel* panel) { } Htop_Reaction Action_setSortKey(Settings* settings, ProcessField sortKey) { - settings->sortKey = sortKey; - settings->direction = 1; - settings->treeView = false; + ScreenSettings* ss = settings->ss; + ss->sortKey = sortKey; + ss->direction = 1; + ss->treeView = false; return HTOP_REFRESH | HTOP_SAVE_SETTINGS | HTOP_UPDATE_PANELHDR | HTOP_KEEP_FOLLOWING; } @@ -166,11 +167,12 @@ static Htop_Reaction sortBy(State* st) { Htop_Reaction reaction = HTOP_OK; Panel* sortPanel = Panel_new(0, 0, 0, 0, true, Class(ListItem), FunctionBar_newEnterEsc("Sort ", "Cancel ")); Panel_setHeader(sortPanel, "Sort by"); - ProcessField* fields = st->settings->fields; + ScreenSettings* ss = st->settings->ss; + ProcessField* fields = ss->fields; 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] == ss->sortKey) Panel_setSelected(sortPanel, i); free(name); } @@ -218,8 +220,9 @@ static Htop_Reaction actionToggleProgramPath(State* st) { } static Htop_Reaction actionToggleTreeView(State* st) { - st->settings->treeView = !st->settings->treeView; - if (st->settings->treeView) st->settings->direction = 1; + ScreenSettings* ss = st->settings->ss; + ss->treeView = !ss->treeView; + if (ss->treeView) ss->direction = 1; ProcessList_expandTree(st->pl); return HTOP_REFRESH | HTOP_SAVE_SETTINGS | HTOP_KEEP_FOLLOWING | HTOP_REDRAW_BAR | HTOP_UPDATE_PANELHDR; } @@ -247,7 +250,7 @@ static Htop_Reaction actionLowerPriority(State* st) { } static Htop_Reaction actionInvertSortOrder(State* st) { - Settings_invertSortOrder(st->settings); + ScreenSettings_invertSortOrder(st->settings->ss); return HTOP_REFRESH | HTOP_SAVE_SETTINGS; } @@ -261,13 +264,23 @@ static Htop_Reaction actionExpandOrCollapse(State* st) { } static Htop_Reaction actionExpandCollapseOrSortColumn(State* st) { - return st->settings->treeView ? actionExpandOrCollapse(st) : actionSetSortColumn(st); + return st->settings->ss->treeView ? actionExpandOrCollapse(st) : actionSetSortColumn(st); } static Htop_Reaction actionQuit() { return HTOP_QUIT; } +static Htop_Reaction actionNextScreen(State* st) { + Settings* settings = st->settings; + settings->ssIndex++; + if (settings->ssIndex == settings->nScreens) { + settings->ssIndex = 0; + } + settings->ss = settings->screens[settings->ssIndex]; + return HTOP_REFRESH; +} + static Htop_Reaction actionSetAffinity(State* st) { if (st->pl->cpuCount == 1) return HTOP_OK; @@ -571,5 +584,6 @@ void Action_setBindings(Htop_Action* keys) { keys['U'] = actionUntagAll; keys['c'] = actionTagAllChildren; keys['e'] = actionShowEnvScreen; + keys['\t'] = actionNextScreen; } |