mirror of
https://github.com/tmux/tmux.git
synced 2024-12-13 10:08:47 +00:00
Merge branch 'obsd-master'
This commit is contained in:
commit
999c1c771b
@ -67,6 +67,7 @@ grid_view_clear_history(struct grid *gd)
|
|||||||
grid_collect_history(gd);
|
grid_collect_history(gd);
|
||||||
grid_scroll_history(gd);
|
grid_scroll_history(gd);
|
||||||
}
|
}
|
||||||
|
gd->hscrolled = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clear area. */
|
/* Clear area. */
|
||||||
|
11
grid.c
11
grid.c
@ -99,6 +99,7 @@ grid_create(u_int sx, u_int sy, u_int hlimit)
|
|||||||
|
|
||||||
gd->flags = GRID_HISTORY;
|
gd->flags = GRID_HISTORY;
|
||||||
|
|
||||||
|
gd->hscrolled = 0;
|
||||||
gd->hsize = 0;
|
gd->hsize = 0;
|
||||||
gd->hlimit = hlimit;
|
gd->hlimit = hlimit;
|
||||||
|
|
||||||
@ -170,6 +171,8 @@ grid_collect_history(struct grid *gd)
|
|||||||
|
|
||||||
grid_move_lines(gd, 0, yy, gd->hsize + gd->sy - yy);
|
grid_move_lines(gd, 0, yy, gd->hsize + gd->sy - yy);
|
||||||
gd->hsize -= yy;
|
gd->hsize -= yy;
|
||||||
|
if (gd->hscrolled > gd->hsize)
|
||||||
|
gd->hscrolled = gd->hsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -186,6 +189,7 @@ grid_scroll_history(struct grid *gd)
|
|||||||
sizeof *gd->linedata);
|
sizeof *gd->linedata);
|
||||||
memset(&gd->linedata[yy], 0, sizeof gd->linedata[yy]);
|
memset(&gd->linedata[yy], 0, sizeof gd->linedata[yy]);
|
||||||
|
|
||||||
|
gd->hscrolled++;
|
||||||
gd->hsize++;
|
gd->hsize++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,7 +200,9 @@ grid_clear_history(struct grid *gd)
|
|||||||
grid_clear_lines(gd, 0, gd->hsize);
|
grid_clear_lines(gd, 0, gd->hsize);
|
||||||
grid_move_lines(gd, 0, gd->hsize, gd->sy);
|
grid_move_lines(gd, 0, gd->hsize, gd->sy);
|
||||||
|
|
||||||
|
gd->hscrolled = 0;
|
||||||
gd->hsize = 0;
|
gd->hsize = 0;
|
||||||
|
|
||||||
gd->linedata = xreallocarray(gd->linedata, gd->sy,
|
gd->linedata = xreallocarray(gd->linedata, gd->sy,
|
||||||
sizeof *gd->linedata);
|
sizeof *gd->linedata);
|
||||||
}
|
}
|
||||||
@ -231,6 +237,7 @@ grid_scroll_history_region(struct grid *gd, u_int upper, u_int lower)
|
|||||||
memset(gl_lower, 0, sizeof *gl_lower);
|
memset(gl_lower, 0, sizeof *gl_lower);
|
||||||
|
|
||||||
/* Move the history offset down over the line. */
|
/* Move the history offset down over the line. */
|
||||||
|
gd->hscrolled++;
|
||||||
gd->hsize++;
|
gd->hsize++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -914,6 +921,10 @@ grid_reflow(struct grid *dst, struct grid *src, u_int new_x)
|
|||||||
grid_reflow_join(dst, &py, src_gl, new_x);
|
grid_reflow_join(dst, &py, src_gl, new_x);
|
||||||
}
|
}
|
||||||
previous_wrapped = (src_gl->flags & GRID_LINE_WRAPPED);
|
previous_wrapped = (src_gl->flags & GRID_LINE_WRAPPED);
|
||||||
|
|
||||||
|
/* This is where we started scrolling. */
|
||||||
|
if (line == sy + src->hsize - src->hscrolled - 1)
|
||||||
|
dst->hscrolled = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
grid_destroy(src);
|
grid_destroy(src);
|
||||||
|
@ -1016,7 +1016,7 @@ screen_write_clearhistory(struct screen_write_ctx *ctx)
|
|||||||
struct grid *gd = s->grid;
|
struct grid *gd = s->grid;
|
||||||
|
|
||||||
grid_move_lines(gd, 0, gd->hsize, gd->sy);
|
grid_move_lines(gd, 0, gd->hsize, gd->sy);
|
||||||
gd->hsize = 0;
|
gd->hscrolled = gd->hsize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write cell data. */
|
/* Write cell data. */
|
||||||
|
15
screen.c
15
screen.c
@ -177,8 +177,9 @@ screen_resize_y(struct screen *s, u_int sy)
|
|||||||
* If the height is decreasing, delete lines from the bottom until
|
* If the height is decreasing, delete lines from the bottom until
|
||||||
* hitting the cursor, then push lines from the top into the history.
|
* hitting the cursor, then push lines from the top into the history.
|
||||||
*
|
*
|
||||||
* When increasing, pull as many lines as possible from the history to
|
* When increasing, pull as many lines as possible from scrolled
|
||||||
* the top, then fill the remaining with blanks at the bottom.
|
* history (not explicitly cleared from view) to the top, then fill the
|
||||||
|
* remaining with blanks at the bottom.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Size decreasing. */
|
/* Size decreasing. */
|
||||||
@ -200,9 +201,10 @@ screen_resize_y(struct screen *s, u_int sy)
|
|||||||
* lines from the top.
|
* lines from the top.
|
||||||
*/
|
*/
|
||||||
available = s->cy;
|
available = s->cy;
|
||||||
if (gd->flags & GRID_HISTORY)
|
if (gd->flags & GRID_HISTORY) {
|
||||||
|
gd->hscrolled += needed;
|
||||||
gd->hsize += needed;
|
gd->hsize += needed;
|
||||||
else if (needed > 0 && available > 0) {
|
} else if (needed > 0 && available > 0) {
|
||||||
if (available > needed)
|
if (available > needed)
|
||||||
available = needed;
|
available = needed;
|
||||||
grid_view_delete_lines(gd, 0, available);
|
grid_view_delete_lines(gd, 0, available);
|
||||||
@ -219,13 +221,14 @@ screen_resize_y(struct screen *s, u_int sy)
|
|||||||
needed = sy - oldy;
|
needed = sy - oldy;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try to pull as much as possible out of the history, if is
|
* Try to pull as much as possible out of scrolled history, if is
|
||||||
* is enabled.
|
* is enabled.
|
||||||
*/
|
*/
|
||||||
available = gd->hsize;
|
available = gd->hscrolled;
|
||||||
if (gd->flags & GRID_HISTORY && available > 0) {
|
if (gd->flags & GRID_HISTORY && available > 0) {
|
||||||
if (available > needed)
|
if (available > needed)
|
||||||
available = needed;
|
available = needed;
|
||||||
|
gd->hscrolled -= available;
|
||||||
gd->hsize -= available;
|
gd->hsize -= available;
|
||||||
s->cy += available;
|
s->cy += available;
|
||||||
} else
|
} else
|
||||||
|
Loading…
Reference in New Issue
Block a user