Download raw body.
fix hscrolling in split view
Stefan Sperling <stsp@stsp.name> wrote: > On Fri, Jun 17, 2022 at 09:56:52AM +0200, Omar Polo wrote: > > @@ -1529,6 +1540,8 @@ draw_commit(struct tog_view *view, struct got_commit_o > > if (newline) > > *newline = '\0'; > > limit = avail - col; > > + if (view->child) > > + limit--; /* for the border */ > > Check if limit > 0 before decrementing? Just for sanity. sure; i thought of it at some point yesterday but i just forgot ^^ diff c74541a34e628aa7d0d42da084a6f66045315aed /home/op/w/got blob - 183c31a912c364ea95baef1534e1f5908d1fb8fe file + tog/tog.c --- tog/tog.c +++ tog/tog.c @@ -763,31 +763,36 @@ view_resize(struct tog_view *view) else ncols = view->ncols + (COLS - view->cols); - if (wresize(view->window, nlines, ncols) == ERR) - return got_error_from_errno("wresize"); - if (replace_panel(view->panel, view->window) == ERR) - return got_error_from_errno("replace_panel"); - wclear(view->window); - - view->nlines = nlines; - view->ncols = ncols; - view->lines = LINES; - view->cols = COLS; - if (view->child) { view->child->begin_x = view_split_begin_x(view->begin_x); if (view->child->begin_x == 0) { + ncols = COLS; + view_fullscreen(view->child); if (view->child->focussed) show_panel(view->child->panel); else show_panel(view->panel); } else { + ncols = view->child->begin_x; + view_splitscreen(view->child); show_panel(view->child->panel); } - } + } else if (view->parent == NULL) + ncols = COLS; + if (wresize(view->window, nlines, ncols) == ERR) + return got_error_from_errno("wresize"); + if (replace_panel(view->panel, view->window) == ERR) + return got_error_from_errno("replace_panel"); + wclear(view->window); + + view->nlines = nlines; + view->ncols = ncols; + view->lines = LINES; + view->cols = COLS; + return NULL; } @@ -804,11 +809,13 @@ view_close_child(struct tog_view *view) return err; } -static void +static const struct got_error * view_set_child(struct tog_view *view, struct tog_view *child) { view->child = child; child->parent = view; + + return view_resize(view); } static int @@ -1085,6 +1092,10 @@ view_loop(struct tog_view *view) if (view->parent) { view->parent->child = NULL; view->parent->focus_child = 0; + + err = view_resize(view->parent); + if (err) + break; } else TAILQ_REMOVE(&views, view, entry); @@ -1529,6 +1540,8 @@ draw_commit(struct tog_view *view, struct got_commit_o if (newline) *newline = '\0'; limit = avail - col; + if (view->child && limit > 0) + limit--; /* for the border */ err = format_line(&wlogmsg, &logmsg_width, &scrollx, logmsg, view->x, limit, col, 1); if (err) @@ -2695,7 +2708,9 @@ input_log_view(struct tog_view **new_view, struct tog_ err = view_close_child(view); if (err) return err; - view_set_child(view, diff_view); + err = view_set_child(view, diff_view); + if (err) + return err; view->focus_child = 1; } else *new_view = diff_view; @@ -2716,7 +2731,9 @@ input_log_view(struct tog_view **new_view, struct tog_ err = view_close_child(view); if (err) return err; - view_set_child(view, tree_view); + err = view_set_child(view, tree_view); + if (err) + return err; view->focus_child = 1; } else *new_view = tree_view; @@ -2800,7 +2817,9 @@ input_log_view(struct tog_view **new_view, struct tog_ err = view_close_child(view); if (err) return err; - view_set_child(view, ref_view); + err = view_set_child(view, ref_view); + if (err) + return err; view->focus_child = 1; } else *new_view = ref_view; @@ -5101,7 +5120,9 @@ input_blame_view(struct tog_view **new_view, struct to err = view_close_child(view); if (err) break; - view_set_child(view, diff_view); + err = view_set_child(view, diff_view); + if (err) + break; view->focus_child = 1; } else *new_view = diff_view; @@ -5845,7 +5866,9 @@ input_tree_view(struct tog_view **new_view, struct tog err = view_close_child(view); if (err) return err; - view_set_child(view, log_view); + err = view_set_child(view, log_view); + if (err) + return err; view->focus_child = 1; } else *new_view = log_view; @@ -5868,7 +5891,9 @@ input_tree_view(struct tog_view **new_view, struct tog err = view_close_child(view); if (err) return err; - view_set_child(view, ref_view); + err = view_set_child(view, ref_view); + if (err) + return err; view->focus_child = 1; } else *new_view = ref_view; @@ -6002,7 +6027,9 @@ input_tree_view(struct tog_view **new_view, struct tog err = view_close_child(view); if (err) return err; - view_set_child(view, blame_view); + err = view_set_child(view, blame_view); + if (err) + return err; view->focus_child = 1; } else *new_view = blame_view; @@ -6728,7 +6755,9 @@ input_ref_view(struct tog_view **new_view, struct tog_ err = view_close_child(view); if (err) return err; - view_set_child(view, log_view); + err = view_set_child(view, log_view); + if (err) + return err; view->focus_child = 1; } else *new_view = log_view; @@ -6748,7 +6777,9 @@ input_ref_view(struct tog_view **new_view, struct tog_ err = view_close_child(view); if (err) return err; - view_set_child(view, tree_view); + err = view_set_child(view, tree_view); + if (err) + return err; view->focus_child = 1; } else *new_view = tree_view;
fix hscrolling in split view