Skip to content

Commit

Permalink
Some minor updates for scrolling and for a double-click in diff
Browse files Browse the repository at this point in the history
  • Loading branch information
mckellygit committed Jan 12, 2021
1 parent de7bb0a commit 7add3dd
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/tig.c
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,9 @@ handle_mouse_event(void)
if (event.bstate & BUTTON1_PRESSED) {
if (event.y == view->pos.lineno - view->pos.offset) {
/* Click is on the same line, perform an "ENTER" */
// unless we are in diff as that might move/scroll ...
if (view_has_flags(view, VIEW_DIFF_LIKE))
return REQ_NONE;
return REQ_ENTER;

} else {
Expand Down
33 changes: 31 additions & 2 deletions src/view.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ void
scroll_view(struct view *view, enum request request)
{
int lines = 1;
unsigned long orig_offset, orig_lineno;
unsigned long new_offset, new_lineno;

assert(view_is_displayed(view));

Expand Down Expand Up @@ -138,8 +140,14 @@ scroll_view(struct view *view, enum request request)
if (view->pos.offset + lines > view->lines)
lines = view->lines - view->pos.offset;

// do not scroll past bottom ...
if ((view->pos.offset + view->height + lines) > view->lines)
lines = view->lines - view->pos.offset - view->height;

if (lines == 0 || view->pos.offset + view->height >= view->lines) {
report("Cannot scroll beyond the last line");
// if wanted to move down when can no longer scroll ...
// move_view(view, REQ_MOVE_DOWN);
return;
}
break;
Expand All @@ -154,6 +162,8 @@ scroll_view(struct view *view, enum request request)

if (lines == 0) {
report("Cannot scroll beyond the first line");
// if wanted to move up when can no longer scroll ...
// move_view(view, REQ_MOVE_UP);
return;
}

Expand All @@ -164,7 +174,24 @@ scroll_view(struct view *view, enum request request)
die("request %d not handled in switch", request);
}

orig_offset = view->pos.offset;
orig_lineno = view->pos.lineno;

do_scroll_view(view, lines);

new_offset = view->pos.offset;
new_lineno = view->pos.lineno;

int move_lines = (new_offset - orig_offset) - (new_lineno - orig_lineno);

int i;
if (move_lines < 0) {
for(i=0; i<-move_lines; i++)
move_view(view, REQ_MOVE_UP);
} else if (move_lines > 0) {
for(i=0; i<move_lines; i++)
move_view(view, REQ_MOVE_DOWN);
}
}

/* Cursor moving */
Expand Down Expand Up @@ -204,11 +231,13 @@ move_view(struct view *view, enum request request)
break;

case REQ_MOVE_WHEEL_DOWN:
steps = opt_mouse_scroll;
steps = view->pos.lineno + opt_mouse_scroll >= view->lines
? view->lines - view->pos.lineno - 1 : opt_mouse_scroll;
break;

case REQ_MOVE_WHEEL_UP:
steps = -opt_mouse_scroll;
steps = opt_mouse_scroll > view->pos.lineno
? -view->pos.lineno : -opt_mouse_scroll;
break;

case REQ_MOVE_UP:
Expand Down

0 comments on commit 7add3dd

Please sign in to comment.