From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752710AbbJFHRr (ORCPT ); Tue, 6 Oct 2015 03:17:47 -0400 Received: from terminus.zytor.com ([198.137.202.10]:55955 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751639AbbJFHRp (ORCPT ); Tue, 6 Oct 2015 03:17:45 -0400 Date: Tue, 6 Oct 2015 00:17:27 -0700 From: tip-bot for Arnaldo Carvalho de Melo Message-ID: Cc: eranian@google.com, linux-kernel@vger.kernel.org, mingo@kernel.org, acme@redhat.com, bp@suse.de, hpa@zytor.com, jolsa@redhat.com, fweisbec@gmail.com, namhyung@kernel.org, tglx@linutronix.de, adrian.hunter@intel.com, dsahern@gmail.com Reply-To: linux-kernel@vger.kernel.org, eranian@google.com, mingo@kernel.org, acme@redhat.com, bp@suse.de, hpa@zytor.com, namhyung@kernel.org, jolsa@redhat.com, fweisbec@gmail.com, tglx@linutronix.de, adrian.hunter@intel.com, dsahern@gmail.com To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf ui browser: Optional horizontal scrolling key binding Git-Commit-ID: faae6f690eecb82b6d9d9f2112f5b51ac37d4acb X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: faae6f690eecb82b6d9d9f2112f5b51ac37d4acb Gitweb: http://git.kernel.org/tip/faae6f690eecb82b6d9d9f2112f5b51ac37d4acb Author: Arnaldo Carvalho de Melo AuthorDate: Tue, 11 Aug 2015 17:14:40 -0300 Committer: Arnaldo Carvalho de Melo CommitDate: Mon, 5 Oct 2015 17:59:49 -0300 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 Cc: Borislav Petkov Cc: David Ahern Cc: Frederic Weisbecker Cc: Jiri Olsa Cc: Namhyung Kim Cc: Stephane Eranian Link: http://lkml.kernel.org/n/tip-q6a22bpmpgcr1awgzrmd4jrs@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/ui/browser.c | 14 ++++++++++++++ tools/perf/ui/browser.h | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tools/perf/ui/browser.c b/tools/perf/ui/browser.c index c6c7e51..e9703c0 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) if (browser->use_navkeypressed && !browser->navkeypressed) { if (key == K_DOWN || key == K_UP || + (browser->columns && (key == K_LEFT || key == K_RIGHT)) || key == K_PGDN || key == K_PGUP || key == K_HOME || key == K_END || key == ' ') { @@ -421,6 +422,18 @@ int ui_browser__run(struct ui_browser *browser, int delay_secs) browser->seek(browser, -1, SEEK_CUR); } break; + case K_RIGHT: + if (!browser->columns) + goto out; + if (browser->horiz_scroll < browser->columns - 1) + ++browser->horiz_scroll; + break; + case K_LEFT: + if (!browser->columns) + goto out; + if (browser->horiz_scroll != 0) + --browser->horiz_scroll; + break; case K_PGDN: case ' ': 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) browser->seek(browser, -offset, SEEK_END); break; default: + out: return key; } } diff --git a/tools/perf/ui/browser.h b/tools/perf/ui/browser.h index f3cef56..01781de 100644 --- a/tools/perf/ui/browser.h +++ b/tools/perf/ui/browser.h @@ -14,7 +14,7 @@ struct ui_browser { u64 index, top_idx; void *top, *entries; - u16 y, x, width, height, rows; + u16 y, x, width, height, rows, columns, horiz_scroll; int current_color; void *priv; const char *title;