X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=graph.c;h=d8f1ba45ab9df005a3c6266278fe7d09dd2c0e25;hp=837211dacebdb4f47defcc6e5b02ce9149c0b25c;hb=0deba507cd01601fcce4fb861b9aa6d4971dfd1a;hpb=ca20381d58f54a469da1f4b2771c304995bc7f5e diff --git a/graph.c b/graph.c index 837211da..d8f1ba45 100644 --- a/graph.c +++ b/graph.c @@ -846,12 +846,18 @@ int graph_contains_xy(struct graph *g, int x, int y) return (x >= first_x && x <= last_x) && (y >= first_y && y <= last_y); } +/* + * Allowable difference to show tooltip + */ +#define TOOLTIP_XDIFF 10 +#define TOOLTIP_YDIFF 10 + static int xy_match(struct xyvalue *xy, int x, int y) { int xdiff = abs(xy->gx - x); int ydiff = abs(xy->gy - y); - return xdiff <= 10 && ydiff <= 10; + return xdiff <= TOOLTIP_XDIFF && ydiff <= TOOLTIP_YDIFF; } const char *graph_find_tooltip(struct graph *g, int x, int y) @@ -862,9 +868,17 @@ const char *graph_find_tooltip(struct graph *g, int x, int y) for (i = g->labels; i; i = i->next) { for (j = i->values; j; j = j->next) { struct xyvalue *xy = j->value; - - if (xy_match(xy, x - g->xoffset, y)) + int graphx = x - g->xoffset; + + /* + * Return match if close enough. Take advantage + * of the X axis being monotonically increasing, + * so we can break out if we exceed it. + */ + if (xy_match(xy, graphx, y)) return j->tooltip; + else if (xy->gx - graphx > TOOLTIP_XDIFF) + break; } }