summaryrefslogtreecommitdiffstats
path: root/ProcessList.c
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2020-12-15 19:44:52 +0100
committercgzones <cgzones@googlemail.com>2020-12-19 21:13:32 +0100
commit9f68c8d34142746a16ea3883d736a0955977e625 (patch)
treefd9e6beb513616093a2ce41b35fa9d48afffa7c6 /ProcessList.c
parent89473cc9ae950bbb5e291d1f186d372f66f66394 (diff)
Merge Process_pidColumns into Process_fields and rework auto-fit for PID-like columns
Diffstat (limited to 'ProcessList.c')
-rw-r--r--ProcessList.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/ProcessList.c b/ProcessList.c
index 02ce373f..d0bd89fe 100644
--- a/ProcessList.c
+++ b/ProcessList.c
@@ -79,6 +79,20 @@ void ProcessList_setPanel(ProcessList* this, Panel* panel) {
this->panel = panel;
}
+static const char* alignedProcessFieldTitle(ProcessField field) {
+ const char* title = Process_fields[field].title;
+ if (!title)
+ return "- ";
+
+ if (!Process_fields[field].pidColumn)
+ return title;
+
+ static char titleBuffer[PROCESS_MAX_PID_DIGITS + /* space */ 1 + /* null-terminator */ + 1];
+ xSnprintf(titleBuffer, sizeof(titleBuffer), "%*s ", Process_pidDigits, title);
+
+ return titleBuffer;
+}
+
void ProcessList_printHeader(ProcessList* this, RichString* header) {
RichString_prune(header);
@@ -88,11 +102,6 @@ void ProcessList_printHeader(ProcessList* this, RichString* header) {
ProcessField key = Settings_getActiveSortKey(settings);
for (int i = 0; fields[i]; i++) {
- const char* field = Process_fields[fields[i]].title;
- if (!field) {
- field = "- ";
- }
-
int color;
if (settings->treeView && settings->treeViewAlwaysByPID) {
color = CRT_colors[PANEL_HEADER_FOCUS];
@@ -102,7 +111,7 @@ void ProcessList_printHeader(ProcessList* this, RichString* header) {
color = CRT_colors[PANEL_HEADER_FOCUS];
}
- RichString_appendWide(header, color, field);
+ RichString_appendWide(header, color, alignedProcessFieldTitle(fields[i]));
if (COMM == fields[i] && settings->showMergedCommand) {
RichString_appendAscii(header, color, "(merged)");
}
@@ -456,12 +465,7 @@ ProcessField ProcessList_keyAt(const ProcessList* this, int at) {
const ProcessField* fields = this->settings->fields;
ProcessField field;
for (int i = 0; (field = fields[i]); i++) {
- const char* title = Process_fields[field].title;
- if (!title) {
- title = "- ";
- }
-
- int len = strlen(title);
+ int len = strlen(alignedProcessFieldTitle(field));
if (at >= x && at <= x + len) {
return field;
}

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