Commit-ID:  0e3fa7a7acdd5f6ec89b3692276e35006c06fb92
Gitweb:     http://git.kernel.org/tip/0e3fa7a7acdd5f6ec89b3692276e35006c06fb92
Author:     Jiri Olsa <[email protected]>
AuthorDate: Fri, 20 Jan 2017 10:20:30 +0100
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Fri, 20 Jan 2017 13:37:26 -0300

perf hists browser: Add e/c hotkeys to expand/collapse callchain for current 
entry

Currently we allow only to expand or collapse all entries in the browser
with 'E' or 'C' keys. Allow user to expand or collapse only current
entry in the browser with e or c key.

Signed-off-by: Jiri Olsa <[email protected]>
Tested-by: Arnaldo Carvalho de Melo <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Don Zickus <[email protected]>
Cc: Joe Mario <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: 
http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
 tools/perf/ui/browsers/hists.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 8bf18af..fc4fb66 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -571,6 +571,15 @@ static void hist_browser__set_folding(struct hist_browser 
*browser, bool unfold)
        ui_browser__reset_index(&browser->b);
 }
 
+static void hist_browser__set_folding_selected(struct hist_browser *browser, 
bool unfold)
+{
+       if (!browser->he_selection)
+               return;
+
+       hist_entry__set_folding(browser->he_selection, browser, unfold);
+       browser->b.nr_entries = hist_browser__nr_entries(browser);
+}
+
 static void ui_browser__warn_lost_events(struct ui_browser *browser)
 {
        ui_browser__warning(browser, 4,
@@ -644,10 +653,18 @@ int hist_browser__run(struct hist_browser *browser, const 
char *help)
                        /* Collapse the whole world. */
                        hist_browser__set_folding(browser, false);
                        break;
+               case 'c':
+                       /* Collapse the selected entry. */
+                       hist_browser__set_folding_selected(browser, false);
+                       break;
                case 'E':
                        /* Expand the whole world. */
                        hist_browser__set_folding(browser, true);
                        break;
+               case 'e':
+                       /* Expand the selected entry. */
+                       hist_browser__set_folding_selected(browser, true);
+                       break;
                case 'H':
                        browser->show_headers = !browser->show_headers;
                        hist_browser__update_rows(browser);

Reply via email to