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>
This commit is contained in:
@@ -488,6 +488,47 @@ static int ui_browser__color_config(const char *var, const char *value,
|
||||
return -1;
|
||||
}
|
||||
|
||||
void ui_browser__argv_seek(struct ui_browser *browser, off_t offset, int whence)
|
||||
{
|
||||
switch (whence) {
|
||||
case SEEK_SET:
|
||||
browser->top = browser->entries;
|
||||
break;
|
||||
case SEEK_CUR:
|
||||
browser->top = browser->top + browser->top_idx + offset;
|
||||
break;
|
||||
case SEEK_END:
|
||||
browser->top = browser->top + browser->nr_entries + offset;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int ui_browser__argv_refresh(struct ui_browser *browser)
|
||||
{
|
||||
unsigned int row = 0, idx = browser->top_idx;
|
||||
char **pos;
|
||||
|
||||
if (browser->top == NULL)
|
||||
browser->top = browser->entries;
|
||||
|
||||
pos = (char **)browser->top;
|
||||
while (idx < browser->nr_entries) {
|
||||
if (!browser->filter || !browser->filter(browser, *pos)) {
|
||||
ui_browser__gotorc(browser, row, 0);
|
||||
browser->write(browser, pos, row);
|
||||
if (++row == browser->height)
|
||||
break;
|
||||
}
|
||||
|
||||
++idx;
|
||||
++pos;
|
||||
}
|
||||
|
||||
return row;
|
||||
}
|
||||
|
||||
void ui_browser__init(void)
|
||||
{
|
||||
int i = 0;
|
||||
|
Reference in New Issue
Block a user