summaryrefslogtreecommitdiffstats
path: root/tools/perf/util/ui/browser.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2011-10-18 14:31:35 -0200
committerArnaldo Carvalho de Melo <acme@redhat.com>2011-10-18 17:02:56 -0200
commitc172f7422c03463a7177e268ffe625c41c42c179 (patch)
tree5c07c77cf5b8b0176723b499ddcf1d9f4e54d6c9 /tools/perf/util/ui/browser.c
parent3f7247e0725de9643ce5a02b082c81c617476fd5 (diff)
perf ui browser: Allow initial use without navigation UI elements
The selection and scroll bar are really needed only when the user starts navigating, before that it just provide distractions. This also brings the initial screen to look more like the stdio UI, which more people are used to. The new code is flexible enough that menu like browsers can opt out and start with those UI elements. 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-jfgok30kkerpfw8wtcltgy6z@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.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/tools/perf/util/ui/browser.c b/tools/perf/util/ui/browser.c
index a54b926efe2..dce16ee4364 100644
--- a/tools/perf/util/ui/browser.c
+++ b/tools/perf/util/ui/browser.c
@@ -14,9 +14,10 @@
int newtGetKey(void);
-static int ui_browser__percent_color(double percent, bool current)
+static int ui_browser__percent_color(struct ui_browser *browser,
+ double percent, bool current)
{
- if (current)
+ if (current && (!browser->use_navkeypressed || browser->navkeypressed))
return HE_COLORSET_SELECTED;
if (percent >= MIN_RED)
return HE_COLORSET_TOP;
@@ -33,7 +34,7 @@ void ui_browser__set_color(struct ui_browser *self __used, int color)
void ui_browser__set_percent_color(struct ui_browser *self,
double percent, bool current)
{
- int color = ui_browser__percent_color(percent, current);
+ int color = ui_browser__percent_color(self, percent, current);
ui_browser__set_color(self, color);
}
@@ -241,12 +242,18 @@ static void ui_browser__scrollbar_set(struct ui_browser *browser)
static int __ui_browser__refresh(struct ui_browser *browser)
{
int row;
+ int width = browser->width;
row = browser->refresh(browser);
ui_browser__set_color(browser, HE_COLORSET_NORMAL);
+
+ if (!browser->use_navkeypressed || browser->navkeypressed)
+ ui_browser__scrollbar_set(browser);
+ else
+ width += 1;
+
SLsmg_fill_region(browser->y + row, browser->x,
- browser->height - row, browser->width, ' ');
- ui_browser__scrollbar_set(browser);
+ browser->height - row, width, ' ');
return 0;
}
@@ -326,6 +333,17 @@ int ui_browser__run(struct ui_browser *self, int delay_secs)
continue;
}
+ if (self->use_navkeypressed && !self->navkeypressed) {
+ if (key == NEWT_KEY_DOWN || key == NEWT_KEY_UP ||
+ key == NEWT_KEY_PGDN || key == NEWT_KEY_PGUP ||
+ key == NEWT_KEY_HOME || key == NEWT_KEY_END ||
+ key == ' ') {
+ self->navkeypressed = true;
+ continue;
+ } else
+ return key;
+ }
+
switch (key) {
case NEWT_KEY_DOWN:
if (self->index == self->nr_entries - 1)