aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/ui/browser.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2015-08-11 16:14:40 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2015-10-05 16:59:49 -0400
commitfaae6f690eecb82b6d9d9f2112f5b51ac37d4acb (patch)
tree7c19eac2190503cc978c9571900d834614b20af6 /tools/perf/ui/browser.c
parentdef02db0d662b0edd83f80e3c18f660fc414decb (diff)
perf ui browser: Optional horizontal scrolling key binding
If the classes derived from ui_browser want to do some sort of horizontal scrolling, they have just to set ui_browser->columns to the number of columns available. Those columns can be the number of characters on the screen, if what is desired is to scroll character by character, or the number of columns in a spreadsheet like table. This is what the hist_browser will do, skipping ui_browser->horiz_scroll columns when rendering each of its lines. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Borislav Petkov <bp@suse.de> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-q6a22bpmpgcr1awgzrmd4jrs@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/ui/browser.c')
-rw-r--r--tools/perf/ui/browser.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/tools/perf/ui/browser.c b/tools/perf/ui/browser.c
index c6c7e5189214..e9703c0829f1 100644
--- a/tools/perf/ui/browser.c
+++ b/tools/perf/ui/browser.c
@@ -393,6 +393,7 @@ int ui_browser__run(struct ui_browser *browser, int delay_secs)
393 393
394 if (browser->use_navkeypressed && !browser->navkeypressed) { 394 if (browser->use_navkeypressed && !browser->navkeypressed) {
395 if (key == K_DOWN || key == K_UP || 395 if (key == K_DOWN || key == K_UP ||
396 (browser->columns && (key == K_LEFT || key == K_RIGHT)) ||
396 key == K_PGDN || key == K_PGUP || 397 key == K_PGDN || key == K_PGUP ||
397 key == K_HOME || key == K_END || 398 key == K_HOME || key == K_END ||
398 key == ' ') { 399 key == ' ') {
@@ -421,6 +422,18 @@ int ui_browser__run(struct ui_browser *browser, int delay_secs)
421 browser->seek(browser, -1, SEEK_CUR); 422 browser->seek(browser, -1, SEEK_CUR);
422 } 423 }
423 break; 424 break;
425 case K_RIGHT:
426 if (!browser->columns)
427 goto out;
428 if (browser->horiz_scroll < browser->columns - 1)
429 ++browser->horiz_scroll;
430 break;
431 case K_LEFT:
432 if (!browser->columns)
433 goto out;
434 if (browser->horiz_scroll != 0)
435 --browser->horiz_scroll;
436 break;
424 case K_PGDN: 437 case K_PGDN:
425 case ' ': 438 case ' ':
426 if (browser->top_idx + browser->rows > browser->nr_entries - 1) 439 if (browser->top_idx + browser->rows > browser->nr_entries - 1)
@@ -459,6 +472,7 @@ int ui_browser__run(struct ui_browser *browser, int delay_secs)
459 browser->seek(browser, -offset, SEEK_END); 472 browser->seek(browser, -offset, SEEK_END);
460 break; 473 break;
461 default: 474 default:
475 out:
462 return key; 476 return key;
463 } 477 }
464 } 478 }