From 79a028768f2e6ac28bf425e6597ff8aa61741456 Mon Sep 17 00:00:00 2001 From: songchuanfei Date: Wed, 13 Jul 2022 05:56:39 -0400 Subject: [PATCH] fix[resource]: Fix resource page too large when system has too many cpus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复系统CPU数很多时资源页面太长,无法看到全部的问题 Fixes #23294 Signed-off-by: songchuanfei --- src/gsm_color_button.c | 8 +++----- src/interface.cpp | 7 ++++++- src/load-graph.cpp | 11 +---------- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/gsm_color_button.c b/src/gsm_color_button.c index 3148c34..35d2710 100644 --- a/src/gsm_color_button.c +++ b/src/gsm_color_button.c @@ -227,7 +227,7 @@ fill_image_buffer_from_file (cairo_t *cr, const char *filePath) static void -render (GtkWidget * widget) +render (GtkWidget * widget, cairo_t *cr) { GSMColorButtonPrivate *priv; GSMColorButton *color_button = GSM_COLOR_BUTTON (widget); @@ -236,7 +236,6 @@ render (GtkWidget * widget) GdkRGBA *color; GdkRGBA tmp_color = priv->color; color = &tmp_color; - cairo_t *cr = gdk_cairo_create (gtk_widget_get_window (widget)); cairo_path_t *path = NULL; gint width, height; gdouble radius, arc_start, arc_end; @@ -405,13 +404,12 @@ render (GtkWidget * widget) break; } - cairo_destroy (cr); } /* Handle exposure events for the color picker's drawing area */ static gboolean draw (GtkWidget * widget, cairo_t * cr, gpointer data) { - render (GTK_WIDGET (data)); + render (GTK_WIDGET (data), cr); return FALSE; } @@ -420,7 +418,7 @@ static void gsm_color_button_realize (GtkWidget * widget) { GTK_WIDGET_CLASS (gsm_color_button_parent_class)->realize (widget); - render (widget); + gtk_widget_queue_draw(widget); } static void gsm_color_button_get_preferred_width (GtkWidget * widget, gint * minimum_width, gint * natural_width) diff --git a/src/interface.cpp b/src/interface.cpp index 2a5cbbf..e38915a 100644 --- a/src/interface.cpp +++ b/src/interface.cpp @@ -261,6 +261,7 @@ make_title_label (const char *text) static GtkWidget * create_sys_view (ProcData *procdata) { + GtkWidget *scrolled; GtkWidget *vbox, *hbox; GtkWidget *cpu_box, *mem_box, *net_box; GtkWidget *cpu_graph_box, *mem_graph_box, *net_graph_box; @@ -277,6 +278,8 @@ create_sys_view (ProcData *procdata) gchar *label_text; gchar *title_template; + scrolled = gtk_scrolled_window_new(NULL, NULL); + // Translators: color picker title, %s is CPU, Memory, Swap, Receiving, Sending title_template = g_strdup(_("Pick a Color for '%s'")); @@ -558,7 +561,9 @@ create_sys_view (ProcData *procdata) procdata->net_graph = net_graph; g_free(title_template); - return vbox_top; + gtk_container_add(GTK_CONTAINER(scrolled), vbox); + + return scrolled; } static void diff --git a/src/load-graph.cpp b/src/load-graph.cpp index b24f977..2e294b9 100644 --- a/src/load-graph.cpp +++ b/src/load-graph.cpp @@ -220,7 +220,7 @@ load_graph_configure (GtkWidget *widget, return TRUE; } -static gboolean load_graph_draw (GtkWidget *widget, cairo_t *context, gpointer data_ptr) +static gboolean load_graph_draw (GtkWidget *widget, cairo_t *cr, gpointer data_ptr) { LoadGraph * const graph = static_cast(data_ptr); GdkWindow *window; @@ -239,10 +239,6 @@ static gboolean load_graph_draw (GtkWidget *widget, cairo_t *context, gpointer d x_offset += graph->rmargin - ((sample_width / graph->frames_per_unit) * graph->render_counter); /* draw the graph */ - cairo_t* cr; - - cr = gdk_cairo_create (window); - if (graph->background == NULL) { draw_background(graph); } @@ -252,9 +248,6 @@ static gboolean load_graph_draw (GtkWidget *widget, cairo_t *context, gpointer d cairo_set_line_width (cr, 1); cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); - cairo_rectangle (cr, graph->rmargin + graph->indent + FRAME_WIDTH + 1, FRAME_WIDTH - 1, - graph->draw_width - graph->rmargin - graph->indent - 1, graph->real_draw_height + FRAME_WIDTH - 1); - cairo_clip(cr); for (j = 0; j < graph->n; ++j) { cairo_move_to (cr, x_offset, (1.0f - graph->data[0][j]) * graph->real_draw_height); @@ -275,8 +268,6 @@ static gboolean load_graph_draw (GtkWidget *widget, cairo_t *context, gpointer d } - cairo_destroy (cr); - return TRUE; } -- 2.33.0