diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-10-26 05:11:03 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-10-26 11:06:23 -0400 |
commit | 1056d3dd9416740ec7d31348ca5f55009dc06bf3 (patch) | |
tree | 7b5b9774f01b92b9f615237eeb9d4b37fd73e473 /tools/perf/util/ui/browser.c | |
parent | 2ba908ecfc4697dd856a526a9d4d4bd28e64a9cd (diff) |
perf ui: Reimplement ui__popup_menu using ui__browser
Right now let it work just like the other browsers: in full screen, at
the top left corner. If people complain we can revisit, I found it OK
and the laziest/quickest approach at reusing the ui_browser ;-)
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-4bgeqizcxh04q0sk24cw43gk@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/ui/browser.c')
-rw-r--r-- | tools/perf/util/ui/browser.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tools/perf/util/ui/browser.c b/tools/perf/util/ui/browser.c index 370c4703cec..29c68aee00d 100644 --- a/tools/perf/util/ui/browser.c +++ b/tools/perf/util/ui/browser.c | |||
@@ -488,6 +488,47 @@ static int ui_browser__color_config(const char *var, const char *value, | |||
488 | return -1; | 488 | return -1; |
489 | } | 489 | } |
490 | 490 | ||
491 | void ui_browser__argv_seek(struct ui_browser *browser, off_t offset, int whence) | ||
492 | { | ||
493 | switch (whence) { | ||
494 | case SEEK_SET: | ||
495 | browser->top = browser->entries; | ||
496 | break; | ||
497 | case SEEK_CUR: | ||
498 | browser->top = browser->top + browser->top_idx + offset; | ||
499 | break; | ||
500 | case SEEK_END: | ||
501 | browser->top = browser->top + browser->nr_entries + offset; | ||
502 | break; | ||
503 | default: | ||
504 | return; | ||
505 | } | ||
506 | } | ||
507 | |||
508 | unsigned int ui_browser__argv_refresh(struct ui_browser *browser) | ||
509 | { | ||
510 | unsigned int row = 0, idx = browser->top_idx; | ||
511 | char **pos; | ||
512 | |||
513 | if (browser->top == NULL) | ||
514 | browser->top = browser->entries; | ||
515 | |||
516 | pos = (char **)browser->top; | ||
517 | while (idx < browser->nr_entries) { | ||
518 | if (!browser->filter || !browser->filter(browser, *pos)) { | ||
519 | ui_browser__gotorc(browser, row, 0); | ||
520 | browser->write(browser, pos, row); | ||
521 | if (++row == browser->height) | ||
522 | break; | ||
523 | } | ||
524 | |||
525 | ++idx; | ||
526 | ++pos; | ||
527 | } | ||
528 | |||
529 | return row; | ||
530 | } | ||
531 | |||
491 | void ui_browser__init(void) | 532 | void ui_browser__init(void) |
492 | { | 533 | { |
493 | int i = 0; | 534 | int i = 0; |