Better fix for the border bug
Pavel Roskin
proski at gnu.org
Mon May 28 19:38:00 UTC 2001
Hello!
I'm applying a better fix for the border bug. Many thanks to the S-Lang
author John E. Davis for finding the real problem. The old patch is being
reverted.
ChangeLog
* color.c (init_colors) [HAVE_SLANG]: Use SLtt_set_color() to
associate the default colors with DEFAULT_COLOR_INDEX. The old
code would unset alternative charset without making S-Lang aware
of it.
Thanks to John E. Davis <davis at space.mit.edu>
* widget.c (update_input) [HAVE_SLANG]: Revert last change - it
is not needed now.
________________________________
--- color.c
+++ color.c
@@ -294,15 +294,12 @@ void init_colors (void)
#endif
#if defined HAVE_SLANG && !defined(HAS_DIRECT_COLOR_ACCESS)
- if (use_colors) { /* Hack to make COLOR_PAIR(DEFAULT_COLOR_INDEX)
- be the default fg/bg of the terminal */
- char *Norm_Vid = SLtt_tgetstr ("me");
-
- if (Norm_Vid == NULL)
- Norm_Vid = SLtt_tgetstr ("se");
- if (Norm_Vid == NULL)
- Norm_Vid = "\033[0m";
- SLtt_set_color_esc (DEFAULT_COLOR_INDEX, Norm_Vid);
+ if (use_colors) { /* We are relying on undocumented feature of
+ S-Lang to make COLOR_PAIR(DEFAULT_COLOR_INDEX)
+ the default fg/bg of the terminal.
+ Hopefully, future versions of S-Lang will
+ document this feature. */
+ SLtt_set_color (DEFAULT_COLOR_INDEX, NULL, NULL, NULL);
}
#endif
--- widget.c
+++ widget.c
@@ -840,24 +840,9 @@ update_input (WInput *in, int clear_firs
attrset (in->color);
-#ifdef HAVE_SLANG
- /*
- * acs() and noacs() here are a workaround for what seems to be
- * a bug in SLang 1.x (up to 1.4.4, but not in 0.99.38). Without
- * them, the first dialog box to appear may have part of its
- * frame displayed in ASCII characters instead of line drawing
- * characters. Subshell support and color terminal are needed for
- * the bug to show up.
- */
- acs ();
- SLsmg_fill_region (in->widget.y, in->widget.x,
- 1, in->field_len - has_history, ' ');
- noacs ();
-#else
widget_move (&in->widget, 0, 0);
for (i = 0; i < in->field_len - has_history; i++)
addch (' ');
-#endif
widget_move (&in->widget, 0, 0);
for (i = 0, j = in->first_shown; i < in->field_len - has_history && in->buffer [j]; i++){
________________________________
Regards,
Pavel Roskin
More information about the mc-devel
mailing list