diff options
Diffstat (limited to 'tools/perf/ui/browser.c')
| -rw-r--r-- | tools/perf/ui/browser.c | 39 | 
1 files changed, 21 insertions, 18 deletions
diff --git a/tools/perf/ui/browser.c b/tools/perf/ui/browser.c index 3ccf6e14f89b..6680fa5cb9dd 100644 --- a/tools/perf/ui/browser.c +++ b/tools/perf/ui/browser.c @@ -150,7 +150,7 @@ unsigned int ui_browser__rb_tree_refresh(struct ui_browser *browser)  	while (nd != NULL) {  		ui_browser__gotorc(browser, row, 0);  		browser->write(browser, nd, row); -		if (++row == browser->height) +		if (++row == browser->rows)  			break;  		nd = rb_next(nd);  	} @@ -166,7 +166,7 @@ bool ui_browser__is_current_entry(struct ui_browser *browser, unsigned row)  void ui_browser__refresh_dimensions(struct ui_browser *browser)  {  	browser->width = SLtt_Screen_Cols - 1; -	browser->height = SLtt_Screen_Rows - 2; +	browser->height = browser->rows = SLtt_Screen_Rows - 2;  	browser->y = 1;  	browser->x = 0;  } @@ -250,7 +250,10 @@ int ui_browser__show(struct ui_browser *browser, const char *title,  	int err;  	va_list ap; -	ui_browser__refresh_dimensions(browser); +	if (browser->refresh_dimensions == NULL) +		browser->refresh_dimensions = ui_browser__refresh_dimensions; + +	browser->refresh_dimensions(browser);  	pthread_mutex_lock(&ui__lock);  	__ui_browser__show_title(browser, title); @@ -279,7 +282,7 @@ static void ui_browser__scrollbar_set(struct ui_browser *browser)  {  	int height = browser->height, h = 0, pct = 0,  	    col = browser->width, -	    row = browser->y - 1; +	    row = 0;  	if (browser->nr_entries > 1) {  		pct = ((browser->index * (browser->height - 1)) / @@ -367,7 +370,7 @@ int ui_browser__run(struct ui_browser *browser, int delay_secs)  		if (key == K_RESIZE) {  			ui__refresh_dimensions(false); -			ui_browser__refresh_dimensions(browser); +			browser->refresh_dimensions(browser);  			__ui_browser__show_title(browser, browser->title);  			ui_helpline__puts(browser->helpline);  			continue; @@ -389,7 +392,7 @@ int ui_browser__run(struct ui_browser *browser, int delay_secs)  			if (browser->index == browser->nr_entries - 1)  				break;  			++browser->index; -			if (browser->index == browser->top_idx + browser->height) { +			if (browser->index == browser->top_idx + browser->rows) {  				++browser->top_idx;  				browser->seek(browser, +1, SEEK_CUR);  			} @@ -405,10 +408,10 @@ int ui_browser__run(struct ui_browser *browser, int delay_secs)  			break;  		case K_PGDN:  		case ' ': -			if (browser->top_idx + browser->height > browser->nr_entries - 1) +			if (browser->top_idx + browser->rows > browser->nr_entries - 1)  				break; -			offset = browser->height; +			offset = browser->rows;  			if (browser->index + offset > browser->nr_entries - 1)  				offset = browser->nr_entries - 1 - browser->index;  			browser->index += offset; @@ -419,10 +422,10 @@ int ui_browser__run(struct ui_browser *browser, int delay_secs)  			if (browser->top_idx == 0)  				break; -			if (browser->top_idx < browser->height) +			if (browser->top_idx < browser->rows)  				offset = browser->top_idx;  			else -				offset = browser->height; +				offset = browser->rows;  			browser->index -= offset;  			browser->top_idx -= offset; @@ -432,7 +435,7 @@ int ui_browser__run(struct ui_browser *browser, int delay_secs)  			ui_browser__reset_index(browser);  			break;  		case K_END: -			offset = browser->height - 1; +			offset = browser->rows - 1;  			if (offset >= browser->nr_entries)  				offset = browser->nr_entries - 1; @@ -462,7 +465,7 @@ unsigned int ui_browser__list_head_refresh(struct ui_browser *browser)  		if (!browser->filter || !browser->filter(browser, pos)) {  			ui_browser__gotorc(browser, row, 0);  			browser->write(browser, pos, row); -			if (++row == browser->height) +			if (++row == browser->rows)  				break;  		}  	} @@ -587,7 +590,7 @@ unsigned int ui_browser__argv_refresh(struct ui_browser *browser)  		if (!browser->filter || !browser->filter(browser, *pos)) {  			ui_browser__gotorc(browser, row, 0);  			browser->write(browser, pos, row); -			if (++row == browser->height) +			if (++row == browser->rows)  				break;  		} @@ -623,7 +626,7 @@ static void __ui_browser__line_arrow_up(struct ui_browser *browser,  	SLsmg_set_char_set(1); -	if (start < browser->top_idx + browser->height) { +	if (start < browser->top_idx + browser->rows) {  		row = start - browser->top_idx;  		ui_browser__gotorc(browser, row, column);  		SLsmg_write_char(SLSMG_LLCORN_CHAR); @@ -633,7 +636,7 @@ static void __ui_browser__line_arrow_up(struct ui_browser *browser,  		if (row-- == 0)  			goto out;  	} else -		row = browser->height - 1; +		row = browser->rows - 1;  	if (end > browser->top_idx)  		end_row = end - browser->top_idx; @@ -675,8 +678,8 @@ static void __ui_browser__line_arrow_down(struct ui_browser *browser,  	} else  		row = 0; -	if (end >= browser->top_idx + browser->height) -		end_row = browser->height - 1; +	if (end >= browser->top_idx + browser->rows) +		end_row = browser->rows - 1;  	else  		end_row = end - browser->top_idx; @@ -684,7 +687,7 @@ static void __ui_browser__line_arrow_down(struct ui_browser *browser,  	SLsmg_draw_vline(end_row - row + 1);  	ui_browser__gotorc(browser, end_row, column); -	if (end < browser->top_idx + browser->height) { +	if (end < browser->top_idx + browser->rows) {  		SLsmg_write_char(SLSMG_LLCORN_CHAR);  		ui_browser__gotorc(browser, end_row, column + 1);  		SLsmg_write_char(SLSMG_HLINE_CHAR);  |