If display fields items is more than screen rows, some of fields items can't be displayed in screen. So, start another col to show fields items if screen can't show all content in one col. Signed-off-by: Jiajun Chen <1250062498@qq.com>
50 lines
1.6 KiB
Diff
50 lines
1.6 KiB
Diff
From c1083be42e3ad71971193e025c95a866a6207e7f Mon Sep 17 00:00:00 2001
|
|
From: Jiajun Chen <1250062498@qq.com>
|
|
Date: Wed, 28 Oct 2020 16:38:12 +0800
|
|
Subject: [PATCH] display: modify filter display to support more display fields
|
|
items
|
|
|
|
If display fields items is more than screen rows, some of fields items
|
|
can't be displayed in screen.
|
|
So, start another col to show fields items if screen can't show all content in one col.
|
|
|
|
Signed-off-by: Jiajun Chen <1250062498@qq.com>
|
|
---
|
|
src/vmtop.c | 17 +++++++++++++++--
|
|
1 file changed, 15 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/vmtop.c b/src/vmtop.c
|
|
index 12b073d..501cea9 100644
|
|
--- a/src/vmtop.c
|
|
+++ b/src/vmtop.c
|
|
@@ -287,11 +287,24 @@ static void show_domains(struct domain_list *list)
|
|
*/
|
|
static void print_field(int high_light)
|
|
{
|
|
- int x = 3; /* display x local */
|
|
- int y = 4; /* display y local */
|
|
+ int x, y, x_local, y_local;
|
|
unsigned int attr_flag;
|
|
|
|
+ getyx(stdscr, y_local, x_local); /* get cursor coordinates */
|
|
+ y = y_local;
|
|
+ x = x_local + 3; /* leave 3 spaces in the beginning for beauty */
|
|
+
|
|
for (int i = 0; i < FD_END; i++) {
|
|
+ /*
|
|
+ * if y local is more than scr_row_size, fields list display will
|
|
+ * out of screen range. So start another col to show fields list
|
|
+ * with 20 intervals.
|
|
+ */
|
|
+ if (y >= scr_row_size) {
|
|
+ y = y_local;
|
|
+ x = x + 20;
|
|
+ }
|
|
+
|
|
attr_flag = A_NORMAL;
|
|
if (i == high_light) {
|
|
attr_flag |= A_REVERSE; /* high light chosen field */
|
|
--
|
|
2.23.0
|
|
|