commit 1e8dce16b239e5d378b02e4d04a60e823df36257
Author: Elan Ruusamäe <[email protected]>
Date:   Fri Aug 7 00:56:24 2015 +0300

    apply repaint bug patch for mosh
    
    https://github.com/mobile-shell/mosh/issues/660

 repaint-bug.patch | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 vte0.spec         |  4 ++-
 2 files changed, 89 insertions(+), 1 deletion(-)
---
diff --git a/vte0.spec b/vte0.spec
index 614c467..981835f 100644
--- a/vte0.spec
+++ b/vte0.spec
@@ -2,12 +2,13 @@ Summary:      VTE terminal widget library for GTK+ 2
 Summary(pl.UTF-8):     Biblioteka z kontrolką terminala VTE for GTK+ 2
 Name:          vte0
 Version:       0.28.2
-Release:       14
+Release:       15
 License:       LGPL v2+
 Group:         X11/Libraries
 Source0:       
http://ftp.gnome.org/pub/GNOME/sources/vte/0.28/vte-%{version}.tar.bz2
 # Source0-md5: f07a4bf943194f94b7f142db8f7f36dc
 Patch0:                vte-alt-meta.patch
+Patch1:                repaint-bug.patch
 BuildRequires: autoconf >= 2.63
 BuildRequires: automake >= 1:1.9
 BuildRequires: docbook-dtd412-xml
@@ -121,6 +122,7 @@ Pliki programistyczne wiązań Pythona do VTE.
 %prep
 %setup -q -n vte-%{version}
 %patch0 -p1
+%patch1 -p1
 
 %build
 %configure \
diff --git a/repaint-bug.patch b/repaint-bug.patch
new file mode 100644
index 0000000..86e5471
--- /dev/null
+++ b/repaint-bug.patch
@@ -0,0 +1,86 @@
+https://git.gnome.org/browse/vte/commit/?id=88e8e89560a62d0981ce2b18974a230d0a07dbdd
+
+From 88e8e89560a62d0981ce2b18974a230d0a07dbdd Mon Sep 17 00:00:00 2001
+From: Micah Cowan <[email protected]>
+Date: Tue, 22 Oct 2013 23:30:43 +0200
+Subject: widget: Fix invalidation region
+
+When the sequence handler moves the cursor into the restricted scrolling 
region,
+the bbox needs to be reset, too.
+Fixes glitches with interspersing writes to the bottom line with scrolls of the
+upper region, and also fixes missing screen redraws when using mosh.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=542087
+https://bugzilla.gnome.org/show_bug.cgi?id=686097
+
+diff --git a/src/vte.c b/src/vte.c
+index 9f6d7d8..a4d9d25 100644
+--- a/src/vte.c
++++ b/src/vte.c
+@@ -4077,6 +4077,7 @@ vte_terminal_process_incoming(VteTerminal *terminal)
+       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;
+ 
+@@ -4096,6 +4097,10 @@ vte_terminal_process_incoming(VteTerminal *terminal)
+       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));
+@@ -4194,6 +4199,8 @@ skip_chunk:
+                * 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,
+@@ -4204,12 +4211,21 @@ skip_chunk:
+                       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);
+@@ -4229,6 +4245,8 @@ skip_chunk:
+                               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
+-- 
+cgit v0.10.2
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/vte0.git/commitdiff/1e8dce16b239e5d378b02e4d04a60e823df36257

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to