Corretto scrolling

git-svn-id: svn://10.65.10.50/trunk@2486 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1996-01-23 11:55:22 +00:00
parent d0714c6c0e
commit f94f3309bb

View File

@ -522,7 +522,7 @@ void TViswin::adjust_selection (
} }
} }
void TViswin::shift_screen (scroll dir) void TViswin::shift_screen(scroll dir)
{ {
RCT r; RCT r;
@ -534,17 +534,17 @@ void TViswin::shift_screen (scroll dir)
{ {
case up: case up:
case down: case down:
xvt_rect_set (&r, 0, taby(Y_OFFSET)+2, xvt_rect_set(&r, 0, taby(Y_OFFSET)/*+2*/,
tabx(int(_textcolumns) + X_OFFSET), taby(int(_textrows) + Y_OFFSET)); tabx(int(_textcolumns) + X_OFFSET), taby(int(_textrows) + Y_OFFSET));
xvt_dwin_scroll_rect (win (), &r, 0, dir == down ? taby(1) : -taby(1)); xvt_dwin_scroll_rect (win(), &r, 0, dir == down ? taby(1) : -taby(1));
paint_row (dir == up ? origin ().y + _textrows - 1 : origin ().y); paint_row (dir == up ? origin ().y + _textrows - 1 : origin ().y);
break; break;
case left: case left:
case right: case right:
xvt_rect_set (&r, xvt_rect_set(&r,
tabx(X_OFFSET), 0, tabx(X_OFFSET), 0,
tabx(int(_textcolumns) + X_OFFSET) + 2, tabx(int(_textcolumns) + X_OFFSET)/* + 2*/,
taby(int(_textrows) + 1) - 2); taby(int(_textrows) + 1)/* - 2*/);
xvt_dwin_scroll_rect (win (), &r, dir == right ? tabx(1) : -tabx(1), 0); xvt_dwin_scroll_rect (win (), &r, dir == right ? tabx(1) : -tabx(1), 0);
paint_column (dir == left ? origin ().x + _textcolumns - 1 : origin ().x, dir == left); paint_column (dir == left ? origin ().x + _textcolumns - 1 : origin ().x, dir == left);
@ -598,16 +598,16 @@ void TViswin::repos_buttons ()
if (buttons == 0) if (buttons == 0)
return; return;
autoscroll (FALSE); autoscroll(FALSE);
set_mode (M_COPY); set_mode(M_COPY);
set_brush (BACKGROUND); set_brush(BACKGROUND);
bar (5, rows () - BUTTONROW_SIZE, columns () + 1, rows () + 1); bar(5, rows()-BUTTONROW_SIZE, columns()+1, rows()+1);
autoscroll (TRUE); autoscroll(TRUE);
RCT wr; RCT wr;
xvt_vobj_get_client_rect (win (), &wr); xvt_vobj_get_client_rect(win(), &wr);
RCT br; RCT br;
xvt_vobj_get_client_rect (_button[0], &br); xvt_vobj_get_client_rect(_button[0], &br);
int space = (wr.right - buttons * br.right) / (buttons + 1); int space = (wr.right - buttons * br.right) / (buttons + 1);
if (space < 0) if (space < 0)
@ -654,11 +654,11 @@ void TViswin::paint_screen ()
PNT b, e; PNT b, e;
b.h = tabx(5); b.h = tabx(5);
b.v = taby((int) (j + (long)Y_OFFSET - origin ().y)) - 2; b.v = taby((int)(j + (long)Y_OFFSET - origin().y))/* -2 *****/;
e.h = tabx(columns()); e.h = tabx(columns());
e.v = b.v; e.v = b.v;
xvt_dwin_draw_set_pos (win (), b); xvt_dwin_draw_set_pos(win(), b);
xvt_dwin_draw_line (win (), e); xvt_dwin_draw_line(win(), e);
set_pen (COLOR_LTGRAY); set_pen (COLOR_LTGRAY);
e.v++; e.v++;
b.v++; b.v++;
@ -681,7 +681,7 @@ void TViswin::paint_background(
long j, // @parm Numero della riga di cui stampare il background long j, // @parm Numero della riga di cui stampare il background
int row) // @parm Numero della riga a video sulla quale viene stampato il background int row) // @parm Numero della riga a video sulla quale viene stampato il background
{ {
const int rw = (int) (j % (long) _formlen); const int rw = (int)(j % (long)_formlen);
const int ox = (int)origin().x; const int ox = (int)origin().x;
const int mx = ox + columns(); const int mx = ox + columns();
@ -720,12 +720,12 @@ void TViswin::paint_background(
x1 = (byte)rwd[cnt++]; x1 = (byte)rwd[cnt++];
if (x1 >= ox && x1 <= mx) if (x1 >= ox && x1 <= mx)
{ {
x1 += (X_OFFSET -1) - ox; x1 += (X_OFFSET-1) - ox;
b.h = e.h = tabx(2*x1+1) / 2; b.h = e.h = tabx(2*x1+1)/2;
b.v = taby(row); b.v = taby(row);
e.v = taby(row + 1); e.v = taby(row+1);
xvt_dwin_draw_set_pos (win(), b); xvt_dwin_draw_set_pos(win(), b);
xvt_dwin_draw_line (win(), e); xvt_dwin_draw_line(win(), e);
} }
break; break;
case 'o': // verticale pezzo sopra case 'o': // verticale pezzo sopra
@ -736,9 +736,9 @@ void TViswin::paint_background(
x1 += (X_OFFSET -1) - ox; x1 += (X_OFFSET -1) - ox;
b.h = e.h = tabx(2*x1+1) / 2; b.h = e.h = tabx(2*x1+1) / 2;
b.v = taby(row); b.v = taby(row);
e.v = taby(2*row+1) / 2; e.v = taby(2*row+1)/2;
xvt_dwin_draw_set_pos (win (), b); xvt_dwin_draw_set_pos (win(), b);
xvt_dwin_draw_line (win (), e); xvt_dwin_draw_line (win(), e);
} }
break; break;
case 'u': // verticale pezzo sotto case 'u': // verticale pezzo sotto
@ -747,11 +747,11 @@ void TViswin::paint_background(
if (x1 >= ox && x1 <= mx) if (x1 >= ox && x1 <= mx)
{ {
x1 += (X_OFFSET -1) - ox; x1 += (X_OFFSET -1) - ox;
b.h = e.h = tabx(2*x1+1) / 2; b.h = e.h = tabx(2*x1+1)/2;
b.v = taby(2*row+1) / 2; b.v = taby(2*row+1)/2;
e.v = taby(row + 1); e.v = taby(row + 1);
xvt_dwin_draw_set_pos (win (), b); xvt_dwin_draw_set_pos(win(), b);
xvt_dwin_draw_line (win (), e); xvt_dwin_draw_line(win(), e);
} }
break; break;
case 'h': // orizzontale intera case 'h': // orizzontale intera
@ -807,7 +807,7 @@ void TViswin::paint_background(
if (i && i->ok()) if (i && i->ok())
{ {
short delta = tabx(short(origin().x-x1-X_OFFSET)); // Primo pixel sorgente short delta = tabx(short(origin().x - x1)); // Primo pixel sorgente
if (delta < 0) delta = 0; if (delta < 0) delta = 0;
if (delta < width) if (delta < width)
{ {
@ -816,8 +816,8 @@ void TViswin::paint_background(
RCT src; xvt_rect_set(&src, p.h, p.v, width, min(p.v+taby(1)+scroll , i->height())); RCT src; xvt_rect_set(&src, p.h, p.v, width, min(p.v+taby(1)+scroll , i->height()));
if (src.top < i->height()) if (src.top < i->height())
{ {
short px = short(x1-origin().x+X_OFFSET); short px = short(x1-origin().x);
if (px < X_OFFSET) px = X_OFFSET; if (px < 0) px = 0; px += X_OFFSET;
p.h = tabx(px); p.v = taby(row); p.h = tabx(px); p.v = taby(row);
RCT dst = src; xvt_rect_set_pos(&dst, p); RCT dst = src; xvt_rect_set_pos(&dst, p);
i->draw(win(), dst, src); i->draw(win(), dst, src);
@ -880,7 +880,7 @@ void TViswin::paint_row (long j)
RCT r; RCT r;
r.top = row * CHARY; r.top = row * CHARY;
r.left = tabx(X_OFFSET -1), r.left = tabx(X_OFFSET -1),
r.bottom = r.top + taby(1) + 2; r.bottom = r.top + taby(1)/* + 1*/;
r.right = tabx(255); r.right = tabx(255);
xvt_dwin_draw_rect (win (), &r); xvt_dwin_draw_rect (win (), &r);
} }
@ -1176,7 +1176,7 @@ void TViswin::update ()
check_link(); check_link();
if (_isselection) if (_isselection)
erase_selection (); erase_selection ();
clear (COLOR_WHITE); clear(COLOR_WHITE);
set_mode (M_COPY); set_mode (M_COPY);
set_brush (BACKGROUND); set_brush (BACKGROUND);
autoscroll (FALSE); autoscroll (FALSE);
@ -1185,11 +1185,6 @@ void TViswin::update ()
{ {
bar (0, 0, columns() + 1, 1); bar (0, 0, columns() + 1, 1);
bar (0, 0, 5, rows() + 1); bar (0, 0, 5, rows() + 1);
// RCT r1, r2;
// r1.top = 0; r1.left = 0; r1.bottom = CHARY; r1.right = (columns() + 1)*CHARX;
// r2.top = 0; r2.left = 0; r2.bottom = (rows()+1)*CHARY; r2.right = 5*CHARX;
// xvt_draw_rect(win(), r1, COLOR_WHITE, COLOR_GRAY, 2);
// xvt_draw_rect(win(), r2, COLOR_WHITE, COLOR_GRAY, 2);
} }
if (_showbuts) if (_showbuts)
bar ((X_OFFSET -1), rows()-BUTTONROW_SIZE, columns() + 1, rows() + 1); bar ((X_OFFSET -1), rows()-BUTTONROW_SIZE, columns() + 1, rows() + 1);