summaryrefslogtreecommitdiffstats
path: root/Action.c
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2018-01-28 04:09:06 -0200
committerHisham Muhammad <hisham@gobolinux.org>2018-01-30 12:59:11 -0200
commit5beff29a3df7097cc4d256b27888ee730b1a45d0 (patch)
treecdc2d5f30e82db0f7415c2998bbb75cd5beba78f /Action.c
parentd1219abc558141a96ea25aa1db1c2dd3171c5132 (diff)
Add support for multiple screens, switchable using Tab
Diffstat (limited to 'Action.c')
-rw-r--r--Action.c32
1 files changed, 23 insertions, 9 deletions
diff --git a/Action.c b/Action.c
index a6394ac3..14c9b66d 100644
--- a/Action.c
+++ b/Action.c
@@ -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;
}

© 2014-2024 Faster IT GmbH | imprint | privacy policy