lynx-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: LYNX-DEV scrollok and lynx_force_repaint


From: Foteos Macrides
Subject: Re: LYNX-DEV scrollok and lynx_force_repaint
Date: Thu, 06 Nov 1997 16:25:18 -0500 (EST)

Foteos Macrides <address@hidden> wrote:
>"John E. Davis" <address@hidden> wrote:
>>On Wed, 5 Nov 1997 15:12:33 -0600 (CST), Klaus Weide <address@hidden> said:
>>>Ok, I think I understand now what is happening. In the following
>>>section in LYForms.c
>>>
>>>#if defined(FANCY_CURSES) || defined(USE_SLANG)
>>>            if (!enable_scrollback && form->num_value == OrigNumValue)
>>>#if defined(VMS) && !defined(USE_SLANG)
>>>                c = DO_NOTHING;
>>>#else
>>>                c = 23;
>>>#endif /* VMS && !USE_SLANG */
>>>            else
>>>#endif /* FANCY_CURSES || USE_SLANG */
>>>                c = 12;  /* CTRL-L for repaint */
>>>            break;
>>>
>>>
>>>if the form->num_value has changed 12 is returned which makes the full
>>>refresh happen.  It should instead return 23, and the refresh will not
>>>be a full one.
>>
>>Are you saying that this should be simplified to:
>>
>>#if defined(VMS) && !defined(USE_SLANG)
>>      if (!enable_scrollback && form->num_value == OrigNumValue)
>>        c = DO_NOTHING;
>>      else
>>#endif
>>        c = 23;
>>      break;
>
>       You want:
>
>#if defined(FANCY_CURSES) || defined(USE_SLANG)
>           if (!enable_scrollback)
>#if defined(VMS) && !defined(USE_SLANG)
>               if (form->num_value == OrigNumValue)
>                   c = DO_NOTHING;
>               else
>#endif /* VMS && !USE_SLANG*/
>               c = 23; 
>           else
>#endif /* FANCY_CURSES || USE_SLANG */
>               c = 12;  /* CTRL-L for repaint */
>           break;
>
>
>       Only VMS curses can literally DO_NOTHING when the selection
>isn't changed, but neither slang nor Unix curses need the 12 unless
>enable_scrollback is set.   With 23, slang and VMS curses will use
>their smart repaint, but Unix curses is still stuck with a brain
>dead repaint (i.e., that's noticeable, even with a T1 line :).

John,
        I tried also replacing the appropriate clear() calls in
LYMainLoop.c and LYOptions.c with erase() and setting clearok() for
Unix curses as for VMS curses and slang only on overt REFRESH (^L)
commands.  That works fine (at least on solaris2 and osf where I
can test it) and the behavior on retractions of popups is now as
nice for Unix curses as for VMS curses and slang.  However, there
is that "ugly" behavior with slang when you do want to make sure
anything on the screen which slang didn't put there intentially
is gotten rid of as well on refreshes.  My LY_SLrefresh() does a
SLsmg_touch_lines(0, LYlines) before the SLsmg_refresh() in such
cases, and the touch is really slow and hurkey ("ugly"), but I
don't see a better, but equally reliable, way to do that with
slang library functions.  Is there?

        I also tried Alex Lyon's suggested trick of setting LINES
and COLUMNS artificially high before the initscr() for Unix curses,
and then setting LYlines and LYcols to the correct values via a
dummy call to size_change(), as slang does, so that increases and
not just decreases in screen size during the Lynx session can be
handled.  That seems to be OK with solaris2 and osf, too.  (I still
require an overt RELOAD to create a new HText structure based on
the current screen size).

        But one other remaining problem is that when building with
slang on osf you get gobs of "redefinition of macro va_start"
warnings.  They can be ignored because Lynx doesn't use va_start(),
but many OSFers are displayed VMSers, and feel uncomfortable about
using an image that had lots of warnings when it was being built.
Is there any way to deal with that, short of editing system headers?

                                Fote

=========================================================================
 Foteos Macrides            Worcester Foundation for Biomedical Research
 address@hidden         222 Maple Avenue, Shrewsbury, MA 01545
=========================================================================
;
; To UNSUBSCRIBE:  Send a mail message to address@hidden
;                  with "unsubscribe lynx-dev" (without the
;                  quotation marks) on a line by itself.
;

reply via email to

[Prev in Thread] Current Thread [Next in Thread]