* avoid infinite recursions in graphic mode

This commit is contained in:
pierre 2002-05-21 11:47:36 +00:00
parent b399ec071e
commit d9027c7e63
2 changed files with 46 additions and 26 deletions

View File

@ -877,6 +877,8 @@ CONST
CurCommandSet: TCommandSet = ([0..255] -
[cmZoom, cmClose, cmResize, cmNext, cmPrev]); { All active but these }
vdInSetCursor = $80; { AVOID RECURSION IN SetCursor }
{***************************************************************************}
{ PRIVATE INTERNAL ROUTINES }
{***************************************************************************}
@ -1749,15 +1751,17 @@ PROCEDURE TView.SetCursor (X, Y: Sw_Integer);
BEGIN
Cursor.X := X; { New x position }
Cursor.Y := Y; { New y position }
If (State AND sfCursorVis <> 0) Then Begin { Cursor visible }
if TextModeGFV then
ResetCursor
else
begin
SetDrawMask(vdCursor); { Set draw mask }
DrawView; { Draw the cursor }
end;
End;
If ((DrawMask and vdInSetCursor)=0) and (State AND sfCursorVis <> 0) Then
Begin { Cursor visible }
if TextModeGFV then
ResetCursor
else
begin
SetDrawMask(vdCursor or vdInSetCursor); { Set draw mask }
DrawView; { Draw the cursor }
DrawMask:=DrawMask and not vdInSetCursor;
end;
End;
END;
{--TView--------------------------------------------------------------------}
@ -1918,18 +1922,21 @@ BEGIN
ShouldDraw:=true;
End;
End;
If (AState AND (sfCursorVis + sfCursorIns) <> 0) { Change cursor state }
If (AState AND (sfCursorVis + sfCursorIns) <> 0) and { Change cursor state }
(OldState<>State)
Then Begin
if TextModeGFV then
ResetCursor
else
begin
SetDrawMask(vdCursor); { Set cursor draw mask }
SetDrawMask(vdCursor); { Set cursor draw mask }
ShouldDraw:=true;
end;
End;
If ShouldDraw then
DrawView; { Redraw the border }
begin
DrawView; { Redraw the border }
end;
END;
{--TView--------------------------------------------------------------------}
@ -5526,7 +5533,10 @@ END.
{
$Log$
Revision 1.19 2002-05-16 21:23:34 pierre
Revision 1.20 2002-05-21 11:47:36 pierre
* avoid infinite recursions in graphic mode
Revision 1.19 2002/05/16 21:23:34 pierre
* fix some display problems
Revision 1.18 2001/10/02 16:35:51 pierre

View File

@ -877,6 +877,8 @@ CONST
CurCommandSet: TCommandSet = ([0..255] -
[cmZoom, cmClose, cmResize, cmNext, cmPrev]); { All active but these }
vdInSetCursor = $80; { AVOID RECURSION IN SetCursor }
{***************************************************************************}
{ PRIVATE INTERNAL ROUTINES }
{***************************************************************************}
@ -1749,15 +1751,17 @@ PROCEDURE TView.SetCursor (X, Y: Sw_Integer);
BEGIN
Cursor.X := X; { New x position }
Cursor.Y := Y; { New y position }
If (State AND sfCursorVis <> 0) Then Begin { Cursor visible }
if TextModeGFV then
ResetCursor
else
begin
SetDrawMask(vdCursor); { Set draw mask }
DrawView; { Draw the cursor }
end;
End;
If ((DrawMask and vdInSetCursor)=0) and (State AND sfCursorVis <> 0) Then
Begin { Cursor visible }
if TextModeGFV then
ResetCursor
else
begin
SetDrawMask(vdCursor or vdInSetCursor); { Set draw mask }
DrawView; { Draw the cursor }
DrawMask:=DrawMask and not vdInSetCursor;
end;
End;
END;
{--TView--------------------------------------------------------------------}
@ -1918,18 +1922,21 @@ BEGIN
ShouldDraw:=true;
End;
End;
If (AState AND (sfCursorVis + sfCursorIns) <> 0) { Change cursor state }
If (AState AND (sfCursorVis + sfCursorIns) <> 0) and { Change cursor state }
(OldState<>State)
Then Begin
if TextModeGFV then
ResetCursor
else
begin
SetDrawMask(vdCursor); { Set cursor draw mask }
SetDrawMask(vdCursor); { Set cursor draw mask }
ShouldDraw:=true;
end;
End;
If ShouldDraw then
DrawView; { Redraw the border }
begin
DrawView; { Redraw the border }
end;
END;
{--TView--------------------------------------------------------------------}
@ -5526,7 +5533,10 @@ END.
{
$Log$
Revision 1.19 2002-05-16 21:23:34 pierre
Revision 1.20 2002-05-21 11:47:36 pierre
* avoid infinite recursions in graphic mode
Revision 1.19 2002/05/16 21:23:34 pierre
* fix some display problems
Revision 1.18 2001/10/02 16:35:51 pierre