summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2010-03-08 14:29:40 -0500
committerSadrul Habib Chowdhury <sadrul@users.sourceforge.net>2010-03-08 14:29:40 -0500
commit25ff9f7a8bf4e7e90ed6e2c26d8e3a32fd5a9368 (patch)
tree837b750607f3b0a1ef58d7dff61ca8c7c5967146
parenteb4cea75f23df90ac955e001fc5c3e54062d97cb (diff)
downloadscreen-25ff9f7a8bf4e7e90ed6e2c26d8e3a32fd5a9368.tar.gz
Fix a hardstatus update issue.
The initial change was to fix a bug in gnome-terminal (https://savannah.gnu.org/bugs/?23699), but that broke hardstatus update issues on bell (https://savannah.gnu.org/bugs/?24096). So apply a proper fix for #23699 without causing #24096.
-rw-r--r--src/display.c28
1 files changed, 8 insertions, 20 deletions
diff --git a/src/display.c b/src/display.c
index 36368aa..5fc5f4b 100644
--- a/src/display.c
+++ b/src/display.c
@@ -2327,26 +2327,7 @@ int y, from, to, isblank;
return; /* can't refresh status */
}
- /* The following check makes plenty of sense. Unfortunately,
- vte-based terminals (notably gnome-terminal) experience a quirk
- that causes the final line not to update properly when it falls outside
- the scroll region; clearing the line with D_CE avoids the glitch,
- so we'll disable this perfectly sensible shortcut until such a time
- as widespread vte installations lack the glitch.
-
- See http://bugzilla.gnome.org/show_bug.cgi?id=542087 for current
- status of the VTE bug report, and
- https://savannah.gnu.org/bugs/index.php?23699 for the history from
- the Savannah BTS. */
-#if 0
- if (y == D_height - 1 && D_has_hstatus == HSTATUS_LASTLINE)
- {
- RefreshHStatus();
- return;
- }
-#endif
-
- if (isblank == 0 && D_CE && to == D_width - 1 && from < to)
+ if (isblank == 0 && D_CE && to == D_width - 1 && from < to && D_status != STATUS_ON_HS)
{
GotoPos(from, y);
if (D_UT || D_BE)
@@ -2354,6 +2335,13 @@ int y, from, to, isblank;
AddCStr(D_CE);
isblank = 1;
}
+
+ if (y == D_height - 1 && D_has_hstatus == HSTATUS_LASTLINE)
+ {
+ RefreshHStatus();
+ return;
+ }
+
while (from <= to)
{
lcv = 0;