gfio: allow graph to stretch or shrink as window expands or contracts
Signed-off-by: Stephen M. Cameron <stephenmcameron@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/gfio.c b/gfio.c
index 787c40f..859d178 100644
--- a/gfio.c
+++ b/gfio.c
@@ -94,6 +94,8 @@
#define DRAWING_AREA_XDIM 1000
#define DRAWING_AREA_YDIM 400
GtkWidget *drawing_area;
+ int drawing_area_xdim;
+ int drawing_area_ydim;
GtkWidget *error_info_bar;
GtkWidget *error_label;
GtkWidget *results_notebook;
@@ -995,11 +997,22 @@
gdk_threads_leave();
}
+static gint on_config_drawing_area(GtkWidget *w, GdkEventConfigure *event)
+{
+ ui.drawing_area_xdim = w->allocation.width;
+ ui.drawing_area_ydim = w->allocation.height;
+ return TRUE;
+}
+
static int on_expose_drawing_area(GtkWidget *w, GdkEvent *event, gpointer p)
{
struct gui *ui = (struct gui *) p;
cairo_t *cr;
+ graph_set_size(ui->iops_graph, ui->drawing_area_xdim / 2.0,
+ ui->drawing_area_ydim);
+ graph_set_size(ui->bandwidth_graph, ui->drawing_area_xdim / 2.0,
+ ui->drawing_area_ydim);
cr = gdk_cairo_create(w->window);
cairo_set_source_rgb(cr, 0, 0, 0);
@@ -1011,8 +1024,7 @@
cairo_restore(cr);
cairo_save(cr);
- cairo_translate(cr, DRAWING_AREA_XDIM / 2.0, 0);
- // DRAWING_AREA_YDIM * 0.05);
+ cairo_translate(cr, ui->drawing_area_xdim / 2.0, 0);
line_graph_draw(ui->iops_graph, cr);
cairo_stroke(cr);
cairo_restore(cr);
@@ -1911,11 +1923,15 @@
*/
gdk_color_parse("white", &white);
ui->drawing_area = gtk_drawing_area_new();
+ ui->drawing_area_xdim = DRAWING_AREA_XDIM;
+ ui->drawing_area_ydim = DRAWING_AREA_YDIM;
gtk_widget_set_size_request(GTK_WIDGET(ui->drawing_area),
- DRAWING_AREA_XDIM, DRAWING_AREA_YDIM);
+ ui->drawing_area_xdim, ui->drawing_area_ydim);
gtk_widget_modify_bg(ui->drawing_area, GTK_STATE_NORMAL, &white);
g_signal_connect(G_OBJECT(ui->drawing_area), "expose_event",
G_CALLBACK (on_expose_drawing_area), ui);
+ g_signal_connect(G_OBJECT(ui->drawing_area), "configure_event",
+ G_CALLBACK (on_config_drawing_area), ui);
ui->scrolled_window = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ui->scrolled_window),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);