commit 3a0139e86b2f9a57742d59dad86f8386532ba872 from: Mark Jamsek via: Thomas Adam date: Fri Jul 22 20:11:58 2022 UTC tog: use view->resize idiom to ensure log is populated Replace view->mode == TOG_VIEW_LOG checks for requesting commits to populate the log view with calls to view->resize(). ok stsp@ commit - 150d7275caef04226a9f0c82b7b6c7ac62cfab0e commit + 3a0139e86b2f9a57742d59dad86f8386532ba872 blob - e7c5ac8b61051d4bd234205678c26e66391fb3fc blob + 7bb533d80f521658b546869a9f3347111376b090 --- tog/tog.c +++ tog/tog.c @@ -928,10 +928,13 @@ view_resize(struct tog_view *view) static const struct got_error * resize_log_view(struct tog_view *view, int increase) { - struct tog_log_view_state *s = &view->state.log; - const struct got_error *err = NULL; - int n = s->selected_entry->idx + view->lines - s->selected; + struct tog_log_view_state *s = &view->state.log; + const struct got_error *err = NULL; + int n = 0; + if (s->selected_entry) + n = s->selected_entry->idx + view->lines - s->selected; + /* * Request commits to account for the increased * height so we have enough to populate the view. @@ -980,8 +983,6 @@ view_resize_split(struct tog_view *view, int resize) v->resized = v->child->resized = resize; /* lock for resize event */ if (view->mode == TOG_VIEW_SPLIT_HRZN) { - int y = v->child->begin_y; - if (v->child->resized_y) v->child->begin_y = v->child->resized_y; if (view->parent) @@ -1002,10 +1003,6 @@ view_resize_split(struct tog_view *view, int resize) if (err) return err; v->child->resized_y = v->child->begin_y; - if (y > v->child->begin_y && v->child->type == TOG_VIEW_LOG) - v->child->nscrolled = y - v->child->begin_y; - else if (y < v->child->begin_y && v->type == TOG_VIEW_LOG) - v->nscrolled = v->child->begin_y - y; } else { if (v->child->resized_x) v->child->begin_x = v->child->resized_x; @@ -1041,10 +1038,10 @@ view_resize_split(struct tog_view *view, int resize) return err; } - if (v->nscrolled) - err = request_log_commits(v); - else if (v->child->nscrolled) - err = request_log_commits(v->child); + if (v->resize) + err = v->resize(v, 0); + else if (v->child->resize) + err = v->child->resize(v->child, 0); v->resized = v->child->resized = 0; @@ -1362,9 +1359,9 @@ view_input(struct tog_view **new, int *done, struct to view->parent->focussed = 1; view->parent->focus_child = 0; if (!view_is_splitscreen(view)) { - if (view->mode == TOG_VIEW_SPLIT_HRZN && - view->parent->type == TOG_VIEW_LOG) { - err = request_log_commits(view->parent); + if (view->parent->resize) { + err = view->parent->resize(view->parent, + 0); if (err) return err; } @@ -1377,9 +1374,9 @@ view_input(struct tog_view **new, int *done, struct to break; case 'q': if (view->parent && view->mode == TOG_VIEW_SPLIT_HRZN) { - if (view->parent->type == TOG_VIEW_LOG) { + if (view->parent->resize) { /* might need more commits to fill fullscreen */ - err = request_log_commits(view->parent); + err = view->parent->resize(view->parent, 0); if (err) break; } @@ -1427,8 +1424,8 @@ view_input(struct tog_view **new, int *done, struct to } if (err) break; - if (view->type == TOG_VIEW_LOG) { - err = request_log_commits(view); + if (view->resize) { + err = view->resize(view, 0); if (err) break; }