Index: Makefile =================================================================== --- Makefile (revision 414342) +++ Makefile (working copy) @@ -3,7 +3,7 @@ PORTNAME= vte PORTVERSION= 0.28.2 -PORTREVISION?= 2 +PORTREVISION?= 3 CATEGORIES= x11-toolkits gnome MASTER_SITES= GNOME DIST_SUBDIR= gnome2 Index: files/patch-src_vte.c =================================================================== --- files/patch-src_vte.c (revision 414342) +++ files/patch-src_vte.c (working copy) @@ -1,6 +1,69 @@ ---- src/vte.c.orig 2011-08-28 23:31:45.000000000 +0200 -+++ src/vte.c 2014-02-11 21:57:19.000000000 +0100 -@@ -5164,19 +5164,23 @@ +--- src/vte.c- 2016-04-06 12:07:45.469197782 +0900 ++++ src/vte.c 2016-04-06 12:08:02.702194923 +0900 +@@ -4057,6 +4057,7 @@ + long wcount, start, delta; + gboolean leftovers, modified, bottom, again; + gboolean invalidated_text; ++ gboolean in_scroll_region; + GArray *unichars; + struct _vte_incoming_chunk *chunk, *next_chunk, *achunk = NULL; + +@@ -4076,6 +4077,10 @@ + cursor = screen->cursor_current; + cursor_visible = terminal->pvt->cursor_visible; + ++ in_scroll_region = screen->scrolling_restricted ++ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start)) ++ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end)); ++ + /* We should only be called when there's data to process. */ + g_assert(terminal->pvt->incoming || + (terminal->pvt->pending->len > 0)); +@@ -4174,6 +4179,8 @@ + * points to the first character which isn't part of this + * sequence. */ + if ((match != NULL) && (match[0] != '\0')) { ++ gboolean new_in_scroll_region; ++ + /* Call the right sequence handler for the requested + * behavior. */ + _vte_terminal_handle_sequence(terminal, +@@ -4184,12 +4191,20 @@ + start = (next - wbuf); + modified = TRUE; + +- /* if we have moved during the sequence handler, restart the bbox */ ++ new_in_scroll_region = screen->scrolling_restricted ++ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start)) ++ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end)); ++ ++ delta = screen->scroll_delta; /* delta may have changed from sequence. */ ++ ++ /* if we have moved greatly during the sequence handler, or moved into a scroll_region ++ * from outside it, restart the bbox */ + if (invalidated_text && +- (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK || +- screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK || +- screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK || +- screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK)) { ++ ((new_in_scroll_region && !in_scroll_region) || ++ (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK))) { + /* Clip off any part of the box which isn't already on-screen. */ + bbox_topleft.x = MAX(bbox_topleft.x, 0); + bbox_topleft.y = MAX(bbox_topleft.y, delta); +@@ -4209,6 +4224,8 @@ + bbox_bottomright.x = bbox_bottomright.y = -G_MAXINT; + bbox_topleft.x = bbox_topleft.y = G_MAXINT; + } ++ ++ in_scroll_region = new_in_scroll_region; + } else + /* Second, we have a NULL match, and next points to the very + * next character in the buffer. Insert the character which +@@ -5164,19 +5181,23 @@ vte_terminal_read_modifiers (VteTerminal *terminal, GdkEvent *event) {