mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 20:36:50 +03:00
Ticket #2453: aggressive screen repaint
... to avoid artefacts after printing of non-printable symbols. (tty_touch_lines): new function to mark modified lines of screen. (do_refresh): mark lines as modified before redraw of non-fullscreen dialog and clear entire screen before redraw of fullscreen dialog. Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
f5ff35a5f3
commit
f809e6cf7a
@ -280,6 +280,14 @@ tty_touch_screen (void)
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
void
|
||||
tty_touch_lines (int start, int num)
|
||||
{
|
||||
touchline (stdscr, start, num);
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
void
|
||||
tty_gotoyx (int y, int x)
|
||||
{
|
||||
|
@ -453,6 +453,14 @@ tty_touch_screen (void)
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
void
|
||||
tty_touch_lines (int start, int num)
|
||||
{
|
||||
SLsmg_touch_lines (start, num);
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
void
|
||||
tty_gotoyx (int y, int x)
|
||||
{
|
||||
|
@ -110,6 +110,7 @@ extern int tty_lowlevel_getch (void);
|
||||
|
||||
extern int tty_reset_screen (void);
|
||||
extern void tty_touch_screen (void);
|
||||
extern void tty_touch_lines (int start, int num);
|
||||
|
||||
extern void tty_gotoyx (int y, int x);
|
||||
extern void tty_getyx (int *py, int *px);
|
||||
|
@ -871,7 +871,12 @@ do_refresh (void)
|
||||
if (fast_refresh)
|
||||
{
|
||||
if ((d != NULL) && (d->data != NULL))
|
||||
dlg_redraw ((Dlg_head *) d->data);
|
||||
{
|
||||
Dlg_head *dlg = (Dlg_head *) d->data;
|
||||
|
||||
tty_touch_lines (dlg->y, dlg->lines);
|
||||
dlg_redraw (dlg);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -879,6 +884,10 @@ do_refresh (void)
|
||||
for (; d != NULL; d = g_list_next (d))
|
||||
if ((d->data != NULL) && ((Dlg_head *) d->data)->fullscreen)
|
||||
break;
|
||||
|
||||
/* Clear entire screen to avoid artefacts after printing of non-printable symbols. */
|
||||
clr_scr ();
|
||||
|
||||
/* back to top dialog */
|
||||
for (; d != NULL; d = g_list_previous (d))
|
||||
if (d->data != NULL)
|
||||
|
Loading…
Reference in New Issue
Block a user