commit f5215bb92ac7f34310ec43d9075c048566b64628 from: Stefan Sperling date: Fri Feb 22 11:25:11 2019 UTC make 'tog diff' show a progress message while generating diffs commit - 8a42fca8ab01e340d7099ee3f5988bf7b4c51768 commit + f5215bb92ac7f34310ec43d9075c048566b64628 blob - ea459c1816bc8a91570634707683fbaa538f62a8 blob + bc37cceed85d1e8e7c53e34fec163f26ce9d3160 --- tog/tog.c +++ tog/tog.c @@ -486,7 +486,7 @@ view_set_child(struct tog_view *view, struct tog_view static int view_is_splitscreen(struct tog_view *view) { - return !view_is_parent_view(view) && view->begin_x > 0; + return view->begin_x > 0; } static void @@ -2107,6 +2107,15 @@ done: return err; } +static void +diff_view_indicate_progress(struct tog_view *view) +{ + werase(view->window); + waddstr(view->window, "diffing..."); + update_panels(); + doupdate(); +} + static const struct got_error * open_diff_view(struct tog_view *view, struct got_object_id *id1, struct got_object_id *id2, struct tog_view *log_view, @@ -2148,6 +2157,10 @@ open_diff_view(struct tog_view *view, struct got_objec view->state.diff.repo = repo; view->state.diff.refs = refs; + if (log_view && view_is_splitscreen(view)) + show_log_view(log_view); /* draw vborder */ + diff_view_indicate_progress(view); + err = create_diff(&view->state.diff); if (err) { free(view->state.diff.id1); @@ -2275,12 +2288,14 @@ input_diff_view(struct tog_view **new_view, struct tog case '[': if (s->diff_context > 0) { s->diff_context--; + diff_view_indicate_progress(view); err = create_diff(s); } break; case ']': if (s->diff_context < GOT_DIFF_MAX_CONTEXT) { s->diff_context++; + diff_view_indicate_progress(view); err = create_diff(s); } break; @@ -2306,6 +2321,7 @@ input_diff_view(struct tog_view **new_view, struct tog s->first_displayed_line = 1; s->last_displayed_line = view->nlines; + diff_view_indicate_progress(view); err = create_diff(s); break; case '>': @@ -2345,6 +2361,7 @@ input_diff_view(struct tog_view **new_view, struct tog s->first_displayed_line = 1; s->last_displayed_line = view->nlines; + diff_view_indicate_progress(view); err = create_diff(s); break; default: